mirror of
https://github.com/Xiao-MoMi/Custom-Fishing.git
synced 2025-12-19 15:09:24 +00:00
2.1.6.6
This commit is contained in:
@@ -38,6 +38,4 @@ public interface VersionManager {
|
||||
String getPluginVersion();
|
||||
|
||||
boolean isMojmap();
|
||||
|
||||
String getServerVersion();
|
||||
}
|
||||
|
||||
@@ -13,4 +13,4 @@ public interface TotemParticle {
|
||||
* @return cancellable task
|
||||
*/
|
||||
CancellableTask start(Location location, double radius);
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ plugins {
|
||||
|
||||
allprojects {
|
||||
|
||||
version = "2.2.0"
|
||||
version = "2.1.6.6"
|
||||
|
||||
apply<JavaPlugin>()
|
||||
apply(plugin = "java")
|
||||
|
||||
@@ -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()))
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user