From 75502b1d91bf80bcaa54556f17e8b8fd05b80589 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Wed, 27 Sep 2023 23:20:39 +0800 Subject: [PATCH] api --- .../api/event/FishingResultEvent.java | 14 +++++++++++- .../api/mechanic/loot/CFLoot.java | 20 +++++++++++++++++ plugin/build.gradle.kts | 1 + .../command/CommandManagerImpl.java | 1 + .../command/sub/GUIEditorCommand.java | 22 +++++++++++++++++++ .../customfishing/gui/EditConditionGUI.java | 15 +++++++++++++ .../mechanic/action/ActionManagerImpl.java | 14 ------------ .../mechanic/fishing/FishingManagerImpl.java | 7 ++++-- .../mechanic/loot/LootManagerImpl.java | 4 +++- .../method/database/nosql/MongoDBImpl.java | 2 ++ 10 files changed, 82 insertions(+), 18 deletions(-) create mode 100644 plugin/src/main/java/net/momirealms/customfishing/command/sub/GUIEditorCommand.java create mode 100644 plugin/src/main/java/net/momirealms/customfishing/gui/EditConditionGUI.java diff --git a/api/src/main/java/net/momirealms/customfishing/api/event/FishingResultEvent.java b/api/src/main/java/net/momirealms/customfishing/api/event/FishingResultEvent.java index 19590f80..88317774 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/event/FishingResultEvent.java +++ b/api/src/main/java/net/momirealms/customfishing/api/event/FishingResultEvent.java @@ -18,6 +18,7 @@ package net.momirealms.customfishing.api.event; import net.momirealms.customfishing.api.mechanic.loot.Loot; +import org.bukkit.entity.FishHook; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; @@ -36,6 +37,7 @@ public class FishingResultEvent extends PlayerEvent implements Cancellable { private boolean isCancelled; private final Result result; private final Loot loot; + private final FishHook fishHook; private final Map args; /** @@ -46,11 +48,12 @@ public class FishingResultEvent extends PlayerEvent implements Cancellable { * @param loot The loot received from fishing. * @param args A map of placeholders and their corresponding values. */ - public FishingResultEvent(@NotNull Player who, Result result, Loot loot, Map args) { + public FishingResultEvent(@NotNull Player who, Result result, FishHook fishHook, Loot loot, Map args) { super(who); this.result = result; this.loot = loot; this.args = args; + this.fishHook = fishHook; } public static HandlerList getHandlerList() { @@ -93,6 +96,15 @@ public class FishingResultEvent extends PlayerEvent implements Cancellable { return result; } + /** + * Get the fish hook entity. + * + * @return fish hook + */ + public FishHook getFishHook() { + return fishHook; + } + /** * Gets the loot received from fishing. * diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/CFLoot.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/CFLoot.java index 8279e347..d2b1582c 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/CFLoot.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/CFLoot.java @@ -37,6 +37,7 @@ public class CFLoot implements Loot { private boolean instanceGame; private double score; private String[] lootGroup; + private String filePath; public CFLoot(String id, LootType type) { this.id = id; @@ -60,6 +61,17 @@ public class CFLoot implements Loot { this.loot = new CFLoot(id, type); } + /** + * Set the file path for this loot. + * + * @param path file path + * @return The builder. + */ + public Builder filePath(String path) { + this.loot.filePath = path; + return this; + } + /** * Set the nickname for this loot. * @@ -310,6 +322,14 @@ public class CFLoot implements Loot { } } + /** + * Get the file path of the loot registered by CustomFishing + * @return file path + */ + public String getFilePath() { + return filePath; + } + /** * Get the actions triggered by a specific number of successes. * diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 795ffed3..a4effdce 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -75,6 +75,7 @@ dependencies { // anvil implementation("net.wesjd:anvilgui:1.9.0-SNAPSHOT") + implementation("de.themoep:inventorygui:1.6.1-SNAPSHOT") } tasks { diff --git a/plugin/src/main/java/net/momirealms/customfishing/command/CommandManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/command/CommandManagerImpl.java index 0806d90d..c559df68 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/command/CommandManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/command/CommandManagerImpl.java @@ -52,6 +52,7 @@ public class CommandManagerImpl implements CommandManager { getReloadCommand(), getMarketCommand(), getAboutCommand(), + GUIEditorCommand.INSTANCE.getEditorCommand(), DataCommand.INSTANCE.getDataCommand(), CompetitionCommand.INSTANCE.getCompetitionCommand(), ItemCommand.INSTANCE.getItemCommand(), diff --git a/plugin/src/main/java/net/momirealms/customfishing/command/sub/GUIEditorCommand.java b/plugin/src/main/java/net/momirealms/customfishing/command/sub/GUIEditorCommand.java new file mode 100644 index 00000000..c78ceb63 --- /dev/null +++ b/plugin/src/main/java/net/momirealms/customfishing/command/sub/GUIEditorCommand.java @@ -0,0 +1,22 @@ +package net.momirealms.customfishing.command.sub; + +import dev.jorel.commandapi.CommandAPICommand; + +public class GUIEditorCommand { + + public static GUIEditorCommand INSTANCE = new GUIEditorCommand(); + + public CommandAPICommand getEditorCommand() { + return new CommandAPICommand("edit") + .withSubcommands( + + ); + } + + private CommandAPICommand getLootCommand() { + return new CommandAPICommand("loot") + .withSubcommands( + + ); + } +} diff --git a/plugin/src/main/java/net/momirealms/customfishing/gui/EditConditionGUI.java b/plugin/src/main/java/net/momirealms/customfishing/gui/EditConditionGUI.java new file mode 100644 index 00000000..c8e1b808 --- /dev/null +++ b/plugin/src/main/java/net/momirealms/customfishing/gui/EditConditionGUI.java @@ -0,0 +1,15 @@ +package net.momirealms.customfishing.gui; + +public class EditConditionGUI { + + private String[] guiLayout = new String[] { + " ", + " ", + " ", + " ", + " ", + " " + }; + + +} diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/action/ActionManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/action/ActionManagerImpl.java index fafda2e2..0d3b20c9 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/action/ActionManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/action/ActionManagerImpl.java @@ -955,18 +955,4 @@ public class ActionManagerImpl implements ActionManager { }; }); } - - private void registerTempEffectAction() { - registerAction("temp-effects", (args, chance) -> { - if (args instanceof ConfigurationSection section) { - return condition -> { - if (Math.random() > chance) return; - - }; - } else { - LogUtils.warn("Illegal value format found at action: temp-effects"); - return EmptyAction.instance; - } - }); - } } diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java index 04794e90..5d6bc714 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java @@ -546,12 +546,13 @@ public class FishingManagerImpl implements Listener, FishingManager { ItemUtils.decreaseDurability(rod, 1, true); } - fishHook.remove(); - if (gamingPlayer.isSuccessful()) success(tempFishingState, fishHook); else fail(tempFishingState, fishHook); + + fishHook.remove(); + }, fishHook.getLocation()); } @@ -571,6 +572,7 @@ public class FishingManagerImpl implements Listener, FishingManager { FishingResultEvent fishingResultEvent = new FishingResultEvent( fishingPreparation.getPlayer(), FishingResultEvent.Result.FAILURE, + hook, loot, fishingPreparation.getArgs() ); @@ -611,6 +613,7 @@ public class FishingManagerImpl implements Listener, FishingManager { FishingResultEvent fishingResultEvent = new FishingResultEvent( player, FishingResultEvent.Result.SUCCESS, + hook, loot, fishingPreparation.getArgs() ); diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java index 32bf758b..a07abb4a 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java @@ -222,6 +222,7 @@ public class LootManagerImpl implements LootManager { for (Map.Entry entry : yaml.getValues(false).entrySet()) { if (entry.getValue() instanceof ConfigurationSection section) { var loot = getSingleSectionItem( + file.getPath(), section, namespace, entry.getKey() @@ -252,8 +253,9 @@ public class LootManagerImpl implements LootManager { * @param key The unique key identifying the loot configuration. * @return A CFLoot object representing the loot configuration. */ - private CFLoot getSingleSectionItem(ConfigurationSection section, String namespace, String key) { + private CFLoot getSingleSectionItem(String filePath, ConfigurationSection section, String namespace, String key) { return new CFLoot.Builder(key, LootType.valueOf(namespace.toUpperCase(Locale.ENGLISH))) + .filePath(filePath) .disableStats(section.getBoolean("disable-stat", false)) .disableGames(section.getBoolean("disable-game", false)) .instantGame(section.getBoolean("instant-game", false)) diff --git a/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/nosql/MongoDBImpl.java b/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/nosql/MongoDBImpl.java index 1bfd7562..10f47edf 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/nosql/MongoDBImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/nosql/MongoDBImpl.java @@ -99,6 +99,8 @@ public class MongoDBImpl extends AbstractStorage { } } + + /** * Get the collection name for a specific subcategory of data. *