1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

Refactored code

This commit is contained in:
TheBusyBiscuit 2019-08-30 11:15:26 +02:00
parent 2e89de4d3a
commit 09354e0be1
15 changed files with 300 additions and 229 deletions

View File

@ -208,10 +208,6 @@ public abstract class AContainer extends SlimefunItem {
AContainer.this.tick(b);
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return false;

View File

@ -199,10 +199,6 @@ public abstract class AFarm extends SlimefunItem {
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;
}

View File

@ -111,10 +111,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem {
}
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return true;

View File

@ -110,10 +110,6 @@ public class AutoBreeder extends SlimefunItem {
}
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return true;

View File

@ -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);
}
}

View File

@ -121,10 +121,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
}
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return true;

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -173,10 +173,6 @@ public class FluidPump extends SlimefunItem{
FluidPump.this.tick(b);
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return true;

View File

@ -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) {

View File

@ -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);

View File

@ -135,10 +135,6 @@ public class XPCollector extends SlimefunItem {
}
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return true;

View File

@ -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;
}

View File

@ -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() {

View File

@ -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,10 +1910,11 @@ 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 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),
@ -1971,6 +1923,7 @@ public final class SlimefunSetup {
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.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),
@ -1987,54 +1940,7 @@ public final class SlimefunSetup {
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() {
@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;
}
});
.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