mirror of
https://github.com/Xiao-MoMi/Custom-Fishing.git
synced 2025-12-19 15:09:24 +00:00
1.21.6
This commit is contained in:
@@ -25,6 +25,7 @@ dependencies {
|
||||
compileOnly("org.apache.logging.log4j:log4j-core:${rootProject.properties["log4j_version"]}")
|
||||
compileOnly("net.kyori:adventure-text-minimessage:${rootProject.properties["adventure_bundle_version"]}")
|
||||
compileOnly("net.kyori:adventure-text-serializer-gson:${rootProject.properties["adventure_bundle_version"]}")
|
||||
compileOnly("net.kyori:adventure-text-serializer-json-legacy-impl:${rootProject.properties["adventure_bundle_version"]}")
|
||||
compileOnly("com.github.ben-manes.caffeine:caffeine:${rootProject.properties["caffeine_version"]}")
|
||||
compileOnly("net.objecthunter:exp4j:${rootProject.properties["exp4j_version"]}")
|
||||
compileOnly("com.google.guava:guava:${rootProject.properties["guava_version"]}")
|
||||
|
||||
@@ -41,7 +41,7 @@ public class MechanicType {
|
||||
public static final MechanicType HOOK = of("hook");
|
||||
public static final MechanicType TOTEM = of("totem");
|
||||
public static final MechanicType ENCHANT = of("enchant");
|
||||
public static final MechanicType GEAR = of("gear");
|
||||
public static final MechanicType EQUIPMENT = of("equipment");
|
||||
|
||||
private final String type;
|
||||
|
||||
|
||||
@@ -32,8 +32,8 @@ import java.util.function.Supplier;
|
||||
* Configuration types for various mechanics.
|
||||
*/
|
||||
public class ConfigType {
|
||||
public static final ConfigType GEAR = of(
|
||||
"gear", //new
|
||||
public static final ConfigType EQUIPMENT = of(
|
||||
"equipment", //new
|
||||
() -> {
|
||||
HashMap<String, Node<ConfigParserFunction>> parsers = new HashMap<>();
|
||||
parsers.putAll(BukkitCustomFishingPlugin.getInstance().getConfigManager().getItemFormatFunctions());
|
||||
@@ -42,10 +42,10 @@ public class ConfigType {
|
||||
return parsers;
|
||||
},
|
||||
(id, section, functions) -> {
|
||||
MechanicType.register(id, MechanicType.GEAR);
|
||||
MechanicType.register(id, MechanicType.EQUIPMENT);
|
||||
GearConfigParser config = new GearConfigParser(id, section, functions);
|
||||
BukkitCustomFishingPlugin.getInstance().getItemManager().registerItem(config.getItem());
|
||||
BukkitCustomFishingPlugin.getInstance().getEffectManager().registerEffectModifier(config.getEffectModifier(), MechanicType.GEAR);
|
||||
BukkitCustomFishingPlugin.getInstance().getEffectManager().registerEffectModifier(config.getEffectModifier(), MechanicType.EQUIPMENT);
|
||||
BukkitCustomFishingPlugin.getInstance().getEventManager().registerEventCarrier(config.getEventCarrier());
|
||||
}
|
||||
);
|
||||
@@ -234,7 +234,7 @@ public class ConfigType {
|
||||
}
|
||||
);
|
||||
|
||||
private static final ConfigType[] values = new ConfigType[] {ITEM, ENTITY, BLOCK, HOOK, ROD, BAIT, UTIL, TOTEM, ENCHANT, MINI_GAME, COMPETITION, GEAR};
|
||||
private static final ConfigType[] values = new ConfigType[] {ITEM, ENTITY, BLOCK, HOOK, ROD, BAIT, UTIL, TOTEM, ENCHANT, MINI_GAME, COMPETITION, EQUIPMENT};
|
||||
|
||||
/**
|
||||
* Gets an array of all configuration types.
|
||||
|
||||
@@ -80,7 +80,7 @@ public class GearConfigParser {
|
||||
public EffectModifier getEffectModifier() {
|
||||
EffectModifier.Builder builder = EffectModifier.builder()
|
||||
.id(id)
|
||||
.type(MechanicType.GEAR);
|
||||
.type(MechanicType.EQUIPMENT);
|
||||
for (Consumer<EffectModifier.Builder> consumer : effectBuilderConsumers) {
|
||||
consumer.accept(builder);
|
||||
}
|
||||
@@ -90,7 +90,7 @@ public class GearConfigParser {
|
||||
public EventCarrier getEventCarrier() {
|
||||
EventCarrier.Builder builder = EventCarrier.builder()
|
||||
.id(id)
|
||||
.type(MechanicType.GEAR);
|
||||
.type(MechanicType.EQUIPMENT);
|
||||
for (Consumer<EventCarrier.Builder> consumer : eventBuilderConsumers) {
|
||||
consumer.accept(builder);
|
||||
}
|
||||
|
||||
@@ -252,14 +252,14 @@ public class FishingGears {
|
||||
if (armorPiece != null && armorPiece.getType() != Material.AIR) {
|
||||
String gearID = BukkitCustomFishingPlugin.getInstance().getItemManager().getItemID(armorPiece);
|
||||
List<MechanicType> itemTypes = MechanicType.getTypeByID(gearID);
|
||||
if (itemTypes != null && itemTypes.contains(MechanicType.GEAR)) {
|
||||
if (itemTypes != null && itemTypes.contains(MechanicType.EQUIPMENT)) {
|
||||
gearItemsList.add(Pair.of(gearID, armorPiece));
|
||||
BukkitCustomFishingPlugin.getInstance().getEffectManager().getEffectModifier(gearID, MechanicType.GEAR).ifPresent(fishingGears.modifiers::add);
|
||||
BukkitCustomFishingPlugin.getInstance().getEffectManager().getEffectModifier(gearID, MechanicType.EQUIPMENT).ifPresent(fishingGears.modifiers::add);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!gearItemsList.isEmpty()) {
|
||||
fishingGears.gears.put(GearType.GEAR, gearItemsList);
|
||||
fishingGears.gears.put(GearType.EQUIPMENT, gearItemsList);
|
||||
}
|
||||
|
||||
// check requirements before checking totems
|
||||
@@ -305,7 +305,7 @@ public class FishingGears {
|
||||
((context, itemStack) -> {}),
|
||||
((context, itemStack) -> {})
|
||||
);
|
||||
public static final GearType GEAR = new GearType(MechanicType.GEAR,
|
||||
public static final GearType EQUIPMENT = new GearType(MechanicType.EQUIPMENT,
|
||||
((context, itemStack) -> {}), // castFunction
|
||||
((context, itemStack) -> {}), // reelFunction
|
||||
((context, itemStack) -> {}), // biteFunction
|
||||
|
||||
@@ -25,6 +25,8 @@ import net.kyori.adventure.sound.Sound;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import net.kyori.adventure.text.serializer.json.JSONOptions;
|
||||
import net.kyori.adventure.text.serializer.json.legacyimpl.NBTLegacyHoverEventSerializer;
|
||||
import net.kyori.adventure.title.Title;
|
||||
|
||||
import java.time.Duration;
|
||||
@@ -44,7 +46,19 @@ public class AdventureHelper {
|
||||
private AdventureHelper() {
|
||||
this.miniMessage = MiniMessage.builder().build();
|
||||
this.miniMessageStrict = MiniMessage.builder().strict(true).build();
|
||||
this.gsonComponentSerializer = GsonComponentSerializer.builder().build();
|
||||
GsonComponentSerializer.Builder builder = GsonComponentSerializer.builder();
|
||||
if (!VersionHelper.isVersionNewerThan1_20_5()) {
|
||||
builder.legacyHoverEventSerializer(NBTLegacyHoverEventSerializer.get());
|
||||
builder.editOptions((b) -> b.value(JSONOptions.EMIT_HOVER_SHOW_ENTITY_ID_AS_INT_ARRAY, false));
|
||||
}
|
||||
if (!VersionHelper.isVersionNewerThan1_21_5()) {
|
||||
builder.editOptions((b) -> {
|
||||
b.value(JSONOptions.EMIT_CLICK_EVENT_TYPE, JSONOptions.ClickEventValueMode.CAMEL_CASE);
|
||||
b.value(JSONOptions.EMIT_HOVER_EVENT_TYPE, JSONOptions.HoverEventValueMode.CAMEL_CASE);
|
||||
b.value(JSONOptions.EMIT_HOVER_SHOW_ENTITY_KEY_AS_TYPE_AND_UUID_AS_ID, true);
|
||||
});
|
||||
}
|
||||
this.gsonComponentSerializer = builder.build();
|
||||
}
|
||||
|
||||
private static class SingletonHolder {
|
||||
@@ -103,40 +117,6 @@ public class AdventureHelper {
|
||||
return instance.miniMessageToJsonCache.get(miniMessage, (text) -> instance.gsonComponentSerializer.serialize(miniMessage(text)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a title to an audience.
|
||||
*
|
||||
* @param audience the audience to send the title to
|
||||
* @param title the title component
|
||||
* @param subtitle the subtitle component
|
||||
* @param fadeIn the fade-in duration in ticks
|
||||
* @param stay the stay duration in ticks
|
||||
* @param fadeOut the fade-out duration in ticks
|
||||
*/
|
||||
public static void sendTitle(Audience audience, Component title, Component subtitle, int fadeIn, int stay, int fadeOut) {
|
||||
audience.showTitle(Title.title(title, subtitle, Title.Times.times(Duration.ofMillis(fadeIn * 50L), Duration.ofMillis(stay * 50L), Duration.ofMillis(fadeOut * 50L))));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends an action bar message to an audience.
|
||||
*
|
||||
* @param audience the audience to send the action bar message to
|
||||
* @param actionBar the action bar component
|
||||
*/
|
||||
public static void sendActionBar(Audience audience, Component actionBar) {
|
||||
audience.sendActionBar(actionBar);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a message to an audience.
|
||||
*
|
||||
* @param audience the audience to send the message to
|
||||
* @param message the message component
|
||||
*/
|
||||
public static void sendMessage(Audience audience, Component message) {
|
||||
audience.sendMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Plays a sound for an audience.
|
||||
*
|
||||
|
||||
@@ -23,6 +23,7 @@ dependencies {
|
||||
implementation("net.kyori:adventure-text-serializer-gson:${rootProject.properties["adventure_bundle_version"]}") {
|
||||
exclude("com.google.code.gson", "gson")
|
||||
}
|
||||
implementation("net.kyori:adventure-text-serializer-json-legacy-impl:${rootProject.properties["adventure_bundle_version"]}")
|
||||
// tag & component
|
||||
implementation("com.saicone.rtag:rtag:${rootProject.properties["rtag_version"]}")
|
||||
implementation("com.saicone.rtag:rtag-item:${rootProject.properties["rtag_version"]}")
|
||||
|
||||
@@ -44,6 +44,7 @@ import net.momirealms.customfishing.common.helper.VersionHelper;
|
||||
import net.momirealms.customfishing.common.locale.MessageConstants;
|
||||
import net.momirealms.customfishing.common.locale.TranslationManager;
|
||||
import net.momirealms.customfishing.common.plugin.scheduler.SchedulerTask;
|
||||
import net.momirealms.customfishing.common.sender.Sender;
|
||||
import net.momirealms.customfishing.common.util.ClassUtils;
|
||||
import net.momirealms.customfishing.common.util.ListUtils;
|
||||
import net.momirealms.customfishing.common.util.Pair;
|
||||
@@ -186,7 +187,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
return context -> {
|
||||
if (Math.random() > chance.evaluate(context)) return;
|
||||
List<String> replaced = plugin.getPlaceholderManager().parse(context.holder(), messages, context.placeholderMap());
|
||||
Audience audience = plugin.getSenderFactory().getAudience(context.holder());
|
||||
Sender audience = plugin.getSenderFactory().wrap(context.holder());
|
||||
for (String text : replaced) {
|
||||
audience.sendMessage(AdventureHelper.miniMessage(text));
|
||||
}
|
||||
@@ -198,7 +199,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
if (Math.random() > chance.evaluate(context)) return;
|
||||
String random = messages.get(RandomUtils.generateRandomInt(0, messages.size() - 1));
|
||||
random = BukkitPlaceholderManager.getInstance().parse(context.holder(), random, context.placeholderMap());
|
||||
Audience audience = plugin.getSenderFactory().getAudience(context.holder());
|
||||
Sender audience = plugin.getSenderFactory().wrap(context.holder());
|
||||
audience.sendMessage(AdventureHelper.miniMessage(random));
|
||||
};
|
||||
}, "random-message");
|
||||
@@ -208,7 +209,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
if (Math.random() > chance.evaluate(context)) return;
|
||||
List<String> replaced = plugin.getPlaceholderManager().parse(context.holder(), messages, context.placeholderMap());
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
||||
Sender audience = plugin.getSenderFactory().wrap(player);
|
||||
for (String text : replaced) {
|
||||
audience.sendMessage(AdventureHelper.miniMessage(text));
|
||||
}
|
||||
@@ -232,7 +233,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
messages,
|
||||
context.placeholderMap()
|
||||
);
|
||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
||||
Sender audience = plugin.getSenderFactory().wrap(player);
|
||||
for (String text : replaced) {
|
||||
audience.sendMessage(AdventureHelper.miniMessage(text));
|
||||
}
|
||||
@@ -321,9 +322,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
String text = (String) args;
|
||||
return context -> {
|
||||
if (Math.random() > chance.evaluate(context)) return;
|
||||
Audience audience = plugin.getSenderFactory().getAudience(context.holder());
|
||||
Component component = AdventureHelper.miniMessage(plugin.getPlaceholderManager().parse(context.holder(), text, context.placeholderMap()));
|
||||
audience.sendActionBar(component);
|
||||
SparrowHeart.getInstance().sendActionBar(context.holder(), AdventureHelper.componentToJson(AdventureHelper.miniMessage(plugin.getPlaceholderManager().parse(context.holder(), text, context.placeholderMap()))));
|
||||
};
|
||||
}, "actionbar");
|
||||
registerAction((args, chance) -> {
|
||||
@@ -332,8 +331,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
if (Math.random() > chance.evaluate(context)) return;
|
||||
String random = texts.get(RandomUtils.generateRandomInt(0, texts.size() - 1));
|
||||
random = plugin.getPlaceholderManager().parse(context.holder(), random, context.placeholderMap());
|
||||
Audience audience = plugin.getSenderFactory().getAudience(context.holder());
|
||||
audience.sendActionBar(AdventureHelper.miniMessage(random));
|
||||
SparrowHeart.getInstance().sendActionBar(context.holder(), AdventureHelper.componentToJson(AdventureHelper.miniMessage(random)));
|
||||
};
|
||||
}, "random-actionbar");
|
||||
registerAction((args, chance) -> {
|
||||
@@ -349,8 +347,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
if (LocationUtils.getDistance(player.getLocation(), location) <= realRange) {
|
||||
context.arg(ContextKeys.TEMP_NEAR_PLAYER, player.getName());
|
||||
String replaced = plugin.getPlaceholderManager().parse(owner, actionbar, context.placeholderMap());
|
||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
||||
audience.sendActionBar(AdventureHelper.miniMessage(replaced));
|
||||
SparrowHeart.getInstance().sendActionBar(player, AdventureHelper.componentToJson(AdventureHelper.miniMessage(replaced)));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -814,10 +811,9 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
return context -> {
|
||||
if (Math.random() > chance.evaluate(context)) return;
|
||||
final Player player = context.holder();
|
||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
||||
AdventureHelper.sendTitle(audience,
|
||||
AdventureHelper.miniMessage(title.render(context)),
|
||||
AdventureHelper.miniMessage(subtitle.render(context)),
|
||||
SparrowHeart.getInstance().sendTitle(player,
|
||||
AdventureHelper.componentToJson(AdventureHelper.miniMessage(title.render(context))),
|
||||
AdventureHelper.componentToJson(AdventureHelper.miniMessage(subtitle.render(context))),
|
||||
fadeIn, stay, fadeOut
|
||||
);
|
||||
};
|
||||
@@ -840,10 +836,9 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
TextValue<Player> title = TextValue.auto(titles.get(RandomUtils.generateRandomInt(0, titles.size() - 1)));
|
||||
TextValue<Player> subtitle = TextValue.auto(subtitles.get(RandomUtils.generateRandomInt(0, subtitles.size() - 1)));
|
||||
final Player player = context.holder();
|
||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
||||
AdventureHelper.sendTitle(audience,
|
||||
AdventureHelper.miniMessage(title.render(context)),
|
||||
AdventureHelper.miniMessage(subtitle.render(context)),
|
||||
SparrowHeart.getInstance().sendTitle(player,
|
||||
AdventureHelper.componentToJson(AdventureHelper.miniMessage(title.render(context))),
|
||||
AdventureHelper.componentToJson(AdventureHelper.miniMessage(subtitle.render(context))),
|
||||
fadeIn, stay, fadeOut
|
||||
);
|
||||
};
|
||||
@@ -866,10 +861,9 @@ public class BukkitActionManager implements ActionManager<Player> {
|
||||
for (Player player : location.getWorld().getPlayers()) {
|
||||
if (LocationUtils.getDistance(player.getLocation(), location) <= range) {
|
||||
context.arg(ContextKeys.TEMP_NEAR_PLAYER, player.getName());
|
||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
||||
AdventureHelper.sendTitle(audience,
|
||||
AdventureHelper.miniMessage(title.render(context)),
|
||||
AdventureHelper.miniMessage(subtitle.render(context)),
|
||||
SparrowHeart.getInstance().sendTitle(player,
|
||||
AdventureHelper.componentToJson(AdventureHelper.miniMessage(title.render(context))),
|
||||
AdventureHelper.componentToJson(AdventureHelper.miniMessage(subtitle.render(context))),
|
||||
fadeIn, stay, fadeOut
|
||||
);
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ import net.momirealms.customfishing.common.helper.AdventureHelper;
|
||||
import net.momirealms.customfishing.common.locale.MessageConstants;
|
||||
import net.momirealms.customfishing.common.locale.TranslationManager;
|
||||
import net.momirealms.customfishing.common.plugin.scheduler.SchedulerTask;
|
||||
import net.momirealms.customfishing.common.sender.Sender;
|
||||
import net.momirealms.customfishing.common.util.Pair;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
@@ -50,6 +51,7 @@ import java.time.Instant;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class Competition implements FishingCompetition {
|
||||
@@ -196,11 +198,11 @@ public class Competition implements FishingCompetition {
|
||||
private void broadcast(BroadcastConfig config) {
|
||||
String[] texts = config.texts();
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
||||
Sender audience = plugin.getSenderFactory().wrap(player);
|
||||
for (String s : texts) {
|
||||
DynamicText text = new DynamicText(player, s);
|
||||
text.update(this.publicContext.placeholderMap());
|
||||
AdventureHelper.sendMessage(audience, AdventureHelper.miniMessage(text.getLatestValue()));
|
||||
audience.sendMessage(AdventureHelper.miniMessage(text.getLatestValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ public abstract class BukkitItemFactory extends ItemFactory<CustomFishingPlugin,
|
||||
"1.21", "1.21.1", "1.21.2", "1.21.3", "1.21.4" -> {
|
||||
return new ComponentItemFactory(plugin);
|
||||
}
|
||||
case "1.21.5" -> {
|
||||
case "1.21.5", "1.21.6" -> {
|
||||
return new ComponentItemFactory1_21_5(plugin);
|
||||
}
|
||||
default -> throw new IllegalStateException("Unsupported server version: " + plugin.getServerVersion());
|
||||
|
||||
@@ -29,9 +29,11 @@ import net.kyori.adventure.audience.Audience;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
|
||||
import net.momirealms.customfishing.common.helper.AdventureHelper;
|
||||
import net.momirealms.customfishing.common.sender.Sender;
|
||||
import net.momirealms.customfishing.common.sender.SenderFactory;
|
||||
import net.momirealms.customfishing.common.util.Tristate;
|
||||
import net.momirealms.sparrow.heart.SparrowHeart;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.command.RemoteConsoleCommandSender;
|
||||
@@ -70,8 +72,9 @@ public class BukkitSenderFactory extends SenderFactory<BukkitCustomFishingPlugin
|
||||
|
||||
@Override
|
||||
protected void sendMessage(CommandSender sender, Component message) {
|
||||
// we can safely send async for players and the console - otherwise, send it sync
|
||||
if (sender instanceof Player || sender instanceof ConsoleCommandSender || sender instanceof RemoteConsoleCommandSender) {
|
||||
if (sender instanceof Player player) {
|
||||
SparrowHeart.getInstance().sendMessage(player, AdventureHelper.componentToJson(message));
|
||||
} else if (sender instanceof ConsoleCommandSender || sender instanceof RemoteConsoleCommandSender) {
|
||||
getAudience(sender).sendMessage(message);
|
||||
} else {
|
||||
getPlugin().getScheduler().executeSync(() -> getAudience(sender).sendMessage(message));
|
||||
|
||||
@@ -10,13 +10,6 @@ angler_helmet:
|
||||
- '<#FFD700>Effects:'
|
||||
- '<gray> - Slightly reduces fishing difficulty.'
|
||||
custom-model-data: 50010 # Example
|
||||
events:
|
||||
success: # -1 durability when player successfully catches fish
|
||||
durability_action:
|
||||
type: durability
|
||||
value:
|
||||
slot: head
|
||||
amount: -1
|
||||
effects:
|
||||
effect_1:
|
||||
type: difficulty
|
||||
@@ -1,6 +1,6 @@
|
||||
# Project settings
|
||||
# Rule: [major update].[feature update].[bug fix]
|
||||
project_version=2.3.12
|
||||
project_version=2.3.13
|
||||
config_version=38
|
||||
project_group=net.momirealms
|
||||
|
||||
@@ -18,9 +18,9 @@ asm_commons_version=9.8
|
||||
jar_relocator_version=1.7
|
||||
h2_driver_version=2.3.232
|
||||
sqlite_driver_version=3.49.1.0
|
||||
adventure_bundle_version=4.21.0
|
||||
adventure_bundle_version=4.23.0
|
||||
adventure_platform_version=4.4.0
|
||||
sparrow_heart_version=0.55.2
|
||||
sparrow_heart_version=0.57
|
||||
cloud_core_version=2.0.0
|
||||
cloud_services_version=2.0.0
|
||||
cloud_brigadier_version=2.0.0-beta.10
|
||||
@@ -37,7 +37,7 @@ commons_pool_version=2.12.1
|
||||
bstats_version=3.1.0
|
||||
geantyref_version=1.3.16
|
||||
caffeine_version=3.2.0
|
||||
rtag_version=1.5.10
|
||||
rtag_version=1.5.11
|
||||
jedis_version=5.2.0
|
||||
exp4j_version=0.4.8
|
||||
placeholder_api_version=2.11.6
|
||||
|
||||
Reference in New Issue
Block a user