9
0
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:
Auxilor
2021-01-19 13:45:42 +00:00
parent 32319ce99a
commit 055ea3e4f6
6 changed files with 88 additions and 5 deletions

View File

@@ -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)
);
}

View File

@@ -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);
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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"

View File

@@ -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"