1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 11:45:51 +00:00

Did the requested changes.

This commit is contained in:
LinoxGH 2020-06-26 13:31:45 +03:00
parent 9176d795c8
commit eb2bbae0c9

View File

@ -1,7 +1,10 @@
package io.github.thebusybiscuit.slimefun4.implementation.items.magical; package io.github.thebusybiscuit.slimefun4.implementation.items.magical;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import org.bukkit.Location; import org.bukkit.Location;
@ -14,7 +17,6 @@ import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion;
import io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems; import io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems;
import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
@ -38,34 +40,18 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
public class EnchantmentRune extends SimpleSlimefunItem<ItemDropHandler> { public class EnchantmentRune extends SimpleSlimefunItem<ItemDropHandler> {
private static final double RANGE = 1.5; private static final double RANGE = 1.5;
private final HashMap<Material, Enchantment[]> applicableEnchs = new HashMap<>();
private static final Enchantment[] helmEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.OXYGEN, Enchantment.WATER_WORKER, Enchantment.THORNS, Enchantment.PROTECTION_PROJECTILE, Enchantment.PROTECTION_FIRE, Enchantment.PROTECTION_ENVIRONMENTAL, Enchantment.PROTECTION_EXPLOSIONS};
private static final Enchantment[] chestLeggingsEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.THORNS, Enchantment.PROTECTION_PROJECTILE, Enchantment.PROTECTION_FIRE, Enchantment.PROTECTION_ENVIRONMENTAL, Enchantment.PROTECTION_EXPLOSIONS};
private static final Enchantment[] bootsEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.FROST_WALKER, Enchantment.PROTECTION_FALL, Enchantment.DEPTH_STRIDER, Enchantment.THORNS, Enchantment.PROTECTION_PROJECTILE, Enchantment.PROTECTION_FIRE, Enchantment.PROTECTION_ENVIRONMENTAL, Enchantment.PROTECTION_EXPLOSIONS};
private static final Enchantment[] swordEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.FIRE_ASPECT, Enchantment.LOOT_BONUS_MOBS, Enchantment.KNOCKBACK, Enchantment.SWEEPING_EDGE, Enchantment.DAMAGE_ALL, Enchantment.DAMAGE_ARTHROPODS, Enchantment.DAMAGE_UNDEAD};
private static final Enchantment[] tridentEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.IMPALING, Enchantment.CHANNELING, Enchantment.LOYALTY, Enchantment.RIPTIDE};
private static Enchantment[] crossbowEnch;
private static final Enchantment[] bowEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.ARROW_DAMAGE, Enchantment.ARROW_FIRE, Enchantment.ARROW_INFINITE, Enchantment.ARROW_KNOCKBACK};
private static final Enchantment[] axeEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.DIG_SPEED, Enchantment.LOOT_BONUS_BLOCKS, Enchantment.SILK_TOUCH, Enchantment.DAMAGE_ALL, Enchantment.DAMAGE_UNDEAD, Enchantment.DAMAGE_ARTHROPODS};
private static final Enchantment[] toolEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.DIG_SPEED, Enchantment.LOOT_BONUS_BLOCKS, Enchantment.SILK_TOUCH};
private static final Enchantment[] shearEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.DIG_SPEED};
private static final Enchantment[] fishRodEnch = {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.LURE, Enchantment.LUCK};
private static final Enchantment[] otherItemsEnch = {Enchantment.MENDING, Enchantment.DURABILITY};
public EnchantmentRune(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { public EnchantmentRune(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, recipeType, recipe); super(category, item, recipeType, recipe);
}
@Override for (Material mat : Material.values()) {
public void preRegister() { Set<Enchantment> enchSet = new HashSet<>();
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) { for (Enchantment ench : Enchantment.values()) {
crossbowEnch = new Enchantment[] {Enchantment.MENDING, Enchantment.DURABILITY, Enchantment.MULTISHOT, Enchantment.QUICK_CHARGE, Enchantment.PIERCING}; if (ench.canEnchantItem(new ItemStack(mat))) enchSet.add(ench);
} else { }
crossbowEnch = null; applicableEnchs.put(mat, enchSet.toArray(new Enchantment[0]));
} }
super.preRegister();
} }
@Override @Override
@ -137,23 +123,7 @@ public class EnchantmentRune extends SimpleSlimefunItem<ItemDropHandler> {
} }
private Enchantment[] findEnchArr(Material type) { private Enchantment[] findEnchArr(Material type) {
Enchantment[] enchArr = null; Enchantment[] enchArr = applicableEnchs.get(type);
if (type.name().endsWith("_HELMET")) enchArr = helmEnch;
if (type.name().endsWith("_CHESTPLATE") || type.name().endsWith("_LEGGINGS")) enchArr = chestLeggingsEnch;
if (type.name().endsWith("_BOOTS")) enchArr = bootsEnch;
if (type.name().endsWith("_SWORD")) enchArr = swordEnch;
if (type.name().endsWith("_AXE")) enchArr = axeEnch;
if (type.name().endsWith("_PICKAXE") || type.name().endsWith("_SHOVEL") || type.name().endsWith("_HOE")) enchArr = toolEnch;
if (type == Material.TRIDENT) enchArr = tridentEnch;
if (type == Material.BOW) enchArr = bowEnch;
if (type == Material.SHEARS) enchArr = shearEnch;
if (type == Material.FISHING_ROD) enchArr = fishRodEnch;
if (crossbowEnch != null && type.name().equals("CROSSBOW")) enchArr = crossbowEnch;
if (type == Material.SHIELD || type == Material.ELYTRA || type == Material.CARROT_ON_A_STICK || type == Material.FLINT_AND_STEEL) enchArr = otherItemsEnch;
if (enchArr == null) enchArr = new Enchantment[0]; if (enchArr == null) enchArr = new Enchantment[0];
return enchArr; return enchArr;
} }