From 429c280095ed3d9595689bd505c62f113e34140f Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 21 Dec 2019 15:42:07 +0100 Subject: [PATCH 1/2] Fixes #1316 --- .../Slimefun/Objects/SlimefunItem/SlimefunMachine.java | 3 +++ .../Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java | 4 ++-- .../java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java index 0aa563ae5..a0d7b6eaf 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java @@ -69,6 +69,8 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem { } public void addRecipe(ItemStack[] input, ItemStack output) { + if (output == null) throw new IllegalArgumentException("Recipes must have an Output!"); + recipes.add(input); recipes.add(new ItemStack[] {output}); } @@ -82,6 +84,7 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem { public void install() { for (ItemStack recipeItem : shownRecipes) { SlimefunItem item = SlimefunItem.getByItem(recipeItem); + if (item == null || !SlimefunItem.isDisabled(recipeItem)) { this.recipes.add(new ItemStack[] {recipeItem}); } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java index 428120ebe..5fd7849ea 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java @@ -1,7 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks; import java.util.List; -import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; import org.bukkit.Effect; @@ -58,7 +58,7 @@ public class OreWasher extends MultiBlockMachine { for (ItemStack current : inv.getContents()) { if (current != null) { if (SlimefunManager.isItemSimilar(current, SlimefunItems.SIFTED_ORE, true)) { - ItemStack adding = items[new Random().nextInt(items.length)]; + ItemStack adding = items[ThreadLocalRandom.current().nextInt(items.length)]; Inventory outputInv = null; if (!SlimefunPlugin.getSettings().legacyOreWasher) { diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index aa5bd297e..a41841f49 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -822,7 +822,7 @@ public final class SlimefunSetup { .register(true); new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SALT, RecipeType.ORE_WASHER, - new ItemStack[] {null, null, null, null, new ItemStack(Material.SAND, 4), null, null, null, null}) + new ItemStack[] {new ItemStack(Material.SAND, 4), null, null, null, null, null, null, null, null}) .register(true); new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.HEAVY_CREAM, RecipeType.ENHANCED_CRAFTING_TABLE, From bee23757574f49d053d23591ecf30053521d522a Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 21 Dec 2019 16:46:17 +0100 Subject: [PATCH 2/2] Removed Nether Drill (+ some micro-optimizations) --- .../slimefun4/api/chunks/ChunkLocation.java | 55 +++++++++++++++++++ .../Slimefun/GEO/OreGenSystem.java | 1 + .../Slimefun/Lists/SlimefunItems.java | 3 - .../machines/electric/geo/GEOMiner.java | 2 +- .../machines/electric/geo/NetherDrill.java | 50 ----------------- .../machines/electric/geo/OilPump.java | 8 ++- .../Slimefun/Setup/ResearchSetup.java | 2 +- .../Slimefun/Setup/SlimefunSetup.java | 16 ------ 8 files changed, 63 insertions(+), 74 deletions(-) create mode 100644 src/main/java/io/github/thebusybiscuit/slimefun4/api/chunks/ChunkLocation.java delete mode 100644 src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/NetherDrill.java diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/chunks/ChunkLocation.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/chunks/ChunkLocation.java new file mode 100644 index 000000000..6bddc69df --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/chunks/ChunkLocation.java @@ -0,0 +1,55 @@ +package io.github.thebusybiscuit.slimefun4.api.chunks; + +import java.util.Objects; + +import org.bukkit.Chunk; +import org.bukkit.World; + +public final class ChunkLocation { + + private final World world; + private final int x; + private final int z; + + public ChunkLocation(Chunk chunk) { + this(chunk.getWorld(), chunk.getX(), chunk.getZ()); + } + + public ChunkLocation(World world, int x, int z) { + this.world = world; + this.x = x; + this.z = z; + } + + public World getWorld() { + return world; + } + + public int getX() { + return x; + } + + public int getZ() { + return z; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof ChunkLocation) { + ChunkLocation l = (ChunkLocation) obj; + return world.getUID().equals(l.getWorld().getUID()) && l.getX() == x && l.getZ() == z; + } + else return false; + } + + @Override + public int hashCode() { + return Objects.hash(world, x, z); + } + + @Override + public String toString() { + return world.getName() + " - Chunk [" + x + " | " + z + "]"; + } + +} \ No newline at end of file diff --git a/src/main/java/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java b/src/main/java/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java index 7b8156677..ca437f3ec 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java @@ -69,6 +69,7 @@ public final class OreGenSystem { if (resource == null) return 0; String supply = BlockStorage.getChunkInfo(chunk, "resources_" + resource.getName().toUpperCase()); + if (supply != null) { return Integer.parseInt(supply); } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 3a57b0005..6ec866947 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -749,9 +749,6 @@ public final class SlimefunItems { public static final ItemStack ENRICHED_NETHER_ICE = new SlimefunItemStack("ENRICHED_NETHER_ICE", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2M4MThhYTEzYWFiYzcyOTQ4MzhkMjFjYWFjMDU3ZTk3YmQ4Yzg5NjQxYTBjMGY4YTU1NDQyZmY0ZTI3In19fQ==", "&eEnriched Nether Ice", "", "&2Radiation Level: EXTREMELY HIGH", "&4&oHazmat Suit required"); public static final ItemStack NETHER_ICE_COOLANT_CELL = new SlimefunItemStack("NETHER_ICE_COOLANT_CELL", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGQzY2Q0MTI1NTVmODk3MDE2MjEzZTVkNmM3NDMxYjQ0OGI5ZTU2NDRlMWIxOWVjNTFiNTMxNmYzNTg0MGUwIn19fQ==", "&6Nether Ice Coolant Cell"); - @Deprecated - public static final ItemStack NETHER_DRILL = new CustomItem(Material.RED_TERRACOTTA, "&4Nether Drill", "", "&rAllows you to mine Nether Ice", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7102 J/s", "", "&c&l! &cCan only be used in the Nether!", "&c&l! &cMake sure to Geo-Scan the Chunk first"); - // Cargo public static final ItemStack CARGO_MANAGER = new SlimefunItemStack("CARGO_MANAGER", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0=", "&6Cargo Manager", "", "&rCore Component of an Item Transport Network"); public static final ItemStack CARGO_NODE = new SlimefunItemStack("CARGO_NODE", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMDdiN2VmNmZkNzg2NDg2NWMzMWMxZGM4N2JlZDI0YWI1OTczNTc5ZjVjNjYzOGZlY2I4ZGVkZWI0NDNmZjAifX19", "&7Cargo Node &c(Connector)", "", "&rCargo Connector Pipe"); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java index cad09950d..743196b79 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java @@ -190,7 +190,7 @@ public abstract class GEOMiner extends AContainer implements InventoryBlock, Rec processing.put(b, r); progress.put(b, r.getTicks()); - OreGenSystem.setSupplies(resource, b.getChunk(), supplies - 1); + OreGenSystem.setSupplies(resource, chunk, supplies - 1); SimpleHologram.update(b, "&7Mining: &r" + resource.getName()); return; } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/NetherDrill.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/NetherDrill.java deleted file mode 100644 index 19176d154..000000000 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/NetherDrill.java +++ /dev/null @@ -1,50 +0,0 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo; - -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; - -import me.mrCookieSlime.Slimefun.GEO.OreGenResource; -import me.mrCookieSlime.Slimefun.GEO.OreGenSystem; -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.ADrill; - -@Deprecated -public abstract class NetherDrill extends ADrill { - - public NetherDrill(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, name, recipeType, recipe); - } - - @Override - public OreGenResource getOreGenResource() { - return OreGenSystem.getResource("Nether Ice"); - } - - @Override - public ItemStack[] getOutputItems() { - return new ItemStack[] {SlimefunItems.NETHER_ICE}; - } - - @Override - public int getProcessingTime() { - return 24; - } - - @Override - public String getInventoryTitle() { - return "&4Nether Drill"; - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.DIAMOND_PICKAXE); - } - - @Override - public String getMachineIdentifier() { - return "NETHER_DRILL"; - } - -} diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java index 569230191..99c74e57a 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java @@ -1,5 +1,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo; +import org.bukkit.Chunk; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -97,10 +98,11 @@ public abstract class OilPump extends AContainer { } else { OreGenResource oil = OreGenSystem.getResource("Oil"); - int supplies = OreGenSystem.getSupplies(oil, b.getChunk(), false); + Chunk chunk = b.getChunk(); + int supplies = OreGenSystem.getSupplies(oil, chunk, false); if (supplies > 0) { - for (int slot: getInputSlots()) { + for (int slot : getInputSlots()) { if (SlimefunManager.isItemSimilar(inv.getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) { MachineRecipe r = new MachineRecipe(26, new ItemStack[0], new ItemStack[] {SlimefunItems.BUCKET_OF_OIL}); @@ -111,7 +113,7 @@ public abstract class OilPump extends AContainer { inv.replaceExistingItem(slot, InvUtils.decreaseItem(inv.getItemInSlot(slot), 1)); processing.put(b, r); progress.put(b, r.getTicks()); - OreGenSystem.setSupplies(oil, b.getChunk(), supplies - 1); + OreGenSystem.setSupplies(oil, chunk, supplies - 1); break; } } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java index 040099b6f..ede222fe3 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java @@ -231,7 +231,7 @@ public final class ResearchSetup { Slimefun.registerResearch(new Research(232, "Advanced Electric Smeltery", 28), SlimefunItems.ELECTRIC_SMELTERY_2); Slimefun.registerResearch(new Research(233, "Advanced Androids - Farmer", 30), SlimefunItems.PROGRAMMABLE_ANDROID_2_FARMER); Slimefun.registerResearch(new Research(234, "Lava Generator", 38), SlimefunItems.LAVA_GENERATOR); - Slimefun.registerResearch(new Research(235, "Nether Ice Coolant", 45), SlimefunItems.NETHER_ICE, SlimefunItems.ENRICHED_NETHER_ICE, SlimefunItems.NETHER_ICE_COOLANT_CELL, SlimefunItems.NETHER_DRILL); + Slimefun.registerResearch(new Research(235, "Nether Ice Coolant", 45), SlimefunItems.NETHER_ICE, SlimefunItems.ENRICHED_NETHER_ICE, SlimefunItems.NETHER_ICE_COOLANT_CELL); Slimefun.registerResearch(new Research(236, "Nether Star Reactor", 60), SlimefunItems.NETHERSTAR_REACTOR); Slimefun.registerResearch(new Research(237, "Blistering Radioactivity", 38), SlimefunItems.BLISTERING_INGOT, SlimefunItems.BLISTERING_INGOT_2, SlimefunItems.BLISTERING_INGOT_3); Slimefun.registerResearch(new Research(239, "Automatic Ignition Chamber", 12), SlimefunItems.IGNITION_CHAMBER); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index a41841f49..9e8bd86be 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -148,7 +148,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generato import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.MagnesiumGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOMiner; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOScannerBlock; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.NetherDrill; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.OilPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.ElevatorPlate; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.GPSTransmitter; @@ -2683,21 +2682,6 @@ public final class SlimefunSetup { }.registerChargeableBlock(true, 512); - new NetherDrill(Categories.GPS, SlimefunItems.NETHER_DRILL, "NETHER_DRILL", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, null, new CustomItem(Material.BARRIER, "&4DEPRECATED", "", "&cThis Item will soon be removed.", "&cUse the GEO Miner instead."), null, null, null, null}){ - - @Override - public int getSpeed() { - return 1; - } - - @Override - public int getEnergyConsumption() { - return 51; - } - - }.registerChargeableBlock(true, 1024); - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BUCKET_OF_OIL, new RecipeType(SlimefunItems.OIL_PUMP), new ItemStack[] {null, null, null, null, new ItemStack(Material.BUCKET), null, null, null, null}) .register(true);