mirror of
https://github.com/Auxilor/EcoArmor.git
synced 2025-12-27 02:49:22 +00:00
Added effective durability
This commit is contained in:
@@ -14,6 +14,7 @@ import com.willfp.ecoarmor.display.packets.PacketSetSlot;
|
||||
import com.willfp.ecoarmor.display.packets.PacketWindowItems;
|
||||
import com.willfp.ecoarmor.effects.Effects;
|
||||
import com.willfp.ecoarmor.sets.ArmorSets;
|
||||
import com.willfp.ecoarmor.sets.util.EffectiveDurabilityListener;
|
||||
import com.willfp.ecoarmor.upgrades.advanced.AdvancementShardListener;
|
||||
import com.willfp.ecoarmor.upgrades.crystal.CrystalListener;
|
||||
import com.willfp.ecoarmor.upgrades.crystal.UpgradeCrystal;
|
||||
@@ -128,7 +129,8 @@ public class EcoArmorPlugin extends AbstractEcoPlugin {
|
||||
public List<Listener> getListeners() {
|
||||
return Arrays.asList(
|
||||
new CrystalListener(this),
|
||||
new AdvancementShardListener(this)
|
||||
new AdvancementShardListener(this),
|
||||
new EffectiveDurabilityListener(this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -207,6 +207,7 @@ public class ArmorSet {
|
||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||
container.set(PLUGIN.getNamespacedKeyFactory().create("set"), PersistentDataType.STRING, name);
|
||||
container.set(PLUGIN.getNamespacedKeyFactory().create("tier"), PersistentDataType.STRING, "default");
|
||||
container.set(PLUGIN.getNamespacedKeyFactory().create("effective-durability"), PersistentDataType.INTEGER, EcoArmorConfigs.SETS.getInt(name + "." + pieceName + ".effective-durability"));
|
||||
if (advanced) {
|
||||
container.set(PLUGIN.getNamespacedKeyFactory().create("advanced"), PersistentDataType.INTEGER, 1);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.willfp.ecoarmor.sets.util;
|
||||
|
||||
import com.willfp.eco.util.NumberUtils;
|
||||
import com.willfp.eco.util.internal.PluginDependent;
|
||||
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerItemDamageEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataContainer;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class EffectiveDurabilityListener extends PluginDependent implements Listener {
|
||||
/**
|
||||
* Create new effective durability listeners.
|
||||
*
|
||||
* @param plugin The plugin.
|
||||
*/
|
||||
public EffectiveDurabilityListener(@NotNull final AbstractEcoPlugin plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Make durability act as effective.
|
||||
*
|
||||
* @param event The event to listen for.
|
||||
*/
|
||||
@EventHandler
|
||||
public void onDamage(@NotNull final PlayerItemDamageEvent event) {
|
||||
ItemStack itemStack = event.getItem();
|
||||
ItemMeta meta = itemStack.getItemMeta();
|
||||
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||
|
||||
Integer effectiveDurability = container.get(this.getPlugin().getNamespacedKeyFactory().create("effective-durability"), PersistentDataType.INTEGER);
|
||||
|
||||
if (effectiveDurability == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
int maxDurability = itemStack.getType().getMaxDurability();
|
||||
|
||||
double ratio = (double) effectiveDurability / maxDurability;
|
||||
|
||||
double chance = 1 / ratio;
|
||||
|
||||
if (NumberUtils.randFloat(0, 1) > chance) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import com.willfp.ecoarmor.sets.util.ArmorUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -69,4 +70,21 @@ public class CrystalListener extends PluginDependent implements Listener {
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevents placing upgrade crystals.
|
||||
*
|
||||
* @param event The event to listen for.
|
||||
*/
|
||||
@EventHandler
|
||||
public void onPlaceCrystal(@NotNull final BlockPlaceEvent event) {
|
||||
ItemStack item = event.getItemInHand();
|
||||
if (item.getType() != Material.END_CRYSTAL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ArmorUtils.getCrystalTier(item) != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ Reaper:
|
||||
leather-color: "#303030"
|
||||
name: "&cReaper Helmet"
|
||||
advanced-name: "<\$#f12711>Advanced<\$#f5af19>&c Reaper Helmet"
|
||||
effective-durability: 2048
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
@@ -60,6 +61,7 @@ Reaper:
|
||||
leather-color: "#303030"
|
||||
name: "&cReaper Chestplate"
|
||||
advanced-name: "<\$#f12711>Advanced<\$#f5af19>&c Reaper Chestplate"
|
||||
effective-durability: 2048
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
@@ -86,6 +88,7 @@ Reaper:
|
||||
material: elytra
|
||||
name: "&cReaper Elytra"
|
||||
advanced-name: "<\$#f12711>Advanced<\$#f5af19>&c Reaper Elytra"
|
||||
effective-durability: 2048
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
@@ -113,6 +116,7 @@ Reaper:
|
||||
leather-color: "#303030"
|
||||
name: "&cReaper Leggings"
|
||||
advanced-name: "<\$#f12711>Advanced<\$#f5af19>&c Reaper Leggings"
|
||||
effective-durability: 2048
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
@@ -140,6 +144,7 @@ Reaper:
|
||||
leather-color: "#303030"
|
||||
name: "&cReaper Boots"
|
||||
advanced-name: "<\$#f12711>Advanced<\$#f5af19>&c Reaper Boots"
|
||||
effective-durability: 2048
|
||||
lore:
|
||||
- "&c&lREAPER SET BONUS"
|
||||
- "&8» &cDeal 25% more damage"
|
||||
|
||||
@@ -100,15 +100,15 @@ netherite:
|
||||
crystal-name: "&cNetherite Upgrade Crystal"
|
||||
crystal-recipe:
|
||||
- air
|
||||
- netherite_block
|
||||
- netherite_ingot
|
||||
- air
|
||||
|
||||
- netherite_block
|
||||
- netherite_ingot
|
||||
- ecoarmor:upgrade_crystal_diamond
|
||||
- netherite_block
|
||||
- netherite_ingot
|
||||
|
||||
- air
|
||||
- netherite_block
|
||||
- netherite_ingot
|
||||
- air
|
||||
crystal-lore:
|
||||
- "&8Drop this onto an armor piece"
|
||||
|
||||
Reference in New Issue
Block a user