diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/me/mrCookieSlime/Slimefun/Objects/Category.java index 3c31ed8f6..fa5c5a2c8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/Category.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/Category.java @@ -79,6 +79,7 @@ public class Category { if (((SeasonCategory) this).isUnlocked()) Slimefun.current_categories.add(this); } else Slimefun.current_categories.add(this); + Collections.sort(Slimefun.current_categories, new CategorySorter()); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java index 324db7244..c5ae45b9e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java @@ -4,7 +4,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import org.bukkit.block.Block; import org.bukkit.block.Furnace; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 92d20a74e..8ad6c802a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -21,8 +21,8 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe; import me.mrCookieSlime.Slimefun.api.BlockStorage; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java index b850bed87..1dd8bbff6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java @@ -5,11 +5,18 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import org.bukkit.inventory.ItemStack; +/** + * Represents an Item that will not drop on death. + * + * @author TheBusyBiscuit + * + */ public class SoulboundItem extends SlimefunItem { public SoulboundItem(Category category, ItemStack item, String id, ItemStack[] recipe) { super(category, item, id, RecipeType.MAGIC_WORKBENCH, recipe); } + public SoulboundItem(Category category, ItemStack item, String id, RecipeType type, ItemStack[] recipe) { super(category, item, id, type, recipe); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java index 78bbfd972..11ec3e485 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java @@ -2,14 +2,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; import java.util.ArrayList; import java.util.List; - -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; -import me.mrCookieSlime.Slimefun.Lists.Categories; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.Research; -import me.mrCookieSlime.Slimefun.Setup.Messages; -import me.mrCookieSlime.Slimefun.api.Slimefun; +import java.util.Random; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -23,6 +16,13 @@ import org.bukkit.event.player.PlayerEvent; import org.bukkit.inventory.ItemStack; 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.Research; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.api.Slimefun; + /** * @since 4.0 */ @@ -84,7 +84,7 @@ public class Talisman extends SlimefunItem { } Talisman talisman = (Talisman) item; - if (!SlimefunStartup.chance(100, talisman.getChance())) { + if (new Random().nextInt(100) < talisman.getChance()) { return false; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index ddff62b43..0c8a2c612 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -26,7 +26,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; @@ -36,10 +36,10 @@ import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; public abstract class AContainer extends SlimefunItem { - public static Map processing = new HashMap(); - public static Map progress = new HashMap(); + public static Map processing = new HashMap<>(); + public static Map progress = new HashMap<>(); - protected List recipes = new ArrayList(); + protected List recipes = new ArrayList<>(); private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44}; private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30}; @@ -104,84 +104,24 @@ public abstract class AContainer extends SlimefunItem { } public AContainer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { - super(category, item, id, recipeType, recipe, recipeOutput); - - new BlockMenuPreset(id, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public void newInstance(BlockMenu menu, Block b) { - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - else return getOutputSlots(); - } - }; - - registerBlockHandler(id, new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot: getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - for (int slot: getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - processing.remove(b); - progress.remove(b); - return true; - } - }); - - this.registerDefaultRecipes(); + this(category, item, id, recipeType, recipe); + this.recipeOutput = recipeOutput; } protected void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); - } - for (int i : border_in) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); - } - for (int i : border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } - preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + for (int i : border_in) { + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + for (int i : border_out) { + preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); for (int i : getOutputSlots()) { preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() { @@ -234,12 +174,15 @@ public abstract class AContainer extends SlimefunItem { private Inventory inject(Block b) { int size = BlockStorage.getInventory(b).toInventory().getSize(); Inventory inv = Bukkit.createInventory(null, size); + for (int i = 0; i < size; i++) { inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); } + for (int slot : getOutputSlots()) { inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); } + return inv; } @@ -286,7 +229,7 @@ public abstract class AContainer extends SlimefunItem { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index 284cd7a0d..d99d0232e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java index cff6d77b3..ad14d4ff4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java @@ -4,9 +4,9 @@ import org.bukkit.inventory.ItemStack; public class MachineFuel { - int seconds; - ItemStack fuel; - ItemStack output; + private int seconds; + private ItemStack fuel; + private ItemStack output; public MachineFuel(int seconds, ItemStack fuel) { this.seconds = seconds * 2; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java index 87d5378ae..42122e098 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java @@ -10,7 +10,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java index 4e14ec93e..38c9a6dc1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java index 618d41d45..2f77795f4 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutomatedCraftingChamber.java @@ -27,7 +27,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index 6b8f42246..9c61f8596 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -20,7 +20,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java index b60384487..971e5a3da 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ElectricDustWasher.java @@ -2,10 +2,16 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; import java.util.ArrayList; import java.util.List; +import java.util.Random; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.Category; @@ -16,12 +22,6 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; - public abstract class ElectricDustWasher extends AContainer { public ElectricDustWasher(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { @@ -52,7 +52,7 @@ public abstract class ElectricDustWasher extends AContainer { ItemMeta im = item.getItemMeta(); ((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks())); im.setDisplayName(" "); - List lore = new ArrayList(); + List lore = new ArrayList<>(); lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks())); lore.add(""); lore.add(MachineHelper.getTimeLeft(timeleft / 2)); @@ -93,16 +93,7 @@ public abstract class ElectricDustWasher extends AContainer { if (!empty_slot) return; } - ItemStack adding = SlimefunItems.IRON_DUST; - if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.GOLD_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ALUMINUM_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.COPPER_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ZINC_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.TIN_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.MAGNESIUM_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.LEAD_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.SILVER_DUST; - + ItemStack adding = OreWasher.items[new Random().nextInt(OreWasher.items.length)]; MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding}); if (legacy_dust_washer && !fits(b, r.getOutput())) return; BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java index 1ee92f680..0917b46a5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnhancedCraftingTable.java @@ -22,7 +22,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java index 5e07466d2..10a1b803c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java @@ -26,7 +26,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java index 2d0e051e1..d8e47667d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HeatedPressureChamber.java @@ -24,7 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java index 54cca6cfc..8efcac737 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/MagicWorkbench.java @@ -23,7 +23,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.PlayerProfile; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java new file mode 100644 index 000000000..7623de0d9 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/OreWasher.java @@ -0,0 +1,124 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import java.util.Random; + +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Setup.Messages; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.Slimefun; + +public class OreWasher extends SlimefunMachine { + + public static boolean legacy; + public static ItemStack[] items; + + public OreWasher() { + super( + Categories.MACHINES_1, + SlimefunItems.ORE_WASHER, + "ORE_WASHER", + new ItemStack[] {null, new ItemStack(Material.DISPENSER), null, null, new ItemStack(Material.OAK_FENCE), null, null, new ItemStack(Material.CAULDRON), null}, + new ItemStack[] {SlimefunItems.SIFTED_ORE, SlimefunItems.IRON_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.GOLD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.COPPER_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.TIN_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ZINC_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ALUMINUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGNESIUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST}, + Material.OAK_FENCE + ); + } + + @Override + public void register() { + register(true, onInteract()); + } + + private MultiBlockInteractionHandler onInteract() { + return (p, mb, b) -> { + if (mb.isMultiBlock(this)) { + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { + if (Slimefun.hasUnlocked(p, getItem(), true)) { + Block dispBlock = b.getRelative(BlockFace.UP); + Dispenser disp = (Dispenser) dispBlock.getState(); + Inventory inv = disp.getInventory(); + for (ItemStack current: inv.getContents()) { + if (current != null) { + if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) { + ItemStack adding = items[new Random().nextInt(items.length)]; + Inventory outputInv = null; + + if (!legacy) { + // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. + // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, + // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's + // not supposed to be given to the player. + ItemStack dummyAdding = SlimefunItems.DEBUG_FISH; + outputInv = SlimefunMachine.findValidOutputInv(dummyAdding, dispBlock, inv); + } + else outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + return true; + } + else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) { + ItemStack adding = SlimefunItems.SALT; + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(4); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return true; + } + else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) { + ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER; + Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); + + if (outputInv != null) { + ItemStack removing = current.clone(); + removing.setAmount(1); + inv.removeItem(removing); + outputInv.addItem(adding); + p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); + p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); + } + else Messages.local.sendTranslation(p, "machines.full-inventory", true); + + return true; + } + } + } + Messages.local.sendTranslation(p, "machines.unknown-material", true); + } + } + return true; + } + else return false; + }; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java index c1c1882ae..17d478e72 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Smeltery.java @@ -21,7 +21,7 @@ import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java index cdde1b4d8..aea2b4669 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java @@ -10,7 +10,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java index 828e6decd..4dbb9d338 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/WitherAssembler.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index adff7cc08..f0232288c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java index c303c48e3..58e78c52f 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java @@ -1,6 +1,7 @@ package me.mrCookieSlime.Slimefun.Objects.tasks; import java.text.DecimalFormat; +import java.util.Random; import org.bukkit.Bukkit; import org.bukkit.Effect; @@ -9,7 +10,6 @@ import org.bukkit.entity.Player; import org.bukkit.util.Vector; import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory; -import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; public class JetBootsTask extends SlimefunTask { @@ -34,7 +34,7 @@ public class JetBootsTask extends SlimefunTask { p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1); p.setFallDistance(0.0f); double gravity = 0.04; - double offset = SlimefunStartup.chance(100, 50) ? accuracy: -accuracy; + double offset = new Random().nextInt(2) == 1 ? accuracy: -accuracy; Vector vector = new Vector(p.getEyeLocation().getDirection().getX() * speed + offset, gravity, p.getEyeLocation().getDirection().getZ() * speed - offset); p.setVelocity(vector); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java index 24627a2ce..01d25b2c6 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java @@ -3,7 +3,7 @@ package me.mrCookieSlime.Slimefun.Objects.tasks; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import org.bukkit.block.Block; import org.bukkit.block.data.Waterlogged; @@ -28,17 +28,21 @@ public class RainbowTicker extends BlockTicker { public void tick(Block b, SlimefunItem item, Config data) { if (MaterialHelper.isWool(b.getType())) { b.setType(MaterialHelper.WoolColours[meta], false); - } else if (MaterialHelper.isStainedGlass(b.getType())) { + } + else if (MaterialHelper.isStainedGlass(b.getType())) { b.setType(MaterialHelper.StainedGlassColours[meta], false); - } else if (MaterialHelper.isStainedGlassPane(b.getType())){ + } + else if (MaterialHelper.isStainedGlassPane(b.getType())){ boolean waterlogged = ((Waterlogged) b.getBlockData()).isWaterlogged(); b.setType(MaterialHelper.StainedGlassPaneColours[meta], true); + if (waterlogged) { Waterlogged block = (Waterlogged) b.getBlockData(); block.setWaterlogged(true); b.setBlockData(block); } - } else if (MaterialHelper.isTerracotta(b.getType())){ + } + else if (MaterialHelper.isTerracotta(b.getType())){ b.setType(MaterialHelper.TerracottaColours[meta], false); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java index 2a4f157e4..a7ba60ce7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java @@ -31,10 +31,11 @@ public abstract class SlimefunTask implements Runnable { * @return True if task was cancelled. */ protected boolean cancelTask(){ - if(Bukkit.getPlayer(uuid) == null || Bukkit.getPlayer(uuid).isDead() || !Bukkit.getPlayer(uuid).isSneaking()) { + if (Bukkit.getPlayer(uuid) == null || Bukkit.getPlayer(uuid).isDead() || !Bukkit.getPlayer(uuid).isSneaking()) { Bukkit.getScheduler().cancelTask(id); return true; } + return false; } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 4a1884f16..00332de37 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; +import java.util.Random; import java.util.Set; import java.util.UUID; @@ -102,13 +103,6 @@ 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.handlers.AutonomousMachineHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockBreakHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockPlaceHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BowShootHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemInteractionHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AdvancedCargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AnimalGrowthAccelerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoAnvil; @@ -136,12 +130,20 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureCha import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.MagicWorkbench; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Smeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector; +import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; +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.androids.AndroidType; import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; @@ -161,8 +163,6 @@ import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener; public class SlimefunSetup { - public static boolean legacy_ore_washer = false; - public static void setupItems() { new SlimefunItem(Categories.WEAPONS, SlimefunItems.GRANDMAS_WALKING_STICK, "GRANDMAS_WALKING_STICK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null}) @@ -559,17 +559,18 @@ public class SlimefunSetup { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) { if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL) { if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), e.getClickedBlock(), true)) { - List drops = new ArrayList(); - if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE"))) drops.add(SlimefunItems.SIFTED_ORE); - else if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY"))) drops.add(new ItemStack(Material.CLAY_BALL)); - else if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT"))) drops.add(new ItemStack(Material.FLINT)); - - + List drops = new ArrayList<>(); + Random random = new Random(); - e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType()); - e.getClickedBlock().setType(Material.AIR); - for (ItemStack drop: drops) { - e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop); + if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) drops.add(SlimefunItems.SIFTED_ORE); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) drops.add(new ItemStack(Material.CLAY_BALL)); + else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) drops.add(new ItemStack(Material.FLINT)); + + e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType()); + e.getClickedBlock().setType(Material.AIR); + + for (ItemStack drop: drops) { + e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop); } } } @@ -998,97 +999,7 @@ public class SlimefunSetup { new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item", "mode.4.enabled", "mode.4.name", "mode.4.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK", true, "Gold Pan", "GOLD_PAN"}) .register(true); - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ORE_WASHER, "ORE_WASHER", - new ItemStack[] {null, new ItemStack(Material.DISPENSER), null, null, new ItemStack(Material.OAK_FENCE), null, null, new ItemStack(Material.CAULDRON), null}, - new ItemStack[] {SlimefunItems.SIFTED_ORE, SlimefunItems.IRON_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.GOLD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.COPPER_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.TIN_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ZINC_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ALUMINUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGNESIUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST}, - Material.OAK_FENCE) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(Player p, MultiBlock mb, Block b) { - - SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ORE_WASHER"); - - if (mb.isMultiBlock(machine)) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { - if (Slimefun.hasUnlocked(p, machine.getItem(), true)) { - Block dispBlock = b.getRelative(BlockFace.UP); - Dispenser disp = (Dispenser) dispBlock.getState(); - Inventory inv = disp.getInventory(); - for (ItemStack current: inv.getContents()) { - if (current != null) { - if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) { - ItemStack adding = SlimefunItems.IRON_DUST; - if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.GOLD_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ALUMINUM_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.COPPER_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ZINC_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.TIN_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.MAGNESIUM_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.LEAD_DUST; - else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.SILVER_DUST; - - Inventory outputInv = null; - - if (!legacy_ore_washer) { - // This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it. - // However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory, - // so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's - // not supposed to be given to the player. - ItemStack dummyAdding = SlimefunItems.DEBUG_FISH; - outputInv = SlimefunMachine.findValidOutputInv(dummyAdding, dispBlock, inv); - } else outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) { - ItemStack adding = SlimefunItems.SALT; - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(4); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) { - ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER; - Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv); - if (outputInv != null) { - ItemStack removing = current.clone(); - removing.setAmount(1); - inv.removeItem(removing); - outputInv.addItem(adding); - p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER); - p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1); - } - else Messages.local.sendTranslation(p, "machines.full-inventory", true); - return true; - } - } - } - Messages.local.sendTranslation(p, "machines.unknown-material", true); - } - } - return true; - } - else return false; - } - }); + new OreWasher().register(); new SlimefunItem(Categories.RESOURCES, SlimefunItems.GOLD_24K, "GOLD_24K", RecipeType.SMELTERY, new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_22K, null, null, null, null, null, null, null}) diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java index 6b17a89ca..e4b2bce44 100644 --- a/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java +++ b/src/me/mrCookieSlime/Slimefun/SlimefunStartup.java @@ -29,6 +29,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher; import me.mrCookieSlime.Slimefun.Setup.CSCoreLibLoader; import me.mrCookieSlime.Slimefun.Setup.Files; import me.mrCookieSlime.Slimefun.Setup.Messages; @@ -47,7 +48,6 @@ import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; -import me.mrCookieSlime.Slimefun.api.item_transport.ChestManipulator; import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver; import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver; import me.mrCookieSlime.Slimefun.commands.SlimefunCommand; @@ -358,7 +358,9 @@ public class SlimefunStartup extends JavaPlugin { AutoEnchanter.max_emerald_enchantments = config.getInt("options.emerald-enchantment-limit"); - SlimefunSetup.legacy_ore_washer = config.getBoolean("options.legacy-ore-washer"); + OreWasher.legacy = config.getBoolean("options.legacy-ore-washer"); + OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST}; + ElectricDustWasher.legacy_dust_washer = config.getBoolean("options.legacy-dust-washer"); // Do not show /sf elevator command in our Log, it could get quite spammy @@ -443,8 +445,8 @@ public class SlimefunStartup extends JavaPlugin { TickerTask.block_timings = null; OreGenSystem.map = null; SlimefunGuide.contributors = null; - ChestManipulator.listeners = null; PlayerProfile.profiles = null; + OreWasher.items = null; for (Player p: Bukkit.getOnlinePlayers()) { p.closeInventory(); diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 39a5ac4f1..db17690ce 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -55,7 +55,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.androids.comparators.ScriptReputationSorter; diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 73111eb48..0d38bc131 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -19,7 +19,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage; import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; public class TickerTask implements Runnable { diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java index 9785745ce..0287e0d50 100644 --- a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java +++ b/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java @@ -2,7 +2,7 @@ package me.mrCookieSlime.Slimefun.api.energy; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import org.bukkit.Location; diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java index dd3ddb3ca..6370d6139 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java @@ -86,7 +86,7 @@ public abstract class BlockMenuPreset extends ChestMenu { } public Set getInventorySlots() { - Set empty = new HashSet(); + Set empty = new HashSet<>(); if (size > -1) { for (int i = 0; i < size; i++) { if (!occupied.contains(i)) empty.add(i); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java b/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java index 022f98d58..b821f28ae 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java @@ -11,8 +11,8 @@ import org.bukkit.event.block.BlockDispenseEvent; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.AutonomousMachineHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.api.BlockStorage; public class AutonomousToolsListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index 7d48511c1..80f858da0 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -8,8 +8,8 @@ import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Events.MultiBlockInteractEvent; import me.mrCookieSlime.Slimefun.Objects.MultiBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; import me.mrCookieSlime.Slimefun.api.BlockStorage; import org.bukkit.Bukkit; diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java index 9ce85ba7a..40cebfbb0 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java @@ -17,8 +17,8 @@ import org.bukkit.util.Vector; import me.mrCookieSlime.Slimefun.SlimefunStartup; import me.mrCookieSlime.Slimefun.Utilities; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BowShootHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; public class BowListener implements Listener { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index d6ca9180f..b5788539f 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -48,8 +48,8 @@ import me.mrCookieSlime.Slimefun.Misc.BookDesign; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index 566b3aa56..eb0a34c95 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -31,9 +31,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockBreakHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockPlaceHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage;