mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Overridable durability RNG
This commit is contained in:
parent
6d12d1f7ac
commit
11fded46db
@ -3,6 +3,7 @@ package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.utils.UnbreakingRNGUtils;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -49,7 +50,7 @@ public interface DamageableItem extends ItemAttribute {
|
||||
if (isDamageable() && item != null && !item.getType().isAir() && item.getAmount() > 0) {
|
||||
int unbreakingLevel = item.getEnchantmentLevel(Enchantment.DURABILITY);
|
||||
|
||||
if (unbreakingLevel > 0 && !(Math.random() < (1.0 / (unbreakingLevel + 1)))) {
|
||||
if (unbreakingLevel > 0 && durabilityRNG(unbreakingLevel)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -69,4 +70,16 @@ public interface DamageableItem extends ItemAttribute {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will randomly decide if the item should be damaged or not
|
||||
* This does not damage the item, it is called by {@link #damageItem(Player, ItemStack)} to randomly generate a boolean
|
||||
* This method can be overridden when trying to break a piece of armor, with the provided method {@link UnbreakingRNGUtils().getArmorRNG(Integer)}
|
||||
*
|
||||
* @param unbreakingLevel
|
||||
* The {@link Integer} level of the unbreaking enchantment
|
||||
*/
|
||||
default boolean durabilityRNG(int unbreakingLevel) {
|
||||
return new UnbreakingRNGUtils().getToolsRNG(unbreakingLevel);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,25 @@
|
||||
package io.github.thebusybiscuit.slimefun4.utils;
|
||||
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.DamageableItem;
|
||||
|
||||
/**
|
||||
* This class is created for a RNG generator to determine if the tool / armor should be damaged when unbreaking enchant is applied.<br>
|
||||
* Mainly used in {@link DamageableItem} and their implementations
|
||||
*
|
||||
* @author RobotHanzo
|
||||
*
|
||||
*/
|
||||
public class UnbreakingRNGUtils {
|
||||
|
||||
public UnbreakingRNGUtils(){}
|
||||
|
||||
public boolean getToolsRNG(int unbreakingLevel){
|
||||
return !(Math.random() < (1.0 / (unbreakingLevel + 1)));
|
||||
}
|
||||
|
||||
public boolean getArmorRNG(int unbreakingLevel){
|
||||
return !(Math.random() < 0.6 + (0.4 / (unbreakingLevel + 1)));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user