diff --git a/pom.xml b/pom.xml
index 1aae9a048..6a95002c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -104,13 +104,13 @@
com.github.TheBusyBiscuit
CS-CoreLib
- ec5b4c24e3
+ e3242c600b
provided
com.github.thebusybiscuit
CS-CoreLib2
- 0.7.7
+ 0.8
compile
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/SlimefunCommand.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/SlimefunCommand.java
index 8f2566ca9..a4b4360fe 100644
--- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/SlimefunCommand.java
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/SlimefunCommand.java
@@ -2,7 +2,6 @@ package io.github.thebusybiscuit.slimefun4.core.commands;
import java.util.LinkedList;
import java.util.List;
-import java.util.logging.Level;
import java.util.stream.Collectors;
import org.bukkit.ChatColor;
@@ -26,8 +25,6 @@ import io.github.thebusybiscuit.slimefun4.core.commands.subcommands.StatsCommand
import io.github.thebusybiscuit.slimefun4.core.commands.subcommands.TeleporterCommand;
import io.github.thebusybiscuit.slimefun4.core.commands.subcommands.TimingsCommand;
import io.github.thebusybiscuit.slimefun4.core.commands.subcommands.VersionsCommand;
-import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder;
-import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
@@ -68,25 +65,21 @@ public class SlimefunCommand implements CommandExecutor, Listener {
}
else if (args[0].equalsIgnoreCase("elevator")) {
if (sender instanceof Player && args.length == 4) {
- double x = Integer.parseInt(args[1]) + 0.5D;
- double y = Integer.parseInt(args[2]) + 0.4D;
- double z = Integer.parseInt(args[3]) + 0.5D;
+ Player p = (Player) sender;
- if (BlockStorage.getLocationInfo(((Player) sender).getWorld().getBlockAt(Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])).getLocation(), "floor") != null) {
- SlimefunPlugin.getUtilities().elevatorUsers.add(((Player) sender).getUniqueId());
- float yaw = ((Player) sender).getEyeLocation().getYaw() + 180;
+ int x = Integer.parseInt(args[1]);
+ int y = Integer.parseInt(args[2]);
+ int z = Integer.parseInt(args[3]);
+
+ if (BlockStorage.getLocationInfo(p.getWorld().getBlockAt(x, y, z).getLocation(), "floor") != null) {
+ SlimefunPlugin.getUtilities().elevatorUsers.add(p.getUniqueId());
+ float yaw = p.getEyeLocation().getYaw() + 180;
if (yaw > 180) yaw = -180 + (yaw - 180);
- ((Player) sender).teleport(new Location(((Player) sender).getWorld(), x, y, z, yaw, ((Player) sender).getEyeLocation().getPitch()));
- try {
- TitleBuilder title = (TitleBuilder) new TitleBuilder(20, 60, 20).addText("&r" + ChatColor.translateAlternateColorCodes('&', BlockStorage.getLocationInfo(((Player) sender).getWorld().getBlockAt(Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])).getLocation(), "floor")));
- TitleBuilder subtitle = (TitleBuilder) new TitleBuilder(20, 60, 20).addText(" ");
-
- title.send(TitleType.TITLE, ((Player) sender));
- subtitle.send(TitleType.SUBTITLE, ((Player) sender));
- } catch (Exception e) {
- Slimefun.getLogger().log(Level.SEVERE, "An Error occured while a Player used an Elevator in Slimefun " + Slimefun.getVersion(), e);
- }
+ p.teleport(new Location(p.getWorld(), x + 0.5, y + 0.4, z + 0.5, yaw, p.getEyeLocation().getPitch()));
+
+ String title = "&r" + ChatColor.translateAlternateColorCodes('&', BlockStorage.getLocationInfo(p.getWorld().getBlockAt(x, y, z).getLocation(), "floor"));
+ p.sendTitle(title, " ", 20, 60, 20);
}
}
return true;
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/subcommands/GiveCommand.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/subcommands/GiveCommand.java
index 019520dda..7bcd06be7 100644
--- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/subcommands/GiveCommand.java
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/subcommands/GiveCommand.java
@@ -5,10 +5,10 @@ import java.util.Optional;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.players.PlayerList;
import io.github.thebusybiscuit.slimefun4.core.commands.SlimefunCommand;
import io.github.thebusybiscuit.slimefun4.core.commands.SubCommand;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.Slimefun;
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/BookSlimefunGuide.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/BookSlimefunGuide.java
index 1aaed4624..95ee7be24 100644
--- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/BookSlimefunGuide.java
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/BookSlimefunGuide.java
@@ -55,10 +55,10 @@ public class BookSlimefunGuide implements ISlimefunGuide {
int tier = 0;
- for (final Category category: Category.list()) {
+ for (Category category : Category.list()) {
boolean locked = true;
- for (SlimefunItem item: category.getItems()) {
+ for (SlimefunItem item : category.getItems()) {
if (Slimefun.isEnabled(p, item, false)) {
locked = false;
break;
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/utils/FireworkUtils.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/utils/FireworkUtils.java
new file mode 100644
index 000000000..8a5dd562d
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/utils/FireworkUtils.java
@@ -0,0 +1,65 @@
+package io.github.thebusybiscuit.slimefun4.core.utils;
+
+import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
+
+import org.bukkit.Color;
+import org.bukkit.FireworkEffect;
+import org.bukkit.FireworkEffect.Type;
+import org.bukkit.Location;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Firework;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.meta.FireworkMeta;
+
+public final class FireworkUtils {
+
+ private static final Color[] colors = {Color.AQUA, Color.BLACK, Color.BLUE, Color.FUCHSIA, Color.GRAY, Color.GREEN, Color.LIME, Color.MAROON, Color.NAVY, Color.OLIVE, Color.ORANGE, Color.PURPLE, Color.RED, Color.SILVER, Color.TEAL, Color.WHITE, Color.YELLOW};
+
+ private FireworkUtils() {}
+
+ public static void launchFirework(Location l, Color color) {
+ Firework fw = (Firework)l.getWorld().spawnEntity(l, EntityType.FIREWORK);
+
+ FireworkMeta meta = fw.getFireworkMeta();
+ FireworkEffect effect = getRandomEffect(ThreadLocalRandom.current(), color);
+ meta.addEffect(effect);
+ meta.setPower(ThreadLocalRandom.current().nextInt(2) + 1);
+ fw.setFireworkMeta(meta);
+ }
+
+ public static Firework createFirework(Location l, Color color) {
+ Firework fw = (Firework)l.getWorld().spawnEntity(l, EntityType.FIREWORK);
+ FireworkMeta meta = fw.getFireworkMeta();
+ FireworkEffect effect = FireworkEffect.builder().flicker(ThreadLocalRandom.current().nextBoolean()).withColor(color).with(ThreadLocalRandom.current().nextInt(3) + 1 == 1 ? Type.BALL: Type.BALL_LARGE).trail(ThreadLocalRandom.current().nextBoolean()).build();
+ meta.addEffect(effect);
+ meta.setPower(ThreadLocalRandom.current().nextInt(2) + 1);
+ fw.setFireworkMeta(meta);
+ return fw;
+ }
+
+ public static void launchRandom(Player p, int amount) {
+ for (int i = 0; i < amount; i++) {
+ Location l = p.getLocation().clone();
+ l.setX(l.getX() + ThreadLocalRandom.current().nextInt(amount));
+ l.setX(l.getX() - ThreadLocalRandom.current().nextInt(amount));
+ l.setZ(l.getZ() + ThreadLocalRandom.current().nextInt(amount));
+ l.setZ(l.getZ() - ThreadLocalRandom.current().nextInt(amount));
+
+ launchFirework(l, getRandomColor());
+ }
+ }
+
+ public static FireworkEffect getRandomEffect(Random random, Color color) {
+ return FireworkEffect.builder()
+ .flicker(random.nextBoolean())
+ .withColor(color)
+ .with(random.nextBoolean() ? Type.BALL: Type.BALL_LARGE)
+ .trail(random.nextBoolean())
+ .build();
+ }
+
+ private static Color getRandomColor() {
+ return colors[ThreadLocalRandom.current().nextInt(colors.length)];
+ }
+}
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java
index a886727af..756ce941e 100644
--- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/EnhancedFurnaceListener.java
@@ -10,8 +10,8 @@ import org.bukkit.event.inventory.FurnaceBurnEvent;
import org.bukkit.event.inventory.FurnaceSmeltEvent;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.recipes.MinecraftRecipe;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnhancedFurnace;
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java
index 67d87f3a8..7452cedc1 100644
--- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/TalismanListener.java
@@ -32,7 +32,7 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.util.Vector;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java b/src/main/java/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java
index 5a2f8c770..3c449b99d 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java
@@ -1,7 +1,6 @@
package me.mrCookieSlime.Slimefun.GPS;
import java.util.UUID;
-import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -12,10 +11,8 @@ import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
-import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder;
-import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType;
+import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
-import me.mrCookieSlime.Slimefun.api.Slimefun;
public final class TeleportationSequence {
@@ -51,54 +48,36 @@ public final class TeleportationSequence {
SlimefunPlugin.getUtilities().teleporterUsers.remove(uuid);
if (p != null) {
- try {
- TitleBuilder title = (TitleBuilder) new TitleBuilder(20, 60, 20).addText(ChatColor.translateAlternateColorCodes('&', "&4Teleportation cancelled"));
- TitleBuilder subtitle = (TitleBuilder) new TitleBuilder(20, 60, 20).addText(ChatColor.translateAlternateColorCodes('&', "&40%"));
-
- title.send(TitleType.TITLE, p);
- subtitle.send(TitleType.SUBTITLE, p);
- } catch(Exception x) {
- Slimefun.getLogger().log(Level.SEVERE, "An Error occured while cancelling a Teleportation Sequence for Slimefun " + Slimefun.getVersion(), x);
- }
+ p.sendTitle(ChatColors.color("&4Teleportation cancelled!"), ChatColors.color("&c&k40&r&c%"), 20, 60, 20);
+
}
}
- private static void updateProgress(final UUID uuid, final int speed, final int progress, final Location source, final Location destination, final boolean resistance) {
+ private static void updateProgress(UUID uuid, int speed, int progress, Location source, Location destination, boolean resistance) {
Player p = Bukkit.getPlayer(uuid);
+
if (isValid(p, source)) {
- try {
- if (progress > 99) {
- TitleBuilder title = (TitleBuilder) new TitleBuilder(20, 60, 20).addText(ChatColor.translateAlternateColorCodes('&', "&3Teleported!"));
- TitleBuilder subtitle = (TitleBuilder) new TitleBuilder(20, 60, 20).addText(ChatColor.translateAlternateColorCodes('&', "&b100%"));
-
- title.send(TitleType.TITLE, p);
- subtitle.send(TitleType.SUBTITLE, p);
-
- p.teleport(destination);
-
- if (resistance) {
- p.addPotionEffect(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 600, 20));
- p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&b&lYou have been given 30 Seconds of Invulnerability!"));
- }
-
- destination.getWorld().spawnParticle(Particle.PORTAL,new Location(destination.getWorld(), destination.getX(), destination.getY() + 1, destination.getZ()),progress * 2, 0.2F, 0.8F, 0.2F );
- destination.getWorld().playSound(destination, Sound.BLOCK_BEACON_ACTIVATE, 1F, 1F);
- SlimefunPlugin.getUtilities().teleporterUsers.remove(uuid);
+ if (progress > 99) {
+ p.sendTitle(ChatColors.color("&3Teleported!"), ChatColors.color("&b100%"), 20, 60, 20);
+
+ p.teleport(destination);
+
+ if (resistance) {
+ p.addPotionEffect(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 600, 20));
+ p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&b&lYou have been given 30 Seconds of Invulnerability!"));
}
- else {
- TitleBuilder title = (TitleBuilder) new TitleBuilder(0, 60, 0).addText(ChatColor.translateAlternateColorCodes('&', "&3Teleporting..."));
- TitleBuilder subtitle = (TitleBuilder) new TitleBuilder(0, 60, 0).addText(ChatColor.translateAlternateColorCodes('&', "&b" + progress + "%"));
-
- title.send(TitleType.TITLE, p);
- subtitle.send(TitleType.SUBTITLE, p);
-
- source.getWorld().spawnParticle(Particle.PORTAL, source, progress * 2, 0.2F, 0.8F, 0.2F);
- source.getWorld().playSound(source, Sound.BLOCK_BEACON_AMBIENT, 1F, 0.6F);
-
- Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> updateProgress(uuid, speed, progress + speed, source, destination, resistance), 10L);
- }
- } catch (Exception x) {
- Slimefun.getLogger().log(Level.SEVERE, "An Error occured during a Teleportation Sequence for Slimefun " + Slimefun.getVersion(), x);
+
+ destination.getWorld().spawnParticle(Particle.PORTAL,new Location(destination.getWorld(), destination.getX(), destination.getY() + 1, destination.getZ()),progress * 2, 0.2F, 0.8F, 0.2F );
+ destination.getWorld().playSound(destination, Sound.BLOCK_BEACON_ACTIVATE, 1F, 1F);
+ SlimefunPlugin.getUtilities().teleporterUsers.remove(uuid);
+ }
+ else {
+ p.sendTitle(ChatColors.color("&3Teleporting..."), ChatColors.color("&b" + progress + "%"), 0, 60, 0);
+
+ source.getWorld().spawnParticle(Particle.PORTAL, source, progress * 2, 0.2F, 0.8F, 0.2F);
+ source.getWorld().playSound(source, Sound.BLOCK_BEACON_AMBIENT, 1F, 0.6F);
+
+ Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> updateProgress(uuid, speed, progress + speed, source, destination, resistance), 10L);
}
}
else cancel(uuid, p);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/Research.java
index 079972de4..19ae04f2d 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/Research.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/Research.java
@@ -16,7 +16,7 @@ import org.bukkit.entity.Player;
import io.github.thebusybiscuit.cscorelib2.data.PersistentDataAPI;
import io.github.thebusybiscuit.slimefun4.api.events.ResearchUnlockEvent;
import io.github.thebusybiscuit.slimefun4.core.guide.GuideSettings;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
+import io.github.thebusybiscuit.slimefun4.core.utils.FireworkUtils;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Setup.ResearchSetup;
@@ -218,7 +218,7 @@ public class Research {
SlimefunPlugin.getLocal().sendMessage(p, "messages.unlocked", true, msg -> msg.replace("%research%", getName()));
if (SlimefunPlugin.getSettings().researchFireworksEnabled && (!PersistentDataAPI.hasByte(p, GuideSettings.FIREWORKS_KEY) || PersistentDataAPI.getByte(p, GuideSettings.FIREWORKS_KEY) == (byte) 1)) {
- FireworkShow.launchRandom(p, 1);
+ FireworkUtils.launchRandom(p, 1);
}
};
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java
deleted file mode 100644
index c20512b9a..000000000
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
-
-import org.bukkit.inventory.ItemStack;
-
-import me.mrCookieSlime.Slimefun.Lists.RecipeType;
-import me.mrCookieSlime.Slimefun.Objects.Category;
-import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
-
-public class ExcludedBlock extends SlimefunItem implements NotPlaceable {
-
- public ExcludedBlock(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
- super(category, item, id, recipeType, recipe);
- }
-
-
-
-}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java
deleted file mode 100644
index 1a35ecc55..000000000
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
-
-import org.bukkit.inventory.ItemStack;
-
-import me.mrCookieSlime.Slimefun.Lists.RecipeType;
-import me.mrCookieSlime.Slimefun.Objects.Category;
-import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
-
-public class ExcludedGadget extends SlimefunGadget implements NotPlaceable {
-
- public ExcludedGadget(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes) {
- super(category, item, id, recipeType, recipe, machineRecipes);
- }
-
- public ExcludedGadget(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes, String[] keys, Object[] values) {
- super(category, item, id, recipeType, recipe, machineRecipes, keys, values);
- }
-}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java
deleted file mode 100644
index 2ac5f15cb..000000000
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
-
-import org.bukkit.inventory.ItemStack;
-
-import me.mrCookieSlime.Slimefun.Lists.RecipeType;
-import me.mrCookieSlime.Slimefun.Objects.Category;
-import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
-
-@Deprecated
-public class ExcludedTool extends SlimefunItem implements NotPlaceable {
-
- public ExcludedTool(Category category, ItemStack item, String id,RecipeType recipeType, ItemStack[] recipe) {
- super(category, item, id, recipeType, recipe);
- }
-
-}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundTool.java
similarity index 59%
rename from src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java
rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundTool.java
index f6a407909..9c0815846 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundTool.java
@@ -7,13 +7,13 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
-public class ExcludedSoulboundTool extends SoulboundItem implements NotPlaceable {
+public class SoulboundTool extends SoulboundItem implements NotPlaceable {
- public ExcludedSoulboundTool(Category category, ItemStack item, String id, RecipeType type, ItemStack[] recipe) {
+ public SoulboundTool(Category category, ItemStack item, String id, RecipeType type, ItemStack[] recipe) {
super(category, item, id, type, recipe);
}
- public ExcludedSoulboundTool(Category category, SlimefunItemStack item, ItemStack[] recipe) {
+ public SoulboundTool(Category category, SlimefunItemStack item, ItemStack[] recipe) {
super(category, item, recipe);
}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java
index 65bffeac2..be16feec4 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java
@@ -16,7 +16,7 @@ import org.bukkit.event.player.PlayerEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java
index d0336d8b2..1936be0f5 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java
@@ -11,11 +11,11 @@ import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
+import io.github.thebusybiscuit.slimefun4.core.utils.ChestMenuUtils;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
@@ -82,18 +82,18 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
protected void constructMenu(BlockMenuPreset preset) {
for (int i : BORDER) {
- preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(i, ChestMenuUtils.getBackground(), ChestMenuUtils.getEmptyClickHandler());
}
for (int i : BORDER_IN) {
- preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler());
}
for (int i : BORDER_OUT) {
- preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler());
}
- preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler());
for (int i : getOutputSlots()) {
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
@@ -227,7 +227,7 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
if (!fits(b, r.getOutput())) return;
for (Map.Entry entry : found.entrySet()) {
- inv.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(inv.getItemInSlot(entry.getKey()), entry.getValue()));
+ inv.consumeItem(entry.getKey(), entry.getValue());
}
processing.put(b, r);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java
index 1532f24bc..b67e1e48d 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java
@@ -7,6 +7,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
+import io.github.thebusybiscuit.slimefun4.core.utils.ChestMenuUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
@@ -45,17 +46,17 @@ public abstract class ADrill extends AContainer {
private void constructMenu(BlockMenuPreset preset) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
- (p, slot, item, action) -> false
+ ChestMenuUtils.getEmptyClickHandler()
);
}
for (int i : border_out) {
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
- (p, slot, item, action) -> false
+ ChestMenuUtils.getEmptyClickHandler()
);
}
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
- (p, slot, item, action) -> false
+ ChestMenuUtils.getEmptyClickHandler()
);
for (int i: getOutputSlots()) {
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java
index dc4e801c2..9bc84ecb4 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java
@@ -7,11 +7,12 @@ import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
+import io.github.thebusybiscuit.slimefun4.core.utils.ChestMenuUtils;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
@@ -66,14 +67,14 @@ public abstract class AFarm extends SlimefunItem {
private void constructMenu(BlockMenuPreset preset) {
for (int i : border) {
- preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(i, ChestMenuUtils.getBackground(), ChestMenuUtils.getEmptyClickHandler());
}
for (int i : border_out) {
- preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler());
}
- preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler());
for (int i : getOutputSlots()) {
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java
index 7ff66c2f4..9d81328bb 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java
@@ -16,13 +16,13 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
+import io.github.thebusybiscuit.slimefun4.core.utils.ChestMenuUtils;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
@@ -107,15 +107,15 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt
private void constructMenu(BlockMenuPreset preset) {
for (int i : border) {
- preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(i, ChestMenuUtils.getBackground(), ChestMenuUtils.getEmptyClickHandler());
}
for (int i : border_in) {
- preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),(p, slot, item, action) -> false);
+ preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),ChestMenuUtils.getEmptyClickHandler());
}
for (int i: border_out) {
- preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler());
}
for (int i: getOutputSlots()) {
@@ -133,7 +133,7 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt
});
}
- preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler());
}
public abstract String getInventoryTitle();
@@ -205,8 +205,8 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt
MachineFuel fuel = findRecipe(inv, found);
if (fuel != null) {
- for (Map.Entry entry: found.entrySet()) {
- inv.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(inv.getItemInSlot(entry.getKey()), entry.getValue()));
+ for (Map.Entry entry : found.entrySet()) {
+ inv.consumeItem(entry.getKey(), entry.getValue());
}
processing.put(l, fuel);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java
index 933f5c7c1..d2fb52519 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java
@@ -17,13 +17,12 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
import io.github.thebusybiscuit.cscorelib2.skull.SkullItem;
import io.github.thebusybiscuit.slimefun4.core.utils.ChestMenuUtils;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
@@ -289,7 +288,7 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
for (int slot : getCoolantSlots()) {
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), getCoolant(), true)) {
- menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
+ menu.consumeItem(slot);
ReactorHologram.update(l, "&b\u2744 &7100%");
explosion = false;
break;
@@ -339,7 +338,7 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
if (fuel != null) {
for (Map.Entry entry : found.entrySet()) {
- menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue()));
+ menu.consumeItem(entry.getKey(), entry.getValue());
}
processing.put(l, fuel);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java
index d86e6c7ea..6d4ae9084 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java
@@ -9,8 +9,8 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java
index 25cc5526f..0c6542163 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java
@@ -3,7 +3,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java
index c678ce389..0a973efea 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java
@@ -5,7 +5,7 @@ import org.bukkit.Sound;
import org.bukkit.block.Container;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java
index 8fcbdd528..4c50a8e10 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java
@@ -8,9 +8,9 @@ import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.blocks.Vein;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SolarHelmet.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SolarHelmet.java
similarity index 77%
rename from src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SolarHelmet.java
rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SolarHelmet.java
index 7f367c38c..f0d74736e 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SolarHelmet.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SolarHelmet.java
@@ -1,9 +1,10 @@
-package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
+package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
public class SolarHelmet extends SlimefunItem {
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java
index a2793d8e3..726cfde18 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java
@@ -81,7 +81,8 @@ public class StormStaff extends SimpleSlimefunItem {
if (currentUses == 1) {
p.playSound(p.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 1);
item.setAmount(0);
- } else {
+ }
+ else {
itemMeta.getPersistentDataContainer().set(
usageKey, PersistentDataType.INTEGER, --currentUses
);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java
index 617df4466..da488c55c 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java
@@ -6,8 +6,8 @@ import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java
index c9c1a2128..6e5a4ace3 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java
@@ -4,8 +4,9 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
+import io.github.thebusybiscuit.slimefun4.core.utils.ChestMenuUtils;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
@@ -18,16 +19,17 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
public class TrashCan extends SlimefunItem implements InventoryBlock {
- private static final int[] border = {0, 1, 2, 3, 5, 4, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
-
+ private static final int[] BORDER = {0, 1, 2, 3, 5, 4, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
+ private static final ItemStack BACKGROUND = new CustomItem(new ItemStack(Material.RED_STAINED_GLASS_PANE), " ");
+
public TrashCan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, recipeType, recipe);
createPreset(this, "&4Trash Can", this::constructMenu);
}
private void constructMenu(BlockMenuPreset preset) {
- for (int i : border) {
- preset.addItem(i, new CustomItem(new ItemStack(Material.RED_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
+ for (int i : BORDER) {
+ preset.addItem(i, BACKGROUND, ChestMenuUtils.getEmptyClickHandler());
}
}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java
index f8b891f72..a2b87ea4a 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java
@@ -8,8 +8,7 @@ import org.bukkit.Tag;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
@@ -146,7 +145,8 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
if (r != null) {
if (inputSlot == -1) return;
if (!menu.fits(r.getOutput()[0], getOutputSlots())) return;
- menu.replaceExistingItem(inputSlot, InvUtils.decreaseItem(menu.getItemInSlot(inputSlot), 1));
+
+ menu.consumeItem(inputSlot);
processing.put(b, r);
progress.put(b, r.getTicks());
}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java
index a6a8beaa8..de54956c2 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java
@@ -11,8 +11,7 @@ import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants;
import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
@@ -128,8 +127,8 @@ public class AutoEnchanter extends AContainer {
if (recipe != null) {
if (!fits(b, recipe.getOutput())) return;
- for (int slot: getInputSlots()) {
- menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
+ for (int slot : getInputSlots()) {
+ menu.consumeItem(slot);
}
processing.put(b, recipe);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java
index 831200b03..9594164b5 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java
@@ -3,7 +3,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java
index 7b5d0f9d6..0ee923e8c 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java
@@ -9,10 +9,10 @@ import org.bukkit.block.Block;
import org.bukkit.block.data.Ageable;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.core.utils.ChestMenuUtils;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java
index f31815163..fafbf2a81 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java
@@ -6,8 +6,7 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
@@ -85,7 +84,7 @@ public abstract class ElectricDustWasher extends AContainer {
ItemStack adding = items[new Random().nextInt(items.length)];
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding});
if (SlimefunPlugin.getSettings().legacyDustWasher && !menu.fits(r.getOutput()[0], getOutputSlots())) return;
- menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
+ menu.consumeItem(slot);
processing.put(b, r);
progress.put(b, r.getTicks());
break;
@@ -93,7 +92,7 @@ public abstract class ElectricDustWasher extends AContainer {
else if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), SlimefunItems.PULVERIZED_ORE, true)) {
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {SlimefunItems.PURE_ORE_CLUSTER});
if (!menu.fits(r.getOutput()[0], getOutputSlots())) return;
- menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
+ menu.consumeItem(slot);
processing.put(b, r);
progress.put(b, r.getTicks());
break;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java
index 53abda614..55e85a11d 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java
@@ -8,8 +8,7 @@ import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.collections.RandomizedSet;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
@@ -121,8 +120,8 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla
MachineRecipe r = new MachineRecipe(3 / getSpeed(), new ItemStack[0], new ItemStack[] {output});
if (!menu.fits(output, getOutputSlots())) return;
-
- menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
+
+ menu.consumeItem(slot);
processing.put(b, r);
progress.put(b, r.getTicks());
break;
@@ -132,8 +131,8 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {output});
if (!menu.fits(output, getOutputSlots())) return;
-
- menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
+
+ menu.consumeItem(slot);
processing.put(b, r);
progress.put(b, r.getTicks());
break;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java
index 53fad8721..a6b09c56e 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java
@@ -11,10 +11,10 @@ import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java
index be3ae3c5f..9643e26db 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java
@@ -10,13 +10,13 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.blocks.Vein;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
@@ -27,7 +27,7 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
-public class FluidPump extends SlimefunItem implements InventoryBlock {
+public class FluidPump extends SimpleSlimefunItem implements InventoryBlock {
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 22};
private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30};
@@ -98,7 +98,7 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
if (!menu.fits(output, getOutputSlots())) return;
ChargableBlock.addCharge(b, -energyConsumption);
- menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
+ menu.consumeItem(slot);
menu.pushItem(output, getOutputSlots());
if (fluid.getType() == Material.WATER) {
@@ -116,8 +116,8 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
}
@Override
- public void preRegister() {
- addItemHandler(new BlockTicker() {
+ public BlockTicker getItemHandler() {
+ return new BlockTicker() {
@Override
public void tick(Block b, SlimefunItem sf, Config data) {
@@ -128,7 +128,7 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
public boolean isSynchronized() {
return true;
}
- });
+ };
}
}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java
index eee7461f1..d9aefc47d 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java
@@ -12,10 +12,9 @@ import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
@@ -172,7 +171,7 @@ public abstract class HeatedPressureChamber extends AContainer {
if (!menu.fits(recipe.getOutput()[0], getOutputSlots())) return;
for (Map.Entry entry : found.entrySet()) {
- menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue()));
+ menu.consumeItem(entry.getKey(), entry.getValue());
}
processing.put(b, recipe);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java
index 7063baa91..23cab08bb 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java
@@ -7,8 +7,8 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category;
@@ -81,7 +81,7 @@ public abstract class Refinery extends AContainer implements RecipeDisplayItem {
if (!menu.fits(SlimefunItems.BUCKET_OF_FUEL, getOutputSlots())) return;
- menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
+ ItemUtils.consumeItem(menu.getItemInSlot(slot), false);
processing.put(b, r);
progress.put(b, r.getTicks());
break;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java
index 314671d0b..17eeed07c 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java
@@ -11,7 +11,6 @@ import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
@@ -190,9 +189,11 @@ public class WitherAssembler extends SlimefunItem {
int soulsand = 0;
int skulls = 0;
+ BlockMenu menu = BlockStorage.getInventory(b);
+
for (int slot : getSoulSandSlots()) {
- if (SlimefunManager.isItemSimilar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true)) {
- soulsand = soulsand + BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
+ if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true)) {
+ soulsand = soulsand + menu.getItemInSlot(slot).getAmount();
if (soulsand > 3) {
soulsand = 4;
break;
@@ -201,8 +202,8 @@ public class WitherAssembler extends SlimefunItem {
}
for (int slot : getWitherSkullSlots()) {
- if (SlimefunManager.isItemSimilar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.WITHER_SKELETON_SKULL), true)) {
- skulls = skulls + BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
+ if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), new ItemStack(Material.WITHER_SKELETON_SKULL), true)) {
+ skulls = skulls + menu.getItemInSlot(slot).getAmount();
if (skulls > 2) {
skulls = 3;
break;
@@ -212,31 +213,31 @@ public class WitherAssembler extends SlimefunItem {
if (soulsand > 3 && skulls > 2) {
for (int slot : getSoulSandSlots()) {
- if (SlimefunManager.isItemSimilar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true)) {
- int amount = BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
+ if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true)) {
+ int amount = menu.getItemInSlot(slot).getAmount();
if (amount >= soulsand) {
- BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), soulsand));
+ menu.consumeItem(slot, soulsand);
break;
}
else {
soulsand = soulsand - amount;
- BlockStorage.getInventory(b).replaceExistingItem(slot, null);
+ menu.replaceExistingItem(slot, null);
}
}
}
for (int slot : getWitherSkullSlots()) {
- if (SlimefunManager.isItemSimilar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.WITHER_SKELETON_SKULL), true)) {
- int amount = BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
+ if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), new ItemStack(Material.WITHER_SKELETON_SKULL), true)) {
+ int amount = menu.getItemInSlot(slot).getAmount();
if (amount >= skulls) {
- BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), skulls));
+ menu.consumeItem(slot, skulls);
break;
}
else {
skulls = skulls - amount;
- BlockStorage.getInventory(b).replaceExistingItem(slot, null);
+ menu.replaceExistingItem(slot, null);
}
}
}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/XPCollector.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/XPCollector.java
index a33e8aab9..252d5ee5f 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/XPCollector.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/XPCollector.java
@@ -9,8 +9,8 @@ import org.bukkit.entity.ExperienceOrb;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/reactors/NetherStarReactor.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/reactors/NetherStarReactor.java
new file mode 100644
index 000000000..f77dff987
--- /dev/null
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/reactors/NetherStarReactor.java
@@ -0,0 +1,57 @@
+package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.reactors;
+
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
+
+import me.mrCookieSlime.Slimefun.Lists.RecipeType;
+import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
+import me.mrCookieSlime.Slimefun.Objects.Category;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
+import me.mrCookieSlime.Slimefun.api.Slimefun;
+import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
+import me.mrCookieSlime.Slimefun.holograms.ReactorHologram;
+
+public abstract class NetherStarReactor extends AReactor {
+
+ public NetherStarReactor(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
+ super(category, item, recipeType, recipe);
+ }
+
+ @Override
+ public String getInventoryTitle() {
+ return "&fNether Star Reactor";
+ }
+
+ @Override
+ public void registerDefaultRecipes() {
+ registerFuel(new MachineFuel(1800, new ItemStack(Material.NETHER_STAR)));
+ }
+
+ @Override
+ public void extraTick(final Location l) {
+ Slimefun.runSync(() -> {
+ for (Entity entity : ReactorHologram.getArmorStand(l, true).getNearbyEntities(5, 5, 5)) {
+ if (entity instanceof LivingEntity) {
+ ((LivingEntity) entity).addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 60, 1));
+ }
+ }
+ }, 0L);
+ }
+
+ @Override
+ public ItemStack getCoolant() {
+ return SlimefunItems.NETHER_ICE_COOLANT_CELL;
+ }
+
+ @Override
+ public ItemStack getProgressBar() {
+ return new ItemStack(Material.NETHER_STAR);
+ }
+
+}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/reactors/NuclearReactor.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/reactors/NuclearReactor.java
new file mode 100644
index 000000000..c2c517f28
--- /dev/null
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/reactors/NuclearReactor.java
@@ -0,0 +1,48 @@
+package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.reactors;
+
+import org.bukkit.Location;
+import org.bukkit.inventory.ItemStack;
+
+import io.github.thebusybiscuit.cscorelib2.skull.SkullItem;
+import me.mrCookieSlime.Slimefun.Lists.RecipeType;
+import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
+import me.mrCookieSlime.Slimefun.Objects.Category;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
+import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
+
+public abstract class NuclearReactor extends AReactor {
+
+ public NuclearReactor(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
+ super(category, item, recipeType, recipe);
+ }
+
+ @Override
+ public String getInventoryTitle() {
+ return "&2Nuclear Reactor";
+ }
+
+ @Override
+ public void registerDefaultRecipes() {
+ registerFuel(new MachineFuel(1200, SlimefunItems.URANIUM, SlimefunItems.NEPTUNIUM));
+ registerFuel(new MachineFuel(600, SlimefunItems.NEPTUNIUM, SlimefunItems.PLUTONIUM));
+ registerFuel(new MachineFuel(1500, SlimefunItems.BOOSTED_URANIUM, null));
+ }
+
+ @Override
+ public ItemStack getProgressBar() {
+ return SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTNhZDhlZTg0OWVkZjA0ZWQ5YTI2Y2EzMzQxZjYwMzNiZDc2ZGNjNDIzMWVkMWVhNjNiNzU2NTc1MWIyN2FjIn19fQ==");
+ }
+
+ @Override
+ public ItemStack getCoolant() {
+ return SlimefunItems.REACTOR_COOLANT_CELL;
+ }
+
+ @Override
+ public void extraTick(Location l) {
+ // This machine does not need to perform anything while ticking
+ // The Nether Star Reactor uses this method to generate the Wither Effect
+ }
+
+}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java
index a66e3506d..19e621072 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java
@@ -13,7 +13,7 @@ import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@@ -51,7 +51,7 @@ public class ArmorForge extends MultiBlockMachine {
}
if (craft) {
- final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
+ ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
if (Slimefun.hasUnlocked(p, adding, true)) {
Inventory outputInv = findOutputInventory(adding, dispBlock, inv);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java
index 8341f43e6..ac34b6cdc 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java
@@ -13,7 +13,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@@ -50,7 +50,7 @@ public class Compressor extends MultiBlockMachine {
for (ItemStack current : inv.getContents()) {
for (ItemStack convert : RecipeType.getRecipeInputs(this)) {
if (convert != null && SlimefunManager.isItemSimilar(current, convert, true)) {
- final ItemStack adding = RecipeType.getRecipeOutput(this, convert);
+ ItemStack adding = RecipeType.getRecipeOutput(this, convert);
Inventory outputInv = findOutputInventory(adding, dispBlock, inv);
if (outputInv != null) {
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java
index bcea62bad..5d09b8c5b 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java
@@ -16,8 +16,8 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.implementation.listeners.BackpackListener;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@@ -71,7 +71,7 @@ public class EnhancedCraftingTable extends MultiBlockMachine {
}
if (craft) {
- final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
+ ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
if (Slimefun.hasUnlocked(p, adding, true)) {
Inventory inv2 = Bukkit.createInventory(null, 9, "test");
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java
index f0d14dbe5..25dc5d2c4 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java
@@ -12,7 +12,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java
index 2706f9cf1..3b3638e0b 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java
@@ -13,7 +13,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java
index b082f2748..da937b8cf 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java
@@ -16,8 +16,8 @@ import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.implementation.listeners.BackpackListener;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java
index 5f715e9d8..9ce1e255a 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java
@@ -12,7 +12,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java
index 5fd7849ea..c1c7610bb 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java
@@ -14,7 +14,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
+import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java
index afb9a9cc5..c7c5c2909 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java
@@ -14,7 +14,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java
index b9dd7578b..5fb6267bb 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java
@@ -20,7 +20,7 @@ import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java
index 62ccc6c33..37f58089d 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java
@@ -9,17 +9,18 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
public class RainbowTicker extends BlockTicker {
+
+ private final int[] sequence;
private int meta;
private int index;
- private int[] queue;
public RainbowTicker() {
this(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
}
public RainbowTicker(int... data) {
- this.queue = data;
+ this.sequence = data;
meta = data[0];
index = 0;
}
@@ -49,8 +50,8 @@ public class RainbowTicker extends BlockTicker {
@Override
public void uniqueTick() {
- index = ((index >= queue.length - 1) ? 0: index + 1);
- meta = queue[index];
+ index = ((index >= sequence.length - 1) ? 0: index + 1);
+ meta = sequence[index];
}
@Override
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java
index 8e7d4023b..1656b0606 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java
@@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
-import java.util.logging.Level;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -19,7 +18,6 @@ import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.Chest;
import org.bukkit.block.CreatureSpawner;
-import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -32,14 +30,14 @@ import org.bukkit.potion.PotionEffectType;
import org.bukkit.util.Vector;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
+import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils;
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections;
import io.github.thebusybiscuit.cscorelib2.skull.SkullItem;
+import io.github.thebusybiscuit.slimefun4.core.utils.FireworkUtils;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
-import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@@ -47,8 +45,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy;
-import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedBlock;
-import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedSoulboundTool;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.JetBoots;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Jetpack;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice;
@@ -60,14 +57,12 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBow;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
-import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SolarHelmet;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundBackpack;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundTool;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
-import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
-import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode;
@@ -100,6 +95,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PortableDustbin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PortableGEOScanner;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SmeltersPickaxe;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SolarHelmet;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SoulboundRune;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SwordOfBeheading;
@@ -153,6 +149,8 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOS
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.OilPump;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.ElevatorPlate;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.GPSTransmitter;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.reactors.NetherStarReactor;
+import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.reactors.NuclearReactor;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor;
@@ -177,7 +175,6 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
-import me.mrCookieSlime.Slimefun.holograms.ReactorHologram;
public final class SlimefunSetup {
@@ -1315,15 +1312,15 @@ public final class SlimefunSetup {
new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_PICKAXE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null})
.register(true);
- new ExcludedSoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_AXE,
+ new SoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_AXE,
new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_AXE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null})
.register(true);
- new ExcludedSoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_SHOVEL,
+ new SoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_SHOVEL,
new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_SHOVEL), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null})
.register(true);
- new ExcludedSoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_HOE,
+ new SoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_HOE,
new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_HOE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null})
.register(true);
@@ -1468,7 +1465,7 @@ public final class SlimefunSetup {
new BlockPlacer(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.BLOCK_PLACER, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.IRON_INGOT), SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K},
- new String[] {"unplaceable-blocks"}, new Object[] {Stream.of(Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK).map(Material::toString).collect(Collectors.toList())})
+ new String[] {"unplaceable-blocks"}, new Object[] {MaterialCollections.getAllUnbreakableBlocks().stream().map(Material::name).collect(Collectors.toList())})
.register(true);
new TelepositionScroll(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, RecipeType.MAGIC_WORKBENCH,
@@ -1518,7 +1515,7 @@ public final class SlimefunSetup {
new ItemStack[] {null, null, null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.GLASS_PANE), SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, null}, new CustomItem(SlimefunItems.FLASK_OF_KNOWLEDGE, 8))
.register(true);
- new ExcludedBlock(Categories.BIRTHDAY, new CustomItem(new ItemStack(Material.CAKE), "&bBirthday Cake"), "BIRTHDAY_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE,
+ new HandledBlock(Categories.BIRTHDAY, new CustomItem(new ItemStack(Material.CAKE), "&bBirthday Cake"), "BIRTHDAY_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, new ItemStack(Material.TORCH), null, new ItemStack(Material.SUGAR), new ItemStack(Material.CAKE), new ItemStack(Material.SUGAR), null, null, null})
.register(true);
@@ -1591,7 +1588,7 @@ public final class SlimefunSetup {
if (SlimefunManager.isItemSimilar(item, SlimefunItems.EASTER_EGG, true)) {
e.setCancelled(true);
if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false);
- FireworkShow.launchRandom(e.getPlayer(), 2);
+ FireworkUtils.launchRandom(e.getPlayer(), 2);
List gifts = new ArrayList<>();
gifts.add(new CustomItem(SlimefunItems.EASTER_CARROT_PIE, 4));
@@ -3013,88 +3010,24 @@ public final class SlimefunSetup {
SlimefunItem.setRadioactive(SlimefunItems.BOOSTED_URANIUM);
- new AReactor(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.NUCLEAR_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
+ new NuclearReactor(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.NUCLEAR_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.REINFORCED_PLATE, SlimefunItems.COOLING_UNIT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT}){
-
- @Override
- public String getInventoryTitle() {
- return "&2Nuclear Reactor";
- }
-
- @Override
- public void registerDefaultRecipes() {
- registerFuel(new MachineFuel(1200, SlimefunItems.URANIUM, SlimefunItems.NEPTUNIUM));
- registerFuel(new MachineFuel(600, SlimefunItems.NEPTUNIUM, SlimefunItems.PLUTONIUM));
- registerFuel(new MachineFuel(1500, SlimefunItems.BOOSTED_URANIUM, null));
- }
-
+
@Override
public int getEnergyProduction() {
return 250;
}
+
+ }.registerChargeableBlock(true, 16384);
- @Override
- public ItemStack getProgressBar() {
- try {
- return CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTNhZDhlZTg0OWVkZjA0ZWQ5YTI2Y2EzMzQxZjYwMzNiZDc2ZGNjNDIzMWVkMWVhNjNiNzU2NTc1MWIyN2FjIn19fQ==");
- } catch (Exception e) {
- Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Progressbar of a Reactor for Slimefun " + Slimefun.getVersion());
- return new ItemStack(Material.BLAZE_POWDER);
- }
- }
-
- @Override
- public ItemStack getCoolant() {
- return SlimefunItems.REACTOR_COOLANT_CELL;
- }
-
- @Override
- public void extraTick(Location l) {
- // This machine does not need to perform anything while ticking
- // The Nether Star Reactor uses this method to generate the Wither Effect
- }
- }
- .registerChargeableBlock(true, 16384);
-
- new AReactor(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.NETHERSTAR_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
+ new NetherStarReactor(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.NETHERSTAR_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[]{SlimefunItems.BOOSTED_URANIUM, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BOOSTED_URANIUM, SlimefunItems.REINFORCED_PLATE, new ItemStack(Material.NETHER_STAR), SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT}){
- @Override
- public String getInventoryTitle() {
- return "&fNether Star Reactor";
- }
-
- @Override
- public void registerDefaultRecipes() {
- registerFuel(new MachineFuel(1800, new ItemStack(Material.NETHER_STAR)));
- }
-
@Override
public int getEnergyProduction() {
return 512;
}
- @Override
- public void extraTick(final Location l) {
- Slimefun.runSync(() -> {
- for (Entity entity : ReactorHologram.getArmorStand(l, true).getNearbyEntities(5, 5, 5)) {
- if (entity instanceof LivingEntity) {
- ((LivingEntity) entity).addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 60, 1));
- }
- }
- }, 0L);
- }
-
- @Override
- public ItemStack getCoolant() {
- return SlimefunItems.NETHER_ICE_COOLANT_CELL;
- }
-
- @Override
- public ItemStack getProgressBar() {
- return new ItemStack(Material.NETHER_STAR);
- }
-
}.registerChargeableBlock(true, 32768);
new SlimefunItem(Categories.CARGO, (SlimefunItemStack) SlimefunItems.CARGO_MOTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
@@ -3147,7 +3080,7 @@ public final class SlimefunSetup {
}.registerChargeableBlock(true, 256);
- new ReactorAccessPort(Categories.ELECTRICITY, SlimefunItems.REACTOR_ACCESS_PORT, "REACTOR_ACCESS_PORT", RecipeType.ENHANCED_CRAFTING_TABLE,
+ new ReactorAccessPort(Categories.CARGO, SlimefunItems.REACTOR_ACCESS_PORT, "REACTOR_ACCESS_PORT", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.LEAD_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.LEAD_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null})
.register(true);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunGuide.java
index 803f5daad..88aa8110e 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunGuide.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunGuide.java
@@ -12,11 +12,11 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.core.guide.BookSlimefunGuide;
import io.github.thebusybiscuit.slimefun4.core.guide.ChestSlimefunGuide;
import io.github.thebusybiscuit.slimefun4.core.guide.ISlimefunGuide;
import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuideLayout;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java b/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java
index 543ceca99..3de8b90d1 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java
@@ -8,6 +8,7 @@ import java.util.UUID;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
+import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
@@ -26,24 +27,25 @@ import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.util.Vector;
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.Slimefun;
-import me.mrCookieSlime.Slimefun.utils.Utilities;
public class AncientAltarListener implements Listener {
-
- private Utilities utilities;
+
+ private final Set altarsInUse = new HashSet<>();
private final List altars = new ArrayList<>();
private final Set removedItems = new HashSet<>();
public AncientAltarListener(SlimefunPlugin plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
-
- utilities = SlimefunPlugin.getUtilities();
+ }
+
+ public Set getAltarsInUse() {
+ return altarsInUse;
}
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
@@ -56,7 +58,7 @@ public class AncientAltarListener implements Listener {
if (item.equals("ANCIENT_PEDESTAL")) {
e.setCancelled(true);
- if (utilities.altarinuse.contains(b.getLocation())) {
+ if (altarsInUse.contains(b.getLocation())) {
return;
}
@@ -84,13 +86,13 @@ public class AncientAltarListener implements Listener {
}
}
else if (item.equals("ANCIENT_ALTAR")) {
- if (!Slimefun.hasUnlocked(e.getPlayer(), SlimefunItems.ANCIENT_ALTAR, true) || utilities.altarinuse.contains(b.getLocation())) {
+ if (!Slimefun.hasUnlocked(e.getPlayer(), SlimefunItems.ANCIENT_ALTAR, true) || altarsInUse.contains(b.getLocation())) {
e.setCancelled(true);
return;
}
// Make altarinuse simply because that was the last block clicked.
- utilities.altarinuse.add(b.getLocation());
+ altarsInUse.add(b.getLocation());
e.setCancelled(true);
ItemStack catalyst = new CustomItem(e.getPlayer().getInventory().getItemInMainHand(), 1);
@@ -99,7 +101,7 @@ public class AncientAltarListener implements Listener {
if (!altars.contains(e.getClickedBlock())) {
altars.add(e.getClickedBlock());
if (pedestals.size() == 8) {
- pedestals.forEach(block -> utilities.altarinuse.add(block.getLocation()));
+ pedestals.forEach(block -> altarsInUse.add(block.getLocation()));
if (catalyst.getType() != Material.AIR) {
List input = new ArrayList<>();
@@ -118,35 +120,35 @@ public class AncientAltarListener implements Listener {
ItemUtils.consumeItem(e.getPlayer().getInventory().getItemInMainHand(), false);
}
- Slimefun.runSync(new RitualAnimation(altars, b, b.getLocation().add(0.5, 1.3, 0.5), result, pedestals, consumed), 10L);
+ Slimefun.runSync(new RitualAnimation(this, altars, b, b.getLocation().add(0.5, 1.3, 0.5), result, pedestals, consumed), 10L);
}
else {
altars.remove(e.getClickedBlock());
- pedestals.forEach(block -> utilities.altarinuse.remove(block.getLocation()));
+ pedestals.forEach(block -> altarsInUse.remove(block.getLocation()));
// Item not unlocked, no longer in use.
- utilities.altarinuse.remove(b.getLocation());
+ altarsInUse.remove(b.getLocation());
}
}
else {
altars.remove(e.getClickedBlock());
SlimefunPlugin.getLocal().sendMessage(e.getPlayer(), "machines.ANCIENT_ALTAR.unknown-recipe", true);
- pedestals.forEach(block -> utilities.altarinuse.remove(block.getLocation()));
+ pedestals.forEach(block -> altarsInUse.remove(block.getLocation()));
// Bad recipe, no longer in use.
- utilities.altarinuse.remove(b.getLocation());
+ altarsInUse.remove(b.getLocation());
}
}
else {
altars.remove(e.getClickedBlock());
SlimefunPlugin.getLocal().sendMessage(e.getPlayer(), "machines.ANCIENT_ALTAR.unknown-catalyst", true);
- pedestals.forEach(block -> utilities.altarinuse.remove(block.getLocation()));
+ pedestals.forEach(block -> altarsInUse.remove(block.getLocation()));
// Unknown catalyst, no longer in use
- utilities.altarinuse.remove(b.getLocation());
+ altarsInUse.remove(b.getLocation());
}
}
else {
@@ -154,7 +156,7 @@ public class AncientAltarListener implements Listener {
SlimefunPlugin.getLocal().sendMessage(e.getPlayer(), "machines.ANCIENT_ALTAR.not-enough-pedestals", true, msg -> msg.replace("%pedestals%", String.valueOf(pedestals.size())));
// Not a valid altar so remove from inuse
- utilities.altarinuse.remove(b.getLocation());
+ altarsInUse.remove(b.getLocation());
}
}
}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java b/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java
index 177cbcb67..e803c422f 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java
@@ -1,14 +1,10 @@
package me.mrCookieSlime.Slimefun.ancient_altar;
-import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.logging.Level;
-
-import me.mrCookieSlime.Slimefun.SlimefunPlugin;
-import me.mrCookieSlime.Slimefun.api.Slimefun;
-import me.mrCookieSlime.Slimefun.utils.Utilities;
import org.bukkit.Effect;
import org.bukkit.Location;
@@ -19,32 +15,36 @@ import org.bukkit.block.Block;
import org.bukkit.entity.Item;
import org.bukkit.inventory.ItemStack;
+import me.mrCookieSlime.Slimefun.SlimefunPlugin;
+import me.mrCookieSlime.Slimefun.api.Slimefun;
+
public class RitualAnimation implements Runnable {
+
+ private final AncientAltarListener listener;
- private List altars;
+ private final List altars;
- private Block altar;
- private Location l;
- private ItemStack output;
- private List pedestals;
- private List items;
+ private final Block altar;
+ private final Location dropLocation;
+ private final ItemStack output;
+ private final List pedestals;
+ private final List items;
- private List particles;
- private Map- itemLock = new HashMap<>();
+ private final Collection particleLocations = new LinkedList<>();
+ private final Map
- itemLock = new HashMap<>();
private boolean running;
private int stage;
-
- private Utilities utilities = SlimefunPlugin.getUtilities();
- public RitualAnimation(List altars, Block altar, Location drop, ItemStack output, List pedestals, List items) {
- this.l = drop;
+ public RitualAnimation(AncientAltarListener listener, List altars, Block altar, Location drop, ItemStack output, List pedestals, List items) {
+ this.listener = listener;
+
+ this.dropLocation = drop;
this.altar = altar;
this.altars = altars;
this.output = output;
this.pedestals = pedestals;
this.items = items;
- this.particles = new ArrayList<>();
this.running = true;
this.stage = 0;
@@ -74,7 +74,7 @@ public class RitualAnimation implements Runnable {
}
this.stage += 1;
- SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, this, 8);
+ Slimefun.runSync(this, 8);
}
private boolean checkLockedItems() {
@@ -88,16 +88,12 @@ public class RitualAnimation implements Runnable {
}
private void idle() {
- try {
- l.getWorld().spawnParticle(Particle.SPELL_WITCH, l,16, 1.2F, 0F, 1.2F);
- l.getWorld().spawnParticle(Particle.FIREWORKS_SPARK,l,8, 0.2F, 0F, 0.2F);
-
- for (Location l2 : particles) {
- l.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, l2,16, 0.3F, 0.2F, 0.3F);
- l.getWorld().spawnParticle(Particle.CRIT_MAGIC,l2,8, 0.3F, 0.2F, 0.3F);
- }
- } catch (Exception x) {
- Slimefun.getLogger().log(Level.SEVERE, "An Error occured while playing Ritual Animation for Slimefun " + Slimefun.getVersion(), x);
+ dropLocation.getWorld().spawnParticle(Particle.SPELL_WITCH, dropLocation,16, 1.2F, 0F, 1.2F);
+ dropLocation.getWorld().spawnParticle(Particle.FIREWORKS_SPARK,dropLocation,8, 0.2F, 0F, 0.2F);
+
+ for (Location loc : particleLocations) {
+ dropLocation.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, loc,16, 0.3F, 0.2F, 0.3F);
+ dropLocation.getWorld().spawnParticle(Particle.CRIT_MAGIC,loc,8, 0.3F, 0.2F, 0.3F);
}
}
@@ -108,16 +104,12 @@ public class RitualAnimation implements Runnable {
abort();
}
else {
- particles.add(pedestal.getLocation().add(0.5, 1.5, 0.5));
+ particleLocations.add(pedestal.getLocation().add(0.5, 1.5, 0.5));
items.add(AncientAltarListener.fixItemStack(item.getItemStack(), item.getCustomName()));
pedestal.getWorld().playSound(pedestal.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1F, 2F);
- try {
- l.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE,pedestal.getLocation().add(0.5, 1.5, 0.5),16, 0.3F, 0.2F, 0.3F);
- l.getWorld().spawnParticle(Particle.CRIT_MAGIC,pedestal.getLocation().add(0.5, 1.5, 0.5), 8,0.3F, 0.2F, 0.3F);
- } catch (Exception x) {
- Slimefun.getLogger().log(Level.SEVERE, "An Error occured while playing Pedestal Animation for Slimefun " + Slimefun.getVersion(), x);
- }
+ dropLocation.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE,pedestal.getLocation().add(0.5, 1.5, 0.5), 16, 0.3F, 0.2F, 0.3F);
+ dropLocation.getWorld().spawnParticle(Particle.CRIT_MAGIC,pedestal.getLocation().add(0.5, 1.5, 0.5), 8, 0.3F, 0.2F, 0.3F);
itemLock.remove(item);
item.remove();
@@ -128,29 +120,29 @@ public class RitualAnimation implements Runnable {
private void abort() {
running = false;
- pedestals.forEach(b -> utilities.altarinuse.remove(b.getLocation()));
+ pedestals.forEach(b -> listener.getAltarsInUse().remove(b.getLocation()));
// This should re-enable altar blocks on craft failure.
- utilities.altarinuse.remove(altar.getLocation());
- l.getWorld().playSound(l, Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR, 1F, 1F);
+ listener.getAltarsInUse().remove(altar.getLocation());
+ dropLocation.getWorld().playSound(dropLocation, Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR, 1F, 1F);
itemLock.clear();
altars.remove(altar);
}
private void finish() {
if (running) {
- l.getWorld().playSound(l, Sound.ENTITY_ZOMBIE_VILLAGER_CURE, 1F, 1F);
- l.getWorld().playEffect(l, Effect.STEP_SOUND, Material.EMERALD_BLOCK);
- l.getWorld().dropItemNaturally(l.add(0, -0.5, 0), output);
+ dropLocation.getWorld().playSound(dropLocation, Sound.ENTITY_ZOMBIE_VILLAGER_CURE, 1F, 1F);
+ dropLocation.getWorld().playEffect(dropLocation, Effect.STEP_SOUND, Material.EMERALD_BLOCK);
+ dropLocation.getWorld().dropItemNaturally(dropLocation.add(0, -0.5, 0), output);
- pedestals.forEach(b -> utilities.altarinuse.remove(b.getLocation()));
+ pedestals.forEach(b -> listener.getAltarsInUse().remove(b.getLocation()));
// This should re-enable altar blocks on craft completion.
- utilities.altarinuse.remove(altar.getLocation());
+ listener.getAltarsInUse().remove(altar.getLocation());
altars.remove(altar);
}
else {
- l.getWorld().playSound(l, Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, 1F, 1F);
+ dropLocation.getWorld().playSound(dropLocation, Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, 1F, 1F);
}
}
}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java
index 6f157c157..e73f10cde 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java
@@ -1,15 +1,12 @@
package me.mrCookieSlime.Slimefun.api.energy;
-import java.util.logging.Level;
-
-import org.bukkit.Bukkit;
import org.bukkit.Location;
+import org.bukkit.Material;
import org.bukkit.block.Block;
-import org.bukkit.block.Skull;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
+import io.github.thebusybiscuit.cscorelib2.skull.SkullBlock;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
-import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.Slimefun;
@@ -98,19 +95,16 @@ public final class ChargableBlock {
}
private static void updateTexture(final Location l) {
- Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
- try {
- Block b = l.getBlock();
- int charge = getCharge(b);
- int capacity = getMaxCharge(b);
- if (b.getState() instanceof Skull) {
- if (charge < (int) (capacity * 0.25D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ==");
- else if (charge < (int) (capacity * 0.5D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzA1MzIzMzk0YTdkOTFiZmIzM2RmMDZkOTJiNjNjYjQxNGVmODBmMDU0ZDA0NzM0ZWEwMTVhMjNjNTM5In19fQ==");
- else if (charge < (int) (capacity * 0.75D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19");
- else CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2EyNTY5NDE1YzE0ZTMxYzk4ZWM5OTNhMmY5OWU2ZDY0ODQ2ZGIzNjdhMTNiMTk5OTY1YWQ5OWM0MzhjODZjIn19fQ==");
- }
- } catch (Exception x) {
- Slimefun.getLogger().log(Level.SEVERE, "An Error occured while updating a Capacitor Texture for Slimefun " + Slimefun.getVersion(), x);
+ Slimefun.runSync(() -> {
+ Block b = l.getBlock();
+ int charge = getCharge(b);
+ int capacity = getMaxCharge(b);
+
+ if (b.getType() == Material.PLAYER_HEAD || b.getType() == Material.PLAYER_WALL_HEAD) {
+ if (charge < (int) (capacity * 0.25D)) SkullBlock.setFromBase64(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ==");
+ else if (charge < (int) (capacity * 0.5D)) SkullBlock.setFromBase64(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzA1MzIzMzk0YTdkOTFiZmIzM2RmMDZkOTJiNjNjYjQxNGVmODBmMDU0ZDA0NzM0ZWEwMTVhMjNjNTM5In19fQ==");
+ else if (charge < (int) (capacity * 0.75D)) SkullBlock.setFromBase64(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19");
+ else SkullBlock.setFromBase64(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2EyNTY5NDE1YzE0ZTMxYzk4ZWM5OTNhMmY5OWU2ZDY0ODQ2ZGIzNjdhMTNiMTk5OTY1YWQ5OWM0MzhjODZjIn19fQ==");
}
});
}
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/DirtyChestMenu.java b/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/DirtyChestMenu.java
index 739267da6..718558a3c 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/DirtyChestMenu.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/DirtyChestMenu.java
@@ -9,8 +9,8 @@ import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils;
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
+import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
public class DirtyChestMenu extends ChestMenu {
@@ -92,6 +92,19 @@ public class DirtyChestMenu extends ChestMenu {
}
}
+ public void consumeItem(int slot) {
+ consumeItem(slot, 1);
+ }
+
+ public void consumeItem(int slot, int amount) {
+ consumeItem(slot, amount, false);
+ }
+
+ public void consumeItem(int slot, int amount, boolean replaceConsumables) {
+ ItemUtils.consumeItem(getItemInSlot(slot), amount, replaceConsumables);
+ markDirty();
+ }
+
@Override
public void replaceExistingItem(int slot, ItemStack item) {
this.replaceExistingItem(slot, item, true);
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/ItemListener.java
index 7637e20ba..94a46d039 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/listeners/ItemListener.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/listeners/ItemListener.java
@@ -209,7 +209,7 @@ public class ItemListener implements Listener {
return;
}
- final Player p = e.getPlayer();
+ Player p = e.getPlayer();
ItemStack item = e.getItem();
if (SlimefunManager.isItemSimilar(item, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true)) {
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/ToolListener.java
index ab3d36dfe..6078dd29f 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/listeners/ToolListener.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/listeners/ToolListener.java
@@ -27,8 +27,8 @@ import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
+import io.github.thebusybiscuit.slimefun4.core.utils.FireworkUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
-import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
@@ -148,7 +148,7 @@ public class ToolListener implements Listener {
ItemUtils.consumeItem(item, false);
}
- FireworkShow.launchRandom(e.getPlayer(), 3);
+ FireworkUtils.launchRandom(e.getPlayer(), 3);
List gifts = new ArrayList<>();
gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_HOT_CHOCOLATE, 1));
diff --git a/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java
index ae5bced21..c469570fb 100644
--- a/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java
+++ b/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java
@@ -110,7 +110,6 @@ public final class Utilities {
public final Map enchanting = new HashMap<>();
public final Map backpack = new HashMap<>();
- public final Set altarinuse = new HashSet<>();
public final Set altarRecipes = new HashSet<>();
public final Map> soulbound = new HashMap<>();