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("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-minimessage:${rootProject.properties["adventure_bundle_version"]}")
|
||||||
compileOnly("net.kyori:adventure-text-serializer-gson:${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("com.github.ben-manes.caffeine:caffeine:${rootProject.properties["caffeine_version"]}")
|
||||||
compileOnly("net.objecthunter:exp4j:${rootProject.properties["exp4j_version"]}")
|
compileOnly("net.objecthunter:exp4j:${rootProject.properties["exp4j_version"]}")
|
||||||
compileOnly("com.google.guava:guava:${rootProject.properties["guava_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 HOOK = of("hook");
|
||||||
public static final MechanicType TOTEM = of("totem");
|
public static final MechanicType TOTEM = of("totem");
|
||||||
public static final MechanicType ENCHANT = of("enchant");
|
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;
|
private final String type;
|
||||||
|
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ import java.util.function.Supplier;
|
|||||||
* Configuration types for various mechanics.
|
* Configuration types for various mechanics.
|
||||||
*/
|
*/
|
||||||
public class ConfigType {
|
public class ConfigType {
|
||||||
public static final ConfigType GEAR = of(
|
public static final ConfigType EQUIPMENT = of(
|
||||||
"gear", //new
|
"equipment", //new
|
||||||
() -> {
|
() -> {
|
||||||
HashMap<String, Node<ConfigParserFunction>> parsers = new HashMap<>();
|
HashMap<String, Node<ConfigParserFunction>> parsers = new HashMap<>();
|
||||||
parsers.putAll(BukkitCustomFishingPlugin.getInstance().getConfigManager().getItemFormatFunctions());
|
parsers.putAll(BukkitCustomFishingPlugin.getInstance().getConfigManager().getItemFormatFunctions());
|
||||||
@@ -42,10 +42,10 @@ public class ConfigType {
|
|||||||
return parsers;
|
return parsers;
|
||||||
},
|
},
|
||||||
(id, section, functions) -> {
|
(id, section, functions) -> {
|
||||||
MechanicType.register(id, MechanicType.GEAR);
|
MechanicType.register(id, MechanicType.EQUIPMENT);
|
||||||
GearConfigParser config = new GearConfigParser(id, section, functions);
|
GearConfigParser config = new GearConfigParser(id, section, functions);
|
||||||
BukkitCustomFishingPlugin.getInstance().getItemManager().registerItem(config.getItem());
|
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());
|
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.
|
* Gets an array of all configuration types.
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public class GearConfigParser {
|
|||||||
public EffectModifier getEffectModifier() {
|
public EffectModifier getEffectModifier() {
|
||||||
EffectModifier.Builder builder = EffectModifier.builder()
|
EffectModifier.Builder builder = EffectModifier.builder()
|
||||||
.id(id)
|
.id(id)
|
||||||
.type(MechanicType.GEAR);
|
.type(MechanicType.EQUIPMENT);
|
||||||
for (Consumer<EffectModifier.Builder> consumer : effectBuilderConsumers) {
|
for (Consumer<EffectModifier.Builder> consumer : effectBuilderConsumers) {
|
||||||
consumer.accept(builder);
|
consumer.accept(builder);
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ public class GearConfigParser {
|
|||||||
public EventCarrier getEventCarrier() {
|
public EventCarrier getEventCarrier() {
|
||||||
EventCarrier.Builder builder = EventCarrier.builder()
|
EventCarrier.Builder builder = EventCarrier.builder()
|
||||||
.id(id)
|
.id(id)
|
||||||
.type(MechanicType.GEAR);
|
.type(MechanicType.EQUIPMENT);
|
||||||
for (Consumer<EventCarrier.Builder> consumer : eventBuilderConsumers) {
|
for (Consumer<EventCarrier.Builder> consumer : eventBuilderConsumers) {
|
||||||
consumer.accept(builder);
|
consumer.accept(builder);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -252,14 +252,14 @@ public class FishingGears {
|
|||||||
if (armorPiece != null && armorPiece.getType() != Material.AIR) {
|
if (armorPiece != null && armorPiece.getType() != Material.AIR) {
|
||||||
String gearID = BukkitCustomFishingPlugin.getInstance().getItemManager().getItemID(armorPiece);
|
String gearID = BukkitCustomFishingPlugin.getInstance().getItemManager().getItemID(armorPiece);
|
||||||
List<MechanicType> itemTypes = MechanicType.getTypeByID(gearID);
|
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));
|
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()) {
|
if (!gearItemsList.isEmpty()) {
|
||||||
fishingGears.gears.put(GearType.GEAR, gearItemsList);
|
fishingGears.gears.put(GearType.EQUIPMENT, gearItemsList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// check requirements before checking totems
|
// check requirements before checking totems
|
||||||
@@ -305,7 +305,7 @@ public class FishingGears {
|
|||||||
((context, itemStack) -> {}),
|
((context, itemStack) -> {}),
|
||||||
((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) -> {}), // castFunction
|
||||||
((context, itemStack) -> {}), // reelFunction
|
((context, itemStack) -> {}), // reelFunction
|
||||||
((context, itemStack) -> {}), // biteFunction
|
((context, itemStack) -> {}), // biteFunction
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ import net.kyori.adventure.sound.Sound;
|
|||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
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 net.kyori.adventure.title.Title;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
@@ -44,7 +46,19 @@ public class AdventureHelper {
|
|||||||
private AdventureHelper() {
|
private AdventureHelper() {
|
||||||
this.miniMessage = MiniMessage.builder().build();
|
this.miniMessage = MiniMessage.builder().build();
|
||||||
this.miniMessageStrict = MiniMessage.builder().strict(true).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 {
|
private static class SingletonHolder {
|
||||||
@@ -103,40 +117,6 @@ public class AdventureHelper {
|
|||||||
return instance.miniMessageToJsonCache.get(miniMessage, (text) -> instance.gsonComponentSerializer.serialize(miniMessage(text)));
|
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.
|
* Plays a sound for an audience.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ dependencies {
|
|||||||
implementation("net.kyori:adventure-text-serializer-gson:${rootProject.properties["adventure_bundle_version"]}") {
|
implementation("net.kyori:adventure-text-serializer-gson:${rootProject.properties["adventure_bundle_version"]}") {
|
||||||
exclude("com.google.code.gson", "gson")
|
exclude("com.google.code.gson", "gson")
|
||||||
}
|
}
|
||||||
|
implementation("net.kyori:adventure-text-serializer-json-legacy-impl:${rootProject.properties["adventure_bundle_version"]}")
|
||||||
// tag & component
|
// tag & component
|
||||||
implementation("com.saicone.rtag:rtag:${rootProject.properties["rtag_version"]}")
|
implementation("com.saicone.rtag:rtag:${rootProject.properties["rtag_version"]}")
|
||||||
implementation("com.saicone.rtag:rtag-item:${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.MessageConstants;
|
||||||
import net.momirealms.customfishing.common.locale.TranslationManager;
|
import net.momirealms.customfishing.common.locale.TranslationManager;
|
||||||
import net.momirealms.customfishing.common.plugin.scheduler.SchedulerTask;
|
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.ClassUtils;
|
||||||
import net.momirealms.customfishing.common.util.ListUtils;
|
import net.momirealms.customfishing.common.util.ListUtils;
|
||||||
import net.momirealms.customfishing.common.util.Pair;
|
import net.momirealms.customfishing.common.util.Pair;
|
||||||
@@ -186,7 +187,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
|||||||
return context -> {
|
return context -> {
|
||||||
if (Math.random() > chance.evaluate(context)) return;
|
if (Math.random() > chance.evaluate(context)) return;
|
||||||
List<String> replaced = plugin.getPlaceholderManager().parse(context.holder(), messages, context.placeholderMap());
|
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) {
|
for (String text : replaced) {
|
||||||
audience.sendMessage(AdventureHelper.miniMessage(text));
|
audience.sendMessage(AdventureHelper.miniMessage(text));
|
||||||
}
|
}
|
||||||
@@ -198,7 +199,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
|||||||
if (Math.random() > chance.evaluate(context)) return;
|
if (Math.random() > chance.evaluate(context)) return;
|
||||||
String random = messages.get(RandomUtils.generateRandomInt(0, messages.size() - 1));
|
String random = messages.get(RandomUtils.generateRandomInt(0, messages.size() - 1));
|
||||||
random = BukkitPlaceholderManager.getInstance().parse(context.holder(), random, context.placeholderMap());
|
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));
|
audience.sendMessage(AdventureHelper.miniMessage(random));
|
||||||
};
|
};
|
||||||
}, "random-message");
|
}, "random-message");
|
||||||
@@ -208,7 +209,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
|||||||
if (Math.random() > chance.evaluate(context)) return;
|
if (Math.random() > chance.evaluate(context)) return;
|
||||||
List<String> replaced = plugin.getPlaceholderManager().parse(context.holder(), messages, context.placeholderMap());
|
List<String> replaced = plugin.getPlaceholderManager().parse(context.holder(), messages, context.placeholderMap());
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
Sender audience = plugin.getSenderFactory().wrap(player);
|
||||||
for (String text : replaced) {
|
for (String text : replaced) {
|
||||||
audience.sendMessage(AdventureHelper.miniMessage(text));
|
audience.sendMessage(AdventureHelper.miniMessage(text));
|
||||||
}
|
}
|
||||||
@@ -232,7 +233,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
|||||||
messages,
|
messages,
|
||||||
context.placeholderMap()
|
context.placeholderMap()
|
||||||
);
|
);
|
||||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
Sender audience = plugin.getSenderFactory().wrap(player);
|
||||||
for (String text : replaced) {
|
for (String text : replaced) {
|
||||||
audience.sendMessage(AdventureHelper.miniMessage(text));
|
audience.sendMessage(AdventureHelper.miniMessage(text));
|
||||||
}
|
}
|
||||||
@@ -321,9 +322,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
|||||||
String text = (String) args;
|
String text = (String) args;
|
||||||
return context -> {
|
return context -> {
|
||||||
if (Math.random() > chance.evaluate(context)) return;
|
if (Math.random() > chance.evaluate(context)) return;
|
||||||
Audience audience = plugin.getSenderFactory().getAudience(context.holder());
|
SparrowHeart.getInstance().sendActionBar(context.holder(), AdventureHelper.componentToJson(AdventureHelper.miniMessage(plugin.getPlaceholderManager().parse(context.holder(), text, context.placeholderMap()))));
|
||||||
Component component = AdventureHelper.miniMessage(plugin.getPlaceholderManager().parse(context.holder(), text, context.placeholderMap()));
|
|
||||||
audience.sendActionBar(component);
|
|
||||||
};
|
};
|
||||||
}, "actionbar");
|
}, "actionbar");
|
||||||
registerAction((args, chance) -> {
|
registerAction((args, chance) -> {
|
||||||
@@ -332,8 +331,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
|||||||
if (Math.random() > chance.evaluate(context)) return;
|
if (Math.random() > chance.evaluate(context)) return;
|
||||||
String random = texts.get(RandomUtils.generateRandomInt(0, texts.size() - 1));
|
String random = texts.get(RandomUtils.generateRandomInt(0, texts.size() - 1));
|
||||||
random = plugin.getPlaceholderManager().parse(context.holder(), random, context.placeholderMap());
|
random = plugin.getPlaceholderManager().parse(context.holder(), random, context.placeholderMap());
|
||||||
Audience audience = plugin.getSenderFactory().getAudience(context.holder());
|
SparrowHeart.getInstance().sendActionBar(context.holder(), AdventureHelper.componentToJson(AdventureHelper.miniMessage(random)));
|
||||||
audience.sendActionBar(AdventureHelper.miniMessage(random));
|
|
||||||
};
|
};
|
||||||
}, "random-actionbar");
|
}, "random-actionbar");
|
||||||
registerAction((args, chance) -> {
|
registerAction((args, chance) -> {
|
||||||
@@ -349,8 +347,7 @@ public class BukkitActionManager implements ActionManager<Player> {
|
|||||||
if (LocationUtils.getDistance(player.getLocation(), location) <= realRange) {
|
if (LocationUtils.getDistance(player.getLocation(), location) <= realRange) {
|
||||||
context.arg(ContextKeys.TEMP_NEAR_PLAYER, player.getName());
|
context.arg(ContextKeys.TEMP_NEAR_PLAYER, player.getName());
|
||||||
String replaced = plugin.getPlaceholderManager().parse(owner, actionbar, context.placeholderMap());
|
String replaced = plugin.getPlaceholderManager().parse(owner, actionbar, context.placeholderMap());
|
||||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
SparrowHeart.getInstance().sendActionBar(player, AdventureHelper.componentToJson(AdventureHelper.miniMessage(replaced)));
|
||||||
audience.sendActionBar(AdventureHelper.miniMessage(replaced));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -814,10 +811,9 @@ public class BukkitActionManager implements ActionManager<Player> {
|
|||||||
return context -> {
|
return context -> {
|
||||||
if (Math.random() > chance.evaluate(context)) return;
|
if (Math.random() > chance.evaluate(context)) return;
|
||||||
final Player player = context.holder();
|
final Player player = context.holder();
|
||||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
SparrowHeart.getInstance().sendTitle(player,
|
||||||
AdventureHelper.sendTitle(audience,
|
AdventureHelper.componentToJson(AdventureHelper.miniMessage(title.render(context))),
|
||||||
AdventureHelper.miniMessage(title.render(context)),
|
AdventureHelper.componentToJson(AdventureHelper.miniMessage(subtitle.render(context))),
|
||||||
AdventureHelper.miniMessage(subtitle.render(context)),
|
|
||||||
fadeIn, stay, fadeOut
|
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> title = TextValue.auto(titles.get(RandomUtils.generateRandomInt(0, titles.size() - 1)));
|
||||||
TextValue<Player> subtitle = TextValue.auto(subtitles.get(RandomUtils.generateRandomInt(0, subtitles.size() - 1)));
|
TextValue<Player> subtitle = TextValue.auto(subtitles.get(RandomUtils.generateRandomInt(0, subtitles.size() - 1)));
|
||||||
final Player player = context.holder();
|
final Player player = context.holder();
|
||||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
SparrowHeart.getInstance().sendTitle(player,
|
||||||
AdventureHelper.sendTitle(audience,
|
AdventureHelper.componentToJson(AdventureHelper.miniMessage(title.render(context))),
|
||||||
AdventureHelper.miniMessage(title.render(context)),
|
AdventureHelper.componentToJson(AdventureHelper.miniMessage(subtitle.render(context))),
|
||||||
AdventureHelper.miniMessage(subtitle.render(context)),
|
|
||||||
fadeIn, stay, fadeOut
|
fadeIn, stay, fadeOut
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -866,10 +861,9 @@ public class BukkitActionManager implements ActionManager<Player> {
|
|||||||
for (Player player : location.getWorld().getPlayers()) {
|
for (Player player : location.getWorld().getPlayers()) {
|
||||||
if (LocationUtils.getDistance(player.getLocation(), location) <= range) {
|
if (LocationUtils.getDistance(player.getLocation(), location) <= range) {
|
||||||
context.arg(ContextKeys.TEMP_NEAR_PLAYER, player.getName());
|
context.arg(ContextKeys.TEMP_NEAR_PLAYER, player.getName());
|
||||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
SparrowHeart.getInstance().sendTitle(player,
|
||||||
AdventureHelper.sendTitle(audience,
|
AdventureHelper.componentToJson(AdventureHelper.miniMessage(title.render(context))),
|
||||||
AdventureHelper.miniMessage(title.render(context)),
|
AdventureHelper.componentToJson(AdventureHelper.miniMessage(subtitle.render(context))),
|
||||||
AdventureHelper.miniMessage(subtitle.render(context)),
|
|
||||||
fadeIn, stay, fadeOut
|
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.MessageConstants;
|
||||||
import net.momirealms.customfishing.common.locale.TranslationManager;
|
import net.momirealms.customfishing.common.locale.TranslationManager;
|
||||||
import net.momirealms.customfishing.common.plugin.scheduler.SchedulerTask;
|
import net.momirealms.customfishing.common.plugin.scheduler.SchedulerTask;
|
||||||
|
import net.momirealms.customfishing.common.sender.Sender;
|
||||||
import net.momirealms.customfishing.common.util.Pair;
|
import net.momirealms.customfishing.common.util.Pair;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
@@ -50,6 +51,7 @@ import java.time.Instant;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class Competition implements FishingCompetition {
|
public class Competition implements FishingCompetition {
|
||||||
@@ -196,11 +198,11 @@ public class Competition implements FishingCompetition {
|
|||||||
private void broadcast(BroadcastConfig config) {
|
private void broadcast(BroadcastConfig config) {
|
||||||
String[] texts = config.texts();
|
String[] texts = config.texts();
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
Audience audience = plugin.getSenderFactory().getAudience(player);
|
Sender audience = plugin.getSenderFactory().wrap(player);
|
||||||
for (String s : texts) {
|
for (String s : texts) {
|
||||||
DynamicText text = new DynamicText(player, s);
|
DynamicText text = new DynamicText(player, s);
|
||||||
text.update(this.publicContext.placeholderMap());
|
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" -> {
|
"1.21", "1.21.1", "1.21.2", "1.21.3", "1.21.4" -> {
|
||||||
return new ComponentItemFactory(plugin);
|
return new ComponentItemFactory(plugin);
|
||||||
}
|
}
|
||||||
case "1.21.5" -> {
|
case "1.21.5", "1.21.6" -> {
|
||||||
return new ComponentItemFactory1_21_5(plugin);
|
return new ComponentItemFactory1_21_5(plugin);
|
||||||
}
|
}
|
||||||
default -> throw new IllegalStateException("Unsupported server version: " + plugin.getServerVersion());
|
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.platform.bukkit.BukkitAudiences;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
|
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.Sender;
|
||||||
import net.momirealms.customfishing.common.sender.SenderFactory;
|
import net.momirealms.customfishing.common.sender.SenderFactory;
|
||||||
import net.momirealms.customfishing.common.util.Tristate;
|
import net.momirealms.customfishing.common.util.Tristate;
|
||||||
|
import net.momirealms.sparrow.heart.SparrowHeart;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.ConsoleCommandSender;
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
import org.bukkit.command.RemoteConsoleCommandSender;
|
import org.bukkit.command.RemoteConsoleCommandSender;
|
||||||
@@ -70,8 +72,9 @@ public class BukkitSenderFactory extends SenderFactory<BukkitCustomFishingPlugin
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void sendMessage(CommandSender sender, Component message) {
|
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 player) {
|
||||||
if (sender instanceof Player || sender instanceof ConsoleCommandSender || sender instanceof RemoteConsoleCommandSender) {
|
SparrowHeart.getInstance().sendMessage(player, AdventureHelper.componentToJson(message));
|
||||||
|
} else if (sender instanceof ConsoleCommandSender || sender instanceof RemoteConsoleCommandSender) {
|
||||||
getAudience(sender).sendMessage(message);
|
getAudience(sender).sendMessage(message);
|
||||||
} else {
|
} else {
|
||||||
getPlugin().getScheduler().executeSync(() -> getAudience(sender).sendMessage(message));
|
getPlugin().getScheduler().executeSync(() -> getAudience(sender).sendMessage(message));
|
||||||
|
|||||||
@@ -1,75 +1,68 @@
|
|||||||
angler_helmet:
|
angler_helmet:
|
||||||
material: IRON_HELMET
|
material: IRON_HELMET
|
||||||
display:
|
display:
|
||||||
name: "<b><#A0D2DB>Angler's Helmet</b>"
|
name: "<b><#A0D2DB>Angler's Helmet</b>"
|
||||||
lore:
|
lore:
|
||||||
- ''
|
- ''
|
||||||
- '<#7FFFD4>Description:'
|
- '<#7FFFD4>Description:'
|
||||||
- '<gray> - A sturdy helmet that slightly increases concentration when fishing.'
|
- '<gray> - A sturdy helmet that slightly increases concentration when fishing.'
|
||||||
- ''
|
- ''
|
||||||
- '<#FFD700>Effects:'
|
- '<#FFD700>Effects:'
|
||||||
- '<gray> - Slightly reduces fishing difficulty.'
|
- '<gray> - Slightly reduces fishing difficulty.'
|
||||||
custom-model-data: 50010 # Example
|
custom-model-data: 50010 # Example
|
||||||
events:
|
effects:
|
||||||
success: # -1 durability when player successfully catches fish
|
effect_1:
|
||||||
durability_action:
|
type: difficulty
|
||||||
type: durability
|
value: -2
|
||||||
value:
|
|
||||||
slot: head
|
deep_sea_chestplate:
|
||||||
amount: -1
|
material: DIAMOND_CHESTPLATE
|
||||||
effects:
|
display:
|
||||||
effect_1:
|
name: "<b><#3A6EA5>Deep Sea Chestplate</b>"
|
||||||
type: difficulty
|
lore:
|
||||||
value: -2
|
- ''
|
||||||
|
- '<#7FFFD4>Description:'
|
||||||
deep_sea_chestplate:
|
- '<gray> - Reinforced chestplate that helps attract larger fish.'
|
||||||
material: DIAMOND_CHESTPLATE
|
- ''
|
||||||
display:
|
- '<#FFD700>Effects:'
|
||||||
name: "<b><#3A6EA5>Deep Sea Chestplate</b>"
|
- '<gray> - Increases the chance of catching silver star fish.'
|
||||||
lore:
|
custom-model-data: 50011
|
||||||
- ''
|
effects:
|
||||||
- '<#7FFFD4>Description:'
|
effect_1:
|
||||||
- '<gray> - Reinforced chestplate that helps attract larger fish.'
|
type: group-mod
|
||||||
- ''
|
value:
|
||||||
- '<#FFD700>Effects:'
|
- silver_star:+1
|
||||||
- '<gray> - Increases the chance of catching silver star fish.'
|
|
||||||
custom-model-data: 50011
|
swift_leggings:
|
||||||
effects:
|
material: LEATHER_LEGGINGS
|
||||||
effect_1:
|
display:
|
||||||
type: group-mod
|
name: "<b><#C0C0C0>Swift Leggings</b>"
|
||||||
value:
|
lore:
|
||||||
- silver_star:+1
|
- ''
|
||||||
|
- '<#7FFFD4>Description:'
|
||||||
swift_leggings:
|
- '<gray> - Lightweight leggings that help reduce the waiting time for a fish to bite.'
|
||||||
material: LEATHER_LEGGINGS
|
- ''
|
||||||
display:
|
- '<#FFD700>Effects:'
|
||||||
name: "<b><#C0C0C0>Swift Leggings</b>"
|
- '<gray> - Slightly reduces waiting time.'
|
||||||
lore:
|
custom-model-data: 50012 # Example
|
||||||
- ''
|
effects:
|
||||||
- '<#7FFFD4>Description:'
|
effect_1:
|
||||||
- '<gray> - Lightweight leggings that help reduce the waiting time for a fish to bite.'
|
type: wait-time-multiplier
|
||||||
- ''
|
value: 0.98 # Reduces by 2%
|
||||||
- '<#FFD700>Effects:'
|
|
||||||
- '<gray> - Slightly reduces waiting time.'
|
sturdy_boots:
|
||||||
custom-model-data: 50012 # Example
|
material: GOLDEN_BOOTS
|
||||||
effects:
|
display:
|
||||||
effect_1:
|
name: "<b><#FFD700>Sturdy Boots</b>"
|
||||||
type: wait-time-multiplier
|
lore:
|
||||||
value: 0.98 # Reduces by 2%
|
- ''
|
||||||
|
- '<#7FFFD4>Description:'
|
||||||
sturdy_boots:
|
- '<gray> - Boots that help you stand firmer, making the game a little easier.'
|
||||||
material: GOLDEN_BOOTS
|
- ''
|
||||||
display:
|
- '<#FFD700>Effects:'
|
||||||
name: "<b><#FFD700>Sturdy Boots</b>"
|
- '<gray> - Slightly reduces game time (making it easier).'
|
||||||
lore:
|
custom-model-data: 50013 # Example
|
||||||
- ''
|
effects:
|
||||||
- '<#7FFFD4>Description:'
|
effect_1:
|
||||||
- '<gray> - Boots that help you stand firmer, making the game a little easier.'
|
type: game-time
|
||||||
- ''
|
value: -0.5 # Reduces game time by 0.5 seconds
|
||||||
- '<#FFD700>Effects:'
|
|
||||||
- '<gray> - Slightly reduces game time (making it easier).'
|
|
||||||
custom-model-data: 50013 # Example
|
|
||||||
effects:
|
|
||||||
effect_1:
|
|
||||||
type: game-time
|
|
||||||
value: -0.5 # Reduces game time by 0.5 seconds
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Project settings
|
# Project settings
|
||||||
# Rule: [major update].[feature update].[bug fix]
|
# Rule: [major update].[feature update].[bug fix]
|
||||||
project_version=2.3.12
|
project_version=2.3.13
|
||||||
config_version=38
|
config_version=38
|
||||||
project_group=net.momirealms
|
project_group=net.momirealms
|
||||||
|
|
||||||
@@ -18,9 +18,9 @@ asm_commons_version=9.8
|
|||||||
jar_relocator_version=1.7
|
jar_relocator_version=1.7
|
||||||
h2_driver_version=2.3.232
|
h2_driver_version=2.3.232
|
||||||
sqlite_driver_version=3.49.1.0
|
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
|
adventure_platform_version=4.4.0
|
||||||
sparrow_heart_version=0.55.2
|
sparrow_heart_version=0.57
|
||||||
cloud_core_version=2.0.0
|
cloud_core_version=2.0.0
|
||||||
cloud_services_version=2.0.0
|
cloud_services_version=2.0.0
|
||||||
cloud_brigadier_version=2.0.0-beta.10
|
cloud_brigadier_version=2.0.0-beta.10
|
||||||
@@ -37,7 +37,7 @@ commons_pool_version=2.12.1
|
|||||||
bstats_version=3.1.0
|
bstats_version=3.1.0
|
||||||
geantyref_version=1.3.16
|
geantyref_version=1.3.16
|
||||||
caffeine_version=3.2.0
|
caffeine_version=3.2.0
|
||||||
rtag_version=1.5.10
|
rtag_version=1.5.11
|
||||||
jedis_version=5.2.0
|
jedis_version=5.2.0
|
||||||
exp4j_version=0.4.8
|
exp4j_version=0.4.8
|
||||||
placeholder_api_version=2.11.6
|
placeholder_api_version=2.11.6
|
||||||
|
|||||||
Reference in New Issue
Block a user