9
0
mirror of https://github.com/Xiao-MoMi/Custom-Fishing.git synced 2025-12-27 19:09:18 +00:00

fix durability

This commit is contained in:
XiaoMoMi
2023-11-09 20:36:45 +08:00
parent 92aae9f901
commit 8fb6a0f5e7
5 changed files with 28 additions and 26 deletions

View File

@@ -203,7 +203,7 @@ public class EffectManagerImpl implements EffectManager {
String key = split[0];
List<String> members = plugin.getLootManager().getLootGroup(key);
if (members == null) {
LogUtils.warn("Group " + key + " doesn't include any loot. The effect would not take effect.");
LogUtils.warn("Group " + key + " doesn't contain any loot. The effect would not take effect.");
return result;
}
for (String loot : members) {

View File

@@ -557,22 +557,19 @@ public class FishingManagerImpl implements Listener, FishingManager {
gamingPlayerMap.remove(uuid);
plugin.getScheduler().runTaskSync(() -> {
if (player.getGameMode() != GameMode.CREATIVE)
outer: {
ItemStack rod = tempFishingState.getPreparation().getRodItemStack();
// PlayerItemDamageEvent damageEvent = new PlayerItemDamageEvent(player, rod, 1, 1);
// Bukkit.getPluginManager().callEvent(damageEvent);
// if (damageEvent.isCancelled()) {
// break outer;
// }
if (player.getGameMode() != GameMode.CREATIVE) {
ItemStack rod = tempFishingState.getPreparation().getRodItemStack();
plugin.getScheduler().runTaskSyncLater(() -> {
ItemUtils.decreaseHookDurability(rod, 1, false);
ItemUtils.decreaseDurability(player, rod, 1, true);
}
}, player.getLocation(), 1);
}
if (gamingPlayer.isSuccessful())
if (gamingPlayer.isSuccessful()) {
success(tempFishingState, fishHook);
else
} else {
fail(tempFishingState, fishHook);
}
fishHook.remove();
@@ -648,7 +645,6 @@ public class FishingManagerImpl implements Listener, FishingManager {
switch (loot.getType()) {
case ITEM -> {
// build the items for multiple times instead of using setAmount() to make sure that each item is unique
if (loot.getID().equals("vanilla")) {
Pair<ItemStack, Integer> pair = vanillaLootMap.remove(player.getUniqueId());

View File

@@ -55,10 +55,7 @@ import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryPickupItemEvent;
import org.bukkit.event.inventory.PrepareAnvilEvent;
import org.bukkit.event.player.PlayerAttemptPickupItemEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.event.player.PlayerItemMendEvent;
import org.bukkit.event.player.*;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;

View File

@@ -114,6 +114,7 @@ public class CFConfig {
.setVersioning(new BasicVersioning("config-version"))
.addIgnoredRoute(configVersion, "mechanics.mechanic-requirements", '.')
.addIgnoredRoute(configVersion, "mechanics.global-events", '.')
.addIgnoredRoute(configVersion, "other-settings.placeholder-register", '.')
.build()
);
loadSettings(CustomFishingPlugin.getInstance().getConfig("config.yml"));

View File

@@ -20,6 +20,7 @@ package net.momirealms.customfishing.util;
import de.tr7zw.changeme.nbtapi.NBTCompound;
import de.tr7zw.changeme.nbtapi.NBTItem;
import de.tr7zw.changeme.nbtapi.NBTList;
import net.Indyuce.mmoitems.api.interaction.util.DurabilityItem;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.ScoreComponent;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
@@ -205,16 +206,16 @@ public class ItemUtils {
public static void decreaseDurability(Player player, ItemStack itemStack, int amount, boolean updateLore) {
if (itemStack == null || itemStack.getType() == Material.AIR)
return;
int unBreakingLevel = itemStack.getEnchantmentLevel(Enchantment.DURABILITY);
if (Math.random() > (double) 1 / (unBreakingLevel + 1)) {
return;
}
NBTItem nbtItem = new NBTItem(itemStack);
if (nbtItem.getByte("Unbreakable") == 1) {
return;
}
NBTCompound cfCompound = nbtItem.getCompound("CustomFishing");
if (cfCompound != null && cfCompound.hasTag("max_dur")) {
int unBreakingLevel = itemStack.getEnchantmentLevel(Enchantment.DURABILITY);
if (Math.random() > (double) 1 / (unBreakingLevel + 1)) {
return;
}
if (nbtItem.getByte("Unbreakable") == 1) {
return;
}
int max = cfCompound.getInteger("max_dur");
int current = cfCompound.getInteger("cur_dur") - amount;
cfCompound.setInteger("cur_dur", current);
@@ -228,9 +229,16 @@ public class ItemUtils {
}
} else {
ItemMeta previousMeta = itemStack.getItemMeta().clone();
PlayerItemDamageEvent itemDamageEvent = new PlayerItemDamageEvent(player, itemStack, amount);
PlayerItemDamageEvent itemDamageEvent = new PlayerItemDamageEvent(player, itemStack, amount, amount);
Bukkit.getPluginManager().callEvent(itemDamageEvent);
if (!itemStack.getItemMeta().equals(previousMeta)) {
if (!itemStack.getItemMeta().equals(previousMeta) || itemDamageEvent.isCancelled()) {
return;
}
int unBreakingLevel = itemStack.getEnchantmentLevel(Enchantment.DURABILITY);
if (Math.random() > (double) 1 / (unBreakingLevel + 1)) {
return;
}
if (nbtItem.getByte("Unbreakable") == 1) {
return;
}
int damage = nbtItem.getInteger("Damage") + amount;