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();
boolean isMojmap();
String getServerVersion();
}

View File

@@ -13,4 +13,4 @@ public interface TotemParticle {
* @return cancellable task
*/
CancellableTask start(Location location, double radius);
}
}

View File

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

View File

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

View File

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

View File

@@ -320,23 +320,26 @@ public class HookCheckTimerTask implements Runnable {
armorLoc.setY(armorLoc.getBlockY() + 0.2);
if (hookedEntity != null && !hookedEntity.isDead())
hookedEntity.remove();
hookedEntity = armorLoc.getWorld().spawn(armorLoc, ArmorStand.class, a -> {
a.setInvisible(true);
a.setCollidable(false);
a.setInvulnerable(true);
a.setVisible(false);
a.setCustomNameVisible(false);
a.setSmall(true);
a.setGravity(false);
a.getPersistentDataContainer().set(
Objects.requireNonNull(NamespacedKey.fromString("lavafishing", CustomFishingPlugin.get())),
PersistentDataType.STRING,
"temp"
);
});
hookedEntity = armorLoc.getWorld().spawn(armorLoc, ArmorStand.class);
setTempEntity((ArmorStand) hookedEntity);
fishHook.setHookedEntity(hookedEntity);
}
private void setTempEntity(ArmorStand entity) {
entity.setInvisible(true);
entity.setCollidable(false);
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())),
PersistentDataType.STRING,
"temp"
);
}
/**
* Checks if the fish hook is currently hooked.
*
@@ -351,8 +354,9 @@ public class HookCheckTimerTask implements Runnable {
double initialTime = ThreadLocalRandom.current().nextInt(CFConfig.waterMaxTime - CFConfig.waterMinTime + 1) + CFConfig.waterMinTime;
fishHook.setWaitTime(Math.max(1, (int) (initialTime * tempEffect.getWaitTimeMultiplier() + tempEffect.getWaitTime())));
} else {
fishHook.setMinWaitTime(Math.max(1, (int) (fishHook.getMinWaitTime() * tempEffect.getWaitTimeMultiplier() + tempEffect.getWaitTime())));
fishHook.setMaxWaitTime(Math.max(2, (int) (fishHook.getMaxWaitTime() * tempEffect.getWaitTimeMultiplier() + tempEffect.getWaitTime())));
int maxWait = 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;
ItemStack cursor = event.getCursor();
if (cursor == null || cursor.getType() == Material.AIR) {
if (cursor.getType() == Material.AIR) {
if (event.getClick() == ClickType.RIGHT) {
NBTItem nbtItem = new NBTItem(clicked);
NBTCompound cfCompound = nbtItem.getCompound("CustomFishing");
@@ -315,7 +315,7 @@ public class HookManagerImpl implements Listener, HookManager {
clonedHook.setAmount(1);
cursor.setAmount(cursor.getAmount() - 1);
if (previousHookID != null && !previousHookID.equals("")) {
if (previousHookID != null && !previousHookID.isEmpty()) {
int previousHookDurability = cfCompound.getInteger("hook_dur");
ItemStack previousItemStack = cfCompound.getItemStack("hook_item");
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");
if (type == null) {
@@ -372,7 +370,9 @@ public class RequirementManagerImpl implements RequirementManager {
HashSet<String> arg = new HashSet<>(ConfigUtils.stringListArgs(args));
return condition -> {
String lootID = condition.getArg("{loot}");
if (lootID == null) return false;
Loot loot = plugin.getLootManager().getLoot(lootID);
if (loot == null) return false;
String[] groups = loot.getLootGroup();
if (groups != null) {
for (String g : groups) {

View File

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

View File

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

View File

@@ -47,7 +47,8 @@ public class NBTUtils {
field.setAccessible(true);
MinecraftVersion minecraftVersion;
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) {
minecraftVersion = VERSION_TO_REVISION.getOrDefault(Bukkit.getServer().getBukkitVersion().split("-")[0],
MinecraftVersion.UNKNOWN);

View File

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