9
0
mirror of https://github.com/Xiao-MoMi/Custom-Fishing.git synced 2025-12-19 15:09:24 +00:00
This commit is contained in:
XiaoMoMi
2024-06-28 03:04:25 +08:00
parent f7da71a4f5
commit 0ed5d5745a
12 changed files with 61 additions and 84 deletions

View File

@@ -38,6 +38,4 @@ public interface VersionManager {
String getPluginVersion(); String getPluginVersion();
boolean isMojmap(); boolean isMojmap();
String getServerVersion();
} }

View File

@@ -7,7 +7,7 @@ plugins {
allprojects { allprojects {
version = "2.2.0" version = "2.1.6.6"
apply<JavaPlugin>() apply<JavaPlugin>()
apply(plugin = "java") apply(plugin = "java")

View File

@@ -31,12 +31,14 @@ import net.momirealms.customfishing.compatibility.papi.PlaceholderManagerImpl;
import net.momirealms.customfishing.setting.CFConfig; import net.momirealms.customfishing.setting.CFConfig;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
@@ -109,12 +111,7 @@ public class BagManagerImpl implements BagManager, Listener {
int rows = getBagInventoryRows(player); int rows = getBagInventoryRows(player);
Inventory bag = onlinePlayer.getHolder().getInventory(); Inventory bag = onlinePlayer.getHolder().getInventory();
if (bag.getSize() != rows * 9) { if (bag.getSize() != rows * 9) {
Inventory newBag = InventoryUtils.createInventory(onlinePlayer.getHolder(), rows * 9, Inventory newBag = InventoryUtils.createInventory(onlinePlayer.getHolder(), rows * 9, AdventureHelper.getInstance().getComponentFromMiniMessage(PlaceholderManagerImpl.getInstance().parse(player, bagTitle, Map.of("{player}", player.getName()))));
AdventureHelper.getInstance().getComponentFromMiniMessage(
PlaceholderManagerImpl.getInstance().parse(
player, bagTitle, Map.of("{player}", player.getName())
)
));
onlinePlayer.getHolder().setInventory(newBag); onlinePlayer.getHolder().setInventory(newBag);
assert newBag != null; assert newBag != null;
ItemStack[] newContents = new ItemStack[rows * 9]; ItemStack[] newContents = new ItemStack[rows * 9];
@@ -180,9 +177,13 @@ public class BagManagerImpl implements BagManager, Listener {
if (!(event.getInventory().getHolder() instanceof FishingBagHolder)) if (!(event.getInventory().getHolder() instanceof FishingBagHolder))
return; return;
Inventory clicked = event.getClickedInventory(); Inventory clicked = event.getClickedInventory();
if (clicked != event.getWhoClicked().getInventory())
return;
ItemStack clickedItem = event.getCurrentItem(); ItemStack clickedItem = event.getCurrentItem();
if (clicked != event.getWhoClicked().getInventory()) {
if (event.getAction() != InventoryAction.HOTBAR_SWAP && event.getAction() != InventoryAction.HOTBAR_MOVE_AND_READD) {
return;
}
clickedItem = event.getWhoClicked().getInventory().getItem(event.getHotbarButton());
}
if (clickedItem == null || clickedItem.getType() == Material.AIR) if (clickedItem == null || clickedItem.getType() == Material.AIR)
return; return;
if (bagWhiteListItems.contains(clickedItem.getType())) if (bagWhiteListItems.contains(clickedItem.getType()))

View File

@@ -99,7 +99,7 @@ public class BlockManagerImpl implements BlockManager, Listener {
private void resetBlockDetectionOrder() { private void resetBlockDetectionOrder() {
ArrayList<BlockLibrary> list = new ArrayList<>(); ArrayList<BlockLibrary> list = new ArrayList<>();
for (String plugin : CFConfig.itemDetectOrder) { for (String plugin : CFConfig.blockDetectOrder) {
BlockLibrary library = blockLibraryMap.get(plugin); BlockLibrary library = blockLibraryMap.get(plugin);
if (library != null) { if (library != null) {
list.add(library); list.add(library);

View File

@@ -320,21 +320,24 @@ public class HookCheckTimerTask implements Runnable {
armorLoc.setY(armorLoc.getBlockY() + 0.2); armorLoc.setY(armorLoc.getBlockY() + 0.2);
if (hookedEntity != null && !hookedEntity.isDead()) if (hookedEntity != null && !hookedEntity.isDead())
hookedEntity.remove(); hookedEntity.remove();
hookedEntity = armorLoc.getWorld().spawn(armorLoc, ArmorStand.class, a -> { hookedEntity = armorLoc.getWorld().spawn(armorLoc, ArmorStand.class);
a.setInvisible(true); setTempEntity((ArmorStand) hookedEntity);
a.setCollidable(false); fishHook.setHookedEntity(hookedEntity);
a.setInvulnerable(true); }
a.setVisible(false);
a.setCustomNameVisible(false); private void setTempEntity(ArmorStand entity) {
a.setSmall(true); entity.setInvisible(true);
a.setGravity(false); entity.setCollidable(false);
a.getPersistentDataContainer().set( entity.setInvulnerable(true);
entity.setVisible(false);
entity.setCustomNameVisible(false);
entity.setSmall(true);
entity.setGravity(false);
entity.getPersistentDataContainer().set(
Objects.requireNonNull(NamespacedKey.fromString("lavafishing", CustomFishingPlugin.get())), Objects.requireNonNull(NamespacedKey.fromString("lavafishing", CustomFishingPlugin.get())),
PersistentDataType.STRING, PersistentDataType.STRING,
"temp" "temp"
); );
});
fishHook.setHookedEntity(hookedEntity);
} }
/** /**
@@ -351,8 +354,9 @@ public class HookCheckTimerTask implements Runnable {
double initialTime = ThreadLocalRandom.current().nextInt(CFConfig.waterMaxTime - CFConfig.waterMinTime + 1) + CFConfig.waterMinTime; double initialTime = ThreadLocalRandom.current().nextInt(CFConfig.waterMaxTime - CFConfig.waterMinTime + 1) + CFConfig.waterMinTime;
fishHook.setWaitTime(Math.max(1, (int) (initialTime * tempEffect.getWaitTimeMultiplier() + tempEffect.getWaitTime()))); fishHook.setWaitTime(Math.max(1, (int) (initialTime * tempEffect.getWaitTimeMultiplier() + tempEffect.getWaitTime())));
} else { } else {
fishHook.setMinWaitTime(Math.max(1, (int) (fishHook.getMinWaitTime() * tempEffect.getWaitTimeMultiplier() + tempEffect.getWaitTime()))); int maxWait = Math.max(2, (int) (fishHook.getMaxWaitTime() * tempEffect.getWaitTimeMultiplier() + tempEffect.getWaitTime()));
fishHook.setMaxWaitTime(Math.max(2, (int) (fishHook.getMaxWaitTime() * tempEffect.getWaitTimeMultiplier() + tempEffect.getWaitTime()))); int minWait = Math.min(Math.max(1, (int) (fishHook.getMinWaitTime() * tempEffect.getWaitTimeMultiplier() + tempEffect.getWaitTime())), fishHook.getMaxWaitTime());
fishHook.setWaitTime(ThreadLocalRandom.current().nextInt(minWait, maxWait + 1));
} }
} }
} }

View File

@@ -252,7 +252,7 @@ public class HookManagerImpl implements Listener, HookManager {
return; return;
ItemStack cursor = event.getCursor(); ItemStack cursor = event.getCursor();
if (cursor == null || cursor.getType() == Material.AIR) { if (cursor.getType() == Material.AIR) {
if (event.getClick() == ClickType.RIGHT) { if (event.getClick() == ClickType.RIGHT) {
NBTItem nbtItem = new NBTItem(clicked); NBTItem nbtItem = new NBTItem(clicked);
NBTCompound cfCompound = nbtItem.getCompound("CustomFishing"); NBTCompound cfCompound = nbtItem.getCompound("CustomFishing");
@@ -315,7 +315,7 @@ public class HookManagerImpl implements Listener, HookManager {
clonedHook.setAmount(1); clonedHook.setAmount(1);
cursor.setAmount(cursor.getAmount() - 1); cursor.setAmount(cursor.getAmount() - 1);
if (previousHookID != null && !previousHookID.equals("")) { if (previousHookID != null && !previousHookID.isEmpty()) {
int previousHookDurability = cfCompound.getInteger("hook_dur"); int previousHookDurability = cfCompound.getInteger("hook_dur");
ItemStack previousItemStack = cfCompound.getItemStack("hook_item"); ItemStack previousItemStack = cfCompound.getItemStack("hook_item");
ItemUtils.setDurability(previousItemStack, previousHookDurability, true); ItemUtils.setDurability(previousItemStack, previousHookDurability, true);

View File

@@ -306,8 +306,6 @@ public class RequirementManagerImpl implements RequirementManager {
} }
} }
} }
if (actionList.size() == 0)
actionList = null;
} }
String type = section.getString("type"); String type = section.getString("type");
if (type == null) { if (type == null) {
@@ -372,7 +370,9 @@ public class RequirementManagerImpl implements RequirementManager {
HashSet<String> arg = new HashSet<>(ConfigUtils.stringListArgs(args)); HashSet<String> arg = new HashSet<>(ConfigUtils.stringListArgs(args));
return condition -> { return condition -> {
String lootID = condition.getArg("{loot}"); String lootID = condition.getArg("{loot}");
if (lootID == null) return false;
Loot loot = plugin.getLootManager().getLoot(lootID); Loot loot = plugin.getLootManager().getLoot(lootID);
if (loot == null) return false;
String[] groups = loot.getLootGroup(); String[] groups = loot.getLootGroup();
if (groups != null) { if (groups != null) {
for (String g : groups) { for (String g : groups) {

View File

@@ -136,12 +136,10 @@ public class TotemManagerImpl implements TotemManager, Listener {
activatedTotem.cancel(); activatedTotem.cancel();
} }
@EventHandler @EventHandler (ignoreCancelled = true)
public void onInteractBlock(PlayerInteractEvent event) { public void onInteractBlock(PlayerInteractEvent event) {
if (event.isBlockInHand()) if (event.isBlockInHand())
return; return;
if (event.useItemInHand() == Event.Result.DENY)
return;
if (event.getAction() != org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK) if (event.getAction() != org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK)
return; return;
if (event.getHand() != EquipmentSlot.HAND) if (event.getHand() != EquipmentSlot.HAND)

View File

@@ -238,7 +238,7 @@ public class ItemUtils {
} }
} else { } else {
ItemMeta previousMeta = itemStack.getItemMeta().clone(); ItemMeta previousMeta = itemStack.getItemMeta().clone();
PlayerItemDamageEvent itemDamageEvent = new PlayerItemDamageEvent(player, itemStack, amount, amount); PlayerItemDamageEvent itemDamageEvent = new PlayerItemDamageEvent(player, itemStack, amount);
Bukkit.getPluginManager().callEvent(itemDamageEvent); Bukkit.getPluginManager().callEvent(itemDamageEvent);
if (!itemStack.getItemMeta().equals(previousMeta) || itemDamageEvent.isCancelled()) { if (!itemStack.getItemMeta().equals(previousMeta) || itemDamageEvent.isCancelled()) {
return; return;

View File

@@ -47,7 +47,8 @@ public class NBTUtils {
field.setAccessible(true); field.setAccessible(true);
MinecraftVersion minecraftVersion; MinecraftVersion minecraftVersion;
try { try {
minecraftVersion = MinecraftVersion.valueOf(CustomFishingPlugin.get().getVersionManager().getServerVersion().replace("v", "MC")); String serverVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
minecraftVersion = MinecraftVersion.valueOf(serverVersion.replace("v", "MC"));
} catch (Exception ex) { } catch (Exception ex) {
minecraftVersion = VERSION_TO_REVISION.getOrDefault(Bukkit.getServer().getBukkitVersion().split("-")[0], minecraftVersion = VERSION_TO_REVISION.getOrDefault(Bukkit.getServer().getBukkitVersion().split("-")[0],
MinecraftVersion.UNKNOWN); MinecraftVersion.UNKNOWN);

View File

@@ -34,47 +34,32 @@ import java.util.concurrent.CompletableFuture;
*/ */
public class VersionManagerImpl implements VersionManager { public class VersionManagerImpl implements VersionManager {
private final boolean isNewerThan1_19_R2;
private final boolean isNewerThan1_19_R3;
private final boolean isNewerThan1_20;
private final boolean isNewerThan1_19;
private final String serverVersion;
private final CustomFishingPluginImpl plugin; private final CustomFishingPluginImpl plugin;
private final boolean isSpigot; private final float mcVersion;
private boolean hasRegionScheduler; private boolean isFolia;
private boolean isMojmap; private boolean isMojmap;
private boolean isSpigot;
private final String pluginVersion; private final String pluginVersion;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public VersionManagerImpl(CustomFishingPluginImpl plugin) { public VersionManagerImpl(CustomFishingPluginImpl plugin) {
this.plugin = plugin; this.plugin = plugin;
// Get the server version // Get the server version
serverVersion = Bukkit.getServer().getBukkitVersion().split("-")[0];
String[] split = serverVersion.split("\\."); String[] split = Bukkit.getServer().getBukkitVersion().split("-")[0].split("\\.");
int main_ver = Integer.parseInt(split[1]); this.mcVersion = Float.parseFloat(split[1] + "." + (split.length >= 3 ? split[2] : "0"));
// Determine if the server version is newer than 1_19_R2 and 1_20_R1
if (main_ver >= 20) { // Get the plugin version
isNewerThan1_19 = isNewerThan1_19_R2 = isNewerThan1_19_R3 = true; this.pluginVersion = plugin.getDescription().getVersion();
isNewerThan1_20 = true;
} else if (main_ver == 19) { this.isSpigot = Bukkit.getServer().getName().equals("CraftBukkit");
isNewerThan1_20 = false;
isNewerThan1_19_R2 = Integer.parseInt(split[2]) >= 3;
isNewerThan1_19_R3 = Integer.parseInt(split[2]) >= 4;
isNewerThan1_19 = true;
} else {
isNewerThan1_20 = isNewerThan1_19 = isNewerThan1_19_R2 = isNewerThan1_19_R3 = false;
}
// Check if the server is Spigot
String server_name = plugin.getServer().getName();
this.isSpigot = server_name.equals("CraftBukkit");
// Check if the server is Folia // Check if the server is Folia
try { try {
Class.forName("io.papermc.paper.threadedregions.scheduler.AsyncScheduler"); Class.forName("io.papermc.paper.threadedregions.RegionizedServer");
this.hasRegionScheduler = true; this.isFolia = true;
} catch (ClassNotFoundException ignored) { } catch (ClassNotFoundException ignored) {
this.isFolia = false;
} }
// Check if the server is Mojmap // Check if the server is Mojmap
@@ -82,37 +67,32 @@ public class VersionManagerImpl implements VersionManager {
Class.forName("net.minecraft.network.protocol.game.ClientboundBossEventPacket"); Class.forName("net.minecraft.network.protocol.game.ClientboundBossEventPacket");
this.isMojmap = true; this.isMojmap = true;
} catch (ClassNotFoundException ignored) { } catch (ClassNotFoundException ignored) {
} }
// Get the plugin version
this.pluginVersion = plugin.getDescription().getVersion();
} }
@Override @Override
public boolean isVersionNewerThan1_19() { public boolean isVersionNewerThan1_19() {
return isNewerThan1_19; return mcVersion >= 19;
} }
@Override @Override
public boolean isVersionNewerThan1_19_R3() { public boolean isVersionNewerThan1_19_R3() {
return isNewerThan1_19_R3; return mcVersion >= 19.4;
} }
@Override @Override
public boolean isVersionNewerThan1_19_R2() { public boolean isVersionNewerThan1_19_R2() {
return isNewerThan1_19_R2; return mcVersion >= 19.3;
} }
@Override @Override
public boolean isVersionNewerThan1_20() { public boolean isVersionNewerThan1_20() {
return isNewerThan1_20; return mcVersion >= 20;
} }
@Override @Override
public boolean isSpigot() { public boolean isSpigot() {
return isSpigot; return false;
} }
@Override @Override
@@ -122,7 +102,7 @@ public class VersionManagerImpl implements VersionManager {
@Override @Override
public boolean hasRegionScheduler() { public boolean hasRegionScheduler() {
return hasRegionScheduler; return isFolia;
} }
@Override @Override
@@ -130,11 +110,6 @@ public class VersionManagerImpl implements VersionManager {
return isMojmap; return isMojmap;
} }
@Override
public String getServerVersion() {
return serverVersion;
}
// Method to asynchronously check for plugin updates // Method to asynchronously check for plugin updates
@Override @Override
public CompletableFuture<Boolean> checkUpdate() { public CompletableFuture<Boolean> checkUpdate() {