diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 312e8331b..75c3af5c9 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -4,6 +4,7 @@ import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.FireworkEffect; import org.bukkit.FireworkEffect.Type; +import org.bukkit.enchantments.Enchantment; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.FireworkEffectMeta; @@ -651,9 +652,13 @@ public final class SlimefunItems { public static final ItemStack ELYTRA = new ItemStack(Material.ELYTRA); public static final ItemStack ELYTRA_SCALE = new CustomItem(Material.FEATHER, "&bEyltra Scale"); - public static final ItemStack INFUSED_ELYTRA = new CustomItem(new CustomItem(ELYTRA, "&5Infused Elytra"), new String[] {"MENDING-1"}); + public static final ItemStack INFUSED_ELYTRA = new CustomItem(ELYTRA, "&5Infused Elytra"); public static final ItemStack SOULBOUND_ELYTRA = new CustomItem(ELYTRA, "&cSoulbound Elytra"); + static { + INFUSED_ELYTRA.addEnchantment(Enchantment.MENDING, 1); + } + // ChestTerminal Addon public static final ItemStack CHEST_TERMINAL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2E0NGZmM2E1ZjQ5YzY5Y2FiNjc2YmFkOGQ5OGEwNjNmYTc4Y2ZhNjE5MTZmZGVmM2UyNjc1NTdmZWMxODI4MyJ9fX0="), "&3CT Access Terminal", "&7If this Block is connected to a", "&7Cargo Network, it will allow you to remotely", "&7interact with any Items supplied by", "&7Nodes tuned into the ChestTerminal Channel"); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index 01ed29f7e..4bce0e3b9 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -68,21 +68,6 @@ public final class SlimefunManager { // Material.COAL, Material.SKULL_ITEM, Material.RAW_FISH, Material.COOKED_FISH); public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore) { - return isItemSimiliar(item, SFitem, lore, DataType.IF_COLORED); - } - - - @Deprecated - public static enum DataType { - - ALWAYS, - NEVER, - IF_COLORED; - - } - - @Deprecated - public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore, DataType data) { if (item == null) return SFitem == null; if (SFitem == null) return false; @@ -116,6 +101,21 @@ public final class SlimefunManager { else return false; } + + @Deprecated + public static enum DataType { + + ALWAYS, + NEVER, + IF_COLORED; + + } + + @Deprecated + public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore, DataType data) { + return isItemSimiliar(item, SFitem, lore); + } + private static boolean equalsLore(List lore, List lore2) { String string1 = "", string2 = ""; for (String string: lore) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 42c4fff78..fc877db3e 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -166,6 +166,8 @@ public final class SlimefunSetup { private SlimefunSetup() {} public static void setupItems() { + Random random = new Random(); + new SlimefunItem(Categories.WEAPONS, SlimefunItems.GRANDMAS_WALKING_STICK, "GRANDMAS_WALKING_STICK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null}) .register(true); @@ -556,8 +558,6 @@ public final class SlimefunSetup { new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {47, 28, 15}) .register(true, new ItemInteractionHandler() { - private Random random = new Random(); - @Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) { @@ -1744,7 +1744,10 @@ public final class SlimefunSetup { Block b = e.getBlock().getRelative(x, y, z); if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), explosiveblacklist)) { if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) { - if (SlimefunStartup.instance.isCoreProtectInstalled()) SlimefunStartup.instance.getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) { + SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData()); + } + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); SlimefunItem sfItem = BlockStorage.check(b); boolean allow = false; @@ -1769,7 +1772,7 @@ public final class SlimefunSetup { b.setType(Material.AIR); } if (damageOnUse) { - if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || SlimefunStartup.randomize(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { + if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) { PlayerInventory.damageItemInHand(e.getPlayer()); } } @@ -2096,7 +2099,7 @@ public final class SlimefunSetup { for (int i = 0; i < 4; i++) { if (e.getPlayer().getInventory().getItemInMainHand() != null) { if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { - if (SlimefunStartup.randomize(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); + if (random.nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer()); } else PlayerInventory.damageItemInHand(e.getPlayer()); } @@ -2570,7 +2573,7 @@ public final class SlimefunSetup { gifts.add(new CustomItem(SlimefunItems.CARROT_JUICE, 1)); } - gifts.add(new SkullItem("mrCookieSlime")); + gifts.add(new SkullItem("TheBusyBiscuit")); gifts.add(new SkullItem("timtower")); gifts.add(new SkullItem("bwfcwalshy")); gifts.add(new SkullItem("jadedcat")); diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 3517f397b..3a27f4066 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -50,8 +50,7 @@ import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver; import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver; import me.mrCookieSlime.Slimefun.commands.SlimefunCommand; import me.mrCookieSlime.Slimefun.commands.SlimefunTabCompleter; -import me.mrCookieSlime.Slimefun.hooks.PlaceholderAPIHook; -import me.mrCookieSlime.Slimefun.hooks.WorldEditHook; +import me.mrCookieSlime.Slimefun.hooks.SlimefunHooks; import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; import me.mrCookieSlime.Slimefun.hooks.github.GitHubSetup; import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; @@ -61,7 +60,6 @@ import me.mrCookieSlime.Slimefun.listeners.AutonomousToolsListener; import me.mrCookieSlime.Slimefun.listeners.BackpackListener; import me.mrCookieSlime.Slimefun.listeners.BlockListener; import me.mrCookieSlime.Slimefun.listeners.BowListener; -import me.mrCookieSlime.Slimefun.listeners.ClearLaggIntegration; import me.mrCookieSlime.Slimefun.listeners.CoolerListener; import me.mrCookieSlime.Slimefun.listeners.DamageListener; import me.mrCookieSlime.Slimefun.listeners.FurnaceListener; @@ -77,8 +75,6 @@ import me.mrCookieSlime.Slimefun.listeners.ToolListener; import me.mrCookieSlime.Slimefun.listeners.WorldListener; import me.mrCookieSlime.Slimefun.utils.Settings; import me.mrCookieSlime.Slimefun.utils.Utilities; -import net.coreprotect.CoreProtect; -import net.coreprotect.CoreProtectAPI; public final class SlimefunStartup extends JavaPlugin { @@ -91,15 +87,10 @@ public final class SlimefunStartup extends JavaPlugin { private static Config config; public static TickerTask ticker; - - private CoreProtectAPI coreProtectAPI; private Utilities utilities = new Utilities(); private Settings settings; - - private boolean clearlag = false; - private boolean exoticGarden = false; - private boolean coreProtect = false; + private SlimefunHooks hooks; // Supported Versions of Minecraft private final String[] supported = {"v1_14_"}; @@ -327,33 +318,7 @@ public final class SlimefunStartup extends JavaPlugin { // Hooray! System.out.println("[Slimefun] Finished!"); - - clearlag = getServer().getPluginManager().isPluginEnabled("ClearLag"); - coreProtect = getServer().getPluginManager().isPluginEnabled("CoreProtect"); - - getServer().getScheduler().runTaskLater(this, () -> { - exoticGarden = getServer().getPluginManager().isPluginEnabled("ExoticGarden"); // Had to do it this way, otherwise it seems disabled. - }, 0); - - if (clearlag) new ClearLaggIntegration(this); - if (coreProtect) coreProtectAPI = ((CoreProtect) getServer().getPluginManager().getPlugin("CoreProtect")).getAPI(); - - - // WorldEdit Hook to clear Slimefun Data upon //set 0 //cut or any other equivalent - if (getServer().getPluginManager().isPluginEnabled("WorldEdit")) { - try { - Class.forName("com.sk89q.worldedit.extent.Extent"); - new WorldEditHook(); - System.out.println("[Slimefun] Successfully hooked into WorldEdit!"); - } catch (Exception x) { - System.err.println("[Slimefun] Failed to hook into WorldEdit!"); - System.err.println("[Slimefun] Maybe consider updating WorldEdit or Slimefun?"); - } - } - - if (getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) { - new PlaceholderAPIHook().register(); - } + hooks = new SlimefunHooks(this); OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST}; @@ -477,20 +442,8 @@ public final class SlimefunStartup extends JavaPlugin { return CSCoreLib.randomizer().nextInt(max) <= percentage; } - public boolean isClearLagInstalled() { - return clearlag; - } - - public boolean isExoticGardenInstalled () { - return exoticGarden; - } - - public boolean isCoreProtectInstalled() { - return coreProtect; - } - - public CoreProtectAPI getCoreProtectAPI() { - return coreProtectAPI; + public SlimefunHooks getHooks() { + return hooks; } public Utilities getUtilities() { diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 84dbe0c21..6bfb6276f 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -822,7 +822,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem { private void exoticFarm(Block b, Block block) { farm(b, block); - if (SlimefunStartup.instance.isExoticGardenInstalled()) { + if (SlimefunStartup.instance.getHooks().isExoticGardenInstalled()) { ItemStack drop = ExoticGarden.harvestPlant(block); if (drop != null && fits(b, drop)) { pushItems(b, drop); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java index 8a5a159d7..90292c647 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java @@ -11,7 +11,6 @@ import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.Setup.SlimefunManager.DataType; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; @@ -199,7 +198,6 @@ public class CargoManager { BlockMenu menu = BlockStorage.getInventory(block.getLocation()); boolean lore = blockInfo.getString("filter-lore").equals("true"); - boolean data = blockInfo.getString("filter-durability").equals("true"); if (blockInfo.getString("filter-type").equals("whitelist")) { List items = new ArrayList<>(); @@ -218,18 +216,18 @@ public class CargoManager { BlockStorage.addBlockInfo(block, "index", String.valueOf(index)); - return SlimefunManager.isItemSimiliar(item, items.get(index), lore, data ? DataType.ALWAYS: DataType.NEVER); + return SlimefunManager.isItemSimiliar(item, items.get(index), lore); } else { for (ItemStack stack: items) { - if (SlimefunManager.isItemSimiliar(item, stack, lore, data ? DataType.ALWAYS: DataType.NEVER)) return true; + if (SlimefunManager.isItemSimiliar(item, stack, lore)) return true; } return false; } } else { for (int slot: slots) { - if (menu.getItemInSlot(slot) != null && SlimefunManager.isItemSimiliar(item, new CustomItem(menu.getItemInSlot(slot), 1), lore, data ? DataType.ALWAYS: DataType.NEVER)) { + if (menu.getItemInSlot(slot) != null && SlimefunManager.isItemSimiliar(item, new CustomItem(menu.getItemInSlot(slot), 1), lore)) { return false; } } diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index a6a39337f..5a9efbfd0 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java @@ -35,6 +35,7 @@ import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; public class SlimefunCommand implements CommandExecutor, Listener { @@ -200,8 +201,9 @@ public class SlimefunCommand implements CommandExecutor, Listener { if (args.length == 3) { if (Players.isOnline(args[1])) { if (Slimefun.listIDs().contains(args[2].toUpperCase())) { - Messages.local.sendTranslation(Bukkit.getPlayer(args[1]), "messages.given-item", true, new Variable("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()), new Variable("%amount%", "1")); - Bukkit.getPlayer(args[1]).getInventory().addItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem()); + Player p = Bukkit.getPlayer(args[1]); + Messages.local.sendTranslation(p, "messages.given-item", true, new Variable("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()), new Variable("%amount%", "1")); + p.getInventory().addItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem()); Messages.local.sendTranslation(sender, "messages.give-item", true, new Variable("%player%", args[1]), new Variable("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()), new Variable("%amount%", "1")); } else Messages.local.sendTranslation(sender, "messages.not-valid-item", true, new Variable("%item%", args[2])); @@ -254,15 +256,17 @@ public class SlimefunCommand implements CommandExecutor, Listener { if (sender.hasPermission("slimefun.cheat.researches") || !(sender instanceof Player)) { if (Players.isOnline(args[1])) { Player p = Bukkit.getPlayer(args[1]); + PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId()); + if (args[2].equalsIgnoreCase("all")) { for (Research res : Research.list()) { - if (!res.hasUnlocked(p)) Messages.local.sendTranslation(sender, "messages.give-research", true, new Variable("%player%", p.getName()), new Variable("%research%", res.getName())); + if (!profile.hasUnlocked(res)) Messages.local.sendTranslation(sender, "messages.give-research", true, new Variable("%player%", p.getName()), new Variable("%research%", res.getName())); res.unlock(p, true); } } else if (args[2].equalsIgnoreCase("reset")) { for (Research res : Research.list()) { - res.lock(p); + profile.setResearched(res, false); } Messages.local.sendTranslation(p, "commands.research.reset", true, new Variable("%player%", args[1])); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ClearLaggIntegration.java b/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java similarity index 80% rename from src/me/mrCookieSlime/Slimefun/listeners/ClearLaggIntegration.java rename to src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java index 0ebea10e0..6965367b2 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ClearLaggIntegration.java +++ b/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java @@ -1,4 +1,4 @@ -package me.mrCookieSlime.Slimefun.listeners; +package me.mrCookieSlime.Slimefun.hooks; import java.util.Iterator; @@ -10,9 +10,9 @@ import org.bukkit.entity.Item; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -public class ClearLaggIntegration implements Listener { +public class ClearLagHook implements Listener { - public ClearLaggIntegration(SlimefunStartup plugin) { + public ClearLagHook(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } diff --git a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java new file mode 100644 index 000000000..b3147e044 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java @@ -0,0 +1,74 @@ +package me.mrCookieSlime.Slimefun.hooks; + +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import net.coreprotect.CoreProtect; +import net.coreprotect.CoreProtectAPI; + +public final class SlimefunHooks { + + private boolean exoticGarden = false; + private boolean coreProtect = false; + private boolean clearLag = false; + private boolean worldEdit = false; + private boolean placeHolderAPI = false; + + private CoreProtectAPI coreProtectAPI; + + public SlimefunHooks(SlimefunStartup plugin) { + if (plugin.getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) { + placeHolderAPI = true; + new PlaceholderAPIHook().register(); + } + + plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { + if (plugin.getServer().getPluginManager().isPluginEnabled("ClearLag")) { + clearLag = true; + new ClearLagHook(plugin); + } + + exoticGarden = plugin.getServer().getPluginManager().isPluginEnabled("ExoticGarden"); // Had to do it this way, otherwise it seems disabled. + + if (plugin.getServer().getPluginManager().isPluginEnabled("CoreProtect")) { + coreProtectAPI = ((CoreProtect) plugin.getServer().getPluginManager().getPlugin("CoreProtect")).getAPI(); + } + + // WorldEdit Hook to clear Slimefun Data upon //set 0 //cut or any other equivalent + if (plugin.getServer().getPluginManager().isPluginEnabled("WorldEdit")) { + try { + Class.forName("com.sk89q.worldedit.extent.Extent"); + worldEdit = true; + new WorldEditHook(); + System.out.println("[Slimefun] Successfully hooked into WorldEdit!"); + } catch (Exception x) { + System.err.println("[Slimefun] Failed to hook into WorldEdit!"); + System.err.println("[Slimefun] Maybe consider updating WorldEdit or Slimefun?"); + } + } + }); + } + + public boolean isExoticGardenInstalled() { + return exoticGarden; + } + + public boolean isCoreProtectInstalled() { + return coreProtect; + } + + public boolean isClearLagInstalled() { + return clearLag; + } + + public boolean isWorldEditInstalled() { + return worldEdit; + } + + public boolean isPlaceholderAPIInstalled() { + return placeHolderAPI; + } + + public CoreProtectAPI getCoreProtectAPI() { + return coreProtectAPI; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 2c208fc76..9415eda34 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -225,22 +225,6 @@ public class ItemListener implements Listener { if (p.isSneaking()) SlimefunGuide.openSettings(p, item); else p.chat("/sf cheat"); } - else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getDeprecatedItem(true), true)) { - item = SlimefunGuide.getItem(BookDesign.BOOK); - p.getInventory().setItemInMainHand(item); - PlayerInventory.update(p); - - if (p.isSneaking()) SlimefunGuide.openSettings(p, item); - else SlimefunGuide.openGuide(p, true); - } - else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getDeprecatedItem(false), true)) { - item = SlimefunGuide.getItem(BookDesign.CHEST); - p.getInventory().setItemInMainHand(item); - PlayerInventory.update(p); - - if (p.isSneaking()) SlimefunGuide.openSettings(p, item); - else SlimefunGuide.openGuide(p, false); - } else if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.DEBUG_FISH, true) || SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInOffHand(), SlimefunItems.DEBUG_FISH, true)) { } else if (Slimefun.hasUnlocked(p, item, true)) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java index 77dcf7c00..6beb60e9c 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java @@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.listeners; import java.util.ArrayList; import java.util.List; +import java.util.Random; import java.util.Set; import org.bukkit.Material; @@ -38,6 +39,8 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; public class TalismanListener implements Listener { + private Random random; + public TalismanListener(SlimefunStartup plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } @@ -46,7 +49,7 @@ public class TalismanListener implements Listener { public void onDamageGet(EntityDamageEvent e) { if (!e.isCancelled()) { if (e instanceof EntityDamageByEntityEvent) { - if (((EntityDamageByEntityEvent) e).getDamager() instanceof Player && SlimefunStartup.chance(100, 45)) { + if (((EntityDamageByEntityEvent) e).getDamager() instanceof Player && random.nextInt(100) < 45) { if (SlimefunManager.isItemSimiliar(((Player) ((EntityDamageByEntityEvent) e).getDamager()).getInventory().getItemInMainHand(), SlimefunItem.getItem("BLADE_OF_VAMPIRES"), true)) { ((Player) ((EntityDamageByEntityEvent) e).getDamager()).playSound(((EntityDamageByEntityEvent) e).getDamager().getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 0.7F, 0.7F); ((Player) ((EntityDamageByEntityEvent) e).getDamager()).addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 1)); @@ -124,7 +127,7 @@ public class TalismanListener implements Listener { if ((Boolean) Slimefun.getItemValue("MAGICIAN_TALISMAN", "allow-enchantments." + en.getKey().getKey() + ".level." + i) && en.canEnchantItem(e.getItem())) enchantments.add(en.getKey().getKey() + "-" + i); } } - String enchant = enchantments.get(SlimefunStartup.randomize(enchantments.size())); + String enchant = enchantments.get(random.nextInt(enchantments.size())); e.getEnchantsToAdd().put(Enchantment.getByKey(NamespacedKey.minecraft(enchant.split("-")[0])), Integer.parseInt(enchant.split("-")[1])); } if (!e.getEnchantsToAdd().containsKey(Enchantment.SILK_TOUCH) && Enchantment.LOOT_BONUS_BLOCKS.canEnchantItem(e.getItem())) { @@ -132,9 +135,9 @@ public class TalismanListener implements Listener { if (e.getEnchantsToAdd().containsKey(Enchantment.LOOT_BONUS_BLOCKS)) e.getEnchantsToAdd().remove(Enchantment.LOOT_BONUS_BLOCKS); Set enchantments = e.getEnchantsToAdd().keySet(); for (Enchantment en : enchantments) { - if (SlimefunStartup.chance(100, 40)) e.getEnchantsToAdd().put(en, SlimefunStartup.randomize(3) + 1); + if (random.nextInt(100) < 40) e.getEnchantsToAdd().put(en, random.nextInt(3) + 1); } - e.getItem().addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, SlimefunStartup.randomize(3) + 3); + e.getItem().addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, random.nextInt(3) + 3); } } } @@ -152,9 +155,9 @@ public class TalismanListener implements Listener { if (item != null) { if (item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) { - fortune = SlimefunStartup.randomize(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1; + fortune =random.nextInt(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1; if (fortune <= 0) fortune = 1; - fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + SlimefunStartup.randomize(5) : 1) * (fortune + 1); + fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + random.nextInt(5) : 1) * (fortune + 1); } if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && e.getBlock().getType().toString().endsWith("_ORE")) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 706321d38..f4a75ef85 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Random; import java.util.Set; import org.bukkit.Material; @@ -42,7 +43,8 @@ import me.mrCookieSlime.Slimefun.utils.Utilities; public class ToolListener implements Listener { // Materials that require a Block under it, e.g. Pressure Plates - private final Set sensitiveMaterials = new HashSet<>(); + private Set sensitiveMaterials = new HashSet<>(); + private Random random = new Random(); private Utilities utilities; public ToolListener(SlimefunStartup plugin) { @@ -145,7 +147,7 @@ public class ToolListener implements Listener { gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_FRUIT_CAKE, 4)); gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 4)); } - gifts.add(new SkullItem("mrCookieSlime")); + gifts.add(new SkullItem("TheBusyBiscuit")); gifts.add(new SkullItem("timtower")); gifts.add(new SkullItem("bwfcwalshy")); gifts.add(new SkullItem("jadedcat")); @@ -163,7 +165,7 @@ public class ToolListener implements Listener { "" + "- mrCookieSlime" ); - e.getBlockPlaced().getWorld().dropItemNaturally(e.getBlockPlaced().getLocation(), gifts.get(SlimefunStartup.randomize(gifts.size()))); + e.getBlockPlaced().getWorld().dropItemNaturally(e.getBlockPlaced().getLocation(), gifts.get(random.nextInt(gifts.size()))); } else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_INPUT, false)) { if (e.getBlock().getY() != e.getBlockAgainst().getY()) { @@ -240,9 +242,9 @@ public class ToolListener implements Listener { } else if (item != null) { if (item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) { - fortune = SlimefunStartup.randomize(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1; + fortune = random.nextInt(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1; if (fortune <= 0) fortune = 1; - fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + SlimefunStartup.randomize(5) : 1) * (fortune + 1); + fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + random.nextInt(5) : 1) * (fortune + 1); } for (ItemHandler handler : SlimefunItem.getHandlers("BlockBreakHandler")) { @@ -252,11 +254,13 @@ public class ToolListener implements Listener { if (!drops.isEmpty()) { e.getBlock().setType(Material.AIR); - if(e.isDropItems()) + + if (e.isDropItems()) { for (ItemStack drop : drops) { - if (drop != null) + if (drop != null) { e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation(), drop); - + } + } } } } diff --git a/src/plugin.yml b/src/plugin.yml index 4ed59644c..7509adc2c 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -5,7 +5,7 @@ description: Slimefun basically turns your entire Server into a FTB modpack with website: http://TheBusyBiscuit.github.io/ main: me.mrCookieSlime.Slimefun.SlimefunStartup -softdepend: [CS-CoreLib, ClearLag, WorldEdit, PlaceholderAPI] +softdepend: [CS-CoreLib, PlaceholderAPI] api-version: 1.14