From 35b24a693b0864e7ae03de5697e90bcf7299d974 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Sat, 20 Jan 2024 20:33:22 +0800 Subject: [PATCH] 2.0.11.2 --- .../api/mechanic/game/GamingPlayer.java | 3 ++ build.gradle.kts | 2 +- .../mechanic/fishing/FishingManagerImpl.java | 10 +++-- .../mechanic/game/GameManagerImpl.java | 45 +++++++++++++++++++ 4 files changed, 55 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/game/GamingPlayer.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/game/GamingPlayer.java index 55066122..76ffff13 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/game/GamingPlayer.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/game/GamingPlayer.java @@ -40,6 +40,9 @@ public interface GamingPlayer { */ boolean onSwapHand(); + /** + * @return whether to cancel the event + */ boolean onLeftClick(); /** diff --git a/build.gradle.kts b/build.gradle.kts index a9c2c2e7..a01001f2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { allprojects { - version = "2.0.11.1" + version = "2.0.11.2" apply() apply(plugin = "java") 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 4276c5fa..c2435c34 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 @@ -17,9 +17,11 @@ package net.momirealms.customfishing.mechanic.fishing; +import com.comphenix.protocol.events.PacketContainer; import com.destroystokyo.paper.event.player.PlayerJumpEvent; import de.tr7zw.changeme.nbtapi.NBTCompound; import de.tr7zw.changeme.nbtapi.NBTItem; +import io.lumine.mythic.lib.api.event.AttackEvent; import net.kyori.adventure.key.Key; import net.kyori.adventure.sound.Sound; import net.momirealms.customfishing.CustomFishingPluginImpl; @@ -157,10 +159,11 @@ public class FishingManagerImpl implements Listener, FishingManager { } /** - * Known bug: When you fish, both left click air and right click air + * Known bug: This is a Minecraft packet limitation + * When you fish, both left click air and right click air * are triggered. And you can't cancel the left click event. */ - @EventHandler + @EventHandler (ignoreCancelled = false) public void onLeftClick(PlayerInteractEvent event) { if (event.getAction() != Action.LEFT_CLICK_AIR) return; @@ -175,9 +178,8 @@ public class FishingManagerImpl implements Listener, FishingManager { } } - @EventHandler + @EventHandler (ignoreCancelled = true) public void onSwapHand(PlayerSwapHandItemsEvent event) { - if (event.isCancelled()) return; GamingPlayer gamingPlayer = gamingPlayerMap.get(event.getPlayer().getUniqueId()); if (gamingPlayer != null) { if (gamingPlayer.onSwapHand()) diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/game/GameManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/game/GameManagerImpl.java index 09f8d63e..07d21bf1 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/game/GameManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/game/GameManagerImpl.java @@ -504,11 +504,13 @@ public class GameManagerImpl implements GameManager { var title = section.getString("title","{click}"); var subtitle = section.getString("subtitle", "Click {clicks} times to win. Time left {time}s"); + var left = section.getBoolean("left-click", true); return (player, fishHook, settings) -> new AbstractGamingPlayer(player, fishHook, settings) { private int clickedTimes; private final int requiredTimes = settings.getDifficulty(); + private boolean preventFirst = true; @Override public void arrangeTask() { @@ -522,6 +524,11 @@ public class GameManagerImpl implements GameManager { @Override public boolean onRightClick() { + if (left) { + setGameResult(false); + endGame(); + return true; + } clickedTimes++; if (clickedTimes >= requiredTimes) { setGameResult(true); @@ -530,6 +537,23 @@ public class GameManagerImpl implements GameManager { return true; } + @Override + public boolean onLeftClick() { + if (!left) { + return false; + } + if (preventFirst) { + preventFirst = false; + return false; + } + clickedTimes++; + if (clickedTimes >= requiredTimes) { + setGameResult(true); + endGame(); + } + return false; + } + public void showUI() { AdventureManagerImpl.getInstance().sendTitle( player, @@ -722,6 +746,8 @@ public class GameManagerImpl implements GameManager { var barImage = section.getString("subtitle.bar"); var tip = section.getString("tip"); + var left = section.getBoolean("left-click", true); + return (player, fishHook, settings) -> new AbstractGamingPlayer(player, fishHook, settings) { private double hold_time; private double judgement_position; @@ -731,6 +757,7 @@ public class GameManagerImpl implements GameManager { private int timer; private final int time_requirement = timeRequirements[ThreadLocalRandom.current().nextInt(timeRequirements.length)] * 1000; private boolean played; + private boolean preventFirst = true; @Override public void arrangeTask() { @@ -814,11 +841,29 @@ public class GameManagerImpl implements GameManager { @Override public boolean onRightClick() { + if (left) { + setGameResult(false); + endGame(); + return true; + } played = true; fish_velocity = pullingStrength; return true; } + @Override + public boolean onLeftClick() { + if (preventFirst) { + preventFirst = false; + return false; + } + if (left) { + played = true; + fish_velocity = pullingStrength; + } + return false; + } + public void showUI() { String bar = FontUtils.surroundWithFont(barImage, font) + OffsetUtils.getOffsetChars((int) (judgementAreaOffset + judgement_position))