mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Refactored code
This commit is contained in:
parent
2e89de4d3a
commit
09354e0be1
@ -208,10 +208,6 @@ public abstract class AContainer extends SlimefunItem {
|
||||
AContainer.this.tick(b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uniqueTick() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return false;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -111,10 +111,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uniqueTick() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return true;
|
||||
|
@ -110,10 +110,6 @@ public class AutoBreeder extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uniqueTick() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return true;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -121,10 +121,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uniqueTick() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return true;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -173,10 +173,6 @@ public class FluidPump extends SlimefunItem{
|
||||
FluidPump.this.tick(b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uniqueTick() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return true;
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -135,10 +135,6 @@ public class XPCollector extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uniqueTick() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return true;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user