diff --git a/pom.xml b/pom.xml index d50ff0df5..e2aed4a93 100644 --- a/pom.xml +++ b/pom.xml @@ -124,7 +124,7 @@ com.github.thebusybiscuit CS-CoreLib2 - 0.3.12 + 0.4.1 compile diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 0ea50cc93..88bc90a68 100644 --- a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -8,8 +8,8 @@ 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.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.FireworkEffectMeta; import org.bukkit.potion.PotionEffect; @@ -486,8 +486,13 @@ public final class SlimefunItems { public static final ItemStack SOLAR_PANEL = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Panel", "", "&a&oTransforms Sunlight to Energy"); public static final ItemStack SOLAR_ARRAY = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Array", "", "&a&oTransforms Sunlight to Energy"); - public static final ItemStack DIGITAL_MINER = new CustomItem(Material.IRON_PICKAXE, "&bDigital Miner", "", "&a&oDigs out everything!"); - public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&a&oDigs out everything!", "&a&oAutomatically crushes your Ores"); + + @Deprecated + public static final ItemStack DIGITAL_MINER = new CustomItem(Material.IRON_PICKAXE, "&bDigital Miner", "", "&4DEPRECATED", "&cThis machine will soon be removed!"); + + @Deprecated + public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&4DEPRECATED", "&cThis machine will soon be removed!"); + public static final ItemStack AUTOMATED_PANNING_MACHINE = new CustomItem(Material.BOWL, "&aAutomated Panning Machine", "", "&a&oA MultiBlock Version of the Gold Pan"); public static final ItemStack OUTPUT_CHEST = new CustomItem(Material.CHEST, "&4Output Chest", "", "&c&oA basic machine will try to put", "&c&oitems in this chest if it's placed", "&c&oadjacent to the dispenser."); public static final ItemStack HOLOGRAM_PROJECTOR = new CustomItem(Material.QUARTZ_SLAB, "&bHologram Projector", "", "&rProjects an Editable Hologram"); @@ -605,7 +610,10 @@ public final class SlimefunItems { public static final ItemStack SOLAR_GENERATOR_4 = new CustomItem(Material.DAYLIGHT_DETECTOR, "&eEnergized Solar Generator", "", "&9Works at Night", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &7256 J/s (Day)", "&8\u21E8 &e\u26A1 &7128 J/s (Night)"); public static final ItemStack COAL_GENERATOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCoal Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &764 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s"); + public static final ItemStack COAL_GENERATOR_2 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCoal Generator &7(&eII&7)", "", "&6Advanced Generator", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &730 J/s"); + public static final ItemStack LAVA_GENERATOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&4Lava Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s"); + public static final ItemStack LAVA_GENERATOR_2 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&4Lava Generator &7&eII&7)", "", "&6Advanced Generator", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &740 J/s"); public static final ItemStack ELECTRIC_FURNACE = new CustomItem(Material.FURNACE, "&cElectric Furnace", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &74 J/s"); public static final ItemStack ELECTRIC_FURNACE_2 = new CustomItem(Material.FURNACE, "&cElectric Furnace &7- &eII", "", "&aMedium Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &76 J/s"); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/me/mrCookieSlime/Slimefun/Objects/Category.java index 2a0d0472a..20acc458f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Category.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Category.java @@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun.Objects; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; import org.bukkit.inventory.ItemFlag; @@ -25,13 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; * @see SeasonalCategory */ public class Category { - /** - * List of the registered Categories. - * @since 4.0 - * @see Categories - */ - public static List list = new ArrayList<>(); - + private ItemStack item; private List items; private int tier; @@ -79,15 +72,19 @@ public class Category { * @since 4.0 */ public void register() { - list.add(this); - Collections.sort(list, new CategorySorter()); + SlimefunPlugin.getUtilities().allCategories.add(this); + Collections.sort(list(), SlimefunPlugin.getUtilities().categorySorter); if (this instanceof SeasonalCategory) { - if (((SeasonalCategory) this).isUnlocked()) SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this); + if (((SeasonalCategory) this).isUnlocked()) { + SlimefunPlugin.getUtilities().enabledCategories.add(this); + } + } + else { + SlimefunPlugin.getUtilities().enabledCategories.add(this); } - else SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this); - Collections.sort(SlimefunPlugin.getUtilities().currentlyEnabledCategories, new CategorySorter()); + Collections.sort(SlimefunPlugin.getUtilities().enabledCategories, SlimefunPlugin.getUtilities().categorySorter); } /** @@ -99,7 +96,7 @@ public class Category { * @see Categories */ public static List list() { - return list; + return SlimefunPlugin.getUtilities().allCategories; } /** @@ -143,8 +140,9 @@ public class Category { * * @since 4.0 */ + @Deprecated public static Category getByItem(ItemStack item) { - for (Category c: list) { + for (Category c: list()) { if (c.getItem().isSimilar(item)) return c; } return null; @@ -161,19 +159,4 @@ public class Category { return tier; } - /** - * @since 4.0 - */ - class CategorySorter implements Comparator { - - /** - * @since 4.0 - */ - @Override - public int compare(Category c1, Category c2) { - return Integer.compare(c1.getTier(), c2.getTier()); - } - - } - } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/me/mrCookieSlime/Slimefun/Objects/Research.java index 8392cee84..ceae58924 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Research.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Research.java @@ -418,4 +418,9 @@ public class Research { public static List getResearches(String uuid) { return getResearches(UUID.fromString(uuid)); } + + @Override + public String toString() { + return "Research {" + id + "," + name + "}"; + } } \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java index b133b19c9..f6b515413 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java @@ -1,38 +1,42 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.PotionEffect; import me.mrCookieSlime.Slimefun.Lists.Categories; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.api.Slimefun; /** * @since 4.0 */ -public class EnderTalisman extends SlimefunItem { - - private String suffix; - private boolean consumable; - private boolean cancel; - private PotionEffect[] effects; - private int chance; +public class EnderTalisman extends Talisman { public EnderTalisman(Talisman parent) { - super(Categories.TALISMANS_2, parent.upgrade(), "ENDER_" + parent.getID(), RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, null, parent.getItem(), null, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, parent.upgrade()); - this.consumable = parent.isConsumable(); - this.cancel = parent.isEventCancelled(); - this.suffix = parent.getSuffix(); - this.effects = parent.getEffects(); - this.chance = parent.getChance(); + super(Categories.TALISMANS_2, parent.upgrade(), "ENDER_" + parent.getID(), new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, null, parent.getItem(), null, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}); + + consumable = parent.isConsumable(); + cancel = parent.isEventCancelled(); + suffix = parent.getSuffix(); + effects = parent.getEffects(); + chance = parent.getChance(); Slimefun.addHint("ENDER_" + parent.getID(), "&eEnder Talismans have the advantage", "&eof still working while they", "&eare in your Ender Chest"); } - - public String getSuffix() { return this.suffix; } - public boolean isConsumable() { return this.consumable; } - public boolean isEventCancelled() { return this.cancel; } - public PotionEffect[] getEffects() { return this.effects; } - public int getChance() { return this.chance; } + + @Override + public ItemStack upgrade() { + throw new UnsupportedOperationException(); + } + + @Override + public void install() { + // Let's override that, otherwise we would be creating Ender Talismans + // for every Ender Talisman + } + + @Override + public void create() { + // Let's override that, otherwise we would be creating Ender Talismans + // for every Ender Talisman + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 31420ffa8..f41d29cc8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -33,10 +33,7 @@ import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public class SlimefunItem { - - public static List items = new ArrayList<>(); - public static List all = new ArrayList<>(); - + private String id; private String hash; private State state; @@ -211,7 +208,7 @@ public class SlimefunItem { throw new IllegalArgumentException("ID \"" + this.id + "\" already exists"); } if (this.recipe.length < 9) this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null}; - all.add(this); + SlimefunPlugin.getUtilities().allItems.add(this); SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true); SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing); @@ -246,7 +243,7 @@ public class SlimefunItem { this.enchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-enchanting"); this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting"); this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission"); - items.add(this); + SlimefunPlugin.getUtilities().enabledItems.add(this); if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++; SlimefunPlugin.getUtilities().itemIDs.put(this.id, this); @@ -274,7 +271,7 @@ public class SlimefunItem { } public static List list() { - return items; + return SlimefunPlugin.getUtilities().enabledItems; } public void bindToResearch(Research r) { @@ -325,7 +322,7 @@ public class SlimefunItem { public static SlimefunItem getByItem(ItemStack item) { if (item == null) return null; - for (SlimefunItem sfi: items) { + for (SlimefunItem sfi: SlimefunPlugin.getUtilities().enabledItems) { if ((sfi instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || (sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || (sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) || @@ -378,7 +375,7 @@ public class SlimefunItem { } public static State getState(ItemStack item) { - for (SlimefunItem i: all) { + for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) { if (i.isItem(item)) { return i.getState(); } @@ -387,7 +384,7 @@ public class SlimefunItem { } public static boolean isDisabled(ItemStack item) { - for (SlimefunItem i: all) { + for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) { if (i.isItem(item)) { return i.isDisabled(); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java index 598a51d9a..ef0d493e4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java @@ -19,6 +19,7 @@ import org.bukkit.potion.PotionEffect; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.api.Slimefun; @@ -28,11 +29,11 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; */ public class Talisman extends SlimefunItem { - private String suffix; - private boolean consumable = true; - private boolean cancel = true; - private PotionEffect[] effects; - private int chance = 100; + protected String suffix; + protected boolean consumable = true; + protected boolean cancel = true; + protected PotionEffect[] effects; + protected int chance = 100; public Talisman(ItemStack item, String id, ItemStack[] recipe, boolean consumable, boolean cancelEvent, String messageSuffix, PotionEffect... effects) { super(Categories.TALISMANS_1, item, id, RecipeType.MAGIC_WORKBENCH, recipe, new CustomItem(item, consumable ? 4 : 1)); @@ -52,12 +53,16 @@ public class Talisman extends SlimefunItem { } public Talisman(ItemStack item, String id, ItemStack[] recipe, String messageSuffix, int chance, PotionEffect... effects) { - super(Categories.TALISMANS_1, item, id, RecipeType.MAGIC_WORKBENCH, recipe, item); + super(Categories.TALISMANS_1, item, id, RecipeType.MAGIC_WORKBENCH, recipe); this.suffix = messageSuffix; this.effects = effects; this.chance = chance; } + protected Talisman(Category category, ItemStack item, String id, ItemStack[] recipe) { + super(category, item, id, RecipeType.MAGIC_WORKBENCH, recipe); + } + public String getSuffix() { return this.suffix; } @@ -78,39 +83,6 @@ public class Talisman extends SlimefunItem { return this.chance; } - public static boolean checkFor(Event e, SlimefunItem item) { - if (!(item instanceof Talisman)) { - return false; - } - - Talisman talisman = (Talisman) item; - if (new Random().nextInt(100) < talisman.getChance()) { - return false; - } - - Player p = getPlayerByEventType(e); - if (p == null || !pass(p, talisman)) { - return false; - } - - if (p.getInventory().containsAtLeast(talisman.getItem(), 1)) { - if (Slimefun.hasUnlocked(p, talisman.getItem(), true)) { - executeTalismanAttributes(e,p,talisman); - return true; - } - else return false; - } - else if (p.getEnderChest().containsAtLeast(talisman.upgrade(), 1)) { - if (Slimefun.hasUnlocked(p, talisman.upgrade(), true)) { - executeTalismanAttributes(e,p,talisman); - return true; - } - else return false; - } - else return false; - - } - public ItemStack upgrade() { List lore = new ArrayList<>(); lore.add("&7&oEnder Infused"); @@ -142,6 +114,38 @@ public class Talisman extends SlimefunItem { private static boolean isTalismanMessage(Talisman talisman){ return !("").equalsIgnoreCase(talisman.getSuffix()); } + + public static boolean checkFor(Event e, SlimefunItem item) { + if (!(item instanceof Talisman)) { + return false; + } + + Talisman talisman = (Talisman) item; + if (new Random().nextInt(100) < talisman.getChance()) { + return false; + } + + Player p = getPlayerByEventType(e); + if (p == null || !pass(p, talisman)) { + return false; + } + + if (p.getInventory().containsAtLeast(talisman.getItem(), 1)) { + if (Slimefun.hasUnlocked(p, talisman.getItem(), true)) { + executeTalismanAttributes(e,p,talisman); + return true; + } + else return false; + } + else if (p.getEnderChest().containsAtLeast(talisman.upgrade(), 1)) { + if (Slimefun.hasUnlocked(p, talisman.upgrade(), true)) { + executeTalismanAttributes(e,p,talisman); + return true; + } + else return false; + } + else return false; + } private static void executeTalismanAttributes(Event e, Player p, Talisman talisman){ consumeItem(p,talisman); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java index cc9ccad25..90c042baa 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java @@ -98,7 +98,7 @@ public final class MachineHelper { im.setLore(lore); item.setItemMeta(im); - menu.replaceExistingItem(22, item); + menu.replaceExistingItem(slot, item); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java new file mode 100644 index 000000000..817715d95 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java @@ -0,0 +1,66 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; + +import org.bukkit.ChatColor; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; +import me.mrCookieSlime.Slimefun.holograms.CargoHologram; + +public class CargoManagerBlock extends SlimefunItem { + + public CargoManagerBlock(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + + SlimefunItem.registerBlockHandler("CARGO_MANAGER", (p, b, tool, reason) -> { + CargoHologram.remove(b); + return true; + }); + } + + @Override + public void preRegister() { + addItemHandler(new BlockTicker() { + + @Override + public void tick(Block b, SlimefunItem item, Config data) { + CargoNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); + } + + @Override + public boolean isSynchronized() { + return false; + } + + }, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { + if (e.getClickedBlock() == null) return false; + String item = BlockStorage.checkID(e.getClickedBlock()); + if (item == null || !item.equals(getID())) return false; + e.setCancelled(true); + + if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "visualizer") == null) { + BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", "disabled"); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&4\u2718")); + } + else { + BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", null); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&2\u2714")); + } + return true; + } + }); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java new file mode 100644 index 000000000..6086c4a2c --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java @@ -0,0 +1,27 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.entity.Item; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener; + +public class AncientPedestal extends SlimefunItem { + + public AncientPedestal(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, id, recipeType, recipe, recipeOutput); + + SlimefunItem.registerBlockHandler(getID(), (p, b, tool, reason) -> { + Item stack = AncientAltarListener.findItem(b); + if (stack != null) { + stack.removeMetadata("item_placed", SlimefunPlugin.instance); + b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName())); + stack.remove(); + } + return true; + }); + } +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java index c72346212..43e08855d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java @@ -23,34 +23,34 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; public class AutoDrier extends AContainer implements RecipeDisplayItem { - private final List recipes = new ArrayList<>(); + private final List recipeList = new ArrayList<>(); public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { super(category, item, id, recipeType, recipe); - recipes.add(new ItemStack(Material.ROTTEN_FLESH)); - recipes.add(new ItemStack(Material.LEATHER)); + recipeList.add(new ItemStack(Material.ROTTEN_FLESH)); + recipeList.add(new ItemStack(Material.LEATHER)); - recipes.add(new ItemStack(Material.WET_SPONGE)); - recipes.add(new ItemStack(Material.SPONGE)); + recipeList.add(new ItemStack(Material.WET_SPONGE)); + recipeList.add(new ItemStack(Material.SPONGE)); - recipes.add(new ItemStack(Material.KELP)); - recipes.add(new ItemStack(Material.DRIED_KELP)); + recipeList.add(new ItemStack(Material.KELP)); + recipeList.add(new ItemStack(Material.DRIED_KELP)); - recipes.add(new ItemStack(Material.COOKED_BEEF)); - recipes.add(SlimefunItems.BEEF_JERKY); + recipeList.add(new ItemStack(Material.COOKED_BEEF)); + recipeList.add(SlimefunItems.BEEF_JERKY); - recipes.add(new ItemStack(Material.POTION)); - recipes.add(new ItemStack(Material.GLASS_BOTTLE)); + recipeList.add(new ItemStack(Material.POTION)); + recipeList.add(new ItemStack(Material.GLASS_BOTTLE)); - recipes.add(new ItemStack(Material.OAK_SAPLING)); - recipes.add(new ItemStack(Material.STICK, 2)); + recipeList.add(new ItemStack(Material.OAK_SAPLING)); + recipeList.add(new ItemStack(Material.STICK, 2)); - recipes.add(new ItemStack(Material.OAK_LEAVES)); - recipes.add(new ItemStack(Material.STICK)); + recipeList.add(new ItemStack(Material.OAK_LEAVES)); + recipeList.add(new ItemStack(Material.STICK)); - recipes.add(new ItemStack(Material.WATER_BUCKET)); - recipes.add(new ItemStack(Material.BUCKET)); + recipeList.add(new ItemStack(Material.WATER_BUCKET)); + recipeList.add(new ItemStack(Material.BUCKET)); } @Override @@ -65,7 +65,7 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem { @Override public List getDisplayRecipes() { - return recipes; + return recipeList; } @Override @@ -100,9 +100,9 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem { Material mat = item.getType(); ItemStack output = null; - for (int i = 0; i < recipes.size(); i += 2) { - if (SlimefunManager.isItemSimiliar(item, recipes.get(i), true)) { - output = recipes.get(i + 1); + for (int i = 0; i < recipeList.size(); i += 2) { + if (SlimefunManager.isItemSimiliar(item, recipeList.get(i), true)) { + output = recipeList.get(i + 1); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java index 483946cbb..831200b03 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java @@ -31,6 +31,14 @@ public abstract class CarbonPress extends AContainer implements RecipeDisplayIte return "CARBON_PRESS"; } - + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.DIAMOND_PICKAXE); + } + + @Override + public String getInventoryTitle() { + return "&cCarbon Press"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java index e4d891d36..ee0c76b9c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java @@ -33,5 +33,15 @@ public abstract class ElectricIngotFactory extends AContainer implements RecipeD public String getMachineIdentifier() { return "ELECTRIC_INGOT_FACTORY"; } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public String getInventoryTitle() { + return "&cElectric Ingot Factory"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java new file mode 100644 index 000000000..f2439dcd4 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java @@ -0,0 +1,32 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; + +public abstract class ElectricOreGrinder extends AContainer implements RecipeDisplayItem { + + public ElectricOreGrinder(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, name, recipeType, recipe); + } + + @Override + public String getMachineIdentifier() { + return "ELECTRIC_ORE_GRINDER"; + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.IRON_PICKAXE); + } + + @Override + public String getInventoryTitle() { + return "&bElectric Ore Grinder"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java new file mode 100644 index 000000000..5a08dceca --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java @@ -0,0 +1,52 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.GPS.Elevator; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.api.BlockStorage; + +public class ElevatorPlate extends SimpleSlimefunItem { + + public ElevatorPlate(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, id, recipeType, recipe, recipeOutput); + + SlimefunItem.registerBlockHandler("ELEVATOR_PLATE", new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + BlockStorage.addBlockInfo(b, "floor", "&rFloor #0"); + BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + return true; + } + }); + } + + @Override + public ItemInteractionHandler getItemHandler() { + return (e, p, item) -> { + if (e.getClickedBlock() == null) return false; + String id = BlockStorage.checkID(e.getClickedBlock()); + if (id == null || !id.equals(getID())) return false; + + if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) { + Elevator.openEditor(p, e.getClickedBlock()); + } + + return true; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java index aab8479c8..962d9738b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java @@ -1,5 +1,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -29,5 +30,15 @@ public abstract class FoodComposter extends AContainer implements RecipeDisplayI public String getMachineIdentifier() { return "FOOD_COMPOSTER"; } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.GOLDEN_HOE); + } + + @Override + public String getInventoryTitle() { + return "&cFood Composter"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java index eea001c0b..bdd210f5f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java @@ -1,13 +1,13 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; - public abstract class FoodFabricator extends AContainer { public FoodFabricator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { @@ -28,5 +28,15 @@ public abstract class FoodFabricator extends AContainer { public String getMachineIdentifier() { return "FOOD_FABRICATOR"; } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.GOLDEN_HOE); + } + + @Override + public String getInventoryTitle() { + return "&cFood Fabricator"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java index 946c2b7d4..d0fc50fba 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java @@ -40,6 +40,16 @@ public abstract class Freezer extends AContainer implements RecipeDisplayItem { return displayRecipes; } + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.GOLDEN_PICKAXE); + } + + @Override + public String getInventoryTitle() { + return "&bFreezer"; + } + @Override public String getMachineIdentifier() { return "FREEZER"; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java new file mode 100644 index 000000000..11db7221d --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java @@ -0,0 +1,46 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators; + +import org.bukkit.Material; +import org.bukkit.Tag; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; + +public abstract class CoalGenerator extends AGenerator { + + public CoalGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public void registerDefaultRecipes() { + registerFuel(new MachineFuel(8, new ItemStack(Material.COAL))); + registerFuel(new MachineFuel(8, new ItemStack(Material.CHARCOAL))); + registerFuel(new MachineFuel(80, new ItemStack(Material.COAL_BLOCK))); + registerFuel(new MachineFuel(12, new ItemStack(Material.BLAZE_ROD))); + + // Logs + for (Material mat: Tag.LOGS.getValues()) { + registerFuel(new MachineFuel(2, new ItemStack(mat))); + } + + // Wooden Planks + for (Material mat: Tag.PLANKS.getValues()) { + registerFuel(new MachineFuel(1, new ItemStack(mat))); + } + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public String getInventoryTitle() { + return "&cCoal Generator"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java new file mode 100644 index 000000000..080e9bc86 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java @@ -0,0 +1,34 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; + +public abstract class CombustionGenerator extends AGenerator { + + public CombustionGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public void registerDefaultRecipes() { + registerFuel(new MachineFuel(30, SlimefunItems.BUCKET_OF_OIL)); + registerFuel(new MachineFuel(90, SlimefunItems.BUCKET_OF_FUEL)); + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public String getInventoryTitle() { + return "&cCombustion Reactor"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java new file mode 100644 index 000000000..a6705e8f9 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java @@ -0,0 +1,32 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; + +public abstract class LavaGenerator extends AGenerator { + + public LavaGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + } + + @Override + public void registerDefaultRecipes() { + registerFuel(new MachineFuel(40, new ItemStack(Material.LAVA_BUCKET))); + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public String getInventoryTitle() { + return "&4Lava Generator"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java index e3222e9cb..789434a83 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java @@ -29,7 +29,8 @@ public class Juicer extends MultiBlockMachine { new ItemStack(Material.APPLE), SlimefunItems.APPLE_JUICE, new ItemStack(Material.MELON), SlimefunItems.MELON_JUICE, new ItemStack(Material.CARROT), SlimefunItems.CARROT_JUICE, - new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE + new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE, + new ItemStack(Material.GOLDEN_APPLE), SlimefunItems.GOLDEN_APPLE_JUICE }, Material.NETHER_BRICK_FENCE ); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java index 79b4ac163..259077952 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java @@ -16,7 +16,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; public class TableSaw extends MultiBlockMachine { - private final List displayRecipes = new ArrayList(); + private final List displayRecipes = new ArrayList<>(); public TableSaw() { super( diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java index d6b1fff38..a98c4e735 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/Messages.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/Messages.java @@ -69,6 +69,8 @@ public final class Messages { local.setDefault("messages.cannot-place" ,"&cYou cannot place that block there!"); local.setDefault("messages.no-pvp" ,"&cYou cannot pvp in here!"); + local.setDefault("tooltips.item-permission", "", "&rYou do not have Permission", "&rto access this Item"); + local.setDefault("machines.pattern-not-found", "&eSorry, I could not recognize this Pattern. Please place the Items in the correct Pattern into the Dispenser."); local.setDefault("machines.unknown-material", "&eSorry, I could not recognize the Item in my Dispenser. Please put something in that I know."); local.setDefault("machines.wrong-item", "&eSorry, I could not recognize the Item you right clicked me with. Check the Recipes and see which Items you can use."); diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 1e3c27c53..c859aaeaf 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -49,7 +49,7 @@ public final class MiscSetup { } public static void loadItems(Settings settings) { - Iterator iterator = SlimefunItem.items.iterator(); + Iterator iterator = SlimefunItem.list().iterator(); while (iterator.hasNext()) { SlimefunItem item = iterator.next(); if (item == null) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java index 1a0d1f438..5b48a0d4c 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java @@ -127,10 +127,12 @@ public final class SlimefunManager { private static boolean equalsLore(List lore, List lore2) { StringBuilder string1 = new StringBuilder(); StringBuilder string2 = new StringBuilder(); + String colors = ChatColor.YELLOW.toString() + ChatColor.YELLOW.toString() + ChatColor.GRAY.toString(); for (String string: lore) { if (!string.equals(ChatColor.GRAY + "Soulbound") && !string.startsWith(colors)) string1.append("-NEW LINE-").append(string); } + for (String string: lore2) { if (!string.equals(ChatColor.GRAY + "Soulbound") && !string.startsWith(colors)) string2.append("-NEW LINE-").append(string); } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index a07ee949c..4472258c7 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -23,7 +23,6 @@ import org.bukkit.block.CreatureSpawner; import org.bukkit.entity.EnderPearl; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.block.BlockPlaceEvent; @@ -46,7 +45,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.GPS.Elevator; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.GPS.NetworkStatus; import me.mrCookieSlime.Slimefun.Lists.Categories; @@ -75,13 +73,13 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoManagerBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe; @@ -105,6 +103,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SoulboundRune; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SwordOfBeheading; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AncientPedestal; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible; @@ -128,8 +127,10 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Electric import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricGoldPan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotFactory; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotPulverizer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricOreGrinder; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricSmeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectrifiedCrucible; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElevatorPlate; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.EnergyRegulator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter; @@ -140,6 +141,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.NetherDr import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.OilPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Refinery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.WitherAssembler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CoalGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CombustionGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.LavaGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor; @@ -159,7 +163,6 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; -import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener; import me.mrCookieSlime.Slimefun.androids.AndroidType; import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; import me.mrCookieSlime.Slimefun.api.BlockStorage; @@ -167,7 +170,6 @@ import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; -import me.mrCookieSlime.Slimefun.holograms.CargoHologram; import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; public final class SlimefunSetup { @@ -1003,8 +1005,8 @@ public final class SlimefunSetup { if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS); if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION); if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS); - p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2)); p.setFireTicks(0); + p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2)); e.setCancelled(true); return true; } @@ -1102,6 +1104,7 @@ public final class SlimefunSetup { @Override public boolean onInteract(final Player p, MultiBlock mb, final Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("DIGITAL_MINER"))) { + p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!"); if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.DIGITAL_MINER, true)) { Block chestBlock = b.getRelative(BlockFace.UP); @@ -1159,6 +1162,7 @@ public final class SlimefunSetup { @Override public boolean onInteract(final Player p, MultiBlock mb, final Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("ADVANCED_DIGITAL_MINER"))) { + p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!"); if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.ADVANCED_DIGITAL_MINER, true)) { Block chestBlock = b.getRelative(BlockFace.UP); @@ -1458,7 +1462,7 @@ public final class SlimefunSetup { .register(true); new Juice(Categories.FOOD, SlimefunItems.GOLDEN_APPLE_JUICE, "GOLDEN_APPLE_JUICE", RecipeType.JUICER, - new ItemStack[] {new ItemStack(Material.GOLDEN_APPLE), null, null, null, null, null, null, null, null}) + new ItemStack[] {null, null, null, null, new ItemStack(Material.GOLDEN_APPLE), null, null, null, null}) .register(true); new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.BROKEN_SPAWNER, "BROKEN_SPAWNER", new RecipeType(SlimefunItems.PICKAXE_OF_CONTAINMENT), @@ -1728,24 +1732,10 @@ public final class SlimefunSetup { new CustomItem(SlimefunItems.WITHER_PROOF_OBSIDIAN, 4)) .register(true); - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.ANCIENT_PEDESTAL, "ANCIENT_PEDESTAL", RecipeType.MAGIC_WORKBENCH, + new AncientPedestal(Categories.LUMPS_AND_MAGIC, SlimefunItems.ANCIENT_PEDESTAL, "ANCIENT_PEDESTAL", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.STONE), null, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}, new CustomItem(SlimefunItems.ANCIENT_PEDESTAL, 4)) .register(true); - SlimefunItem.registerBlockHandler("ANCIENT_PEDESTAL", new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - Item stack = AncientAltarListener.findItem(b); - if (stack != null) { - stack.removeMetadata("item_placed", SlimefunPlugin.instance); - b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName())); - stack.remove(); - } - return true; - } - }); - new SlimefunItem(Categories.MAGIC, SlimefunItems.ANCIENT_ALTAR, "ANCIENT_ALTAR", RecipeType.MAGIC_WORKBENCH, new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}) .register(true); @@ -2013,17 +2003,7 @@ public final class SlimefunSetup { new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY, "ELECTRIC_INGOT_FACTORY", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.FLINT_AND_STEEL), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cElectric Ingot Factory"; - } - + @Override public int getEnergyConsumption() { return 4; @@ -2039,16 +2019,6 @@ public final class SlimefunSetup { new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, "ELECTRIC_INGOT_FACTORY_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.BRASS_INGOT}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cElectric Ingot Factory"; - } - @Override public int getEnergyConsumption() { return 7; @@ -2064,16 +2034,6 @@ public final class SlimefunSetup { new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_3, "ELECTRIC_INGOT_FACTORY_3", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.BRASS_INGOT}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cElectric Ingot Factory"; - } - @Override public int getEnergyConsumption() { return 20; @@ -2131,19 +2091,9 @@ public final class SlimefunSetup { }.registerChargeableBlock(true, 1024); - new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.STONE_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&bElectric Ore Grinder"; - } - @Override public int getEnergyConsumption() { return 6; @@ -2154,26 +2104,11 @@ public final class SlimefunSetup { return 1; } - @Override - public String getMachineIdentifier() { - return "ELECTRIC_ORE_GRINDER"; - } - }.registerChargeableBlock(true, 128); - new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GILDED_IRON}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&bElectric Ore Grinder"; - } - @Override public int getEnergyConsumption() { return 15; @@ -2184,21 +2119,11 @@ public final class SlimefunSetup { return 4; } - @Override - public String getMachineIdentifier() { - return "ELECTRIC_ORE_GRINDER"; - } - }.registerChargeableBlock(true, 512); new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER, "HEATED_PRESSURE_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.GLASS), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - + @Override public int getEnergyConsumption() { return 5; @@ -2214,11 +2139,6 @@ public final class SlimefunSetup { new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER_2, "HEATED_PRESSURE_CHAMBER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_ALLOY_INGOT}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - @Override public int getEnergyConsumption() { return 22; @@ -2235,43 +2155,9 @@ public final class SlimefunSetup { new ItemStack[] {null, SlimefunItems.ELECTRIC_ORE_GRINDER, null, SlimefunItems.LEAD_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) .registerChargeableBlock(true, 512); - new AGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, SlimefunItems.NICKEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.NICKEL_INGOT, null, SlimefunItems.NICKEL_INGOT, null}) { - - @Override - public void registerDefaultRecipes() { - registerFuel(new MachineFuel(8, new ItemStack(Material.COAL))); - registerFuel(new MachineFuel(8, new ItemStack(Material.CHARCOAL))); - registerFuel(new MachineFuel(80, new ItemStack(Material.COAL_BLOCK))); - registerFuel(new MachineFuel(12, new ItemStack(Material.BLAZE_ROD))); - - // Logs - registerFuel(new MachineFuel(1, new ItemStack(Material.OAK_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.SPRUCE_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.BIRCH_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.JUNGLE_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.ACACIA_LOG))); - registerFuel(new MachineFuel(1, new ItemStack(Material.DARK_OAK_LOG))); - - // Wooden Planks - registerFuel(new MachineFuel(1, new ItemStack(Material.OAK_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.SPRUCE_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.BIRCH_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.JUNGLE_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.ACACIA_WOOD))); - registerFuel(new MachineFuel(1, new ItemStack(Material.DARK_OAK_WOOD))); - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cCoal Generator"; - } - + @Override public int getEnergyProduction() { return 8; @@ -2279,6 +2165,16 @@ public final class SlimefunSetup { }.registerUnrechargeableBlock(true, 64); + new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR_2, "COAL_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HEATING_COIL, new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.COAL_GENERATOR, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public int getEnergyProduction() { + return 15; + } + + }.registerUnrechargeableBlock(true, 256); + new AGenerator(Categories.ELECTRICITY, SlimefunItems.BIO_REACTOR, "BIO_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.HEATING_COIL, SlimefunItems.COMPOSTER, SlimefunItems.HEATING_COIL, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}) { @@ -3048,24 +2944,9 @@ public final class SlimefunSetup { }.registerChargeableBlock(true, 256); - new AGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR, "LAVA_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR, "LAVA_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.GOLD_16K, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL}) { - - @Override - public void registerDefaultRecipes() { - registerFuel(new MachineFuel(40, new ItemStack(Material.LAVA_BUCKET))); - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&4Lava Generator"; - } - + @Override public int getEnergyProduction() { return 10; @@ -3073,25 +2954,19 @@ public final class SlimefunSetup { }.registerUnrechargeableBlock(true, 512); - new AGenerator(Categories.ELECTRICITY, SlimefunItems.COMBUSTION_REACTOR, "COMBUSTION_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR_2, "LAVA_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.LAVA_GENERATOR, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL}) { + + @Override + public int getEnergyProduction() { + return 20; + } + + }.registerUnrechargeableBlock(true, 1024); + + new CombustionGenerator(Categories.ELECTRICITY, SlimefunItems.COMBUSTION_REACTOR, "COMBUSTION_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL}) { - - @Override - public void registerDefaultRecipes() { - registerFuel(new MachineFuel(30, SlimefunItems.BUCKET_OF_OIL)); - registerFuel(new MachineFuel(90, SlimefunItems.BUCKET_OF_FUEL)); - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&cCombustion Reactor"; - } - + @Override public int getEnergyProduction() { return 12; @@ -3155,49 +3030,14 @@ public final class SlimefunSetup { new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM, null, null, null, null, null, null, null}) .register(true); - new SlimefunItem(Categories.GPS, SlimefunItems.ELEVATOR, "ELEVATOR_PLATE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ElevatorPlate(Categories.GPS, SlimefunItems.ELEVATOR, "ELEVATOR_PLATE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON), SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT}, new CustomItem(SlimefunItems.ELEVATOR, 2)) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(final ItemUseEvent e, Player p, ItemStack stack) { - if (e.getClickedBlock() == null) return false; - String item = BlockStorage.checkID(e.getClickedBlock()); - if (item == null || !item.equals("ELEVATOR_PLATE")) return false; - - if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) Elevator.openEditor(p, e.getClickedBlock()); - return true; - } - }); - - SlimefunItem.registerBlockHandler("ELEVATOR_PLATE", new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - BlockStorage.addBlockInfo(b, "floor", "&rFloor #0"); - BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - return true; - } - }); + .register(true); new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR, "FOOD_FABRICATOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.GOLDEN_HOE); - } - - @Override - public String getInventoryTitle() { - return "&cFood Fabricator"; - } - @Override public int getEnergyConsumption() { return 7; @@ -3212,17 +3052,7 @@ public final class SlimefunSetup { new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR_2, "FOOD_FABRICATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_HOE); - } - - @Override - public String getInventoryTitle() { - return "&cFood Fabricator"; - } - + @Override public int getEnergyConsumption() { return 24; @@ -3277,17 +3107,7 @@ public final class SlimefunSetup { new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER, "FOOD_COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.GOLDEN_HOE); - } - - @Override - public String getInventoryTitle() { - return "&cFood Composter"; - } - + @Override public int getEnergyConsumption() { return 8; @@ -3303,16 +3123,6 @@ public final class SlimefunSetup { new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER_2, "FOOD_COMPOSTER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_HOE); - } - - @Override - public String getInventoryTitle() { - return "&cFood Composter"; - } - @Override public int getEnergyConsumption() { return 26; @@ -3354,8 +3164,7 @@ public final class SlimefunSetup { .register(true); new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR, "CROP_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) - { + new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) { @Override public int getEnergyConsumption() { @@ -3375,8 +3184,7 @@ public final class SlimefunSetup { }.registerChargeableBlock(true, 1024); new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR_2, "CROP_GROWTH_ACCELERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) - { + new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) { @Override public int getEnergyConsumption() { @@ -3397,17 +3205,7 @@ public final class SlimefunSetup { new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER, "FREEZER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PACKED_ICE), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COOLING_UNIT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.COOLING_UNIT}) { - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.GOLDEN_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&bFreezer"; - } - + @Override public int getEnergyConsumption() { return 9; @@ -3423,16 +3221,6 @@ public final class SlimefunSetup { new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER_2, "FREEZER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.FREEZER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.COOLING_UNIT}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&bFreezer"; - } - @Override public int getEnergyConsumption() { return 15; @@ -3559,49 +3347,9 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS, SlimefunItems.SILVER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS}, new CustomItem(SlimefunItems.CARGO_MOTOR, 4)) .register(true); - new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE, + new CargoManagerBlock(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT}) - .register(true, new BlockTicker() { - - @Override - public void tick(Block b, SlimefunItem item, Config data) { - CargoNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); - } - - @Override - public boolean isSynchronized() { - return false; - } - - }, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { - if (e.getClickedBlock() == null) return false; - String item = BlockStorage.checkID(e.getClickedBlock()); - if (item == null || !item.equals("CARGO_MANAGER")) return false; - e.setCancelled(true); - - if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "visualizer") == null) { - BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", "disabled"); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&4\u2718")); - } - else { - BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", null); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&2\u2714")); - } - return true; - } - }); - - SlimefunItem.registerBlockHandler("CARGO_MANAGER", new SlimefunBlockHandler() { - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - CargoHologram.remove(b); - return true; - } - }); + .register(true); new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_NODE, "CARGO_NODE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT}, new CustomItem(SlimefunItems.CARGO_NODE, 4)) @@ -3661,16 +3409,6 @@ public final class SlimefunSetup { new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS, "CARBON_PRESS", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.CARBON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBON, SlimefunItems.CARBON, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.CARBONADO, SlimefunItems.HEATING_COIL}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&cCarbon Press"; - } - @Override public int getEnergyConsumption() { return 10; @@ -3686,16 +3424,6 @@ public final class SlimefunSetup { new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_2, "CARBON_PRESS_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.CARBON, SlimefunItems.CARBON_PRESS, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&cCarbon Press"; - } - @Override public int getEnergyConsumption() { return 25; @@ -3711,16 +3439,6 @@ public final class SlimefunSetup { new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_3, "CARBON_PRESS_3", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.CARBON_PRESS_2, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) { - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getInventoryTitle() { - return "&cCarbon Press"; - } - @Override public int getEnergyConsumption() { return 90; diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java index 08f0edb04..74bd3b68a 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java @@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.UUID; @@ -57,7 +58,8 @@ public final class SlimefunGuide { private SlimefunGuide() {} private static final int category_size = 36; - + private static final int[] slots = new int[] {0, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}; + @Deprecated public static ItemStack getItem() { return getItem(SlimefunGuideLayout.CHEST); @@ -86,8 +88,6 @@ public final class SlimefunGuide { return new CustomItem(new ItemStack(Material.ENCHANTED_BOOK), "&eSlimefun Guide &7(Right Click)", (book ? "": "&2"), "&rThis is your basic Guide for Slimefun", "&rYou can see all Items added by this Plugin", "&ror its Addons including their Recipes", "&ra bit of information and more"); } - private static final int[] slots = new int[] {0, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}; - public static void openSettings(Player p, final ItemStack guide) { final ChestMenu menu = new ChestMenu("Settings / Info"); @@ -184,16 +184,12 @@ public final class SlimefunGuide { final ChestMenu menu = new ChestMenu("Credits"); menu.setEmptySlotsClickable(false); - menu.addMenuOpeningHandler( - pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HARP, 0.7F, 0.7F) - ); + menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HARP, 0.7F, 0.7F)); for (int i = 0; i < 9; i++) { if (i != 4) { menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " ")); - menu.addMenuClickHandler(i, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> false); } else { menu.addItem(4, new CustomItem(new ItemStack(Material.EMERALD), "&7\u21E6 Back to Settings")); @@ -205,11 +201,7 @@ public final class SlimefunGuide { } int index = 9; - double total = 0; - - for (Contributor contributor : SlimefunPlugin.getUtilities().contributors) { - total += contributor.getCommits(); - } + double total = 1.0 * SlimefunPlugin.getUtilities().contributors.stream().mapToInt(Contributor::getCommits).sum(); for (final Contributor contributor: SlimefunPlugin.getUtilities().contributors) { ItemStack skull = new ItemStack(Material.PLAYER_HEAD); @@ -259,7 +251,10 @@ public final class SlimefunGuide { public static void openGuide(Player p, boolean book) { if (!SlimefunPlugin.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled")) return; if (!SlimefunPlugin.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE")) return; - if (!getHistory().containsKey(p.getUniqueId())) openMainMenu(p, true, book, 1); + + if (!getHistory().containsKey(p.getUniqueId())) { + openMainMenu(p, true, book, 1); + } else { Object last = getLastEntry(p, false); if (last instanceof Category) openCategory(p, (Category) last, true, 1, book); @@ -270,8 +265,9 @@ public final class SlimefunGuide { } public static void openMainMenu(final Player p, final boolean survival, final boolean book, final int selected_page) { - if (survival) + if (survival) { clearHistory(p.getUniqueId()); + } if (book) { List pages = new ArrayList<>(); @@ -293,7 +289,7 @@ public final class SlimefunGuide { } if (locked) { - // Dont display that Category... + // Don't display that Category... } else { if (tier < category.getTier()) { @@ -400,11 +396,9 @@ public final class SlimefunGuide { final ChestMenu menu = new ChestMenu("Slimefun Guide"); menu.setEmptySlotsClickable(false); - menu.addMenuOpeningHandler( - pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F) - ); + menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F)); - List categories = SlimefunPlugin.getUtilities().currentlyEnabledCategories; + List categories = SlimefunPlugin.getUtilities().enabledCategories; List handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList()); int index = 9; @@ -412,16 +406,12 @@ public final class SlimefunGuide { for (int i = 0; i < 9; i++) { menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " ")); - menu.addMenuClickHandler(i, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> false); } for (int i = 45; i < 54; i++) { menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " ")); - menu.addMenuClickHandler(i, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> false); } int target = (category_size * (selected_page - 1)) - 1; @@ -435,12 +425,13 @@ public final class SlimefunGuide { target++; if (target >= categories.size()) { - if (!survival) break; + if (!survival) { + break; + } index = handlers.get(target - categories.size()).next(p, index, menu); } else { final Category category = categories.get(target); - boolean locked = true; for (SlimefunItem item: category.getItems()) { @@ -487,13 +478,13 @@ public final class SlimefunGuide { parents.add(ChatColor.translateAlternateColorCodes('&', "&rYou need to unlock all Items")); parents.add(ChatColor.translateAlternateColorCodes('&', "&rfrom the following Categories first:")); parents.add(""); + for (Category parent : ((LockedCategory) category).getParents()) { parents.add(parent.getItem().getItemMeta().getDisplayName()); } + menu.addItem(index, new CustomItem(Material.BARRIER, "&4LOCKED &7- &r" + category.getItem().getItemMeta().getDisplayName(), parents.toArray(new String[parents.size()]))); - menu.addMenuClickHandler(index, - (pl, slot, item, action) -> false - ); + menu.addMenuClickHandler(index, (pl, slot, item, action) -> false); index++; } } @@ -611,19 +602,23 @@ public final class SlimefunGuide { for (int i = 0; i < texts.size(); i = i + 10) { TellRawMessage page = new TellRawMessage(); page.addText(ChatColor.translateAlternateColorCodes('&', "&b&l- Slimefun Guide -\n\n")); + for (int j = i; j < texts.size() && j < i + 10; j++) { page.addText(texts.get(j) + "\n"); if (tooltips.get(j) != null) page.addHoverEvent(HoverAction.SHOW_TEXT, tooltips.get(j)); if (actions.get(j) != null) page.addClickEvent(actions.get(j)); } + page.addText("\n"); page.addText(ChatColor.translateAlternateColorCodes('&', "&6\u21E6 &lBack")); page.addHoverEvent(HoverAction.SHOW_TEXT, ChatColor.translateAlternateColorCodes('&', "&eClick to go back to the Category Overview")); page.addClickEvent(new PlayerRunnable(2) { + @Override public void run(final Player p) { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openMainMenu(p, survival, true, 1), 1L); } + }); pages.add(page); } @@ -680,10 +675,12 @@ public final class SlimefunGuide { int target = categoryIndex + i; if (target >= category.getItems().size()) break; final SlimefunItem sfitem = category.getItems().get(target); + if (Slimefun.isEnabled(p, sfitem, false)) { if (survival && !Slimefun.hasUnlocked(p, sfitem.getItem(), false) && sfitem.getResearch() != null) { if (Slimefun.hasPermission(p, sfitem, false)) { final Research research = sfitem.getResearch(); + menu.addItem(index, new CustomItem(Material.BARRIER, "&r" + StringUtils.formatItemName(sfitem.getItem(), false), "&4&lLOCKED", "", "&a> Click to unlock", "", "&7Cost: &b" + research.getCost() + " Level")); menu.addMenuClickHandler(index, (pl, slot, item, action) -> { if (!Research.isResearching(pl)) { @@ -716,7 +713,8 @@ public final class SlimefunGuide { index++; } else { - menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", "&rYou do not have Permission", "&rto access this Item")); + List tooltip = Messages.local.getTranslation("tooltips.item-permission"); + menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), tooltip.toArray(new String[tooltip.size()]))); menu.addMenuClickHandler(index, (pl, slot, item, action) -> false); index++; } @@ -742,25 +740,28 @@ public final class SlimefunGuide { } public static void addToHistory(Player p, Object obj) { - List list = new ArrayList<>(); - if (getHistory().containsKey(p.getUniqueId())) list = getHistory().get(p.getUniqueId()); + LinkedList list = getHistory().get(p.getUniqueId()); + + if (list == null) { + list = new LinkedList<>(); + getHistory().put(p.getUniqueId(), list); + } + list.add(obj); - getHistory().put(p.getUniqueId(), list); } private static Object getLastEntry(Player p, boolean remove) { - List list = new ArrayList<>(); - if (getHistory().containsKey(p.getUniqueId())) list = getHistory().get(p.getUniqueId()); + LinkedList history = getHistory().get(p.getUniqueId()); - if (remove && !list.isEmpty()) { - Object obj = list.get(list.size() - 1); - list.remove(obj); + if (remove && history != null && !history.isEmpty()) { + history.removeLast(); } - if (list.isEmpty()) getHistory().remove(p.getUniqueId()); - else getHistory().put(p.getUniqueId(), list); + if (history != null && history.isEmpty()) { + getHistory().remove(p.getUniqueId()); + } - return list.isEmpty() ? null: list.get(list.size() - 1); + return history == null || history.isEmpty() ? null: history.getLast(); } public static void displayItem(Player p, final ItemStack item, boolean addToHistory, final boolean book, final int page) { @@ -831,7 +832,9 @@ public final class SlimefunGuide { if (addToHistory) addToHistory(p, sfItem != null ? sfItem: item); - if (getHistory().containsKey(p.getUniqueId()) && getHistory().get(p.getUniqueId()).size() > 1) { + LinkedList history = getHistory().get(p.getUniqueId()); + + if (history != null && history.size() > 1) { menu.addItem(0, new CustomItem(new ItemStack(Material.ENCHANTED_BOOK), "&7\u21E6 Back", "", "&rLeft Click: &7Go back to previous Page", "&rShift + left Click: &7Go back to Main Menu")); menu.addMenuClickHandler(0, (pl, slot, itemstack, action) -> { if (action.isShiftClicked()) openMainMenu(p, true, book, 1); @@ -1018,7 +1021,7 @@ public final class SlimefunGuide { menu.open(p); } - private static Map> getHistory() { + private static Map> getHistory() { return SlimefunPlugin.getUtilities().guideHistory; } diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 6af513583..0e4000e04 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -359,8 +359,6 @@ public final class SlimefunPlugin extends JavaPlugin { // Prevent Memory Leaks Messages.local = null; - SlimefunItem.all = null; - SlimefunItem.items = null; AContainer.processing = null; AContainer.progress = null; OreWasher.items = null; diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 159c5b006..d551985b0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -212,5 +212,10 @@ public final class PlayerProfile { return null; } } + + @Override + public String toString() { + return "PlayerProfile {" + uuid + "}"; + } } diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java b/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java index a14229ac2..5b17246d6 100644 --- a/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java +++ b/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java @@ -1,16 +1,17 @@ package me.mrCookieSlime.Slimefun.api; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import org.bukkit.inventory.ItemStack; - public final class SlimefunRecipes { private SlimefunRecipes() {} public static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) { - for (SlimefunItem item: SlimefunItem.all) { + for (SlimefunItem item: SlimefunPlugin.getUtilities().allItems) { if (item instanceof AContainer && ((AContainer) item).getMachineIdentifier().equals(machine)) { ((AContainer) item).registerRecipe(seconds, input, output); } diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java index b7336dc5e..1110c59d2 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java @@ -41,11 +41,11 @@ import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout; public class SlimefunCommand implements CommandExecutor, Listener { - private SlimefunPlugin plugin; + private final SlimefunPlugin plugin; - private List arguments = new ArrayList<>(); - private List descriptions = new ArrayList<>(); - private List tabs = new ArrayList<>(); + private final List arguments = new ArrayList<>(); + private final List descriptions = new ArrayList<>(); + private final List tabs = new ArrayList<>(); public SlimefunCommand(SlimefunPlugin plugin) { this.plugin = plugin; diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java b/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java index 9d79ec269..130cd1785 100644 --- a/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java +++ b/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java @@ -12,7 +12,7 @@ import org.bukkit.command.TabCompleter; public class SlimefunTabCompleter implements TabCompleter { - private SlimefunCommand command; + private final SlimefunCommand command; public SlimefunTabCompleter(SlimefunCommand command) { this.command = command; diff --git a/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java b/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java index 24a73f8e1..b04a86d0d 100644 --- a/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java +++ b/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java @@ -30,6 +30,10 @@ public final class HologramProjectorHologram { if (n instanceof ArmorStand && n.getCustomName() != null && n.getCustomName().equals(nametag) && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n; } + if (!createIfNoneExists) { + return null; + } + ArmorStand hologram = ArmorStandFactory.createHidden(l); hologram.setCustomName(nametag); return hologram; diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java index bfcba58bb..15d11a754 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java @@ -27,31 +27,29 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; -import me.mrCookieSlime.Slimefun.utils.Utilities; public class BackpackListener implements Listener { - private Utilities utilities; - public BackpackListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - utilities = SlimefunPlugin.getUtilities(); } @EventHandler public void onClose(InventoryCloseEvent e) { - if (utilities.enchanting.containsKey(e.getPlayer().getUniqueId())) utilities.enchanting.remove(e.getPlayer().getUniqueId()); + if (SlimefunPlugin.getUtilities().enchanting.containsKey(e.getPlayer().getUniqueId())) { + SlimefunPlugin.getUtilities().enchanting.remove(e.getPlayer().getUniqueId()); + } - if (utilities.backpack.containsKey(e.getPlayer().getUniqueId())) { + if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getPlayer().getUniqueId())) { ((Player) e.getPlayer()).playSound(e.getPlayer().getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F); - PlayerProfile.getBackpack(utilities.backpack.get(e.getPlayer().getUniqueId())).markDirty(); - utilities.backpack.remove(e.getPlayer().getUniqueId()); + PlayerProfile.getBackpack(SlimefunPlugin.getUtilities().backpack.get(e.getPlayer().getUniqueId())).markDirty(); + SlimefunPlugin.getUtilities().backpack.remove(e.getPlayer().getUniqueId()); } } @EventHandler public void onItemDrop(PlayerDropItemEvent e) { - if (utilities.backpack.containsKey(e.getPlayer().getUniqueId())){ + if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getPlayer().getUniqueId())){ ItemStack item = e.getItemDrop().getItemStack(); SlimefunItem sfItem = SlimefunItem.getByItem(item); if (sfItem instanceof SlimefunBackpack) e.setCancelled(true); @@ -60,8 +58,8 @@ public class BackpackListener implements Listener { @EventHandler public void onClick(InventoryClickEvent e) { - if (utilities.backpack.containsKey(e.getWhoClicked().getUniqueId())) { - ItemStack item = utilities.backpack.get(e.getWhoClicked().getUniqueId()); + if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getWhoClicked().getUniqueId())) { + ItemStack item = SlimefunPlugin.getUtilities().backpack.get(e.getWhoClicked().getUniqueId()); if (e.getClick() == ClickType.NUMBER_KEY) { ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton()); SlimefunItem sfItem = SlimefunItem.getByItem(hotbarItem); @@ -134,10 +132,10 @@ public class BackpackListener implements Listener { } } - if(!utilities.backpack.containsValue(item)) { + if(!SlimefunPlugin.getUtilities().backpack.containsValue(item)) { PlayerProfile.getBackpack(item).open(p); p.playSound(p.getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F); - utilities.backpack.put(p.getUniqueId(), item); + SlimefunPlugin.getUtilities().backpack.put(p.getUniqueId(), item); } else Messages.local.sendTranslation(p, "backpack.already-open", true); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index 652d5e2e9..8fcf9618f 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -82,8 +82,11 @@ public class BlockListener implements Listener { if (mb.getTriggerBlock() == b.getType()) { Material[] blocks = mb.getBuild(); - if (mb.getTriggerBlock() == blocks[1]) { - if ( + // Please. + // Someone please find a better way to do this... + + if (( + mb.getTriggerBlock() == blocks[1] && BlockAdjacents.hasMaterialOnSide(b, blocks[0]) && BlockAdjacents.hasMaterialOnSide(b, blocks[2]) && BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN), blocks[4]) && @@ -92,42 +95,49 @@ public class BlockListener implements Listener { BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN), blocks[7]) && BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN), blocks[6]) && BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN), blocks[8]) - ) { - if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[0])); - else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[5])); - else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -2, 0), blocks[8])); - else multiblocks.add(mb); - } - } - else if (mb.getTriggerBlock() == blocks[4] && - BlockAdjacents.hasMaterialOnSide(b, blocks[3]) && - BlockAdjacents.hasMaterialOnSide(b, blocks[5]) && - BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN), blocks[7]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[6]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[8]) && - BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[1]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[0]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[2]) - ) { - if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[0])); - else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[5])); - else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[8])); - else multiblocks.add(mb); - } - else if (mb.getTriggerBlock() == blocks[7] && - BlockAdjacents.hasMaterialOnSide(b, blocks[6]) && - BlockAdjacents.hasMaterialOnSide(b, blocks[8]) && - BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[1]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[0]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[2]) && - BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[4]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[3]) && - BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[5]) - ) { - if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 2, 0), blocks[0])); - else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[5])); - else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[8])); - else multiblocks.add(mb); + && + blocks[0] != null && blocks[0] == blocks[2] + && BlockAdjacents.hasMaterialOnBothSides(b, blocks[0]) && + blocks[3] != null && blocks[3] == blocks[5] + && BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[5]) && + blocks[6] != null && blocks[6] == blocks[8] + && BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -2, 0), blocks[8]) + ) || ( + mb.getTriggerBlock() == blocks[4] && + BlockAdjacents.hasMaterialOnSide(b, blocks[3]) && + BlockAdjacents.hasMaterialOnSide(b, blocks[5]) && + BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN), blocks[7]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[6]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[8]) && + BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[1]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[0]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[2]) + && + blocks[0] != null && blocks[0] == blocks[2] + && BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[0]) && + blocks[3] != null && blocks[3] == blocks[5] + && BlockAdjacents.hasMaterialOnBothSides(b, blocks[5]) && + blocks[6] != null && blocks[6] == blocks[8] + && BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[8]) + ) || ( + mb.getTriggerBlock() == blocks[7] && + BlockAdjacents.hasMaterialOnSide(b, blocks[6]) && + BlockAdjacents.hasMaterialOnSide(b, blocks[8]) && + BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[1]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[0]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[2]) && + BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[4]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[3]) && + BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[5]) + && + blocks[0] != null && blocks[0] == blocks[2] + && BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 2, 0), blocks[0]) && + blocks[3] != null && blocks[3] == blocks[5] + && BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[5]) && + blocks[6] != null && blocks[6] == blocks[8] + && BlockAdjacents.hasMaterialOnBothSides(b, blocks[8]) + )) { + multiblocks.add(mb); } } } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index 244690593..18b9f38b1 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -18,49 +18,48 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; -import me.mrCookieSlime.Slimefun.utils.Utilities; public class BowListener implements Listener { - private Utilities utilities; - public BowListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - utilities = SlimefunPlugin.getUtilities(); } @EventHandler public void onBowUse(EntityShootBowEvent e) { - if (!(e.getEntity() instanceof Player) || !(e.getProjectile() instanceof Arrow)) return; - if (SlimefunItem.getByItem(e.getBow()) != null) utilities.arrows.put(e.getProjectile().getUniqueId(), e.getBow()); + if (e.getEntity() instanceof Player && e.getProjectile() instanceof Arrow && SlimefunItem.getByItem(e.getBow()) != null) { + SlimefunPlugin.getUtilities().arrows.put(e.getProjectile().getUniqueId(), e.getBow()); + } } @EventHandler public void onArrowHit(final ProjectileHitEvent e) { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { if (!e.getEntity().isValid()) return; - utilities.arrows.remove(e.getEntity().getUniqueId()); + SlimefunPlugin.getUtilities().arrows.remove(e.getEntity().getUniqueId()); if (e.getEntity() instanceof Arrow) handleGrapplingHook((Arrow) e.getEntity()); }, 4L); } private void handleGrapplingHook(Arrow arrow) { - if (arrow != null && arrow.getShooter() instanceof Player && utilities.jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { + if (arrow != null && arrow.getShooter() instanceof Player && SlimefunPlugin.getUtilities().jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { final Player p = (Player) arrow.getShooter(); - if (p.getGameMode() != GameMode.CREATIVE && utilities.jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); + if (p.getGameMode() != GameMode.CREATIVE && SlimefunPlugin.getUtilities().jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); if (p.getLocation().distance(arrow.getLocation()) < 3.0D) { if (arrow.getLocation().getY() > p.getLocation().getY()) { p.setVelocity(new Vector(0.0D, 0.25D, 0.0D)); } - else p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector())); + else { + p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector())); + } - for (Entity n: utilities.remove.get(p.getUniqueId())) { + for (Entity n: SlimefunPlugin.getUtilities().remove.get(p.getUniqueId())) { if (n.isValid()) n.remove(); } Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - utilities.jumpState.remove(p.getUniqueId()); - utilities.remove.remove(p.getUniqueId()); + SlimefunPlugin.getUtilities().jumpState.remove(p.getUniqueId()); + SlimefunPlugin.getUtilities().remove.remove(p.getUniqueId()); }, 20L); } else { @@ -83,13 +82,13 @@ public class BowListener implements Listener { p.setVelocity(v); - for (Entity n: utilities.remove.get(p.getUniqueId())) { + for (Entity n: SlimefunPlugin.getUtilities().remove.get(p.getUniqueId())) { if (n.isValid()) n.remove(); } Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - utilities.jumpState.remove(p.getUniqueId()); - utilities.remove.remove(p.getUniqueId()); + SlimefunPlugin.getUtilities().jumpState.remove(p.getUniqueId()); + SlimefunPlugin.getUtilities().remove.remove(p.getUniqueId()); }, 20L); } } @@ -98,11 +97,12 @@ public class BowListener implements Listener { @EventHandler public void onArrowSuccessfulHit(EntityDamageByEntityEvent e) { if (e.getDamager() instanceof Arrow) { - if (utilities.arrows.containsKey(e.getDamager().getUniqueId()) && e.getEntity() instanceof LivingEntity) { + if (SlimefunPlugin.getUtilities().arrows.containsKey(e.getDamager().getUniqueId()) && e.getEntity() instanceof LivingEntity) { for (ItemHandler handler: SlimefunItem.getHandlers("BowShootHandler")) { if (((BowShootHandler) handler).onHit(e, (LivingEntity) e.getEntity())) break; } - utilities.arrows.remove(e.getDamager().getUniqueId()); + + SlimefunPlugin.getUtilities().arrows.remove(e.getDamager().getUniqueId()); } handleGrapplingHook((Arrow) e.getDamager()); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java b/src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java index 2f86191e3..f552ebb75 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java @@ -12,7 +12,7 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionEffect; import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; @@ -28,26 +28,30 @@ public class CoolerListener implements Listener { if (e.getFoodLevel() < ((Player) e.getEntity()).getFoodLevel()) { Player p = (Player) e.getEntity(); for (ItemStack item: p.getInventory().getContents()) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("COOLER"), false)) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.COOLER, false)) { BackpackInventory backpack = PlayerProfile.getBackpack(item); if (backpack != null) { Inventory inv = backpack.getInventory(); - ItemStack drink = null; + int slot = -1; - for (ItemStack i: inv.getContents()) { - if (i != null && i.getType() == Material.POTION && i.hasItemMeta()) { - drink = i; + for (int i = 0; i < inv.getSize(); i++) { + ItemStack stack = inv.getItem(i); + if (stack != null && stack.getType() == Material.POTION && stack.hasItemMeta() && stack.getItemMeta().hasDisplayName()) { + slot = i; break; } } - if (drink != null) { - PotionMeta im = (PotionMeta) drink.getItemMeta(); + + if (slot >= 0) { + PotionMeta im = (PotionMeta) inv.getItem(slot).getItemMeta(); + for (PotionEffect effect: im.getCustomEffects()) { p.addPotionEffect(effect); } + p.setSaturation(6F); p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_DRINK, 1F, 1F); - inv.removeItem(drink); + inv.setItem(slot, null); backpack.markDirty(); break; } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java index 98bbcf78c..a11dea670 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java @@ -22,16 +22,13 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.Soul; -import me.mrCookieSlime.Slimefun.utils.Utilities; public class DamageListener implements Listener { private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)"); - private Utilities utilities; public DamageListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); - utilities = SlimefunPlugin.getUtilities(); } @EventHandler @@ -80,9 +77,9 @@ public class DamageListener implements Listener { @EventHandler public void onArrowHit(EntityDamageEvent e) { - if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL && utilities.damage.contains(e.getEntity().getUniqueId())) { + if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL && SlimefunPlugin.getUtilities().damage.contains(e.getEntity().getUniqueId())) { e.setCancelled(true); - utilities.damage.remove(e.getEntity().getUniqueId()); + SlimefunPlugin.getUtilities().damage.remove(e.getEntity().getUniqueId()); } } diff --git a/src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java b/src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java new file mode 100644 index 000000000..64cf469c4 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java @@ -0,0 +1,17 @@ +package me.mrCookieSlime.Slimefun.utils; + +import java.util.Comparator; + +import me.mrCookieSlime.Slimefun.Objects.Category; + +public class CategorySorter implements Comparator { + + /** + * @since 4.0 + */ + @Override + public int compare(Category c1, Category c2) { + return Integer.compare(c1.getTier(), c2.getTier()); + } + +} \ No newline at end of file diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index 5b2024847..91547f332 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -17,6 +17,7 @@ import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.GEO.OreGenResource; +import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; import me.mrCookieSlime.Slimefun.Objects.Research; @@ -46,11 +47,23 @@ import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector; public final class Utilities { public int vanillaItems = 0; - + + public final List allItems = new ArrayList<>(); + public final List enabledItems = new ArrayList<>(); public final Map itemIDs = new HashMap<>(); + public final List allMultiblocks = new LinkedList<>(); public final List allResearches = new LinkedList<>(); + /** + * List of the registered Categories. + * @since 4.0 + * @see Categories + */ + public final List allCategories = new ArrayList<>(); + public final List enabledCategories = new ArrayList<>(); + public final CategorySorter categorySorter = new CategorySorter(); + public final Set radioactiveItems = new HashSet<>(); public final Map> itemHandlers = new HashMap<>(); public final Map blockHandlers = new HashMap<>(); @@ -69,8 +82,6 @@ public final class Utilities { public final Map blockMenuPresets = new HashMap<>(); - public final List currentlyEnabledCategories = new ArrayList<>(); - public final Map automatedCraftingChamberRecipes = new HashMap<>(); public final Map worlds = new HashMap<>(); @@ -112,7 +123,7 @@ public final class Utilities { public final Map contributorHeads = new HashMap<>(); public final List contributors = new ArrayList<>(); - public final Map> guideHistory = new HashMap<>(); + public final Map> guideHistory = new HashMap<>(); public final List cargoTransportEvents = new ArrayList<>();