diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 31e2a778b..2b9e174ff 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -208,10 +208,6 @@ public abstract class AContainer extends SlimefunItem { AContainer.this.tick(b); } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index b57c74b2d..efda7dbb0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -198,11 +198,7 @@ public abstract class AFarm extends SlimefunItem { public void tick(Block b, SlimefunItem sf, Config data) { AFarm.this.tick(b); } - - @Override - public void uniqueTick() { - } - + @Override public boolean isSynchronized() { return true; @@ -215,12 +211,14 @@ public abstract class AFarm 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; } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java index 605777e2c..1429e2fce 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AnimalGrowthAccelerator.java @@ -111,10 +111,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java index c0d8934c9..3ce75529c 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AutoBreeder.java @@ -110,10 +110,6 @@ public class AutoBreeder extends SlimefunItem { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java new file mode 100644 index 000000000..7b8a23c40 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java @@ -0,0 +1,79 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.Bukkit; +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.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +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; + +public class Composter extends SlimefunGadget { + + public Composter(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes) { + super(category, item, id, recipeType, recipe, machineRecipes); + } + + @Override + public void register(boolean slimefun) { + addItemHandler(new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { + if (e.getClickedBlock() != null) { + SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); + if (machine != null && machine.getID().equals(getID())) { + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { + final ItemStack input = p.getInventory().getItemInMainHand(); + final Block b = e.getClickedBlock(); + + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { + if (convert != null && SlimefunManager.isItemSimiliar(input, convert, true)) { + ItemStack removing = input.clone(); + removing.setAmount(convert.getAmount()); + p.getInventory().removeItem(removing); + final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); + + for (int i = 1; i < 12; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (j < 11) { + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK); + } + else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + b.getWorld().dropItemNaturally(b.getRelative(BlockFace.UP).getLocation(), adding); + } + }, i*30L); + } + + return true; + } + } + Messages.local.sendTranslation(p, "machines.wrong-item", true); + return true; + } + return true; + } + } + return false; + } + }); + + super.register(slimefun); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java index 7cb6a9412..bf7b93045 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/CropGrowthAccelerator.java @@ -121,10 +121,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java new file mode 100644 index 000000000..d21199971 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java @@ -0,0 +1,86 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.data.Levelled; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.Slimefun.SlimefunStartup; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +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; + +public class Crucible extends SlimefunGadget { + + public Crucible(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes) { + super(category, item, id, recipeType, recipe, machineRecipes); + } + + @Override + public void register(boolean slimefun) { + addItemHandler(new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { + if (e.getClickedBlock() != null) { + SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); + if (machine != null && machine.getID().equals("CRUCIBLE")) { + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { + final ItemStack input = p.getInventory().getItemInMainHand(); + final Block block = e.getClickedBlock().getRelative(BlockFace.UP); + for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { + if (input != null && SlimefunManager.isItemSimiliar(input, convert, true)) { + e.setCancelled(true); + ItemStack removing = input.clone(); + removing.setAmount(convert.getAmount()); + p.getInventory().removeItem(removing); + + for (int i = 1; i < 9; i++) { + int j = 8 - i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { + if (input.getType() == Material.COBBLESTONE || input.getType() == Material.TERRACOTTA || MaterialHelper.isTerracotta(input.getType())) { + block.setType(Material.LAVA); + Levelled le = (Levelled) block.getBlockData(); + le.setLevel(j); + block.setBlockData(le, false); + block.getWorld().playSound(block.getLocation(), Sound.BLOCK_LAVA_POP, 1F, 1F); + } + else if (MaterialHelper.isLeavesBlock(input.getType())) { + block.setType(Material.WATER); + Levelled le = (Levelled) block.getBlockData(); + le.setLevel(j); + block.setBlockData(le, false); + block.getWorld().playSound(block.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); + } + }, i*50L); + } + + return true; + } + } + Messages.local.sendTranslation(p, "machines.wrong-item", true); + return true; + } + return true; + } + } + return false; + } + }); + + super.register(slimefun); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java new file mode 100644 index 000000000..396b1eac0 --- /dev/null +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/EnergyRegulator.java @@ -0,0 +1,56 @@ +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +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.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.api.energy.EnergyNet; +import me.mrCookieSlime.Slimefun.holograms.EnergyHologram; + +public class EnergyRegulator extends SlimefunItem { + + public EnergyRegulator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + + SlimefunItem.registerBlockHandler("ENERGY_REGULATOR", new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + // Spawn the hologram + EnergyHologram.update(b, "&7Connecting..."); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + EnergyHologram.remove(b); + return true; + } + }); + } + + @Override + public void register(boolean slimefun) { + addItemHandler(new BlockTicker() { + + @Override + public boolean isSynchronized() { + return false; + } + + @Override + public void tick(Block b, SlimefunItem item, Config data) { + EnergyNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); + } + }); + + super.register(slimefun); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java index 44b46c28e..56e2e88bf 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/FluidPump.java @@ -173,10 +173,6 @@ public class FluidPump extends SlimefunItem{ FluidPump.this.tick(b); } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java index e76d230cc..3e458133e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java @@ -44,11 +44,6 @@ public class InfusedHopper extends SlimefunItem { public void register(boolean slimefun) { addItemHandler(new BlockTicker() { - @Override - public void uniqueTick() { - - } - @Override public void tick(Block b, SlimefunItem item, Config data) { if (b.getType() != Material.HOPPER) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java index 18a107aa4..1f1dd72f2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java @@ -67,10 +67,6 @@ public class TrashCan extends SlimefunItem { public void register(boolean slimefun) { addItemHandler(new BlockTicker() { - @Override - public void uniqueTick() { - } - @Override public void tick(Block b, SlimefunItem item, Config data) { BlockMenu menu = BlockStorage.getInventory(b); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index 6e0290676..cd7d83f4a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -135,10 +135,6 @@ public class XPCollector extends SlimefunItem { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return true; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java index dbc6e2f81..b9a2d1dd5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java @@ -16,16 +16,34 @@ public abstract class BlockTicker implements ItemHandler { } } - + /** + * This method must be overridden to define whether a Block + * needs to be run on the main server thread (World Manipulation requires that) + * + * @return Whether this task should run on the main server thread + */ public abstract boolean isSynchronized(); - public abstract void uniqueTick(); + + /** + * This method is called every tick for every block + */ public abstract void tick(Block b, SlimefunItem item, Config data); + /** + * This method is called every tick but not per-block and only once. + */ + public void uniqueTick() { + // Override this method and fill it with content + } + @Override public String toCodename() { return "BlockTicker"; } + /** + * This method resets the 'unique' flag for {@link BlockTicker#uniqueTick()} + */ public void startNewTick() { unique = true; } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index bd6d38783..1c76d957b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -10,6 +10,7 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.Colors; @@ -221,7 +222,14 @@ public final class MiscSetup { for (World world: Bukkit.getWorlds()) { SlimefunStartup.getWhitelist().setDefaultValue(world.getName() + ".enabled-items.SLIMEFUN_GUIDE", true); } + Slimefun.setItemVariable("ORE_CRUSHER", "double-ores", true); + + for (Enchantment e : Enchantment.values()) { + for (int i = 1; i <= e.getMaxLevel(); i++) { + Slimefun.setItemVariable("MAGICIAN_TALISMAN", "allow-enchantments." + e.getKey().getKey() + ".level." + i, true); + } + } } public static void loadDescriptions() { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 699168fc2..944bf8438 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -22,7 +22,6 @@ import org.bukkit.block.Chest; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.Dispenser; import org.bukkit.block.data.Ageable; -import org.bukkit.block.data.Levelled; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Arrow; @@ -116,13 +115,16 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CarbonPress; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoInputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoOutputNode; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ChargingBench; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CropGrowthAccelerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricFurnace; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricGoldPan; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricIngotFactory; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnergyRegulator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnhancedCraftingTable; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter; @@ -156,11 +158,9 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.energy.EnergyNet; 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.EnergyHologram; import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; import me.mrCookieSlime.Slimefun.utils.Utilities; @@ -644,14 +644,17 @@ public final class SlimefunSetup { inv.removeItem(removing); for (int i = 0; i < 4; i++) { int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4); + if (j < 3) { p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1F, 1F); - } else { + } + else { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); outputInv.addItem(adding); } @@ -1172,12 +1175,6 @@ public final class SlimefunSetup { false, false, "magician", 80, new PotionEffect[0]) .register(true); - for (Enchantment e : Enchantment.values()) { - for (int i = 1; i <= e.getMaxLevel(); i++) { - Slimefun.setItemVariable("MAGICIAN_TALISMAN", "allow-enchantments." + e.getKey().getKey() + ".level." + i, true); - } - } - new Talisman(SlimefunItems.TALISMAN_TRAVELLER, "TRAVELLER_TALISMAN", new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.STAFF_WIND, SlimefunItems.TALISMAN_ANGEL, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, false, false, "traveller", 60, new PotionEffect(PotionEffectType.SPEED, 3600, 2)) @@ -1474,13 +1471,14 @@ public final class SlimefunSetup { if(item == null || item.getType() == Material.AIR) { return false; } + b.getWorld().dropItemNaturally(b.getLocation(), item); b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType()); log.setAmount(log.getAmount() -1); - if(log.getAmount() <= 0) + + if(log.getAmount() <= 0) { p.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); - - + } } return true; } @@ -1504,15 +1502,7 @@ public final class SlimefunSetup { @Override public boolean onInteract(Player p, MultiBlock mb, Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("SAW_MILL"))) { - if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true) && Slimefun.hasUnlocked(p, SlimefunItems.SAW_MILL, true) && MaterialHelper.isLog(b.getRelative(BlockFace.UP).getType())) { - Block log = b.getRelative(BlockFace.UP); - if (!BlockStorage.hasBlockInfo(log)) { - ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8); - log.getWorld().dropItemNaturally(log.getLocation(), item); - log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); - log.setType(Material.AIR); - } - } + p.sendMessage(ChatColor.RED + "This Item has been deprecated! Use the Table Saw instead!"); return true; } else return false; @@ -1650,7 +1640,8 @@ public final class SlimefunSetup { Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { if (j < 3) { b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); - } else { + } + else { p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); inv.addItem(adding); } @@ -1671,7 +1662,7 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K}) .register(true); - new SlimefunGadget(Categories.MACHINES_1, SlimefunItems.COMPOSTER, "COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE, + new Composter(Categories.MACHINES_1, SlimefunItems.COMPOSTER, "COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {new ItemStack(Material.OAK_SLAB), null, new ItemStack(Material.OAK_SLAB), new ItemStack(Material.OAK_SLAB), null, new ItemStack(Material.OAK_SLAB), new ItemStack(Material.OAK_SLAB), new ItemStack(Material.CAULDRON), new ItemStack(Material.OAK_SLAB)}, new ItemStack[] { new ItemStack(Material.OAK_LEAVES, 8), new ItemStack(Material.DIRT), @@ -1691,47 +1682,7 @@ public final class SlimefunSetup { new ItemStack(Material.STONE, 4), new ItemStack(Material.NETHERRACK), new ItemStack(Material.SAND, 2), new ItemStack(Material.SOUL_SAND), new ItemStack(Material.WHEAT, 4), new ItemStack(Material.NETHER_WART) - }).register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { - if (e.getClickedBlock() != null) { - SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); - if (machine != null && machine.getID().equals("COMPOSTER")) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { - final ItemStack input = p.getInventory().getItemInMainHand(); - final Block b = e.getClickedBlock(); - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (convert != null && SlimefunManager.isItemSimiliar(input, convert, true)) { - ItemStack removing = input.clone(); - removing.setAmount(convert.getAmount()); - p.getInventory().removeItem(removing); - final ItemStack adding = RecipeType.getRecipeOutput(machine, convert); - - for (int i = 1; i < 12; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (j < 11) { - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - b.getWorld().dropItemNaturally(b.getRelative(BlockFace.UP).getLocation(), adding); - } - }, i*30L); - } - - return true; - } - } - Messages.local.sendTranslation(p, "machines.wrong-item", true); - return true; - } - return true; - } - } - return false; - } - }); + }).register(true); new SlimefunItem(Categories.MAGIC_ARMOR, SlimefunItems.FARMER_SHOES, "FARMER_SHOES", RecipeType.ARMOR_FORGE, new ItemStack[] {null, null, null, new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK), new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK)}) @@ -1959,82 +1910,37 @@ public final class SlimefunSetup { new ItemStack[] {SlimefunItems.CLOTH, null, SlimefunItems.CLOTH, SlimefunItems.GOLD_16K, SlimefunItems.BACKPACK_LARGE, SlimefunItems.GOLD_16K, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH}) .register(true); - new SlimefunGadget(Categories.MACHINES_1, SlimefunItems.CRUCIBLE, "CRUCIBLE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack [] {new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), new ItemStack(Material.FLINT_AND_STEEL), new ItemStack(Material.TERRACOTTA)}, - new ItemStack [] { - new ItemStack(Material.COBBLESTONE, 16), new ItemStack(Material.LAVA_BUCKET), + new Crucible(Categories.MACHINES_1, SlimefunItems.CRUCIBLE, "CRUCIBLE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack [] {new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), new ItemStack(Material.FLINT_AND_STEEL), new ItemStack(Material.TERRACOTTA)}, + new ItemStack [] { + new ItemStack(Material.COBBLESTONE, 16), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.STONE, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.OAK_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.BIRCH_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.SPRUCE_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.JUNGLE_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.ACACIA_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - new ItemStack(Material.DARK_OAK_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - - new ItemStack(Material.WHITE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.ORANGE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.MAGENTA_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.LIGHT_BLUE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.YELLOW_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.LIME_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.PINK_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.GRAY_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.LIGHT_GRAY_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.CYAN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.PURPLE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.BROWN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.GREEN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.RED_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), - new ItemStack(Material.BLACK_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET) - }) - .register(true, new ItemInteractionHandler() { + new ItemStack(Material.OAK_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.BIRCH_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.SPRUCE_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.JUNGLE_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.ACACIA_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), + new ItemStack(Material.DARK_OAK_LEAVES, 16), new ItemStack(Material.WATER_BUCKET), - @Override - public boolean onRightClick(ItemUseEvent e, final Player p, ItemStack item) { - if (e.getClickedBlock() != null) { - SlimefunItem machine = BlockStorage.check(e.getClickedBlock()); - if (machine != null && machine.getID().equals("CRUCIBLE")) { - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), e.getClickedBlock(), true)) { - final ItemStack input = p.getInventory().getItemInMainHand(); - final Block block = e.getClickedBlock().getRelative(BlockFace.UP); - for (ItemStack convert: RecipeType.getRecipeInputs(machine)) { - if (input != null && SlimefunManager.isItemSimiliar(input, convert, true)) { - e.setCancelled(true); - ItemStack removing = input.clone(); - removing.setAmount(convert.getAmount()); - p.getInventory().removeItem(removing); - - for (int i = 1; i < 9; i++) { - int j = 8 - i; - Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> { - if (input.getType() == Material.COBBLESTONE || input.getType() == Material.TERRACOTTA || MaterialHelper.isTerracotta(input.getType())) { - block.setType(Material.LAVA); - Levelled le = (Levelled) block.getBlockData(); - le.setLevel(j); - block.setBlockData(le, false); - block.getWorld().playSound(block.getLocation(), Sound.BLOCK_LAVA_POP, 1F, 1F); - } else if (MaterialHelper.isLeavesBlock(input.getType())) { - block.setType(Material.WATER); - Levelled le = (Levelled) block.getBlockData(); - le.setLevel(j); - block.setBlockData(le, false); - block.getWorld().playSound(block.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); - } - }, i*50L); - } - - return true; - } - } - Messages.local.sendTranslation(p, "machines.wrong-item", true); - return true; - } - return true; - } - } - return false; - } - }); + new ItemStack(Material.TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.WHITE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.ORANGE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.MAGENTA_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.LIGHT_BLUE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.YELLOW_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.LIME_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.PINK_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.GRAY_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.LIGHT_GRAY_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.CYAN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.PURPLE_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.BROWN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.GREEN_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.RED_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET), + new ItemStack(Material.BLACK_TERRACOTTA, 12), new ItemStack(Material.LAVA_BUCKET) + }) + .register(true); new SlimefunBackpack(45, Categories.PORTABLE, SlimefunItems.GILDED_BACKPACK, "GILDED_BACKPACK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.GOLD_22K, null, SlimefunItems.GOLD_22K, new ItemStack(Material.LEATHER), SlimefunItems.WOVEN_BACKPACK, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_22K, null, SlimefunItems.GOLD_22K}) @@ -2691,37 +2597,9 @@ public final class SlimefunSetup { // Slimefun 4 - new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ENERGY_REGULATOR, "ENERGY_REGULATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new EnergyRegulator(Categories.ELECTRICITY, SlimefunItems.ENERGY_REGULATOR, "ENERGY_REGULATOR", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT}) - .register(true, new BlockTicker() { - - @Override - public boolean isSynchronized() { - return false; - } - - @Override - public void uniqueTick() { - } - - @Override - public void tick(Block b, SlimefunItem item, Config data) { - EnergyNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); - } - }); - - SlimefunItem.registerBlockHandler("ENERGY_REGULATOR", new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - EnergyHologram.remove(b); - return true; - } - }); + .register(true); new SlimefunItem(Categories.MISC, SlimefunItems.DUCT_TAPE, "DUCT_TAPE", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_DUST, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.PAPER), new ItemStack(Material.PAPER), new ItemStack(Material.PAPER)}, new CustomItem(SlimefunItems.DUCT_TAPE, 2)) @@ -3440,10 +3318,6 @@ public final class SlimefunSetup { else Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; @@ -3480,10 +3354,6 @@ public final class SlimefunSetup { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; @@ -3520,10 +3390,6 @@ public final class SlimefunSetup { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; @@ -3560,10 +3426,6 @@ public final class SlimefunSetup { } } - @Override - public void uniqueTick() { - } - @Override public boolean isSynchronized() { return false; @@ -4608,10 +4470,6 @@ public final class SlimefunSetup { 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 uniqueTick() { - } - @Override public void tick(Block b, SlimefunItem item, Config data) { CargoNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b); @@ -4621,6 +4479,7 @@ public final class SlimefunSetup { public boolean isSynchronized() { return false; } + }, new ItemInteractionHandler() { @Override