Rarity stuffs

This commit is contained in:
Daniel Mills 2020-08-21 04:35:56 -04:00
parent 39b7563d3a
commit 7f3b7df710
2 changed files with 56 additions and 1 deletions

View File

@ -1,6 +1,7 @@
package com.volmit.iris.command; package com.volmit.iris.command;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;

View File

@ -1,6 +1,7 @@
package com.volmit.iris.object; package com.volmit.iris.object;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
@ -56,6 +57,35 @@ public class IrisLoot
@Desc("Maximum durability percent") @Desc("Maximum durability percent")
private double maxDurability = 1; private double maxDurability = 1;
@MinNumber(1)
@MaxNumber(10)
@DontObfuscate
@Desc("Minimum Enchantment level")
private int minEnchantLevel = 1;
@MinNumber(1)
@MaxNumber(10)
@DontObfuscate
@Desc("Maximum Enchantment level")
private int maxEnchantLevel = 1;
@MinNumber(0)
@MaxNumber(10)
@DontObfuscate
@Desc("Minimum Enchantmentments")
private int minEnchants = 0;
@MinNumber(0)
@MaxNumber(10)
@DontObfuscate
@Desc("Maximum Enchantmentments")
private int maxEnchants = 0;
@MinNumber(1)
@DontObfuscate
@Desc("The chance for every attempt to add an enchantment 1 in X")
private int enchantmentRarity = 4;
@Required @Required
@Desc("This is the item or block type. Does not accept minecraft:*. Only materials such as DIAMOND_SWORD or DIRT.") @Desc("This is the item or block type. Does not accept minecraft:*. Only materials such as DIAMOND_SWORD or DIRT.")
private String type = ""; private String type = "";
@ -94,11 +124,35 @@ public class IrisLoot
{ {
Damageable d = (Damageable) m; Damageable d = (Damageable) m;
int max = getType().getMaxDurability(); int max = getType().getMaxDurability();
d.setDamage((int) Math.round(Math.max(0, Math.min(max, rng.d(getMinDurability(), getMaxDurability()) * max)))); d.setDamage((int) Math.round(Math.max(0, Math.min(max, (1D - rng.d(getMinDurability(), getMaxDurability())) * max))));
} }
KList<String> lore = new KList<>(); KList<String> lore = new KList<>();
if(minEnchants > 0 || maxEnchants > 0)
{
KList<Enchantment> c = new KList<Enchantment>(Enchantment.values());
for(int i = minEnchants; i < maxEnchants; i++)
{
if(rng.i(1, enchantmentRarity) == 1)
{
Enchantment e = c.get(rng.nextInt(c.size()));
for(int ggh = 0; ggh < 8; ggh++)
{
if(e.canEnchantItem(is))
{
m.addEnchant(e, rng.i(getMinEnchantLevel(), getMaxEnchantLevel()), false);
break;
}
e = c.get(rng.nextInt(c.size()));
}
}
}
}
if(debug) if(debug)
{ {
lore.add("From Table: " + table.getName() + " (" + Form.pc(1D / table.getRarity(), 5) + ")"); lore.add("From Table: " + table.getName() + " (" + Form.pc(1D / table.getRarity(), 5) + ")");