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:
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user