mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Merge branch 'master' into master
This commit is contained in:
commit
0cd5e79ddd
2
pom.xml
2
pom.xml
@ -123,7 +123,7 @@
|
||||
<dependency>
|
||||
<groupId>com.github.thebusybiscuit</groupId>
|
||||
<artifactId>CS-CoreLib2</artifactId>
|
||||
<version>0.3.8</version>
|
||||
<version>0.3.9</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -1,25 +1,27 @@
|
||||
package me.mrCookieSlime.Slimefun.GEO;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public final class OreGenSystem {
|
||||
|
||||
private OreGenSystem() {}
|
||||
|
||||
public static Collection<OreGenResource> listResources() {
|
||||
return SlimefunStartup.instance.getUtilities().resources.values();
|
||||
return SlimefunPlugin.getUtilities().resources.values();
|
||||
}
|
||||
|
||||
public static void registerResource(OreGenResource resource) {
|
||||
SlimefunStartup.instance.getUtilities().resources.put(resource.getName(), resource);
|
||||
System.out.println("[Slimefun - GEO] Registering Ore Gen: " + resource.getName());
|
||||
SlimefunPlugin.getUtilities().resources.put(resource.getName(), resource);
|
||||
Slimefun.getLogger().log(Level.INFO, "Registering Ore Gen: " + resource.getName());
|
||||
|
||||
Config cfg = new Config("plugins/Slimefun/generators/" + resource.getName() + ".cfg");
|
||||
for (Biome biome: Biome.values()) {
|
||||
@ -29,7 +31,7 @@ public final class OreGenSystem {
|
||||
}
|
||||
|
||||
public static OreGenResource getResource(String name) {
|
||||
return SlimefunStartup.instance.getUtilities().resources.get(name);
|
||||
return SlimefunPlugin.getUtilities().resources.get(name);
|
||||
}
|
||||
|
||||
private static int getDefault(OreGenResource resource, Biome biome) {
|
||||
|
@ -15,7 +15,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.CustomBookOverlay;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
|
||||
@ -35,7 +35,7 @@ public final class Elevator {
|
||||
pl.sendMessage("");
|
||||
|
||||
MenuHelper.awaitChatInput(pl, (player, message) -> {
|
||||
BlockStorage.addBlockInfo(b, "floor", message.replaceAll("&", "&"));
|
||||
BlockStorage.addBlockInfo(b, "floor", message.replace(ChatColor.COLOR_CHAR, '&'));
|
||||
|
||||
player.sendMessage("");
|
||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &eSuccessfully named this Floor:"));
|
||||
@ -53,7 +53,7 @@ public final class Elevator {
|
||||
}
|
||||
|
||||
public static void openDialogue(Player p, Block b) {
|
||||
Set<UUID> elevatorUsers = SlimefunStartup.instance.getUtilities().elevatorUsers;
|
||||
Set<UUID> elevatorUsers = SlimefunPlugin.getUtilities().elevatorUsers;
|
||||
|
||||
if (elevatorUsers.contains(p.getUniqueId())) {
|
||||
elevatorUsers.remove(p.getUniqueId());
|
||||
|
@ -5,6 +5,7 @@ import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -24,7 +25,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.GEO.OreGenResource;
|
||||
import me.mrCookieSlime.Slimefun.GEO.OreGenSystem;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
@ -69,7 +70,7 @@ public class GPSNetwork {
|
||||
else return transmitters.get(uuid).size();
|
||||
}
|
||||
|
||||
public void openTransmitterControlPanel(Player p) throws Exception {
|
||||
public void openTransmitterControlPanel(Player p) {
|
||||
ChestMenu menu = new ChestMenu("&9Control Panel");
|
||||
|
||||
for (int slot : border) {
|
||||
@ -78,6 +79,7 @@ public class GPSNetwork {
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &e(Selected)"));
|
||||
menu.addMenuClickHandler(2,
|
||||
(pl, slot, item, action) -> false
|
||||
@ -90,11 +92,7 @@ public class GPSNetwork {
|
||||
|
||||
menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &r(Select)"));
|
||||
menu.addMenuClickHandler(6, (pl, slot, item, action) -> {
|
||||
try {
|
||||
openWaypointControlPanel(pl);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
@ -104,12 +102,13 @@ public class GPSNetwork {
|
||||
int slot = inventory[index];
|
||||
|
||||
menu.addItem(slot, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS Transmitter", "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &r" + l.getBlockY(), "&8\u21E8 &7Ping: &r" + DoubleHandler.fixDouble(1000D / l.getY()) + "ms"));
|
||||
menu.addMenuClickHandler(slot,
|
||||
(pl, slotn, item, action) -> false
|
||||
);
|
||||
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> false);
|
||||
|
||||
index++;
|
||||
}
|
||||
} catch(Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the GPS Transmitter Panel for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
menu.open(p);
|
||||
}
|
||||
@ -131,22 +130,17 @@ public class GPSNetwork {
|
||||
}
|
||||
}
|
||||
|
||||
public void openWaypointControlPanel(Player p) throws Exception {
|
||||
public void openWaypointControlPanel(Player p) {
|
||||
ChestMenu menu = new ChestMenu("&9Control Panel");
|
||||
|
||||
for (int slot: border) {
|
||||
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
|
||||
(pl, slotn, item, action) -> false
|
||||
);
|
||||
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (pl, slotn, item, action) -> false);
|
||||
}
|
||||
|
||||
try {
|
||||
menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &r(Select)"));
|
||||
menu.addMenuClickHandler(2, (pl, slot, item, action) -> {
|
||||
try {
|
||||
openTransmitterControlPanel(pl);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
@ -171,16 +165,17 @@ public class GPSNetwork {
|
||||
cfg.setValue(id, null);
|
||||
cfg.save();
|
||||
pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
||||
try {
|
||||
|
||||
openWaypointControlPanel(pl);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
index++;
|
||||
}
|
||||
}
|
||||
catch(Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the GPS Waypoint Panel for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
menu.open(p);
|
||||
}
|
||||
@ -239,24 +234,22 @@ public class GPSNetwork {
|
||||
for (OreGenResource resource: OreGenSystem.listResources()) {
|
||||
int supply = OreGenSystem.getSupplies(resource, chunk, true);
|
||||
|
||||
menu.addItem(index, new CustomItem(resource.getIcon(), "&7Resource: &e" + resource.getName(), "", "&7Scanned Chunk:", "&8\u21E8 &7X: " + chunk.getX() + " Z: " + chunk.getZ(), "", "&7Result: &e" + supply + " " + resource.getMeasurementUnit()),
|
||||
(pl, slot, item, action) -> false
|
||||
);
|
||||
menu.addItem(index, new CustomItem(resource.getIcon(), "&7Resource: &e" + resource.getName(), "", "&7Scanned Chunk:", "&8\u21E8 &7X: " + chunk.getX() + " Z: " + chunk.getZ(), "", "&7Result: &e" + supply + " " + resource.getMeasurementUnit()), (pl, slot, item, action) -> false);
|
||||
index++;
|
||||
}
|
||||
|
||||
menu.open(p);
|
||||
}
|
||||
|
||||
public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) throws Exception {
|
||||
if (SlimefunStartup.instance.getUtilities().teleporterUsers.contains(p.getUniqueId())) return;
|
||||
public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) {
|
||||
if (SlimefunPlugin.getUtilities().teleporterUsers.contains(p.getUniqueId())) return;
|
||||
|
||||
p.playSound(p.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
||||
SlimefunStartup.instance.getUtilities().teleporterUsers.add(p.getUniqueId());
|
||||
SlimefunPlugin.getUtilities().teleporterUsers.add(p.getUniqueId());
|
||||
|
||||
ChestMenu menu = new ChestMenu("&3Teleporter");
|
||||
|
||||
menu.addMenuCloseHandler(pl -> SlimefunStartup.instance.getUtilities().teleporterUsers.remove(pl.getUniqueId()));
|
||||
menu.addMenuCloseHandler(pl -> SlimefunPlugin.getUtilities().teleporterUsers.remove(pl.getUniqueId()));
|
||||
|
||||
for (int slot : teleporter_border) {
|
||||
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
|
||||
@ -264,6 +257,7 @@ public class GPSNetwork {
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Select a Destination)"));
|
||||
menu.addMenuClickHandler(4, (pl, slot, item, action) -> false);
|
||||
|
||||
@ -285,6 +279,10 @@ public class GPSNetwork {
|
||||
|
||||
index++;
|
||||
}
|
||||
}
|
||||
catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Teleporter Menu for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
menu.open(p);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package me.mrCookieSlime.Slimefun.GPS;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -13,14 +14,15 @@ import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public final class TeleportationSequence {
|
||||
|
||||
private TeleportationSequence() {}
|
||||
|
||||
public static void start(UUID uuid, int complexity, Location source, Location destination, boolean resistance) {
|
||||
SlimefunStartup.instance.getUtilities().teleporterUsers.add(uuid);
|
||||
SlimefunPlugin.getUtilities().teleporterUsers.add(uuid);
|
||||
|
||||
updateProgress(uuid, getSpeed(complexity, source, destination), 1, source, destination, resistance);
|
||||
}
|
||||
@ -48,7 +50,7 @@ public final class TeleportationSequence {
|
||||
}
|
||||
|
||||
private static void cancel(UUID uuid, Player p) {
|
||||
SlimefunStartup.instance.getUtilities().teleporterUsers.remove(uuid);
|
||||
SlimefunPlugin.getUtilities().teleporterUsers.remove(uuid);
|
||||
|
||||
if (p != null) {
|
||||
try {
|
||||
@ -58,7 +60,7 @@ public final class TeleportationSequence {
|
||||
title.send(TitleType.TITLE, p);
|
||||
subtitle.send(TitleType.SUBTITLE, p);
|
||||
} catch(Exception x) {
|
||||
x.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while cancelling a Teleportation Sequence for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -83,7 +85,7 @@ public final class TeleportationSequence {
|
||||
|
||||
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.ENTITY_BLAZE_DEATH, 2F, 1.4F);
|
||||
SlimefunStartup.instance.getUtilities().teleporterUsers.remove(uuid);
|
||||
SlimefunPlugin.getUtilities().teleporterUsers.remove(uuid);
|
||||
}
|
||||
else {
|
||||
TitleBuilder title = (TitleBuilder) new TitleBuilder(0, 60, 0).addText(ChatColor.translateAlternateColorCodes('&', "&3Teleporting..."));
|
||||
@ -95,10 +97,10 @@ public final class TeleportationSequence {
|
||||
source.getWorld().spawnParticle(Particle.PORTAL, source, progress * 2, 0.2F, 0.8F, 0.2F);
|
||||
source.getWorld().playSound(source, Sound.UI_BUTTON_CLICK, 1.7F, 0.6F);
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> updateProgress(uuid, speed, progress + speed, source, destination, resistance), 10L);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> updateProgress(uuid, speed, progress + speed, source, destination, resistance), 10L);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured during a Teleportation Sequence for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
else cancel(uuid, p);
|
||||
|
@ -1,5 +1,7 @@
|
||||
package me.mrCookieSlime.Slimefun.Lists;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -10,6 +12,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
/**
|
||||
* Built-in categories.
|
||||
@ -22,24 +25,26 @@ public final class Categories {
|
||||
|
||||
private Categories() {}
|
||||
|
||||
public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", "&a> Click to open"), 1);
|
||||
public static final Category PORTABLE = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", "&a> Click to open"), 1);
|
||||
public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", "&a> Click to open"), 2);
|
||||
public static final Category MACHINES_1 = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", "&a> Click to open"), 1);
|
||||
public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", "&a> Click to open"), 4, MACHINES_1);
|
||||
public static final LockedCategory GPS = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", "&a> Click to open"), 4, MACHINES_1);
|
||||
public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", "&a> Click to open"), 2);
|
||||
public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(SlimefunItems.RUNE_ENDER, "&7Magical Items", "", "&a> Click to open"), 2);
|
||||
public static final Category MAGIC = new Category(new CustomItem(SlimefunItems.ENDER_BACKPACK, "&7Magical Gadgets", "", "&a> Click to open"), 3);
|
||||
public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", "&a> Click to open"), 2);
|
||||
public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", "&a> Click to open"), Color.SILVER), 3);
|
||||
public static final Category RESOURCES = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", "&a> Click to open"), 1);
|
||||
public static final Category CARGO = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", "&a> Click to open"), 4, MACHINES_1);
|
||||
public static final Category TECH_MISC = new Category(new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components", "", "&a> Click to open"), 2);
|
||||
public static final Category MAGIC_ARMOR = new Category(new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor", "", "&a> Click to open"), 2);
|
||||
public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", "&a> Click to open"), 2);
|
||||
public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", "&a> Click to open"), 3, TALISMANS_1);
|
||||
public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", "&a> Click to open"), 1);
|
||||
private static final String lore = "&a> Click to open";
|
||||
|
||||
public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", lore), 1);
|
||||
public static final Category PORTABLE = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", lore), 1);
|
||||
public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", lore), 2);
|
||||
public static final Category MACHINES_1 = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", lore), 1);
|
||||
public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", lore), 4, MACHINES_1);
|
||||
public static final LockedCategory GPS = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", lore), 4, MACHINES_1);
|
||||
public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", lore), 2);
|
||||
public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(SlimefunItems.RUNE_ENDER, "&7Magical Items", "", lore), 2);
|
||||
public static final Category MAGIC = new Category(new CustomItem(SlimefunItems.ENDER_BACKPACK, "&7Magical Gadgets", "", lore), 3);
|
||||
public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", lore), 2);
|
||||
public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", lore), Color.SILVER), 3);
|
||||
public static final Category RESOURCES = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", lore), 1);
|
||||
public static final Category CARGO = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", lore), 4, MACHINES_1);
|
||||
public static final Category TECH_MISC = new Category(new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components", "", lore), 2);
|
||||
public static final Category MAGIC_ARMOR = new Category(new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor", "", lore), 2);
|
||||
public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", lore), 2);
|
||||
public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", lore), 3, TALISMANS_1);
|
||||
public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", lore), 1);
|
||||
public static final SeasonalCategory CHRISTMAS = new SeasonalCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta"));
|
||||
public static final SeasonalCategory VALENTINES_DAY = new SeasonalCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love"));
|
||||
public static final SeasonalCategory EASTER = new SeasonalCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs"));
|
||||
@ -50,7 +55,7 @@ public final class Categories {
|
||||
return CustomSkull.getItem(texture);
|
||||
}
|
||||
catch(Exception x) {
|
||||
x.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while initializing the Categories for Slimefun " + Slimefun.getVersion(), x);
|
||||
|
||||
return new ItemStack(Material.PLAYER_HEAD);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.Lists;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Color;
|
||||
@ -19,6 +20,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomPotion;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.String.Christmas;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public final class SlimefunItems {
|
||||
|
||||
@ -773,7 +775,7 @@ public final class SlimefunItems {
|
||||
return CustomSkull.getItem(texture);
|
||||
}
|
||||
catch(Exception x) {
|
||||
x.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while initializing the Items for Slimefun " + Slimefun.getVersion(), x);
|
||||
|
||||
return new ItemStack(Material.PLAYER_HEAD);
|
||||
}
|
||||
|
@ -1,9 +0,0 @@
|
||||
package me.mrCookieSlime.Slimefun.Misc;
|
||||
|
||||
public enum BookDesign {
|
||||
|
||||
BOOK,
|
||||
CHEST,
|
||||
CHEAT_SHEET;
|
||||
|
||||
}
|
@ -7,9 +7,9 @@ import java.util.List;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
/**
|
||||
* Statically handles categories.
|
||||
@ -76,11 +76,11 @@ public class Category {
|
||||
Collections.sort(list, new CategorySorter());
|
||||
|
||||
if (this instanceof SeasonalCategory) {
|
||||
if (((SeasonalCategory) this).isUnlocked()) Slimefun.current_categories.add(this);
|
||||
if (((SeasonalCategory) this).isUnlocked()) SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this);
|
||||
}
|
||||
else Slimefun.current_categories.add(this);
|
||||
else SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this);
|
||||
|
||||
Collections.sort(Slimefun.current_categories, new CategorySorter());
|
||||
Collections.sort(SlimefunPlugin.getUtilities().currentlyEnabledCategories, new CategorySorter());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -38,40 +38,38 @@ public class MultiBlock {
|
||||
}
|
||||
|
||||
public boolean isMultiBlock(SlimefunItem machine) {
|
||||
if (machine == null) return false;
|
||||
else if (!(machine instanceof SlimefunMachine)) return false;
|
||||
else if (machine instanceof SlimefunMachine) {
|
||||
MultiBlock mb = ((SlimefunMachine) machine).toMultiBlock();
|
||||
if (trigger == mb.getTriggerBlock()) {
|
||||
for (int i = 0; i < mb.getBuild().length; i++) {
|
||||
if (mb.getBuild()[i] != null) {
|
||||
if (MaterialHelper.isLog( mb.getBuild()[i])) {
|
||||
if (!MaterialHelper.isLog(blocks[i])) return false;
|
||||
}
|
||||
else if (mb.getBuild()[i] != blocks[i]) return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
if (machine instanceof SlimefunMachine) {
|
||||
return isMultiBlock(((SlimefunMachine) machine).toMultiBlock());
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public boolean isMultiBlock(MultiBlock mb) {
|
||||
if (mb == null) return false;
|
||||
else if (trigger == mb.getTriggerBlock()) {
|
||||
|
||||
if (trigger == mb.getTriggerBlock()) {
|
||||
for (int i = 0; i < mb.getBuild().length; i++) {
|
||||
if (mb.getBuild()[i] != null) {
|
||||
if (MaterialHelper.isLog(mb.getBuild()[i])) {
|
||||
if (!MaterialHelper.isLog(blocks[i])) return false;
|
||||
}
|
||||
else if (mb.getBuild()[i] != blocks[i]) return false;
|
||||
}
|
||||
if (!compareBlocks(blocks[i], mb.getBuild()[i])) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean compareBlocks(Material a, Material b) {
|
||||
if (b != null) {
|
||||
if (MaterialHelper.isLog(b)) {
|
||||
return MaterialHelper.isLog(a);
|
||||
}
|
||||
|
||||
if (b != a) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -17,7 +18,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Variable;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Events.ResearchUnlockEvent;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
@ -80,7 +81,7 @@ public class Research {
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return SlimefunStartup.instance.getSettings().RESEARCHES_ENABLED && enabled;
|
||||
return SlimefunPlugin.getSettings().researchesEnabled && enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -214,7 +215,7 @@ public class Research {
|
||||
*/
|
||||
public boolean canUnlock(Player p) {
|
||||
if (!isEnabled()) return true;
|
||||
return (p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE) || p.getLevel() >= this.cost;
|
||||
return (p.getGameMode() == GameMode.CREATIVE && SlimefunPlugin.getSettings().researchesFreeInCreative) || p.getLevel() >= this.cost;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -247,29 +248,29 @@ public class Research {
|
||||
PlayerProfile.fromUUID(p.getUniqueId()).setResearched(this, true);
|
||||
Messages.local.sendTranslation(p, "messages.unlocked", true, new Variable("%research%", getName()));
|
||||
|
||||
if (SlimefunStartup.getCfg().getBoolean("options.research-unlock-fireworks")) {
|
||||
if (SlimefunPlugin.getCfg().getBoolean("options.research-unlock-fireworks")) {
|
||||
FireworkShow.launchRandom(p, 1);
|
||||
}
|
||||
};
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
if (instant) runnable.run();
|
||||
else if (!SlimefunStartup.instance.getUtilities().researching.contains(p.getUniqueId())){
|
||||
SlimefunStartup.instance.getUtilities().researching.add(p.getUniqueId());
|
||||
else if (!SlimefunPlugin.getUtilities().researching.contains(p.getUniqueId())){
|
||||
SlimefunPlugin.getUtilities().researching.add(p.getUniqueId());
|
||||
Messages.local.sendTranslation(p, "messages.research.start", true, new Variable("%research%", getName()));
|
||||
|
||||
for (int i = 1; i < research_progress.length + 1; i++) {
|
||||
int j = i;
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 1F);
|
||||
Messages.local.sendTranslation(p, "messages.research.progress", true, new Variable("%research%", getName()), new Variable("%progress%", research_progress[j - 1] + "%"));
|
||||
}, i * 20L);
|
||||
}
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
runnable.run();
|
||||
SlimefunStartup.instance.getUtilities().researching.remove(p.getUniqueId());
|
||||
SlimefunPlugin.getUtilities().researching.remove(p.getUniqueId());
|
||||
}, (research_progress.length + 1) * 20L);
|
||||
}
|
||||
}
|
||||
@ -282,9 +283,9 @@ public class Research {
|
||||
* @since 4.0
|
||||
*/
|
||||
public void register() {
|
||||
SlimefunStartup.getResearchCfg().setDefaultValue("enable-researching", true);
|
||||
SlimefunPlugin.getResearchCfg().setDefaultValue("enable-researching", true);
|
||||
|
||||
if (SlimefunStartup.getResearchCfg().contains(this.getID() + ".enabled") && !SlimefunStartup.getResearchCfg().getBoolean(this.getID() + ".enabled")) {
|
||||
if (SlimefunPlugin.getResearchCfg().contains(this.getID() + ".enabled") && !SlimefunPlugin.getResearchCfg().getBoolean(this.getID() + ".enabled")) {
|
||||
Iterator<SlimefunItem> iterator = items.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
SlimefunItem item = iterator.next();
|
||||
@ -294,16 +295,18 @@ public class Research {
|
||||
return;
|
||||
}
|
||||
|
||||
SlimefunStartup.getResearchCfg().setDefaultValue(this.getID() + ".name", this.getName());
|
||||
SlimefunStartup.getResearchCfg().setDefaultValue(this.getID() + ".cost", this.getCost());
|
||||
SlimefunStartup.getResearchCfg().setDefaultValue(this.getID() + ".enabled", true);
|
||||
SlimefunPlugin.getResearchCfg().setDefaultValue(this.getID() + ".name", this.getName());
|
||||
SlimefunPlugin.getResearchCfg().setDefaultValue(this.getID() + ".cost", this.getCost());
|
||||
SlimefunPlugin.getResearchCfg().setDefaultValue(this.getID() + ".enabled", true);
|
||||
|
||||
this.name = SlimefunStartup.getResearchCfg().getString(this.getID() + ".name");
|
||||
this.cost = SlimefunStartup.getResearchCfg().getInt(this.getID() + ".cost");
|
||||
this.enabled = SlimefunStartup.getResearchCfg().getBoolean(this.getID() + ".enabled");
|
||||
this.name = SlimefunPlugin.getResearchCfg().getString(this.getID() + ".name");
|
||||
this.cost = SlimefunPlugin.getResearchCfg().getInt(this.getID() + ".cost");
|
||||
this.enabled = SlimefunPlugin.getResearchCfg().getBoolean(this.getID() + ".enabled");
|
||||
|
||||
list.add(this);
|
||||
if (SlimefunStartup.getCfg().getBoolean("options.print-out-loading")) System.out.println("[Slimefun] Loaded Research \"" + this.getName() + "\"");
|
||||
if (SlimefunPlugin.getSettings().printOutLoading) {
|
||||
Slimefun.getLogger().log(Level.INFO, "Loaded Research \"" + this.getName() + "\"");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -327,7 +330,7 @@ public class Research {
|
||||
* @since 4.0
|
||||
*/
|
||||
public static boolean isResearching(Player p) {
|
||||
return SlimefunStartup.instance.getUtilities().researching.contains(p.getUniqueId());
|
||||
return SlimefunPlugin.getUtilities().researching.contains(p.getUniqueId());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -7,6 +7,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -15,7 +16,7 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
@ -29,7 +30,7 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyNet;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyNet.NetworkComponent;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponent;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
|
||||
@ -37,7 +38,7 @@ public class SlimefunItem {
|
||||
|
||||
public static List<SlimefunItem> items = new ArrayList<>();
|
||||
|
||||
public static Map<String, SlimefunItem> map_id = new HashMap<>();
|
||||
public static Map<String, SlimefunItem> mapID = new HashMap<>();
|
||||
public static List<ItemStack> radioactive = new ArrayList<>();
|
||||
public static Set<String> tickers = new HashSet<>();
|
||||
|
||||
@ -67,6 +68,7 @@ public class SlimefunItem {
|
||||
private EnergyTicker energyTicker;
|
||||
private String[] keys = null;
|
||||
private Object[] values = null;
|
||||
private String wiki = null;
|
||||
|
||||
/**
|
||||
* Defines whether a SlimefunItem is enabled, disabled or fall-back to its vanilla behavior.
|
||||
@ -209,46 +211,46 @@ public class SlimefunItem {
|
||||
public void register(boolean slimefun) {
|
||||
this.addon = !slimefun;
|
||||
try {
|
||||
if (map_id.containsKey(this.id)) throw new IllegalArgumentException("ID \"" + this.id + "\" already exists");
|
||||
if (mapID.containsKey(this.id)) throw new IllegalArgumentException("ID \"" + this.id + "\" already exists");
|
||||
if (this.recipe.length < 9) this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null};
|
||||
all.add(this);
|
||||
|
||||
SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".enabled", true);
|
||||
SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing);
|
||||
SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".hide-in-guide", this.hidden);
|
||||
SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".allow-enchanting", this.enchantable);
|
||||
SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".allow-disenchanting", this.disenchantable);
|
||||
SlimefunStartup.getItemCfg().setDefaultValue(this.id + ".required-permission", this.permission);
|
||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true);
|
||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing);
|
||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".hide-in-guide", this.hidden);
|
||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".allow-enchanting", this.enchantable);
|
||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".allow-disenchanting", this.disenchantable);
|
||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".required-permission", this.permission);
|
||||
|
||||
if (this.keys != null && this.values != null) {
|
||||
for (int i = 0; i < this.keys.length; i++) {
|
||||
SlimefunStartup.getItemCfg().setDefaultValue(this.id + "." + this.keys[i], this.values[i]);
|
||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + "." + this.keys[i], this.values[i]);
|
||||
}
|
||||
}
|
||||
|
||||
for (World world: Bukkit.getWorlds()) {
|
||||
SlimefunStartup.getWhitelist().setDefaultValue(world.getName() + ".enabled", true);
|
||||
SlimefunStartup.getWhitelist().setDefaultValue(world.getName() + ".enabled-items." + this.id, true);
|
||||
SlimefunPlugin.getWhitelist().setDefaultValue(world.getName() + ".enabled", true);
|
||||
SlimefunPlugin.getWhitelist().setDefaultValue(world.getName() + ".enabled-items." + this.id, true);
|
||||
}
|
||||
|
||||
if (this.ticking && !SlimefunStartup.getCfg().getBoolean("URID.enable-tickers")) {
|
||||
if (this.ticking && !SlimefunPlugin.getCfg().getBoolean("URID.enable-tickers")) {
|
||||
this.state = State.DISABLED;
|
||||
return;
|
||||
}
|
||||
|
||||
if (SlimefunStartup.getItemCfg().getBoolean(id + ".enabled")) {
|
||||
if (SlimefunPlugin.getItemCfg().getBoolean(id + ".enabled")) {
|
||||
if (!Category.list().contains(category)) category.register();
|
||||
|
||||
this.state = State.ENABLED;
|
||||
|
||||
this.replacing = SlimefunStartup.getItemCfg().getBoolean(this.id + ".can-be-used-in-workbenches");
|
||||
this.hidden = SlimefunStartup.getItemCfg().getBoolean(this.id + ".hide-in-guide");
|
||||
this.enchantable = SlimefunStartup.getItemCfg().getBoolean(this.id + ".allow-enchanting");
|
||||
this.disenchantable = SlimefunStartup.getItemCfg().getBoolean(this.id + ".allow-disenchanting");
|
||||
this.permission = SlimefunStartup.getItemCfg().getString(this.id + ".required-permission");
|
||||
this.replacing = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".can-be-used-in-workbenches");
|
||||
this.hidden = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".hide-in-guide");
|
||||
this.enchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-enchanting");
|
||||
this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting");
|
||||
this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission");
|
||||
items.add(this);
|
||||
if (slimefun) SlimefunStartup.instance.getUtilities().vanillaItems++;
|
||||
map_id.put(this.id, this);
|
||||
if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++;
|
||||
mapID.put(this.id, this);
|
||||
this.create();
|
||||
|
||||
for (ItemHandler handler: itemhandlers) {
|
||||
@ -257,15 +259,16 @@ public class SlimefunItem {
|
||||
handlers.put(handler.toCodename(), handlerset);
|
||||
}
|
||||
|
||||
if (SlimefunStartup.getCfg().getBoolean("options.print-out-loading")) System.out.println("[Slimefun] Loaded Item \"" + this.id + "\"");
|
||||
if (SlimefunPlugin.getSettings().printOutLoading) {
|
||||
Slimefun.getLogger().log(Level.INFO, "Loaded Item \"{0}\"", this.id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this instanceof VanillaItem) this.state = State.VANILLA;
|
||||
else this.state = State.DISABLED;
|
||||
}
|
||||
} catch(Exception x) {
|
||||
System.err.println("[Slimefun] Item Registration failed: " + this.id);
|
||||
x.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.WARNING, "Registering the Item '" + id + "' for Slimefun " + Slimefun.getVersion() + " has failed", x);
|
||||
}
|
||||
}
|
||||
|
||||
@ -308,24 +311,26 @@ public class SlimefunItem {
|
||||
*/
|
||||
@Deprecated
|
||||
public static SlimefunItem getByName(String name) {
|
||||
return map_id.get(name);
|
||||
return mapID.get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 4.1.11, rename of {@link #getByName(String)}.
|
||||
*/
|
||||
public static SlimefunItem getByID(String id) {
|
||||
return map_id.get(id);
|
||||
return mapID.get(id);
|
||||
}
|
||||
|
||||
public static SlimefunItem getByItem(ItemStack item) {
|
||||
if (item == null) return null;
|
||||
for (SlimefunItem sfi: items) {
|
||||
if (sfi instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) return sfi;
|
||||
else if (sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) return sfi;
|
||||
else if (sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) return sfi;
|
||||
else if (sfi instanceof SlimefunBackpack && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) return sfi;
|
||||
else if (SlimefunManager.isItemSimiliar(item, sfi.getItem(), true)) return sfi;
|
||||
if ((sfi instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
||||
(sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
||||
(sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
||||
(sfi instanceof SlimefunBackpack && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
||||
SlimefunManager.isItemSimiliar(item, sfi.getItem(), true))
|
||||
|
||||
return sfi;
|
||||
}
|
||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BROKEN_SPAWNER, false)) return getByID("BROKEN_SPAWNER");
|
||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REPAIRED_SPAWNER, false)) return getByID("REINFORCED_SPAWNER");
|
||||
@ -347,13 +352,14 @@ public class SlimefunItem {
|
||||
if (recipeOutput != null) output = recipeOutput.clone();
|
||||
|
||||
if (recipeType.toItem().isSimilar(RecipeType.MOB_DROP.toItem())) {
|
||||
String mob = ChatColor.stripColor(recipe[4].getItemMeta().getDisplayName()).toUpperCase().replace(" ", "_");
|
||||
try {
|
||||
EntityType entity = EntityType.valueOf(ChatColor.stripColor(recipe[4].getItemMeta().getDisplayName()).toUpperCase().replace(" ", "_"));
|
||||
List<ItemStack> dropping = new ArrayList<>();
|
||||
if (SlimefunManager.drops.containsKey(entity)) dropping = SlimefunManager.drops.get(entity);
|
||||
EntityType entity = EntityType.valueOf(mob);
|
||||
List<ItemStack> dropping = SlimefunPlugin.getUtilities().drops.getOrDefault(entity, new ArrayList<>());
|
||||
dropping.add(output);
|
||||
SlimefunManager.drops.put(entity, dropping);
|
||||
SlimefunPlugin.getUtilities().drops.put(entity, dropping);
|
||||
} catch(Exception x) {
|
||||
Slimefun.getLogger().log(Level.WARNING, "An Exception occured when setting a Drop for the Mob: " + mob + " (" + x.getClass().getSimpleName() + ")");
|
||||
}
|
||||
}
|
||||
else if (recipeType.toItem().isSimilar(RecipeType.ANCIENT_ALTAR.toItem())) {
|
||||
@ -362,9 +368,10 @@ public class SlimefunItem {
|
||||
else if (recipeType.getMachine() != null && getByID(recipeType.getMachine().getID()) instanceof SlimefunMachine) {
|
||||
((SlimefunMachine) getByID(recipeType.getMachine().getID())).addRecipe(recipe, output);
|
||||
}
|
||||
|
||||
install();
|
||||
} catch(Exception x) {
|
||||
System.err.println("[Slimefun] Item Initialization failed: " + id);
|
||||
Slimefun.getLogger().log(Level.WARNING, "Item Setup failed: " + id + " (" + x.getClass().getSimpleName() + ")");
|
||||
}
|
||||
}
|
||||
|
||||
@ -405,7 +412,7 @@ public class SlimefunItem {
|
||||
}
|
||||
else if (h instanceof EnergyTicker) {
|
||||
this.energyTicker = (EnergyTicker) h;
|
||||
EnergyNet.registerComponent(getID(), NetworkComponent.SOURCE);
|
||||
EnergyNet.registerComponent(getID(), EnergyNetComponent.SOURCE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -458,13 +465,14 @@ public class SlimefunItem {
|
||||
public static void patchExistingItem(String id, ItemStack stack) {
|
||||
SlimefunItem item = getByID(id);
|
||||
if (item != null) {
|
||||
System.out.println("[Slimefun] WARNING - Patching existing Item - " + id);
|
||||
System.out.println("[Slimefun] This might take a while");
|
||||
Slimefun.getLogger().log(Level.INFO, "Patching existing Item... {0}", id);
|
||||
Slimefun.getLogger().log(Level.INFO, "This might take a while");
|
||||
|
||||
final ItemStack old = item.getItem();
|
||||
item.setItem(stack);
|
||||
for (SlimefunItem sfi: list()) {
|
||||
ItemStack[] recipe = sfi.getRecipe();
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
if (SlimefunManager.isItemSimiliar(recipe[i], old, true)) recipe[i] = stack;
|
||||
}
|
||||
@ -480,7 +488,7 @@ public class SlimefunItem {
|
||||
public void registerChargeableBlock(boolean slimefun, int capacity) {
|
||||
this.register(slimefun);
|
||||
ChargableBlock.registerChargableBlock(id, capacity, true);
|
||||
EnergyNet.registerComponent(id, NetworkComponent.CONSUMER);
|
||||
EnergyNet.registerComponent(id, EnergyNetComponent.CONSUMER);
|
||||
}
|
||||
|
||||
public void registerUnrechargeableBlock(boolean slimefun, int capacity) {
|
||||
@ -495,12 +503,12 @@ public class SlimefunItem {
|
||||
|
||||
public void registerEnergyDistributor(boolean slimefun) {
|
||||
this.register(slimefun);
|
||||
EnergyNet.registerComponent(id, NetworkComponent.DISTRIBUTOR);
|
||||
EnergyNet.registerComponent(id, EnergyNetComponent.DISTRIBUTOR);
|
||||
}
|
||||
|
||||
public void registerDistibutingCapacitor(boolean slimefun, final int capacity) {
|
||||
this.register(slimefun);
|
||||
EnergyNet.registerComponent(id, NetworkComponent.DISTRIBUTOR);
|
||||
EnergyNet.registerComponent(id, EnergyNetComponent.DISTRIBUTOR);
|
||||
ChargableBlock.registerCapacitor(id, capacity);
|
||||
}
|
||||
|
||||
@ -526,7 +534,15 @@ public class SlimefunItem {
|
||||
}
|
||||
|
||||
public void addWikipage(String page) {
|
||||
Slimefun.addWikiPage(this.getID(), "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page);
|
||||
wiki = "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page;
|
||||
}
|
||||
|
||||
public boolean hasWiki() {
|
||||
return wiki != null;
|
||||
}
|
||||
|
||||
public String getWiki() {
|
||||
return wiki;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -65,8 +65,9 @@ public class SlimefunMachine extends SlimefunItem {
|
||||
public void install() {
|
||||
for (ItemStack i: this.getDisplayRecipes()) {
|
||||
SlimefunItem item = SlimefunItem.getByItem(i);
|
||||
if (item == null) this.recipes.add(new ItemStack[] {i});
|
||||
else if (!SlimefunItem.isDisabled(i)) this.recipes.add(new ItemStack[] {i});
|
||||
if (item == null || !SlimefunItem.isDisabled(i))
|
||||
|
||||
this.recipes.add(new ItemStack[] {i});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,10 +55,6 @@ public abstract class AContainer extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -73,10 +69,6 @@ public abstract class AContainer extends SlimefunItem {
|
||||
|
||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
@ -87,6 +79,7 @@ public abstract class AContainer extends SlimefunItem {
|
||||
inv.replaceExistingItem(slot, null);
|
||||
}
|
||||
}
|
||||
|
||||
for (int slot : getOutputSlots()) {
|
||||
if (inv.getItemInSlot(slot) != null) {
|
||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
||||
@ -94,6 +87,7 @@ public abstract class AContainer extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
progress.remove(b);
|
||||
processing.remove(b);
|
||||
return true;
|
||||
@ -141,11 +135,14 @@ public abstract class AContainer extends SlimefunItem {
|
||||
|
||||
public abstract String getInventoryTitle();
|
||||
public abstract ItemStack getProgressBar();
|
||||
public abstract void registerDefaultRecipes();
|
||||
public abstract int getEnergyConsumption();
|
||||
public abstract int getSpeed();
|
||||
public abstract String getMachineIdentifier();
|
||||
|
||||
public void registerDefaultRecipes() {
|
||||
// Override this method to register your machine recipes
|
||||
}
|
||||
|
||||
public int[] getInputSlots() {
|
||||
return new int[] {19, 20};
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||
|
||||
@ -77,10 +76,6 @@ public abstract class ADrill extends AContainer {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
if (!(p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true))) {
|
||||
|
@ -41,11 +41,6 @@ public abstract class AFarm extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -60,10 +55,6 @@ public abstract class AFarm extends SlimefunItem {
|
||||
|
||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
@ -90,10 +81,6 @@ public abstract class AFarm extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -108,10 +95,6 @@ public abstract class AFarm extends SlimefunItem {
|
||||
|
||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
|
@ -59,10 +59,6 @@ public abstract class AGenerator extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -77,10 +73,6 @@ public abstract class AGenerator extends SlimefunItem {
|
||||
|
||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
|
@ -8,6 +8,7 @@ import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@ -24,7 +25,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
@ -34,6 +35,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
@ -83,6 +85,7 @@ public abstract class AReactor extends SlimefunItem {
|
||||
if (BlockStorage.getLocationInfo(b.getLocation(), "reactor-mode") == null){
|
||||
BlockStorage.addBlockInfo(b, "reactor-mode", "generator");
|
||||
}
|
||||
|
||||
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "reactor-mode").equals("generator")) {
|
||||
menu.replaceExistingItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Focus: &eElectricity", "", "&6Your Reactor will focus on Power Generation", "&6If your Energy Network doesn't need Power", "&6it will not produce any either", "", "&7> Click to change the Focus to &eProduction"));
|
||||
menu.addMenuClickHandler(4, (p, slot, item, action) -> {
|
||||
@ -99,16 +102,18 @@ public abstract class AReactor extends SlimefunItem {
|
||||
return false;
|
||||
});
|
||||
}
|
||||
BlockMenu ap = getAccessPort(b.getLocation());
|
||||
if(ap != null) {
|
||||
|
||||
BlockMenu port = getAccessPort(b.getLocation());
|
||||
if (port != null) {
|
||||
menu.replaceExistingItem(infoSlot, new CustomItem(new ItemStack(Material.GREEN_WOOL), "&7Access Port", "", "&6Detected", "", "&7> Click to view Access Port"));
|
||||
menu.addMenuClickHandler(infoSlot, (p, slot, item, action) -> {
|
||||
ap.open(p);
|
||||
port.open(p);
|
||||
newInstance(menu, b);
|
||||
|
||||
return false;
|
||||
});
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
menu.replaceExistingItem(infoSlot, new CustomItem(new ItemStack(Material.RED_WOOL), "&7Access Port", "", "&cNot detected", "", "&7Access Port must be", "&7placed 3 blocks above", "&7a reactor!"));
|
||||
menu.addMenuClickHandler(infoSlot, (p, slot, item, action) -> {
|
||||
newInstance(menu, b);
|
||||
@ -118,6 +123,7 @@ public abstract class AReactor extends SlimefunItem {
|
||||
}
|
||||
|
||||
} catch(Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured when creating a Reactor Menu for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
@ -135,10 +141,6 @@ public abstract class AReactor extends SlimefunItem {
|
||||
|
||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
@ -149,12 +151,14 @@ public abstract class AReactor extends SlimefunItem {
|
||||
inv.replaceExistingItem(slot, null);
|
||||
}
|
||||
}
|
||||
|
||||
for (int slot : getCoolantSlots()) {
|
||||
if (inv.getItemInSlot(slot) != null) {
|
||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
||||
inv.replaceExistingItem(slot, null);
|
||||
}
|
||||
}
|
||||
|
||||
for (int slot : getOutputSlots()) {
|
||||
if (inv.getItemInSlot(slot) != null) {
|
||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
||||
@ -162,6 +166,7 @@ public abstract class AReactor extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
progress.remove(b.getLocation());
|
||||
processing.remove(b.getLocation());
|
||||
ReactorHologram.remove(b.getLocation());
|
||||
@ -174,35 +179,23 @@ public abstract class AReactor 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, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||
}
|
||||
|
||||
for (int i : border_1) {
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "),
|
||||
(p, slot, item, action) -> false
|
||||
);
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||
}
|
||||
|
||||
for (int i : border_3) {
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "),
|
||||
(p, slot, item, action) -> false
|
||||
);
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||
}
|
||||
|
||||
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
|
||||
(p, slot, item, action) -> false
|
||||
);
|
||||
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||
|
||||
preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"),
|
||||
(p, slot, item, action) -> false
|
||||
);
|
||||
preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"), (p, slot, item, action) -> false);
|
||||
|
||||
for (int i : border_2) {
|
||||
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), " "), (p, slot, item, action) -> false);
|
||||
}
|
||||
|
||||
if (needsCooling()) {
|
||||
@ -212,9 +205,7 @@ public abstract class AReactor extends SlimefunItem {
|
||||
preset.addItem(7, new CustomItem(new ItemStack(Material.BARRIER), "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells"));
|
||||
|
||||
for (int i : border_4) {
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.BARRIER), "&cNo Coolant Required"),
|
||||
(p, slot, item, action) -> false
|
||||
);
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.BARRIER), "&cNo Coolant Required"), (p, slot, item, action) -> false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -284,7 +275,7 @@ public abstract class AReactor extends SlimefunItem {
|
||||
if (space >= produced || !BlockStorage.getLocationInfo(l, "reactor-mode").equals("generator")) {
|
||||
progress.put(l, timeleft - 1);
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
if (!l.getBlock().getRelative(cooling[new Random().nextInt(cooling.length)]).isLiquid()) explode.add(l);
|
||||
});
|
||||
|
||||
@ -377,7 +368,7 @@ public abstract class AReactor extends SlimefunItem {
|
||||
if (explosion) {
|
||||
BlockStorage.getInventory(l).close();
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> ReactorHologram.remove(l), 0);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> ReactorHologram.remove(l), 0);
|
||||
|
||||
explode.remove(l);
|
||||
processing.remove(l);
|
||||
|
@ -3,7 +3,9 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class MachineHelper {
|
||||
public final class MachineHelper {
|
||||
|
||||
private MachineHelper() {}
|
||||
|
||||
public static String getTimeLeft(int l) {
|
||||
String timeleft = "";
|
||||
|
@ -1,4 +1,6 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -19,6 +21,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
||||
@ -105,7 +108,7 @@ public class AdvancedCargoOutputNode extends SlimefunItem {
|
||||
menu.addMenuClickHandler(41, (p, slot, item, action) -> {
|
||||
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
|
||||
if (channel < 0) {
|
||||
if (CargoNet.EXTRA_CHANNELS) channel = 16;
|
||||
if (CargoNet.extraChannels) channel = 16;
|
||||
else channel = 15;
|
||||
}
|
||||
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
|
||||
@ -132,7 +135,7 @@ public class AdvancedCargoOutputNode extends SlimefunItem {
|
||||
menu.addMenuClickHandler(43, (p, slot, item, action) -> {
|
||||
int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
|
||||
|
||||
if (CargoNet.EXTRA_CHANNELS) {
|
||||
if (CargoNet.extraChannels) {
|
||||
if (channeln > 16) channeln = 0;
|
||||
}
|
||||
else {
|
||||
@ -144,8 +147,8 @@ public class AdvancedCargoOutputNode extends SlimefunItem {
|
||||
return false;
|
||||
});
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Inventory of an Advanced Cargo Output Node for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -19,6 +22,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
||||
@ -63,6 +67,7 @@ public class CargoInputNode extends SlimefunItem {
|
||||
Damageable dmg = (Damageable) is.getItemMeta();
|
||||
dmg.setDamage(20);
|
||||
is.setItemMeta((ItemMeta) dmg);
|
||||
|
||||
menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &4\u2718", "", "&e> Click to toggle whether the Durability has to match"));
|
||||
menu.addMenuClickHandler(16, (p, slot, item, action) -> {
|
||||
BlockStorage.addBlockInfo(b, "filter-durability", "true");
|
||||
@ -75,6 +80,7 @@ public class CargoInputNode extends SlimefunItem {
|
||||
Damageable dmg = (Damageable) is.getItemMeta();
|
||||
dmg.setDamage(20);
|
||||
is.setItemMeta((ItemMeta) dmg);
|
||||
|
||||
menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &2\u2714", "", "&e> Click to toggle whether the Durability has to match"));
|
||||
menu.addMenuClickHandler(16, (p, slot, item, action) -> {
|
||||
BlockStorage.addBlockInfo(b, "filter-durability", "false");
|
||||
@ -121,7 +127,7 @@ public class CargoInputNode extends SlimefunItem {
|
||||
menu.addMenuClickHandler(41, (p, slot, item, action) -> {
|
||||
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
|
||||
if (channel < 0) {
|
||||
if (CargoNet.EXTRA_CHANNELS) channel = 16;
|
||||
if (CargoNet.extraChannels) channel = 16;
|
||||
else channel = 15;
|
||||
}
|
||||
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
|
||||
@ -148,7 +154,7 @@ public class CargoInputNode extends SlimefunItem {
|
||||
menu.addMenuClickHandler(43, (p, slot, item, action) -> {
|
||||
int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
|
||||
|
||||
if (CargoNet.EXTRA_CHANNELS) {
|
||||
if (CargoNet.extraChannels) {
|
||||
if (channeln > 16) channeln = 0;
|
||||
}
|
||||
else {
|
||||
@ -160,8 +166,8 @@ public class CargoInputNode extends SlimefunItem {
|
||||
return false;
|
||||
});
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Cargo Input Node for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
@ -196,6 +202,7 @@ public class CargoInputNode extends SlimefunItem {
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
|
||||
if (inv != null) {
|
||||
for (int slot : getInputSlots()) {
|
||||
if (inv.getItemInSlot(slot) != null) {
|
||||
@ -211,14 +218,10 @@ public class CargoInputNode extends SlimefunItem {
|
||||
|
||||
protected void constructMenu(BlockMenuPreset preset) {
|
||||
for (int i : border) {
|
||||
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), " "), (p, slot, item, action) -> false);
|
||||
}
|
||||
|
||||
preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"),
|
||||
(p, slot, item, action) -> false
|
||||
);
|
||||
preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"), (p, slot, item, action) -> false);
|
||||
}
|
||||
|
||||
public int[] getInputSlots() {
|
@ -1,4 +1,6 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -17,6 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
||||
@ -40,12 +43,11 @@ public class CargoOutputNode extends SlimefunItem {
|
||||
@Override
|
||||
public void newInstance(final BlockMenu menu, final Block b) {
|
||||
try {
|
||||
|
||||
menu.replaceExistingItem(12, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1"));
|
||||
menu.addMenuClickHandler(12, (p, slot, item, action) -> {
|
||||
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
|
||||
if (channel < 0) {
|
||||
if (CargoNet.EXTRA_CHANNELS) channel = 16;
|
||||
if (CargoNet.extraChannels) channel = 16;
|
||||
else channel = 15;
|
||||
}
|
||||
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
|
||||
@ -72,7 +74,7 @@ public class CargoOutputNode extends SlimefunItem {
|
||||
menu.addMenuClickHandler(14, (p, slot, item, action) -> {
|
||||
int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
|
||||
|
||||
if (CargoNet.EXTRA_CHANNELS) {
|
||||
if (CargoNet.extraChannels) {
|
||||
if (channeln > 16) channeln = 0;
|
||||
}
|
||||
else {
|
||||
@ -84,8 +86,8 @@ public class CargoOutputNode extends SlimefunItem {
|
||||
return false;
|
||||
});
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Cargo Output Node for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,9 +123,7 @@ public class CargoOutputNode extends SlimefunItem {
|
||||
|
||||
protected void constructMenu(BlockMenuPreset preset) {
|
||||
for (int i : border) {
|
||||
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), " "), (p, slot, item, action) -> false);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,76 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Dispenser;
|
||||
import org.bukkit.event.block.BlockDispenseEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
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;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public class BlockPlacer extends SlimefunItem {
|
||||
|
||||
public BlockPlacer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
||||
super(category, item, id, recipeType, recipe, keys, values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(boolean slimefun) {
|
||||
Object value = Slimefun.getItemValue(getID(), "unplaceable-blocks");
|
||||
String[] blacklist = ((List<?>) value).stream().toArray(String[]::new);
|
||||
|
||||
addItemHandler(new AutonomousMachineHandler() {
|
||||
|
||||
@Override
|
||||
public boolean onBlockDispense(final BlockDispenseEvent e, Block dispenser, final Dispenser d, Block block, Block chest, SlimefunItem machine) {
|
||||
if (machine.getID().equalsIgnoreCase(getID())) {
|
||||
e.setCancelled(true);
|
||||
|
||||
if ((block.getType() == null || block.getType() == Material.AIR) && e.getItem().getType().isBlock()) {
|
||||
for (String blockType : blacklist) {
|
||||
if (e.getItem().getType().toString().equals(blockType)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
SlimefunItem sfItem = SlimefunItem.getByItem(e.getItem());
|
||||
if (sfItem != null) {
|
||||
if (!SlimefunItem.blockhandler.containsKey(sfItem.getID())) {
|
||||
block.setType(e.getItem().getType());
|
||||
BlockStorage.store(block, sfItem.getID());
|
||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType());
|
||||
if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1));
|
||||
else {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> d.getInventory().removeItem(e.getItem()), 2L);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
block.setType(e.getItem().getType());
|
||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType());
|
||||
if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1));
|
||||
else {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> d.getInventory().removeItem(e.getItem()), 2L);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
});
|
||||
|
||||
super.register(slimefun);
|
||||
}
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||
|
||||
public class CargoCraftingNode extends SlimefunItem {
|
||||
|
||||
private static final int[] border = {0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 26, 27, 31, 32, 33, 34, 35, 36, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
||||
|
||||
public CargoCraftingNode(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, name, recipeType, recipe);
|
||||
|
||||
new BlockMenuPreset(name, "&3Input Node") {
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(final BlockMenu menu, final Block b) {
|
||||
try {
|
||||
menu.replaceExistingItem(41, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1"));
|
||||
menu.addMenuClickHandler(41, (p, slot, item, action) -> {
|
||||
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
|
||||
if (channel < 0) channel = 15;
|
||||
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
|
||||
newInstance(menu, b);
|
||||
return false;
|
||||
});
|
||||
|
||||
menu.replaceExistingItem(42, new CustomItem(new ItemStack(((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? Material.WHITE_WOOL : MaterialHelper.WoolColours[(Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))])), "&bChannel ID: &3" + (((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))) + 1)));
|
||||
menu.addMenuClickHandler(42,
|
||||
(p, slot, item, action) -> false
|
||||
);
|
||||
|
||||
menu.replaceExistingItem(43, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1"));
|
||||
menu.addMenuClickHandler(43, (p, slot, item, action) -> {
|
||||
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
|
||||
if (channel > 15) channel = 0;
|
||||
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
|
||||
newInstance(menu, b);
|
||||
return false;
|
||||
});
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
boolean open = CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b) || p.hasPermission("slimefun.cargo.bypass");
|
||||
if (!open) {
|
||||
Messages.local.sendTranslation(p, "inventory.no-access", true);
|
||||
}
|
||||
return open;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) {
|
||||
return new int[0];
|
||||
}
|
||||
};
|
||||
|
||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString());
|
||||
BlockStorage.addBlockInfo(b, "frequency", "0");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
if (inv != null) {
|
||||
for (int slot : getInputSlots()) {
|
||||
if (inv.getItemInSlot(slot) != null) {
|
||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
||||
inv.replaceExistingItem(slot, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void constructMenu(BlockMenuPreset preset) {
|
||||
for (int i : border) {
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
|
||||
(p, slot, item, action) -> false
|
||||
);
|
||||
}
|
||||
|
||||
preset.addItem(2, new CustomItem(new ItemStack(Material.CRAFTING_TABLE), "&eRecipe", "", "&bPut in the Recipe you want to craft"),
|
||||
(p, slot, item, action) -> false
|
||||
);
|
||||
}
|
||||
|
||||
public int[] getInputSlots() {
|
||||
return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39};
|
||||
}
|
||||
|
||||
}
|
@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget;
|
||||
@ -49,7 +49,7 @@ public class Composter extends SlimefunGadget {
|
||||
|
||||
for (int i = 1; i < 12; i++) {
|
||||
int j = i;
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
if (j < 11) {
|
||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK);
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget;
|
||||
@ -49,7 +49,7 @@ public class Crucible extends SlimefunGadget {
|
||||
|
||||
for (int i = 1; i < 9; i++) {
|
||||
int j = 8 - i;
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
if (input.getType() == Material.COBBLESTONE || input.getType() == Material.TERRACOTTA || MaterialHelper.isTerracotta(input.getType())) {
|
||||
block.setType(Material.LAVA);
|
||||
Levelled le = (Levelled) block.getBlockData();
|
||||
|
@ -42,11 +42,6 @@ public class ReactorAccessPort extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
if(p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(),b,true)) {
|
||||
@ -103,11 +98,6 @@ public class ReactorAccessPort extends SlimefunItem {
|
||||
|
||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
|
@ -30,10 +30,6 @@ public class TrashCan extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(final BlockMenu menu, final Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return true;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
@ -21,6 +22,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -41,10 +43,6 @@ public class XPCollector extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -130,8 +128,8 @@ public class XPCollector extends SlimefunItem {
|
||||
public void tick(Block b, SlimefunItem sf, Config data) {
|
||||
try {
|
||||
XPCollector.this.tick(b);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while ticking an Exp Collector for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Particle;
|
||||
@ -22,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -42,10 +45,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -60,11 +59,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem {
|
||||
|
||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
AnimalGrowthAcceleratorHologram.remove(b);
|
||||
@ -106,8 +100,8 @@ public class AnimalGrowthAccelerator extends SlimefunItem {
|
||||
public void tick(Block b, SlimefunItem sf, Config data) {
|
||||
try {
|
||||
AnimalGrowthAccelerator.this.tick(b);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while ticking an Animal Growth Accelerator for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -38,9 +38,6 @@ public abstract class AutoAnvil extends AContainer {
|
||||
return new ItemStack(Material.IRON_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {}
|
||||
|
||||
@Override
|
||||
public int getSpeed() {
|
||||
return 1;
|
@ -1,4 +1,6 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Particle;
|
||||
@ -22,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -42,10 +45,6 @@ public class AutoBreeder extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -60,10 +59,6 @@ public class AutoBreeder extends SlimefunItem {
|
||||
|
||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
AutoBreederHologram.remove(b);
|
||||
@ -83,9 +78,7 @@ public class AutoBreeder extends SlimefunItem {
|
||||
|
||||
protected void constructMenu(BlockMenuPreset preset) {
|
||||
for (int i : border) {
|
||||
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), " "), (p, slot, item, action) -> false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,8 +98,8 @@ public class AutoBreeder extends SlimefunItem {
|
||||
public void tick(Block b, SlimefunItem sf, Config data) {
|
||||
try {
|
||||
AutoBreeder.this.tick(b);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while ticking an Auto Breeder for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@ -19,6 +19,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants;
|
||||
import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
@ -26,7 +27,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
|
||||
@ -46,9 +46,6 @@ public class AutoDisenchanter extends AContainer {
|
||||
return new ItemStack(Material.DIAMOND_CHESTPLATE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 9;
|
||||
@ -112,7 +109,7 @@ public class AutoDisenchanter extends AContainer {
|
||||
enchantments.put(e.getKey(), e.getValue());
|
||||
amount++;
|
||||
}
|
||||
if (Slimefun.isEmeraldEnchantsInstalled()) {
|
||||
if (SlimefunPlugin.getHooks().isEmeraldEnchantsInstalled()) {
|
||||
for (ItemEnchantment enchantment: EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) {
|
||||
amount++;
|
||||
enchantments2.add(enchantment);
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
@ -35,9 +35,6 @@ public class AutoDrier extends AContainer {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() { }
|
||||
|
||||
@Override
|
||||
protected void tick(Block b) {
|
||||
if (isProcessing(b)) {
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@ -19,7 +19,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants;
|
||||
import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
@ -27,7 +27,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
|
||||
@ -47,9 +46,6 @@ public class AutoEnchanter extends AContainer {
|
||||
return new ItemStack(Material.GOLDEN_CHESTPLATE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 9;
|
||||
@ -105,7 +101,7 @@ public class AutoEnchanter extends AContainer {
|
||||
Map<Enchantment, Integer> enchantments = new HashMap<>();
|
||||
Set<ItemEnchantment> enchantments2 = new HashSet<>();
|
||||
int amount = 0;
|
||||
int special_amount = 0;
|
||||
int specialAmount = 0;
|
||||
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemMeta();
|
||||
|
||||
for (Map.Entry<Enchantment, Integer> e: meta.getStoredEnchants().entrySet()) {
|
||||
@ -115,18 +111,18 @@ public class AutoEnchanter extends AContainer {
|
||||
}
|
||||
}
|
||||
|
||||
if (Slimefun.isEmeraldEnchantsInstalled()) {
|
||||
if (SlimefunPlugin.getHooks().isEmeraldEnchantsInstalled()) {
|
||||
for (ItemEnchantment enchantment: EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) {
|
||||
if (EmeraldEnchants.getInstance().getRegistry().isApplicable(target, enchantment.getEnchantment()) && EmeraldEnchants.getInstance().getRegistry().getEnchantmentLevel(target, enchantment.getEnchantment().getName()) < enchantment.getLevel()) {
|
||||
amount++;
|
||||
special_amount++;
|
||||
specialAmount++;
|
||||
enchantments2.add(enchantment);
|
||||
}
|
||||
}
|
||||
special_amount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size();
|
||||
specialAmount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size();
|
||||
}
|
||||
|
||||
if (amount > 0 && special_amount <= SlimefunStartup.instance.getSettings().EMERALD_ENCHANTS_LIMIT) {
|
||||
if (amount > 0 && specialAmount <= SlimefunPlugin.getSettings().emeraldEnchantsLimit) {
|
||||
ItemStack newItem = target.clone();
|
||||
for (Map.Entry<Enchantment, Integer> e: enchantments.entrySet()) {
|
||||
newItem.addUnsafeEnchantment(e.getKey(), e.getValue());
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
@ -1,4 +1,9 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
@ -7,15 +12,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class ChargingBench extends AContainer {
|
||||
|
||||
public ChargingBench(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
@ -28,10 +27,6 @@ public class ChargingBench extends AContainer {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -60,9 +55,6 @@ public class ChargingBench extends AContainer {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {}
|
||||
|
||||
@Override
|
||||
protected void tick(Block b) {
|
||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
@ -1,7 +1,8 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Particle;
|
||||
@ -23,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -54,10 +56,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -72,10 +70,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
|
||||
|
||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
@ -116,8 +110,8 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
|
||||
public void tick(Block b, SlimefunItem sf, Config data) {
|
||||
try {
|
||||
CropGrowthAccelerator.this.tick(b);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while ticking a Crop Growth Accelerator for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -12,7 +12,7 @@ import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
@ -40,9 +40,6 @@ public abstract class ElectricDustWasher extends AContainer {
|
||||
return new ItemStack(Material.GOLDEN_SHOVEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {}
|
||||
|
||||
public abstract int getSpeed();
|
||||
|
||||
@Override
|
||||
@ -84,20 +81,21 @@ public abstract class ElectricDustWasher extends AContainer {
|
||||
else {
|
||||
for (int slot: getInputSlots()) {
|
||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.SIFTED_ORE, true)) {
|
||||
if (!SlimefunStartup.instance.getSettings().DUST_WASHER_LEGACY) {
|
||||
boolean empty_slot = false;
|
||||
if (!SlimefunPlugin.getSettings().legacyDustWasher) {
|
||||
boolean emptySlot = false;
|
||||
|
||||
for (int output_slot: getOutputSlots()) {
|
||||
if (BlockStorage.getInventory(b).getItemInSlot(output_slot) == null) {
|
||||
empty_slot = true;
|
||||
emptySlot = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!empty_slot) return;
|
||||
if (!emptySlot) return;
|
||||
}
|
||||
|
||||
ItemStack adding = OreWasher.items[new Random().nextInt(OreWasher.items.length)];
|
||||
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding});
|
||||
if (SlimefunStartup.instance.getSettings().DUST_WASHER_LEGACY && !fits(b, r.getOutput())) return;
|
||||
if (SlimefunPlugin.getSettings().legacyDustWasher && !fits(b, r.getOutput())) return;
|
||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
||||
processing.put(b, r);
|
||||
progress.put(b, r.getTicks());
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
@ -30,9 +30,10 @@ public abstract class ElectricFurnace extends AContainer {
|
||||
}
|
||||
|
||||
//Bukkit Recipe Iterator does not seem to include _LOG's of any type for charcoal... Manually adding them all.
|
||||
for(Material mat:Tag.LOGS.getValues())
|
||||
for (Material mat:Tag.LOGS.getValues()) {
|
||||
registerRecipe(4, new ItemStack[] {new ItemStack(mat,1)}, new ItemStack[] {new ItemStack(Material.CHARCOAL, 1)});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMachineIdentifier() {
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -38,9 +38,6 @@ public abstract class ElectricGoldPan extends AContainer {
|
||||
return new ItemStack(Material.DIAMOND_SHOVEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {}
|
||||
|
||||
public abstract int getSpeed();
|
||||
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@ -51,10 +51,6 @@ public abstract class ElectricSmeltery extends AContainer {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
||||
@ -96,10 +92,6 @@ public abstract class ElectricSmeltery extends AContainer {
|
||||
|
||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
||||
import org.bukkit.Material;
|
||||
@ -18,9 +18,11 @@ public abstract class ElectrifiedCrucible extends AContainer {
|
||||
public void registerDefaultRecipes() {
|
||||
registerRecipe(10, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.COBBLESTONE, 16)}, new ItemStack[]{new ItemStack(Material.LAVA_BUCKET)});
|
||||
registerRecipe(8, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.TERRACOTTA, 12)}, new ItemStack[]{new ItemStack(Material.LAVA_BUCKET)});
|
||||
|
||||
for (Material coloured_terracotta : MaterialHelper.TerracottaColours){
|
||||
registerRecipe(8, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(coloured_terracotta, 12)}, new ItemStack[]{new ItemStack(Material.LAVA_BUCKET)});
|
||||
}
|
||||
|
||||
registerRecipe(10, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.OAK_LEAVES, 16)}, new ItemStack[]{new ItemStack(Material.WATER_BUCKET)});
|
||||
registerRecipe(10, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.BIRCH_LEAVES, 16)}, new ItemStack[]{new ItemStack(Material.WATER_BUCKET)});
|
||||
registerRecipe(10, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.SPRUCE_LEAVES, 16)}, new ItemStack[]{new ItemStack(Material.WATER_BUCKET)});
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@ -30,7 +30,6 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||
|
||||
@ -53,10 +52,6 @@ public class FluidPump extends SlimefunItem{
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@ -45,10 +45,6 @@ public abstract class HeatedPressureChamber extends AContainer {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -24,7 +24,6 @@ import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||
|
||||
@ -40,10 +39,6 @@ public abstract class OilPump extends AContainer {
|
||||
constructMenu(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canOpen(Block b, Player p) {
|
||||
if (!(p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true))) {
|
||||
@ -80,9 +75,6 @@ public abstract class OilPump extends AContainer {
|
||||
return new ItemStack(Material.DIAMOND_SHOVEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {}
|
||||
|
||||
@Override
|
||||
protected void tick(Block b) {
|
||||
if (isProcessing(b)) {
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -37,9 +37,6 @@ public abstract class Refinery extends AContainer {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {}
|
||||
|
||||
@Override
|
||||
public String getMachineIdentifier() {
|
||||
return "REFINERY";
|
@ -1,4 +1,6 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@ -13,7 +15,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||
@ -22,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -75,7 +78,7 @@ public class WitherAssembler extends SlimefunItem {
|
||||
return false;
|
||||
});
|
||||
} catch(Exception x) {
|
||||
x.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Wither Assembler for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
@ -245,7 +248,7 @@ public class WitherAssembler extends SlimefunItem {
|
||||
|
||||
final double offset = Double.parseDouble(BlockStorage.getLocationInfo(b.getLocation(), "offset"));
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER));
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER));
|
||||
}
|
||||
}
|
||||
}
|
@ -13,7 +13,7 @@ import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
@ -61,7 +61,7 @@ public class ArmorForge extends MultiBlockMachine {
|
||||
|
||||
for (int j = 0; j < 4; j++) {
|
||||
int current = j;
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
if (current < 3) {
|
||||
p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F);
|
||||
}
|
||||
|
@ -0,0 +1,68 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public class AutomatedPanningMachine extends MultiBlockMachine {
|
||||
|
||||
private Random random = new Random();
|
||||
|
||||
public AutomatedPanningMachine() {
|
||||
super(
|
||||
Categories.MACHINES_1,
|
||||
SlimefunItems.AUTOMATED_PANNING_MACHINE,
|
||||
"AUTOMATED_PANNING_MACHINE",
|
||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_TRAPDOOR), null, null, new ItemStack(Material.CAULDRON), null},
|
||||
new ItemStack[] {
|
||||
new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT),
|
||||
new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL),
|
||||
new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE
|
||||
},
|
||||
Material.OAK_TRAPDOOR
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInteract(Player p, Block b) {
|
||||
final ItemStack input = p.getInventory().getItemInMainHand();
|
||||
ItemStack output = null;
|
||||
|
||||
if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) output = SlimefunItems.SIFTED_ORE;
|
||||
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) output = new ItemStack(Material.CLAY_BALL);
|
||||
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) output = new ItemStack(Material.FLINT);
|
||||
|
||||
final ItemStack drop = output;
|
||||
|
||||
if (input != null && input.getType() == Material.GRAVEL) {
|
||||
PlayerInventory.consumeItemInHand(p);
|
||||
for (int i = 1; i < 7; i++) {
|
||||
int j = i;
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL);
|
||||
if (j == 6) {
|
||||
if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop);
|
||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
||||
}
|
||||
}, i * 30L);
|
||||
}
|
||||
}
|
||||
|
||||
Messages.local.sendTranslation(p, "machines.wrong-item", true);
|
||||
}
|
||||
|
||||
}
|
@ -11,7 +11,7 @@ import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
@ -54,7 +54,7 @@ public class Compressor extends MultiBlockMachine {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
int j = i;
|
||||
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
if (j < 3) {
|
||||
p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F);
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
@ -143,7 +143,7 @@ public class MagicWorkbench extends MultiBlockMachine {
|
||||
}
|
||||
for (int j = 0; j < 4; j++) {
|
||||
int current = j;
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
p.getWorld().playEffect(b.getLocation(), Effect.MOBSPAWNER_FLAMES, 1);
|
||||
p.getWorld().playEffect(b.getLocation(), Effect.ENDER_SIGNAL, 1);
|
||||
if (current < 3) {
|
||||
|
@ -13,7 +13,7 @@ import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
@ -56,7 +56,7 @@ public class OreWasher extends MultiBlockMachine {
|
||||
ItemStack adding = items[new Random().nextInt(items.length)];
|
||||
Inventory outputInv = null;
|
||||
|
||||
if (!SlimefunStartup.instance.getSettings().ORE_WASHER_LEGACY) {
|
||||
if (!SlimefunPlugin.getSettings().legacyOreWasher) {
|
||||
// This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it.
|
||||
// However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory,
|
||||
// so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's
|
||||
|
@ -12,7 +12,7 @@ import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
@ -26,7 +26,7 @@ public class PressureChamber extends MultiBlockMachine {
|
||||
Categories.MACHINES_1,
|
||||
SlimefunItems.PRESSURE_CHAMBER,
|
||||
"PRESSURE_CHAMBER",
|
||||
new ItemStack[] {new ItemStack(Material.STONE_SLAB), new CustomItem(Material.DISPENSER, "Dispenser (Facing down)"), new ItemStack(Material.STONE_SLAB), new ItemStack(Material.PISTON), new ItemStack(Material.GLASS), new ItemStack(Material.PISTON), new ItemStack(Material.PISTON), new ItemStack(Material.CAULDRON), new ItemStack(Material.PISTON)},
|
||||
new ItemStack[] {new ItemStack(Material.SMOOTH_STONE_SLAB), new CustomItem(Material.DISPENSER, "Dispenser (Facing down)"), new ItemStack(Material.SMOOTH_STONE_SLAB), new ItemStack(Material.PISTON), new ItemStack(Material.GLASS), new ItemStack(Material.PISTON), new ItemStack(Material.PISTON), new ItemStack(Material.CAULDRON), new ItemStack(Material.PISTON)},
|
||||
new ItemStack[] {
|
||||
SlimefunItems.CARBON_CHUNK, SlimefunItems.SYNTHETIC_DIAMOND,
|
||||
SlimefunItems.RAW_CARBONADO, SlimefunItems.CARBONADO
|
||||
@ -40,6 +40,7 @@ public class PressureChamber extends MultiBlockMachine {
|
||||
Block dispBlock = b.getRelative(BlockFace.UP).getRelative(BlockFace.UP);
|
||||
Dispenser disp = (Dispenser) dispBlock.getState();
|
||||
final Inventory inv = disp.getInventory();
|
||||
|
||||
for (ItemStack current: inv.getContents()) {
|
||||
for (ItemStack convert: RecipeType.getRecipeInputs(this)) {
|
||||
if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) {
|
||||
@ -52,7 +53,7 @@ public class PressureChamber extends MultiBlockMachine {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
int j = i;
|
||||
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
p.getWorld().playSound(b.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1);
|
||||
p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4);
|
||||
p.getWorld().playEffect(b.getRelative(BlockFace.UP).getLocation(), Effect.SMOKE, 4);
|
||||
|
@ -17,7 +17,7 @@ import org.bukkit.inventory.meta.Damageable;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
@ -77,7 +77,7 @@ public class Smeltery extends MultiBlockMachine {
|
||||
|
||||
Hopper chamber = findHopper(dispBlock, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST);
|
||||
|
||||
if (new Random().nextInt(100) < SlimefunStartup.instance.getSettings().SMELTERY_FIRE_BREAK_CHANCE) {
|
||||
if (new Random().nextInt(100) < SlimefunPlugin.getSettings().smelteryFireBreakChance) {
|
||||
if (chamber != null) {
|
||||
if (chamber.getInventory().contains(Material.FLINT_AND_STEEL)) {
|
||||
ItemStack item = chamber.getInventory().getItem(chamber.getInventory().first(Material.FLINT_AND_STEEL));
|
||||
|
@ -0,0 +1,42 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
|
||||
public class TableSaw extends MultiBlockMachine {
|
||||
|
||||
public TableSaw() {
|
||||
super(
|
||||
Categories.MACHINES_1,
|
||||
SlimefunItems.TABLE_SAW,
|
||||
"TABLE_SAW",
|
||||
new ItemStack[] {null, null, null, new ItemStack(Material.SMOOTH_STONE_SLAB), new ItemStack(Material.STONECUTTER), new ItemStack(Material.SMOOTH_STONE_SLAB), null, new ItemStack(Material.IRON_BLOCK), null},
|
||||
new ItemStack[0],
|
||||
Material.STONECUTTER
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInteract(Player p, Block b) {
|
||||
ItemStack log = p.getInventory().getItemInMainHand();
|
||||
|
||||
ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8);
|
||||
if(item == null || item.getType() == Material.AIR) return;
|
||||
|
||||
b.getWorld().dropItemNaturally(b.getLocation(), item);
|
||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType());
|
||||
log.setAmount(log.getAmount() -1);
|
||||
|
||||
if(log.getAmount() <= 0) {
|
||||
p.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -10,6 +10,7 @@ import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
@ -17,6 +18,8 @@ import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public class CSCoreLibLoader {
|
||||
|
||||
private Plugin plugin;
|
||||
@ -35,19 +38,19 @@ public class CSCoreLibLoader {
|
||||
public boolean load() {
|
||||
if (plugin.getServer().getPluginManager().isPluginEnabled("CS-CoreLib")) return true;
|
||||
else {
|
||||
System.err.println(" ");
|
||||
System.err.println("#################### - INFO - ####################");
|
||||
System.err.println(" ");
|
||||
System.err.println(plugin.getName() + " could not be loaded.");
|
||||
System.err.println("It appears that you have not installed CS-CoreLib");
|
||||
System.err.println("Your Server will now try to download and install");
|
||||
System.err.println("CS-CoreLib for you.");
|
||||
System.err.println("You will be asked to restart your Server when it's finished.");
|
||||
System.err.println("If this somehow fails, please download and install CS-CoreLib manually:");
|
||||
System.err.println("https://dev.bukkit.org/projects/cs-corelib");
|
||||
System.err.println(" ");
|
||||
System.err.println("#################### - INFO - ####################");
|
||||
System.err.println(" ");
|
||||
Slimefun.getLogger().log(Level.INFO, " ");
|
||||
Slimefun.getLogger().log(Level.INFO, "#################### - INFO - ####################");
|
||||
Slimefun.getLogger().log(Level.INFO, " ");
|
||||
Slimefun.getLogger().log(Level.INFO, plugin.getName() + " could not be loaded.");
|
||||
Slimefun.getLogger().log(Level.INFO, "It appears that you have not installed CS-CoreLib");
|
||||
Slimefun.getLogger().log(Level.INFO, "Your Server will now try to download and install");
|
||||
Slimefun.getLogger().log(Level.INFO, "CS-CoreLib for you.");
|
||||
Slimefun.getLogger().log(Level.INFO, "You will be asked to restart your Server when it's finished.");
|
||||
Slimefun.getLogger().log(Level.INFO, "If this somehow fails, please download and install CS-CoreLib manually:");
|
||||
Slimefun.getLogger().log(Level.INFO, "https://dev.bukkit.org/projects/cs-corelib");
|
||||
Slimefun.getLogger().log(Level.INFO, " ");
|
||||
Slimefun.getLogger().log(Level.INFO, "#################### - INFO - ####################");
|
||||
Slimefun.getLogger().log(Level.INFO, " ");
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
|
||||
if (connect()) install();
|
||||
}, 10L);
|
||||
@ -71,15 +74,15 @@ public class CSCoreLibLoader {
|
||||
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
System.err.println(" ");
|
||||
System.err.println("#################### - WARNING - ####################");
|
||||
System.err.println(" ");
|
||||
System.err.println("Could not connect to BukkitDev.");
|
||||
System.err.println("Please download & install CS-CoreLib manually:");
|
||||
System.err.println("https://dev.bukkit.org/projects/cs-corelib");
|
||||
System.err.println(" ");
|
||||
System.err.println("#################### - WARNING - ####################");
|
||||
System.err.println(" ");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
Slimefun.getLogger().log(Level.WARNING, "#################### - WARNING - ####################");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Could not connect to BukkitDev.");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Please download & install CS-CoreLib manually:");
|
||||
Slimefun.getLogger().log(Level.WARNING, "https://dev.bukkit.org/projects/cs-corelib");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
Slimefun.getLogger().log(Level.WARNING, "#################### - WARNING - ####################");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -121,29 +124,29 @@ public class CSCoreLibLoader {
|
||||
output.write(data, 0, read);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
System.err.println(" ");
|
||||
System.err.println("#################### - WARNING - ####################");
|
||||
System.err.println(" ");
|
||||
System.err.println("Failed to download CS-CoreLib");
|
||||
System.err.println("Please download & install CS-CoreLib manually:");
|
||||
System.err.println("https://dev.bukkit.org/projects/cs-corelib");
|
||||
System.err.println(" ");
|
||||
System.err.println("#################### - WARNING - ####################");
|
||||
System.err.println(" ");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
Slimefun.getLogger().log(Level.WARNING, "#################### - WARNING - ####################");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Failed to download CS-CoreLib");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Please download & install CS-CoreLib manually:");
|
||||
Slimefun.getLogger().log(Level.WARNING, "https://dev.bukkit.org/projects/cs-corelib");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
Slimefun.getLogger().log(Level.WARNING, "#################### - WARNING - ####################");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
} finally {
|
||||
try {
|
||||
if (input != null) input.close();
|
||||
if (output != null) output.close();
|
||||
System.err.println(" ");
|
||||
System.err.println("#################### - INFO - ####################");
|
||||
System.err.println(" ");
|
||||
System.err.println("Please restart your Server to finish the Installation");
|
||||
System.err.println("of " + plugin.getName() + " and CS-CoreLib");
|
||||
System.err.println(" ");
|
||||
System.err.println("#################### - INFO - ####################");
|
||||
System.err.println(" ");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.INFO, " ");
|
||||
Slimefun.getLogger().log(Level.INFO, "#################### - INFO - ####################");
|
||||
Slimefun.getLogger().log(Level.INFO, " ");
|
||||
Slimefun.getLogger().log(Level.INFO, "Please restart your Server to finish the Installation");
|
||||
Slimefun.getLogger().log(Level.INFO, "of " + plugin.getName() + " and CS-CoreLib");
|
||||
Slimefun.getLogger().log(Level.INFO, " ");
|
||||
Slimefun.getLogger().log(Level.INFO, "#################### - INFO - ####################");
|
||||
Slimefun.getLogger().log(Level.INFO, " ");
|
||||
} catch (IOException x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while closing the Download Stream for CS-CoreLib", x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,40 +1,41 @@
|
||||
package me.mrCookieSlime.Slimefun.Setup;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public final class Files {
|
||||
|
||||
private Files() {}
|
||||
public final File researches = new File("plugins/Slimefun/Researches.yml");
|
||||
public final File config = new File("plugins/Slimefun/config.yml");
|
||||
public final File items = new File("plugins/Slimefun/Items.yml");
|
||||
public final File database = new File("data-storage/Slimefun/Players");
|
||||
public final File whitelist = new File("plugins/Slimefun/whitelist.yml");
|
||||
|
||||
public static File RESEARCHES = new File("plugins/Slimefun/Researches.yml");
|
||||
public static File CONFIG = new File("plugins/Slimefun/config.yml");
|
||||
public static File ITEMS = new File("plugins/Slimefun/Items.yml");
|
||||
public static File DATABASE = new File("data-storage/Slimefun/Players");
|
||||
public static File WHITELIST = new File("plugins/Slimefun/whitelist.yml");
|
||||
|
||||
public static void cleanup() {
|
||||
if (!RESEARCHES.exists()) {
|
||||
System.err.println("###############################################");
|
||||
System.err.println("############## = - INFO - = #################");
|
||||
System.err.println("###############################################");
|
||||
System.err.println(" ");
|
||||
System.err.println("Slimefun Warning:");
|
||||
System.err.println(" ");
|
||||
System.err.println("Slimefun has detected that your Files are either");
|
||||
System.err.println("outdated or do not exist. We generated new Files");
|
||||
System.err.println("instead otherwise Slimefun would not work. If you");
|
||||
System.err.println("have used Slimefun before, your Settings are now");
|
||||
System.err.println("gone. But therefore Slimefun works!");
|
||||
public void cleanup() {
|
||||
if (!researches.exists()) {
|
||||
Slimefun.getLogger().log(Level.WARNING, "###############################################");
|
||||
Slimefun.getLogger().log(Level.WARNING, "############## = - INFO - = #################");
|
||||
Slimefun.getLogger().log(Level.WARNING, "###############################################");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Slimefun Warning:");
|
||||
Slimefun.getLogger().log(Level.WARNING, " ");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Slimefun has detected that your Files are either");
|
||||
Slimefun.getLogger().log(Level.WARNING, "outdated or do not exist. We generated new Files");
|
||||
Slimefun.getLogger().log(Level.WARNING, "instead otherwise Slimefun would not work. If you");
|
||||
Slimefun.getLogger().log(Level.WARNING, "have used Slimefun before, your Settings are now");
|
||||
Slimefun.getLogger().log(Level.WARNING, "gone. But therefore Slimefun works!");
|
||||
delete(new File("plugins/Slimefun"));
|
||||
delete(new File("data-storage/Slimefun"));
|
||||
}
|
||||
|
||||
if (!DATABASE.exists()) {
|
||||
DATABASE.mkdirs();
|
||||
if (!database.exists()) {
|
||||
database.mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean delete(File folder) {
|
||||
public boolean delete(File folder) {
|
||||
File[] files = folder.listFiles();
|
||||
if (files != null) {
|
||||
for (File current: files) {
|
||||
|
@ -10,6 +10,7 @@ public final class Messages {
|
||||
|
||||
public static void setup() {
|
||||
local.setPrefix("&aSlimefun &7> ");
|
||||
|
||||
local.setDefault("commands.help", "Displays this Help Screen");
|
||||
local.setDefault("commands.cheat", "Allows you to cheat Items");
|
||||
local.setDefault("commands.give", "Give somebody some Slimefun Items");
|
||||
|
@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun.Setup;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
@ -16,16 +17,16 @@ import org.bukkit.inventory.ItemStack;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.Colors;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer.ItemFlag;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Misc.PostSlimefunLoadingHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingAlloy;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCraftingChamber;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutomatedCraftingChamber;
|
||||
import me.mrCookieSlime.Slimefun.Setup.PostSlimefunLoadingHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunRecipes;
|
||||
import me.mrCookieSlime.Slimefun.utils.Settings;
|
||||
@ -34,8 +35,6 @@ public final class MiscSetup {
|
||||
|
||||
private MiscSetup() {}
|
||||
|
||||
public static List<PostSlimefunLoadingHandler> post_handlers = new ArrayList<>();
|
||||
|
||||
public static void setupMisc() {
|
||||
if (SlimefunItem.getByID("COMMON_TALISMAN") != null && (Boolean) Slimefun.getItemValue("COMMON_TALISMAN", "recipe-requires-nether-stars")) {
|
||||
SlimefunItem.getByID("COMMON_TALISMAN").setRecipe(new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.NETHER_STAR), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2});
|
||||
@ -55,11 +54,11 @@ public final class MiscSetup {
|
||||
while (iterator.hasNext()) {
|
||||
SlimefunItem item = iterator.next();
|
||||
if (item == null) {
|
||||
System.err.println("[Slimefun] Removed bugged Item ('NULL?')");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Removed bugged Item ('NULL?')");
|
||||
iterator.remove();
|
||||
}
|
||||
else if (item.getItem() == null) {
|
||||
System.err.println("[Slimefun] Removed bugged Item ('" + item.getID() + "')");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Removed bugged Item ('" + item.getID() + "')");
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
@ -127,7 +126,7 @@ public final class MiscSetup {
|
||||
|
||||
}
|
||||
|
||||
List<ItemStack[]> grinder_recipes = new ArrayList<>();
|
||||
List<ItemStack[]> grinderRecipes = new ArrayList<>();
|
||||
|
||||
SlimefunItem grinder = SlimefunItem.getByID("GRIND_STONE");
|
||||
if (grinder != null) {
|
||||
@ -136,7 +135,7 @@ public final class MiscSetup {
|
||||
if (input == null) input = recipe;
|
||||
else {
|
||||
if (input[0] != null && recipe[0] != null) {
|
||||
grinder_recipes.add(new ItemStack[] {input[0], recipe[0]});
|
||||
grinderRecipes.add(new ItemStack[] {input[0], recipe[0]});
|
||||
}
|
||||
input = null;
|
||||
}
|
||||
@ -150,7 +149,7 @@ public final class MiscSetup {
|
||||
if (input == null) input = recipe;
|
||||
else {
|
||||
if (input[0] != null && recipe[0] != null) {
|
||||
grinder_recipes.add(new ItemStack[] {input[0], recipe[0]});
|
||||
grinderRecipes.add(new ItemStack[] {input[0], recipe[0]});
|
||||
}
|
||||
input = null;
|
||||
}
|
||||
@ -158,9 +157,9 @@ public final class MiscSetup {
|
||||
}
|
||||
|
||||
// Favour 8 Cobblestone -> 1 Sand Recipe over 1 Cobblestone -> 1 Gravel Recipe
|
||||
Stream<ItemStack[]> stream = grinder_recipes.stream();
|
||||
Stream<ItemStack[]> stream = grinderRecipes.stream();
|
||||
|
||||
if (!settings.ORE_GRINDER_LEGACY) {
|
||||
if (!settings.legacyOreGrinder) {
|
||||
stream = stream.sorted((a, b) -> Integer.compare(b[0].getAmount(), a[0].getAmount()));
|
||||
}
|
||||
|
||||
@ -205,22 +204,22 @@ public final class MiscSetup {
|
||||
CommandSender sender = Bukkit.getConsoleSender();
|
||||
ChatColor color = Colors.getRandom();
|
||||
|
||||
for (PostSlimefunLoadingHandler handler: post_handlers) {
|
||||
for (PostSlimefunLoadingHandler handler: SlimefunPlugin.getUtilities().postHandlers) {
|
||||
handler.run(pre, init, post);
|
||||
}
|
||||
|
||||
sender.sendMessage(color + "###################### - Slimefun - ######################");
|
||||
sender.sendMessage(color + "Successfully loaded " + SlimefunItem.list().size() + " Items (" + Research.list().size() + " Researches)");
|
||||
sender.sendMessage(color + "( " + SlimefunStartup.instance.getUtilities().vanillaItems + " Items from Slimefun, " + (SlimefunItem.list().size() - SlimefunStartup.instance.getUtilities().vanillaItems) + " Items from Addons )");
|
||||
sender.sendMessage(color + "( " + SlimefunPlugin.getUtilities().vanillaItems + " Items from Slimefun, " + (SlimefunItem.list().size() - SlimefunPlugin.getUtilities().vanillaItems) + " Items from Addons )");
|
||||
sender.sendMessage(color + "##########################################################");
|
||||
SlimefunStartup.getItemCfg().save();
|
||||
SlimefunStartup.getResearchCfg().save();
|
||||
SlimefunStartup.getWhitelist().save();
|
||||
SlimefunPlugin.getItemCfg().save();
|
||||
SlimefunPlugin.getResearchCfg().save();
|
||||
SlimefunPlugin.getWhitelist().save();
|
||||
}
|
||||
|
||||
public static void setupItemSettings() {
|
||||
for (World world: Bukkit.getWorlds()) {
|
||||
SlimefunStartup.getWhitelist().setDefaultValue(world.getName() + ".enabled-items.SLIMEFUN_GUIDE", true);
|
||||
SlimefunPlugin.getWhitelist().setDefaultValue(world.getName() + ".enabled-items.SLIMEFUN_GUIDE", true);
|
||||
}
|
||||
|
||||
Slimefun.setItemVariable("ORE_CRUSHER", "double-ores", true);
|
||||
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Misc;
|
||||
package me.mrCookieSlime.Slimefun.Setup;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,15 +1,11 @@
|
||||
package me.mrCookieSlime.Slimefun.Setup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
@ -21,10 +17,6 @@ public final class SlimefunManager {
|
||||
|
||||
private SlimefunManager() {}
|
||||
|
||||
public static SlimefunStartup plugin;
|
||||
public static String PREFIX;
|
||||
public static Map<EntityType, List<ItemStack>> drops = new EnumMap<>(EntityType.class);
|
||||
|
||||
public static void registerArmorSet(ItemStack baseComponent, ItemStack[] items, String idSyntax, PotionEffect[][] effects, boolean special, boolean slimefun) {
|
||||
String[] components = new String[] {"_HELMET", "_CHESTPLATE", "_LEGGINGS", "_BOOTS"};
|
||||
Category cat = special ? Categories.MAGIC_ARMOR: Categories.ARMOR;
|
||||
@ -74,36 +66,36 @@ public final class SlimefunManager {
|
||||
// Material.STONE,
|
||||
// Material.COAL, Material.SKULL_ITEM, Material.RAW_FISH, Material.COOKED_FISH);
|
||||
|
||||
public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore) {
|
||||
if (item == null) return SFitem == null;
|
||||
if (SFitem == null) return false;
|
||||
public static boolean isItemSimiliar(ItemStack item, ItemStack sfitem, boolean lore) {
|
||||
if (item == null) return sfitem == null;
|
||||
if (sfitem == null) return false;
|
||||
|
||||
if (item.getType() == SFitem.getType() && item.getAmount() >= SFitem.getAmount()) {
|
||||
if (item.hasItemMeta() && SFitem.hasItemMeta()) {
|
||||
if (item.getItemMeta().hasDisplayName() && SFitem.getItemMeta().hasDisplayName()) {
|
||||
if (item.getItemMeta().getDisplayName().equals(SFitem.getItemMeta().getDisplayName())) {
|
||||
if (item.getType() == sfitem.getType() && item.getAmount() >= sfitem.getAmount()) {
|
||||
if (item.hasItemMeta() && sfitem.hasItemMeta()) {
|
||||
if (item.getItemMeta().hasDisplayName() && sfitem.getItemMeta().hasDisplayName()) {
|
||||
if (item.getItemMeta().getDisplayName().equals(sfitem.getItemMeta().getDisplayName())) {
|
||||
if (lore) {
|
||||
if (item.getItemMeta().hasLore() && SFitem.getItemMeta().hasLore()) {
|
||||
return equalsLore(item.getItemMeta().getLore(), SFitem.getItemMeta().getLore());
|
||||
if (item.getItemMeta().hasLore() && sfitem.getItemMeta().hasLore()) {
|
||||
return equalsLore(item.getItemMeta().getLore(), sfitem.getItemMeta().getLore());
|
||||
}
|
||||
else return !item.getItemMeta().hasLore() && !SFitem.getItemMeta().hasLore();
|
||||
else return !item.getItemMeta().hasLore() && !sfitem.getItemMeta().hasLore();
|
||||
}
|
||||
else return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
else if (!item.getItemMeta().hasDisplayName() && !SFitem.getItemMeta().hasDisplayName()) {
|
||||
else if (!item.getItemMeta().hasDisplayName() && !sfitem.getItemMeta().hasDisplayName()) {
|
||||
if (lore) {
|
||||
if (item.getItemMeta().hasLore() && SFitem.getItemMeta().hasLore()) {
|
||||
return equalsLore(item.getItemMeta().getLore(), SFitem.getItemMeta().getLore());
|
||||
if (item.getItemMeta().hasLore() && sfitem.getItemMeta().hasLore()) {
|
||||
return equalsLore(item.getItemMeta().getLore(), sfitem.getItemMeta().getLore());
|
||||
}
|
||||
else return !item.getItemMeta().hasLore() && !SFitem.getItemMeta().hasLore();
|
||||
else return !item.getItemMeta().hasLore() && !sfitem.getItemMeta().hasLore();
|
||||
}
|
||||
else return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
else return !item.hasItemMeta() && !SFitem.hasItemMeta();
|
||||
else return !item.hasItemMeta() && !sfitem.hasItemMeta();
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
@ -119,8 +111,8 @@ public final class SlimefunManager {
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore, DataType data) {
|
||||
return isItemSimiliar(item, SFitem, lore);
|
||||
public static boolean isItemSimiliar(ItemStack item, ItemStack sfitem, boolean lore, DataType data) {
|
||||
return isItemSimiliar(item, sfitem, lore);
|
||||
}
|
||||
|
||||
private static boolean equalsLore(List<String> lore, List<String> lore2) {
|
||||
|
@ -2,11 +2,12 @@ package me.mrCookieSlime.Slimefun.Setup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -21,7 +22,6 @@ import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.Chest;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.block.CreatureSpawner;
|
||||
import org.bukkit.block.Dispenser;
|
||||
import org.bukkit.block.data.Ageable;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
@ -36,7 +36,6 @@ import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockDispenseEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
@ -66,14 +65,13 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.GPS.Elevator;
|
||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
||||
import me.mrCookieSlime.Slimefun.GPS.NetworkStatus;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Misc.PostSlimefunLoadingHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||
@ -106,43 +104,45 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AdvancedCargoOutputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AnimalGrowthAccelerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoAnvil;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoBreeder;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoDisenchanter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoDrier;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutomatedCraftingChamber;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CarbonPress;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoInputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CargoOutputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ChargingBench;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.CropGrowthAccelerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricFurnace;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricGoldPan;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricIngotFactory;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnergyRegulator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodFabricator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Freezer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureChamber;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AnimalGrowthAccelerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoAnvil;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoBreeder;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoDisenchanter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoDrier;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoEnchanter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutomatedCraftingChamber;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.CarbonPress;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ChargingBench;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.CropGrowthAccelerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricDustWasher;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricFurnace;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricGoldPan;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotFactory;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricSmeltery;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectrifiedCrucible;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.EnergyRegulator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPump;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodFabricator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Freezer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.HeatedPressureChamber;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.NetherDrill;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.OilPump;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Refinery;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.WitherAssembler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.EnhancedCraftingTable;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.GrindStone;
|
||||
@ -152,7 +152,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreCrusher;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.TableSaw;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
@ -681,7 +681,7 @@ public final class SlimefunSetup {
|
||||
new ItemStack[] {null, SlimefunItems.HOOK, SlimefunItems.HOOK, null, SlimefunItems.CHAIN, SlimefunItems.HOOK, SlimefunItems.CHAIN, null, null})
|
||||
.register(true, new ItemInteractionHandler() {
|
||||
|
||||
private Utilities variables = SlimefunStartup.instance.getUtilities();
|
||||
private Utilities variables = SlimefunPlugin.getUtilities();
|
||||
|
||||
@Override
|
||||
public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) {
|
||||
@ -975,17 +975,17 @@ public final class SlimefunSetup {
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_ANVIL, "ANVIL_TALISMAN",
|
||||
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.ANVIL), SlimefunItems.TALISMAN, new ItemStack(Material.ANVIL), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3},
|
||||
true, false, "anvil", new PotionEffect[0])
|
||||
true, false, "anvil")
|
||||
.register(true);
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_MINER, "MINER_TALISMAN",
|
||||
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3},
|
||||
false, false, "miner", 20, new PotionEffect[0])
|
||||
false, false, "miner", 20)
|
||||
.register(true);
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_HUNTER, "HUNTER_TALISMAN",
|
||||
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.MONSTER_JERKY, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3},
|
||||
false, false, "hunter", 20, new PotionEffect[0])
|
||||
false, false, "hunter", 20)
|
||||
.register(true);
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_LAVA, "LAVA_TALISMAN",
|
||||
@ -1000,7 +1000,7 @@ public final class SlimefunSetup {
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_ANGEL, "ANGEL_TALISMAN",
|
||||
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.FEATHER), SlimefunItems.TALISMAN, new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3},
|
||||
false, true, "angel", 75, new PotionEffect[0])
|
||||
false, true, "angel", 75)
|
||||
.register(true);
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_FIRE, "FIRE_TALISMAN",
|
||||
@ -1010,7 +1010,7 @@ public final class SlimefunSetup {
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_MAGICIAN, "MAGICIAN_TALISMAN",
|
||||
new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENCHANTING_TABLE), SlimefunItems.TALISMAN, new ItemStack(Material.ENCHANTING_TABLE), SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3},
|
||||
false, false, "magician", 80, new PotionEffect[0])
|
||||
false, false, "magician", 80)
|
||||
.register(true);
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_TRAVELLER, "TRAVELLER_TALISMAN",
|
||||
@ -1040,12 +1040,12 @@ public final class SlimefunSetup {
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_WHIRLWIND, "WHIRLWIND_TALISMAN",
|
||||
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.STAFF_WIND, SlimefunItems.TALISMAN_TRAVELLER, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}
|
||||
, false, true, "whirlwind", 60, new PotionEffect[0])
|
||||
, false, true, "whirlwind", 60)
|
||||
.register(true);
|
||||
|
||||
new Talisman(SlimefunItems.TALISMAN_WIZARD, "WIZARD_TALISMAN",
|
||||
new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.TALISMAN_MAGICIAN, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3},
|
||||
false, false, "wizard", 60, new PotionEffect[0])
|
||||
false, false, "wizard", 60)
|
||||
.register(true);
|
||||
|
||||
new ExcludedTool(Categories.TOOLS, SlimefunItems.LUMBER_AXE, "LUMBER_AXE", RecipeType.MAGIC_WORKBENCH,
|
||||
@ -1294,35 +1294,7 @@ public final class SlimefunSetup {
|
||||
}
|
||||
});
|
||||
|
||||
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.TABLE_SAW, "TABLE_SAW",
|
||||
new ItemStack[] {null, null, null, new ItemStack(Material.STONE_SLAB), new ItemStack(Material.STONECUTTER), new ItemStack(Material.STONE_SLAB), null, new ItemStack(Material.IRON_BLOCK), null},
|
||||
new ItemStack[] {}, Material.STONECUTTER)
|
||||
.register(true, new MultiBlockInteractionHandler() {
|
||||
|
||||
@Override
|
||||
public boolean onInteract(Player p, MultiBlock mb, Block b) {
|
||||
if (mb.isMultiBlock(SlimefunItem.getByID("TABLE_SAW"))) {
|
||||
if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true) && Slimefun.hasUnlocked(p, SlimefunItems.TABLE_SAW, true) && p.getInventory().getItemInMainHand() != null && Tag.LOGS.getValues().contains(p.getInventory().getItemInMainHand().getType())) {
|
||||
ItemStack log = p.getInventory().getItemInMainHand();
|
||||
|
||||
ItemStack item = new ItemStack(MaterialHelper.getWoodFromLog(log.getType()), 8);
|
||||
if(item == null || item.getType() == Material.AIR) {
|
||||
return false;
|
||||
}
|
||||
|
||||
b.getWorld().dropItemNaturally(b.getLocation(), item);
|
||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType());
|
||||
log.setAmount(log.getAmount() -1);
|
||||
|
||||
if(log.getAmount() <= 0) {
|
||||
p.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
});
|
||||
new TableSaw().register();
|
||||
|
||||
/*
|
||||
* dNiym 7/30/2019 added the Table_Saw machine to replace the Saw_mill, as the sawmill's design does not work with
|
||||
@ -1406,7 +1378,7 @@ public final class SlimefunSetup {
|
||||
if (InvUtils.fits(inv, adding)) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
int j = i;
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
if (j < 3) {
|
||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore);
|
||||
} else {
|
||||
@ -1475,7 +1447,7 @@ public final class SlimefunSetup {
|
||||
if (InvUtils.fits(inv, adding)) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
int j = i;
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
if (j < 3) {
|
||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore);
|
||||
}
|
||||
@ -1545,8 +1517,8 @@ public final class SlimefunSetup {
|
||||
for (int z = -1; z <= 1; z++) {
|
||||
Block b = e.getBlock().getRelative(x, y, z);
|
||||
if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), explosiveblacklist) && CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) {
|
||||
if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) {
|
||||
SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData());
|
||||
if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) {
|
||||
SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData());
|
||||
}
|
||||
|
||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
|
||||
@ -1610,8 +1582,8 @@ public final class SlimefunSetup {
|
||||
}
|
||||
if (correctType) {
|
||||
if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) {
|
||||
if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) {
|
||||
SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData());
|
||||
if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) {
|
||||
SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData());
|
||||
}
|
||||
|
||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
|
||||
@ -1637,48 +1609,7 @@ public final class SlimefunSetup {
|
||||
}
|
||||
});
|
||||
|
||||
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.AUTOMATED_PANNING_MACHINE, "AUTOMATED_PANNING_MACHINE",
|
||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_TRAPDOOR), null, null, new ItemStack(Material.CAULDRON), null},
|
||||
new ItemStack[] {new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE}, Material.OAK_TRAPDOOR)
|
||||
.register(true, new MultiBlockInteractionHandler() {
|
||||
|
||||
private Random random = new Random();
|
||||
|
||||
@Override
|
||||
public boolean onInteract(final Player p, MultiBlock mb, final Block b) {
|
||||
if (mb.isMultiBlock(SlimefunItem.getByID("AUTOMATED_PANNING_MACHINE"))) {
|
||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) {
|
||||
final ItemStack input = p.getInventory().getItemInMainHand();
|
||||
ItemStack output = null;
|
||||
|
||||
if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) output = SlimefunItems.SIFTED_ORE;
|
||||
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) output = new ItemStack(Material.CLAY_BALL);
|
||||
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) output = new ItemStack(Material.FLINT);
|
||||
|
||||
final ItemStack drop = output;
|
||||
if (input != null && input.getType() == Material.GRAVEL) {
|
||||
PlayerInventory.consumeItemInHand(p);
|
||||
for (int i = 1; i < 7; i++) {
|
||||
int j = i;
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL);
|
||||
if (j == 6) {
|
||||
if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop);
|
||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
||||
}
|
||||
}, i*30L);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Messages.local.sendTranslation(p, "machines.wrong-item", true);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
});
|
||||
new AutomatedPanningMachine().register();
|
||||
|
||||
new SlimefunItem(Categories.MAGIC_ARMOR, SlimefunItems.BOOTS_OF_THE_STOMPER, "BOOTS_OF_THE_STOMPER", RecipeType.ARMOR_FORGE,
|
||||
new ItemStack[] {null, null, null, new ItemStack(Material.YELLOW_WOOL), null, new ItemStack(Material.YELLOW_WOOL), new ItemStack(Material.PISTON), null, new ItemStack(Material.PISTON)})
|
||||
@ -1697,8 +1628,8 @@ public final class SlimefunSetup {
|
||||
for (int y = -4; y <= 4; y++) {
|
||||
for (int z = -4; z <= 4; z++) {
|
||||
if (p.getLocation().getBlock().getRelative(x, y, z).getType().toString().endsWith("_ORE")) {
|
||||
if (closest == null) closest = p.getLocation().getBlock().getRelative(x, y, z);
|
||||
else if (p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) closest = p.getLocation().getBlock().getRelative(x, y, z);
|
||||
if (closest == null || p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation()))
|
||||
closest = p.getLocation().getBlock().getRelative(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1859,7 +1790,7 @@ public final class SlimefunSetup {
|
||||
@Override
|
||||
public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) {
|
||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SEISMIC_AXE, true)) {
|
||||
List<Block> blocks = p.getLineOfSight((HashSet<Material>) null, 10);
|
||||
List<Block> blocks = p.getLineOfSight(null, 10);
|
||||
for (int i = 0; i < blocks.size(); i++) {
|
||||
Block b = blocks.get(i);
|
||||
Location ground = b.getLocation();
|
||||
@ -1876,7 +1807,7 @@ public final class SlimefunSetup {
|
||||
FallingBlock block = ground.getWorld().spawnFallingBlock(ground.getBlock().getRelative(BlockFace.UP).getLocation(), ground.getBlock().getBlockData());
|
||||
block.setDropItem(false);
|
||||
block.setVelocity(new Vector(0, 0.4 + i * 0.01, 0));
|
||||
SlimefunStartup.instance.getUtilities().blocks.add(block.getUniqueId());
|
||||
SlimefunPlugin.getUtilities().blocks.add(block.getUniqueId());
|
||||
}
|
||||
for (Entity n: ground.getChunk().getEntities()) {
|
||||
if (n instanceof LivingEntity && n.getLocation().distance(ground) <= 2.0D && !n.getUniqueId().equals(p.getUniqueId())) {
|
||||
@ -2090,52 +2021,10 @@ public final class SlimefunSetup {
|
||||
new ItemStack[] {null, null, null, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, null, null, null}, new CustomItem(SlimefunItems.COPPER_WIRE, 8))
|
||||
.register(true);
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
final String[] blockPlacerBlacklist = Slimefun.getItemValue("BLOCK_PLACER", "unplaceable-blocks") != null ? ((List<String>) Slimefun.getItemValue("BLOCK_PLACER", "unplaceable-blocks")).toArray(new String[((List<String>) Slimefun.getItemValue("BLOCK_PLACER", "unplaceable-blocks")).size()]) : new String[] {"STRUCTURE_BLOCK"};
|
||||
|
||||
new SlimefunItem(Categories.MACHINES_1, SlimefunItems.BLOCK_PLACER, "BLOCK_PLACER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new BlockPlacer(Categories.MACHINES_1, SlimefunItems.BLOCK_PLACER, "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[] {Arrays.asList("STRUCTURE_BLOCK")})
|
||||
.register(true, new AutonomousMachineHandler() {
|
||||
|
||||
@Override
|
||||
public boolean onBlockDispense(final BlockDispenseEvent e, Block dispenser, final Dispenser d, Block block, Block chest, SlimefunItem machine) {
|
||||
if (machine.getID().equalsIgnoreCase("BLOCK_PLACER")) {
|
||||
e.setCancelled(true);
|
||||
if ((block.getType() == null || block.getType() == Material.AIR) && e.getItem().getType().isBlock()) {
|
||||
for(String blockType : blockPlacerBlacklist) {
|
||||
if (e.getItem().getType().toString().equals(blockType)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
SlimefunItem sfItem = SlimefunItem.getByItem(e.getItem());
|
||||
if (sfItem != null) {
|
||||
if (!SlimefunItem.blockhandler.containsKey(sfItem.getID())) {
|
||||
block.setType(e.getItem().getType());
|
||||
BlockStorage.store(block, sfItem.getID());
|
||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType());
|
||||
if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1));
|
||||
else {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
block.setType(e.getItem().getType());
|
||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType());
|
||||
if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1));
|
||||
else {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> d.getInventory().removeItem(e.getItem()), 2L);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
});
|
||||
new String[] {"unplaceable-blocks"}, Stream.of(Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK).map(Material::toString).toArray(Object[]::new))
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.MAGIC, SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, "SCROLL_OF_DIMENSIONAL_TELEPOSITION", RecipeType.MAGIC_WORKBENCH,
|
||||
new ItemStack[] {null, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, null})
|
||||
@ -2164,7 +2053,7 @@ public final class SlimefunSetup {
|
||||
|
||||
@Override
|
||||
public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) {
|
||||
if (SlimefunManager.isItemSimiliar(SlimefunStartup.instance.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.EXPLOSIVE_BOW, true)) {
|
||||
if (SlimefunManager.isItemSimiliar(SlimefunPlugin.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.EXPLOSIVE_BOW, true)) {
|
||||
Vector vector = n.getVelocity();
|
||||
vector.setY(0.6);
|
||||
n.setVelocity(vector);
|
||||
@ -2182,7 +2071,7 @@ public final class SlimefunSetup {
|
||||
|
||||
@Override
|
||||
public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) {
|
||||
if (SlimefunManager.isItemSimiliar(SlimefunStartup.instance.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.ICY_BOW, true)) {
|
||||
if (SlimefunManager.isItemSimiliar(SlimefunPlugin.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.ICY_BOW, true)) {
|
||||
n.getWorld().playEffect(n.getLocation(), Effect.STEP_SOUND, Material.ICE);
|
||||
n.getWorld().playEffect(n.getEyeLocation(), Effect.STEP_SOUND, Material.ICE);
|
||||
n.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 10));
|
||||
@ -2374,15 +2263,11 @@ public final class SlimefunSetup {
|
||||
|
||||
SlimefunItem.registerBlockHandler("ANCIENT_PEDESTAL", new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
Item stack = AncientAltarListener.findItem(b);
|
||||
if (stack != null) {
|
||||
stack.removeMetadata("item_placed", SlimefunStartup.instance);
|
||||
stack.removeMetadata("item_placed", SlimefunPlugin.instance);
|
||||
b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName()));
|
||||
stack.remove();
|
||||
}
|
||||
@ -2778,10 +2663,6 @@ public final class SlimefunSetup {
|
||||
new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.STONE_PICKAXE);
|
||||
@ -2812,10 +2693,6 @@ public final class SlimefunSetup {
|
||||
new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GILDED_IRON}) {
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.DIAMOND_PICKAXE);
|
||||
@ -2906,8 +2783,6 @@ public final class SlimefunSetup {
|
||||
registerRecipe(3, new ItemStack[]{SlimefunItems.SILVER_INGOT}, new ItemStack[]{SlimefunItems.SILVER_DUST});
|
||||
registerRecipe(3, new ItemStack[]{SlimefunItems.TIN_INGOT}, new ItemStack[]{SlimefunItems.TIN_DUST});
|
||||
registerRecipe(3, new ItemStack[]{SlimefunItems.ZINC_INGOT}, new ItemStack[]{SlimefunItems.ZINC_DUST});
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -3255,11 +3130,8 @@ public final class SlimefunSetup {
|
||||
SlimefunItem item = BlockStorage.check(e.getClickedBlock());
|
||||
if (item == null || !item.getID().equals("GPS_CONTROL_PANEL")) return false;
|
||||
e.setCancelled(true);
|
||||
try {
|
||||
|
||||
Slimefun.getGPSNetwork().openTransmitterControlPanel(p);
|
||||
} catch (Exception e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
@ -3691,11 +3563,8 @@ public final class SlimefunSetup {
|
||||
SlimefunItem item = BlockStorage.check(e.getClickedBlock());
|
||||
if (item == null || !item.getID().equals("GPS_GEO_SCANNER")) return false;
|
||||
e.setCancelled(true);
|
||||
try {
|
||||
|
||||
Slimefun.getGPSNetwork().scanChunk(p, e.getClickedBlock().getChunk());
|
||||
} catch (Exception e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
@ -4199,16 +4068,12 @@ public final class SlimefunSetup {
|
||||
return 250;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extraTick(Location l) {
|
||||
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
@ -4216,6 +4081,12 @@ public final class SlimefunSetup {
|
||||
@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);
|
||||
@ -4240,7 +4111,7 @@ public final class SlimefunSetup {
|
||||
|
||||
@Override
|
||||
public void extraTick(final Location l) {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
for (Entity entity : ReactorHologram.getArmorStand(l, true).getNearbyEntities(5, 5, 5)) {
|
||||
if (entity instanceof LivingEntity) {
|
||||
((LivingEntity) entity).addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 60, 1));
|
||||
@ -4302,10 +4173,6 @@ public final class SlimefunSetup {
|
||||
|
||||
SlimefunItem.registerBlockHandler("CARGO_MANAGER", new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
CargoHologram.remove(b);
|
||||
@ -4446,10 +4313,6 @@ public final class SlimefunSetup {
|
||||
new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY, "ELECTRIC_SMELTERY", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {new ItemStack(Material.NETHER_BRICKS), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.NETHER_BRICKS), SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 10;
|
||||
@ -4465,10 +4328,6 @@ public final class SlimefunSetup {
|
||||
new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY_2, "ELECTRIC_SMELTERY_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_SMELTERY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 20;
|
||||
@ -4488,7 +4347,7 @@ public final class SlimefunSetup {
|
||||
}
|
||||
|
||||
public static void registerPostHandler(PostSlimefunLoadingHandler handler) {
|
||||
MiscSetup.post_handlers.add(handler);
|
||||
SlimefunPlugin.getUtilities().postHandlers.add(handler);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,11 +2,11 @@ package me.mrCookieSlime.Slimefun;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
@ -33,7 +33,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Misc.BookDesign;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
@ -49,6 +48,7 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.GuideHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout;
|
||||
import me.mrCookieSlime.Slimefun.hooks.github.Contributor;
|
||||
import me.mrCookieSlime.Slimefun.hooks.github.IntegerFormat;
|
||||
|
||||
@ -56,26 +56,14 @@ public final class SlimefunGuide {
|
||||
|
||||
private SlimefunGuide() {}
|
||||
|
||||
public static int month = 0;
|
||||
|
||||
public static int issues = 0;
|
||||
public static int forks = 0;
|
||||
/**
|
||||
* Represents the number of stars on the Slimefun4 GitHub repository.
|
||||
* @since 4.1.13
|
||||
*/
|
||||
public static int stars = 0;
|
||||
public static int code_bytes = 0;
|
||||
public static Date last_update = new Date();
|
||||
|
||||
private static final int category_size = 36;
|
||||
|
||||
@Deprecated
|
||||
public static ItemStack getItem() {
|
||||
return getItem(BookDesign.CHEST);
|
||||
return getItem(SlimefunGuideLayout.CHEST);
|
||||
}
|
||||
|
||||
public static ItemStack getItem(BookDesign design) {
|
||||
public static ItemStack getItem(SlimefunGuideLayout design) {
|
||||
switch (design) {
|
||||
case BOOK:
|
||||
return new CustomItem(new ItemStack(Material.ENCHANTED_BOOK), "&aSlimefun Guide &7(Book GUI)", "", "&eRight Click &8\u21E8 &7Browse Items", "&eShift + Right Click &8\u21E8 &7Open Settings / Credits");
|
||||
@ -90,7 +78,7 @@ public final class SlimefunGuide {
|
||||
|
||||
@Deprecated
|
||||
public static ItemStack getItem(boolean book) {
|
||||
return getItem(book ? BookDesign.BOOK: BookDesign.CHEST);
|
||||
return getItem(book ? SlimefunGuideLayout.BOOK: SlimefunGuideLayout.CHEST);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -116,11 +104,11 @@ public final class SlimefunGuide {
|
||||
}
|
||||
|
||||
|
||||
if (SlimefunManager.isItemSimiliar(guide, getItem(BookDesign.CHEST), true)) {
|
||||
if (SlimefunManager.isItemSimiliar(guide, getItem(SlimefunGuideLayout.CHEST), true)) {
|
||||
if (p.hasPermission("slimefun.cheat.items")) {
|
||||
menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eChest GUI", "", "&aChest GUI", "&7Book GUI", "&7Cheat Sheet", "", "&e Click &8\u21E8 &7Change Layout"));
|
||||
menu.addMenuClickHandler(19, (pl, slot, item, action) -> {
|
||||
pl.getInventory().setItemInMainHand(getItem(BookDesign.BOOK));
|
||||
pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.BOOK));
|
||||
openSettings(pl, pl.getInventory().getItemInMainHand());
|
||||
return false;
|
||||
});
|
||||
@ -128,17 +116,17 @@ public final class SlimefunGuide {
|
||||
else {
|
||||
menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eChest GUI", "", "&aChest GUI", "&7Book GUI", "", "&e Click &8\u21E8 &7Change Layout"));
|
||||
menu.addMenuClickHandler(19, (pl, slot, item, action) -> {
|
||||
pl.getInventory().setItemInMainHand(getItem(BookDesign.BOOK));
|
||||
pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.BOOK));
|
||||
openSettings(pl, pl.getInventory().getItemInMainHand());
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (SlimefunManager.isItemSimiliar(guide, getItem(BookDesign.BOOK), true)) {
|
||||
else if (SlimefunManager.isItemSimiliar(guide, getItem(SlimefunGuideLayout.BOOK), true)) {
|
||||
if (p.hasPermission("slimefun.cheat.items")) {
|
||||
menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eBook GUI", "", "&7Chest GUI", "&aBook GUI", "&7Cheat Sheet", "", "&e Click &8\u21E8 &7Change Layout"));
|
||||
menu.addMenuClickHandler(19, (pl, slot, item, action) -> {
|
||||
pl.getInventory().setItemInMainHand(getItem(BookDesign.CHEAT_SHEET));
|
||||
pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.CHEAT_SHEET));
|
||||
openSettings(pl, pl.getInventory().getItemInMainHand());
|
||||
return false;
|
||||
});
|
||||
@ -146,29 +134,29 @@ public final class SlimefunGuide {
|
||||
else {
|
||||
menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eBook GUI", "", "&7Chest GUI", "&aBook GUI", "", "&e Click &8\u21E8 &7Change Layout"));
|
||||
menu.addMenuClickHandler(19, (pl, slot, item, action) -> {
|
||||
pl.getInventory().setItemInMainHand(getItem(BookDesign.CHEST));
|
||||
pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.CHEST));
|
||||
openSettings(pl, pl.getInventory().getItemInMainHand());
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (SlimefunManager.isItemSimiliar(guide, getItem(BookDesign.CHEAT_SHEET), true)) {
|
||||
else if (SlimefunManager.isItemSimiliar(guide, getItem(SlimefunGuideLayout.CHEAT_SHEET), true)) {
|
||||
menu.addItem(19, new CustomItem(new ItemStack(Material.CHEST), "&7Guide Layout: &eCheat Sheet", "", "&7Chest GUI", "&7Book GUI", "&aCheat Sheet", "", "&e Click &8\u21E8 &7Change Layout"));
|
||||
menu.addMenuClickHandler(19, (pl, slot, item, action) -> {
|
||||
pl.getInventory().setItemInMainHand(getItem(BookDesign.CHEST));
|
||||
pl.getInventory().setItemInMainHand(getItem(SlimefunGuideLayout.CHEST));
|
||||
openSettings(pl, pl.getInventory().getItemInMainHand());
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
menu.addItem(1, new CustomItem(new ItemStack(Material.WRITABLE_BOOK), "&aCredits", "", "&7Version: &a" + SlimefunStartup.instance.getDescription().getVersion(), "&7Contributors: &e" + SlimefunStartup.instance.getUtilities().contributors.size(), "", "&7\u21E8 Click to see the people behind this Plugin"));
|
||||
menu.addItem(1, new CustomItem(new ItemStack(Material.WRITABLE_BOOK), "&aCredits", "", "&7Version: &a" + SlimefunPlugin.instance.getDescription().getVersion(), "&7Contributors: &e" + SlimefunPlugin.getUtilities().contributors.size(), "", "&7\u21E8 Click to see the people behind this Plugin"));
|
||||
menu.addMenuClickHandler(1, (pl, slot, item, action) -> {
|
||||
openCredits(pl, guide);
|
||||
return false;
|
||||
});
|
||||
|
||||
try {
|
||||
menu.addItem(4, new CustomItem(new ItemStack(Material.COMPARATOR), "&eSource Code", "", "&7Bytes of Code: &6" + IntegerFormat.formatBigNumber(code_bytes), "&7Last Update: &a" + IntegerFormat.timeDelta(last_update) + " ago", "&7Forks: &e" + forks, "&7Stars: &e" + stars, "", "&7&oSlimefun 4 is a community project,", "&7&othe source code is available on GitHub", "&7&oand if you want to keep this Plugin alive,", "&7&othen please consider contributing to it", "", "&7\u21E8 Click to go to GitHub"));
|
||||
menu.addItem(4, new CustomItem(new ItemStack(Material.COMPARATOR), "&eSource Code", "", "&7Bytes of Code: &6" + IntegerFormat.formatBigNumber(SlimefunPlugin.getUtilities().codeBytes), "&7Last Update: &a" + IntegerFormat.timeDelta(SlimefunPlugin.getUtilities().lastUpdate) + " ago", "&7Forks: &e" + SlimefunPlugin.getUtilities().forks, "&7Stars: &e" + SlimefunPlugin.getUtilities().stars, "", "&7&oSlimefun 4 is a community project,", "&7&othe source code is available on GitHub", "&7&oand if you want to keep this Plugin alive,", "&7&othen please consider contributing to it", "", "&7\u21E8 Click to go to GitHub"));
|
||||
menu.addMenuClickHandler(4, (pl, slot, item, action) -> {
|
||||
pl.closeInventory();
|
||||
pl.sendMessage("");
|
||||
@ -176,11 +164,11 @@ public final class SlimefunGuide {
|
||||
pl.sendMessage("");
|
||||
return false;
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Info-Panel for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
menu.addItem(7, new CustomItem(new ItemStack(Material.REDSTONE), "&4Bug Tracker", "", "&7Unsolved Issues: &a" + issues, "", "&7\u21E8 Click to go to the Slimefun Bug Tracker"));
|
||||
menu.addItem(7, new CustomItem(new ItemStack(Material.REDSTONE), "&4Bug Tracker", "", "&7Unsolved Issues: &a" + SlimefunPlugin.getUtilities().issues, "", "&7\u21E8 Click to go to the Slimefun Bug Tracker"));
|
||||
menu.addMenuClickHandler(7, (pl, slot, item, action) -> {
|
||||
pl.closeInventory();
|
||||
pl.sendMessage("");
|
||||
@ -219,18 +207,18 @@ public final class SlimefunGuide {
|
||||
int index = 9;
|
||||
double total = 0;
|
||||
|
||||
for (Contributor contributor : SlimefunStartup.instance.getUtilities().contributors) {
|
||||
for (Contributor contributor : SlimefunPlugin.getUtilities().contributors) {
|
||||
total += contributor.getCommits();
|
||||
}
|
||||
|
||||
for (final Contributor contributor: SlimefunStartup.instance.getUtilities().contributors) {
|
||||
for (final Contributor contributor: SlimefunPlugin.getUtilities().contributors) {
|
||||
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);
|
||||
|
||||
try {
|
||||
String texture = contributor.getTexture();
|
||||
if (texture != null) skull = CustomSkull.getItem(texture);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while fetching a Contributor Head for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
SkullMeta meta = (SkullMeta) skull.getItemMeta();
|
||||
@ -269,8 +257,8 @@ public final class SlimefunGuide {
|
||||
}
|
||||
|
||||
public static void openGuide(Player p, boolean book) {
|
||||
if (!SlimefunStartup.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled")) return;
|
||||
if (!SlimefunStartup.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE")) return;
|
||||
if (!SlimefunPlugin.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled")) return;
|
||||
if (!SlimefunPlugin.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE")) return;
|
||||
if (!getHistory().containsKey(p.getUniqueId())) openMainMenu(p, true, book, 1);
|
||||
else {
|
||||
Object last = getLastEntry(p, false);
|
||||
@ -352,7 +340,7 @@ public final class SlimefunGuide {
|
||||
actions.add(new PlayerRunnable(1) {
|
||||
@Override
|
||||
public void run(final Player p) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, 1, book), 1L);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(p, category, survival, 1, book), 1L);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -363,7 +351,7 @@ public final class SlimefunGuide {
|
||||
actions.add(new PlayerRunnable(1) {
|
||||
@Override
|
||||
public void run(final Player p) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, 1, book), 1L);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(p, category, survival, 1, book), 1L);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -416,8 +404,8 @@ public final class SlimefunGuide {
|
||||
pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F)
|
||||
);
|
||||
|
||||
List<Category> categories = Slimefun.current_categories;
|
||||
List<GuideHandler> handlers = Slimefun.guide_handlers.values().stream().flatMap(List::stream).collect(Collectors.toList());
|
||||
List<Category> categories = SlimefunPlugin.getUtilities().currentlyEnabledCategories;
|
||||
List<GuideHandler> handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList());
|
||||
|
||||
int index = 9;
|
||||
int pages = 1;
|
||||
@ -567,19 +555,19 @@ public final class SlimefunGuide {
|
||||
openCategory(p, category, true, selected_page, book);
|
||||
}
|
||||
else {
|
||||
if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) {
|
||||
if (!(p.getGameMode() == GameMode.CREATIVE && SlimefunPlugin.getSettings().researchesFreeInCreative)) {
|
||||
p.setLevel(p.getLevel() - research.getCost());
|
||||
}
|
||||
|
||||
if (p.getGameMode() == GameMode.CREATIVE) {
|
||||
research.unlock(p, true);
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, selected_page, book), 1L);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(p, category, survival, selected_page, book), 1L);
|
||||
}
|
||||
else {
|
||||
research.unlock(p, false);
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(p, category, survival, selected_page, book), 103L);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(p, category, survival, selected_page, book), 103L);
|
||||
}
|
||||
}
|
||||
} else Messages.local.sendTranslation(p, "messages.not-enough-xp", true);
|
||||
@ -634,7 +622,7 @@ public final class SlimefunGuide {
|
||||
page.addClickEvent(new PlayerRunnable(2) {
|
||||
@Override
|
||||
public void run(final Player p) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openMainMenu(p, survival, true, 1), 1L);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openMainMenu(p, survival, true, 1), 1L);
|
||||
}
|
||||
});
|
||||
pages.add(page);
|
||||
@ -687,9 +675,9 @@ public final class SlimefunGuide {
|
||||
return false;
|
||||
});
|
||||
|
||||
int category_index = category_size * (selected_page - 1);
|
||||
int categoryIndex = category_size * (selected_page - 1);
|
||||
for (int i = 0; i < category_size; i++) {
|
||||
int target = category_index + i;
|
||||
int target = categoryIndex + i;
|
||||
if (target >= category.getItems().size()) break;
|
||||
final SlimefunItem sfitem = category.getItems().get(target);
|
||||
if (Slimefun.isEnabled(p, sfitem, false)) {
|
||||
@ -706,17 +694,17 @@ public final class SlimefunGuide {
|
||||
openCategory(p, category, true, selected_page, book);
|
||||
}
|
||||
else {
|
||||
if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE)) {
|
||||
if (!(pl.getGameMode() == GameMode.CREATIVE && SlimefunPlugin.getSettings().researchesFreeInCreative)) {
|
||||
pl.setLevel(pl.getLevel() - research.getCost());
|
||||
}
|
||||
|
||||
if (pl.getGameMode() == GameMode.CREATIVE) {
|
||||
research.unlock(pl, SlimefunStartup.instance.getSettings().RESEARCHES_FREE_IN_CREATIVE);
|
||||
research.unlock(pl, SlimefunPlugin.getSettings().researchesFreeInCreative);
|
||||
openCategory(pl, category, survival, selected_page, book);
|
||||
}
|
||||
else {
|
||||
research.unlock(pl, false);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> openCategory(pl, category, survival, selected_page, book), 103L);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openCategory(pl, category, survival, selected_page, book), 103L);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -728,7 +716,7 @@ public final class SlimefunGuide {
|
||||
index++;
|
||||
}
|
||||
else {
|
||||
menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), new String[] {"", "&rYou do not have Permission", "&rto access this Item"}));
|
||||
menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", "&rYou do not have Permission", "&rto access this Item"));
|
||||
menu.addMenuClickHandler(index, (pl, slot, item, action) -> false);
|
||||
index++;
|
||||
}
|
||||
@ -780,7 +768,7 @@ public final class SlimefunGuide {
|
||||
|
||||
final SlimefunItem sfItem = SlimefunItem.getByItem(item);
|
||||
|
||||
if (sfItem == null && !SlimefunStartup.instance.getSettings().GUIDE_SHOW_VANILLA_RECIPES) return;
|
||||
if (sfItem == null && !SlimefunPlugin.getSettings().guideShowVanillaRecipes) return;
|
||||
|
||||
ItemStack[] recipe = new ItemStack[9];
|
||||
ItemStack recipeType = null;
|
||||
@ -884,18 +872,18 @@ public final class SlimefunGuide {
|
||||
});
|
||||
|
||||
if (sfItem != null) {
|
||||
if (Slimefun.getItemConfig().contains(sfItem.getID() + ".wiki")) {
|
||||
if (sfItem.hasWiki()) {
|
||||
try {
|
||||
menu.addItem(8, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzY2OTJmOTljYzZkNzgyNDIzMDQxMTA1NTM1ODk0ODQyOThiMmU0YTAyMzNiNzY3NTNmODg4ZTIwN2VmNSJ9fX0="), "&rView this Item in our Wiki &7(Slimefun Wiki)", "", "&7\u21E8 Click to open"));
|
||||
menu.addMenuClickHandler(8, (pl, slot, itemstack, action) -> {
|
||||
pl.closeInventory();
|
||||
pl.sendMessage("");
|
||||
pl.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&o" + Slimefun.getItemConfig().getString(sfItem.getID() + ".wiki")));
|
||||
pl.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&o" + sfItem.getWiki()));
|
||||
pl.sendMessage("");
|
||||
return false;
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while adding a Wiki Page for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
@ -909,8 +897,8 @@ public final class SlimefunGuide {
|
||||
pl.sendMessage("");
|
||||
return false;
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while adding a Youtube Video for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -967,12 +955,12 @@ public final class SlimefunGuide {
|
||||
}
|
||||
|
||||
List<ItemStack> recipes = SlimefunItem.getByItem(item) instanceof SlimefunMachine ? ((SlimefunMachine) SlimefunItem.getByItem(item)).getDisplayRecipes() : ((SlimefunGadget) SlimefunItem.getByItem(item)).getDisplayRecipes();
|
||||
int recipe_size = recipes.size();
|
||||
if (recipe_size > 18) recipe_size = 18;
|
||||
int recipeSize = recipes.size();
|
||||
if (recipeSize > 18) recipeSize = 18;
|
||||
int inputs = -1;
|
||||
int outputs = -1;
|
||||
|
||||
for (int i = 0; i < recipe_size; i++) {
|
||||
for (int i = 0; i < recipeSize; i++) {
|
||||
int slot = 36;
|
||||
if (i % 2 == 1) {
|
||||
slot = slot + 9;
|
||||
@ -1031,7 +1019,7 @@ public final class SlimefunGuide {
|
||||
}
|
||||
|
||||
private static Map<UUID, List<Object>> getHistory() {
|
||||
return SlimefunStartup.instance.getUtilities().guideHistory;
|
||||
return SlimefunPlugin.getUtilities().guideHistory;
|
||||
}
|
||||
|
||||
public static void clearHistory(UUID uuid) {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package me.mrCookieSlime.Slimefun;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bstats.bukkit.Metrics;
|
||||
import org.bukkit.Bukkit;
|
||||
@ -21,6 +22,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils;
|
||||
import me.mrCookieSlime.Slimefun.GEO.OreGenSystem;
|
||||
import me.mrCookieSlime.Slimefun.GEO.Resources.NetherIceResource;
|
||||
import me.mrCookieSlime.Slimefun.GEO.Resources.OilResource;
|
||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
@ -76,17 +78,17 @@ import me.mrCookieSlime.Slimefun.listeners.WorldListener;
|
||||
import me.mrCookieSlime.Slimefun.utils.Settings;
|
||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||
|
||||
public final class SlimefunStartup extends JavaPlugin {
|
||||
public final class SlimefunPlugin extends JavaPlugin {
|
||||
|
||||
public static SlimefunStartup instance;
|
||||
public static SlimefunPlugin instance;
|
||||
|
||||
private static Config researches;
|
||||
private static Config items;
|
||||
private static Config whitelist;
|
||||
private static Config config;
|
||||
|
||||
public static TickerTask ticker;
|
||||
private TickerTask ticker;
|
||||
private Config researches;
|
||||
private Config items;
|
||||
private Config whitelist;
|
||||
private Config config;
|
||||
|
||||
public GPSNetwork gps = new GPSNetwork();
|
||||
private Utilities utilities = new Utilities();
|
||||
private Settings settings;
|
||||
private SlimefunHooks hooks;
|
||||
@ -120,38 +122,41 @@ public final class SlimefunStartup extends JavaPlugin {
|
||||
|
||||
// Looks like you are using an unsupported Minecraft Version
|
||||
if (!compatibleVersion) {
|
||||
System.err.println("### Slimefun failed to load!");
|
||||
System.err.println("###");
|
||||
System.err.println("### You are using the wrong Version of Minecraft!!!");
|
||||
System.err.println("###");
|
||||
System.err.println("### You are using Minecraft " + ReflectionUtils.getVersion());
|
||||
System.err.println("### but Slimefun v" + getDescription().getVersion() + " requires you to be using");
|
||||
System.err.println("### Minecraft " + versions.toString());
|
||||
System.err.println("###");
|
||||
System.err.println("### Please use an older Version of Slimefun and disable auto-updating");
|
||||
System.err.println("### or consider updating your Server Software.");
|
||||
getLogger().log(Level.SEVERE, "### Slimefun was not installed correctly!");
|
||||
getLogger().log(Level.SEVERE, "###");
|
||||
getLogger().log(Level.SEVERE, "### You are using the wrong Version of Minecraft!");
|
||||
getLogger().log(Level.SEVERE, "###");
|
||||
getLogger().log(Level.SEVERE, "### You are using Minecraft " + ReflectionUtils.getVersion());
|
||||
getLogger().log(Level.SEVERE, "### but Slimefun v" + getDescription().getVersion() + " requires you to be using");
|
||||
getLogger().log(Level.SEVERE, "### Minecraft " + versions.toString());
|
||||
getLogger().log(Level.SEVERE, "###");
|
||||
getLogger().log(Level.SEVERE, "### Please use an older Version of Slimefun and disable auto-updating");
|
||||
getLogger().log(Level.SEVERE, "### or consider updating your Server Software.");
|
||||
getServer().getPluginManager().disablePlugin(this);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
instance = this;
|
||||
System.out.println("[Slimefun] Loading Files...");
|
||||
Files.cleanup();
|
||||
getLogger().log(Level.INFO, "Loading Files...");
|
||||
Files files = new Files();
|
||||
files.cleanup();
|
||||
|
||||
System.out.println("[Slimefun] Loading Config...");
|
||||
getLogger().log(Level.INFO, "Loading Config...");
|
||||
|
||||
// Setup config.yml
|
||||
PluginUtils utils = new PluginUtils(this);
|
||||
utils.setupConfig();
|
||||
config = utils.getConfig();
|
||||
settings = new Settings(config);
|
||||
|
||||
// Loading all extra configs
|
||||
researches = new Config(Files.RESEARCHES);
|
||||
items = new Config(Files.ITEMS);
|
||||
whitelist = new Config(Files.WHITELIST);
|
||||
researches = new Config(files.researches);
|
||||
items = new Config(files.items);
|
||||
whitelist = new Config(files.whitelist);
|
||||
|
||||
// Setup Config and messages.yml
|
||||
// Setup messages.yml
|
||||
utils.setupLocalization();
|
||||
config = utils.getConfig();
|
||||
Messages.local = utils.getLocalization();
|
||||
Messages.setup();
|
||||
|
||||
@ -178,28 +183,26 @@ public final class SlimefunStartup extends JavaPlugin {
|
||||
for (String s : storage) createDir("data-storage/Slimefun/" + s);
|
||||
for (String s : general) createDir("plugins/Slimefun/" + s);
|
||||
|
||||
SlimefunManager.plugin = this;
|
||||
|
||||
System.out.println("[Slimefun] Loading Items...");
|
||||
getLogger().log(Level.INFO, "Loading Items...");
|
||||
MiscSetup.setupItemSettings();
|
||||
|
||||
try {
|
||||
SlimefunSetup.setupItems();
|
||||
} catch (Exception x) {
|
||||
x.printStackTrace();
|
||||
getLogger().log(Level.SEVERE, "An Error occured while initializing SlimefunItems for Slimefun " + Slimefun.getVersion());
|
||||
}
|
||||
|
||||
MiscSetup.loadDescriptions();
|
||||
|
||||
settings = new Settings(config);
|
||||
settings.RESEARCHES_ENABLED = getResearchCfg().getBoolean("enable-researching");
|
||||
settings.SMELTERY_FIRE_BREAK_CHANCE = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak");
|
||||
settings.researchesEnabled = getResearchCfg().getBoolean("enable-researching");
|
||||
settings.smelteryFireBreakChance = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak");
|
||||
|
||||
System.out.println("[Slimefun] Loading Researches...");
|
||||
getLogger().log(Level.INFO, "Loading Researches...");
|
||||
ResearchSetup.setupResearches();
|
||||
|
||||
MiscSetup.setupMisc();
|
||||
|
||||
System.out.println("[Slimefun] Loading World Generators...");
|
||||
getLogger().log(Level.INFO, "Loading World Generators...");
|
||||
|
||||
// Generating Oil as an OreGenResource (its a cool API)
|
||||
OreGenSystem.registerResource(new OilResource());
|
||||
@ -240,14 +243,13 @@ public final class SlimefunStartup extends JavaPlugin {
|
||||
|
||||
// Initiating various Stuff and all Items with a slightly delay (0ms after the Server finished loading)
|
||||
getServer().getScheduler().scheduleSyncDelayedTask(this, () -> {
|
||||
Slimefun.emeraldenchants = getServer().getPluginManager().isPluginEnabled("EmeraldEnchants");
|
||||
MiscSetup.loadItems(settings);
|
||||
|
||||
for (World world: Bukkit.getWorlds()) {
|
||||
new BlockStorage(world);
|
||||
}
|
||||
|
||||
if (SlimefunItem.getByID("ANCIENT_ALTAR") != null) new AncientAltarListener((SlimefunStartup) instance);
|
||||
if (SlimefunItem.getByID("ANCIENT_ALTAR") != null) new AncientAltarListener((SlimefunPlugin) instance);
|
||||
}, 0);
|
||||
|
||||
getCommand("slimefun").setExecutor(new SlimefunCommand(this));
|
||||
@ -301,16 +303,16 @@ public final class SlimefunStartup extends JavaPlugin {
|
||||
|
||||
ticker = new TickerTask();
|
||||
|
||||
getServer().getScheduler().runTaskTimer(this, new PlayerAutoSaver(), 2000L, settings.BLOCK_AUTO_SAVE_DELAY * 60L * 20L);
|
||||
getServer().getScheduler().runTaskTimer(this, new PlayerAutoSaver(), 2000L, settings.blocksAutoSaveDelay * 60L * 20L);
|
||||
|
||||
// Starting all ASYNC Tasks
|
||||
getServer().getScheduler().runTaskTimerAsynchronously(this, new BlockAutoSaver(), 2000L, settings.BLOCK_AUTO_SAVE_DELAY * 60L * 20L);
|
||||
getServer().getScheduler().runTaskTimerAsynchronously(this, new BlockAutoSaver(), 2000L, settings.blocksAutoSaveDelay * 60L * 20L);
|
||||
getServer().getScheduler().runTaskTimerAsynchronously(this, ticker, 100L, config.getInt("URID.custom-ticker-delay"));
|
||||
|
||||
getServer().getScheduler().runTaskTimerAsynchronously(this, () -> utilities.connectors.forEach(GitHubConnector::pullFile), 80L, 60 * 60 * 20L);
|
||||
|
||||
// Hooray!
|
||||
System.out.println("[Slimefun] Finished!");
|
||||
getLogger().log(Level.INFO, "Finished!");
|
||||
hooks = new SlimefunHooks(this);
|
||||
|
||||
OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST};
|
||||
@ -342,36 +344,26 @@ public final class SlimefunStartup extends JavaPlugin {
|
||||
storage.save(true);
|
||||
}
|
||||
else {
|
||||
System.err.println("[Slimefun] Could not save Slimefun Blocks for World \"" + world.getName() + "\"");
|
||||
getLogger().log(Level.SEVERE, "Could not save Slimefun Blocks for World \"" + world.getName() + "\"");
|
||||
}
|
||||
} catch (Exception x) {
|
||||
x.printStackTrace();
|
||||
getLogger().log(Level.SEVERE, "An Error occured while saving Slimefun-Blocks in World '" + world.getName() + "' for Slimefun " + Slimefun.getVersion());
|
||||
}
|
||||
}
|
||||
|
||||
for (UniversalBlockMenu menu: BlockStorage.universal_inventories.values()) {
|
||||
for (UniversalBlockMenu menu: utilities.universalInventories.values()) {
|
||||
menu.save();
|
||||
}
|
||||
|
||||
SlimefunBackup.start();
|
||||
|
||||
// Prevent Memory Leaks
|
||||
config = null;
|
||||
researches = null;
|
||||
items = null;
|
||||
whitelist = null;
|
||||
instance = null;
|
||||
Messages.local = null;
|
||||
Files.CONFIG = null;
|
||||
Files.DATABASE = null;
|
||||
Files.ITEMS = null;
|
||||
Files.RESEARCHES = null;
|
||||
Files.WHITELIST = null;
|
||||
MultiBlock.list = null;
|
||||
Research.list = null;
|
||||
SlimefunItem.all = null;
|
||||
SlimefunItem.items = null;
|
||||
SlimefunItem.map_id = null;
|
||||
SlimefunItem.mapID = null;
|
||||
SlimefunItem.handlers = null;
|
||||
SlimefunItem.radioactive = null;
|
||||
SlimefunCommand.arguments = null;
|
||||
@ -379,22 +371,18 @@ public final class SlimefunStartup extends JavaPlugin {
|
||||
SlimefunCommand.tabs = null;
|
||||
SlimefunItem.blockhandler = null;
|
||||
BlockMenuPreset.presets = null;
|
||||
BlockStorage.loaded_tickers = null;
|
||||
BlockStorage.ticking_chunks = null;
|
||||
BlockStorage.worlds = null;
|
||||
ChargableBlock.capacitors = null;
|
||||
ChargableBlock.max_charges = null;
|
||||
ChargableBlock.maxCharges = null;
|
||||
AContainer.processing = null;
|
||||
AContainer.progress = null;
|
||||
Slimefun.guide_handlers = null;
|
||||
EnergyNet.machines_input = null;
|
||||
EnergyNet.machines_output = null;
|
||||
EnergyNet.machines_storage = null;
|
||||
EnergyNet.machinesInput = null;
|
||||
EnergyNet.machinesOutput = null;
|
||||
EnergyNet.machinesStorage = null;
|
||||
CargoNet.faces = null;
|
||||
BlockStorage.universal_inventories = null;
|
||||
PlayerProfile.profiles = null;
|
||||
OreWasher.items = null;
|
||||
|
||||
instance = null;
|
||||
|
||||
for (Player p: Bukkit.getOnlinePlayers()) {
|
||||
p.closeInventory();
|
||||
}
|
||||
@ -406,19 +394,19 @@ public final class SlimefunStartup extends JavaPlugin {
|
||||
}
|
||||
|
||||
public static Config getCfg() {
|
||||
return config;
|
||||
return instance.config;
|
||||
}
|
||||
|
||||
public static Config getResearchCfg() {
|
||||
return researches;
|
||||
return instance.researches;
|
||||
}
|
||||
|
||||
public static Config getItemCfg() {
|
||||
return items;
|
||||
return instance.items;
|
||||
}
|
||||
|
||||
public static Config getWhitelist() {
|
||||
return whitelist;
|
||||
return instance.whitelist;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -433,16 +421,24 @@ public final class SlimefunStartup extends JavaPlugin {
|
||||
return CSCoreLib.randomizer().nextInt(max) <= percentage;
|
||||
}
|
||||
|
||||
public SlimefunHooks getHooks() {
|
||||
return hooks;
|
||||
public static SlimefunHooks getHooks() {
|
||||
return instance.hooks;
|
||||
}
|
||||
|
||||
public Utilities getUtilities() {
|
||||
return utilities;
|
||||
public static Utilities getUtilities() {
|
||||
return instance.utilities;
|
||||
}
|
||||
|
||||
public Settings getSettings() {
|
||||
return settings;
|
||||
public static Settings getSettings() {
|
||||
return instance.settings;
|
||||
}
|
||||
|
||||
public static TickerTask getTicker() {
|
||||
return instance.ticker;
|
||||
}
|
||||
|
||||
public static boolean isActive() {
|
||||
return instance != null;
|
||||
}
|
||||
|
||||
}
|
@ -5,7 +5,7 @@ import java.util.List;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
|
||||
public class AltarRecipe {
|
||||
|
||||
@ -29,7 +29,7 @@ public class AltarRecipe {
|
||||
|
||||
this.output = output;
|
||||
|
||||
SlimefunStartup.instance.getUtilities().altarRecipes.add(this);
|
||||
SlimefunPlugin.getUtilities().altarRecipes.add(this);
|
||||
}
|
||||
|
||||
public ItemStack getCatalyst() {
|
||||
|
@ -29,7 +29,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Variable;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
@ -39,10 +39,10 @@ public class AncientAltarListener implements Listener {
|
||||
|
||||
private Utilities utilities;
|
||||
|
||||
public AncientAltarListener(SlimefunStartup plugin) {
|
||||
public AncientAltarListener(SlimefunPlugin plugin) {
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
|
||||
utilities = plugin.getUtilities();
|
||||
utilities = SlimefunPlugin.getUtilities();
|
||||
}
|
||||
|
||||
private List<Block> altars = new ArrayList<>();
|
||||
@ -73,9 +73,7 @@ public class AncientAltarListener implements Listener {
|
||||
final UUID uuid = stack.getUniqueId();
|
||||
removedItems.add(uuid);
|
||||
|
||||
SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
removedItems.remove(uuid);
|
||||
}, 30L);
|
||||
SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> removedItems.remove(uuid), 30L);
|
||||
|
||||
stack.remove();
|
||||
e.getPlayer().getInventory().addItem(fixItemStack(stack.getItemStack(), stack.getCustomName()));
|
||||
@ -112,7 +110,7 @@ public class AncientAltarListener implements Listener {
|
||||
List<ItemStack> consumed = new ArrayList<>();
|
||||
consumed.add(catalyst);
|
||||
PlayerInventory.consumeItemInHand(e.getPlayer());
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new RitualAnimation(altars, b, b.getLocation().add(0.5, 1.3, 0.5), result, pedestals, consumed), 10L);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, new RitualAnimation(altars, b, b.getLocation().add(0.5, 1.3, 0.5), result, pedestals, consumed), 10L);
|
||||
}
|
||||
else {
|
||||
altars.remove(e.getClickedBlock());
|
||||
@ -172,7 +170,7 @@ public class AncientAltarListener implements Listener {
|
||||
String nametag = StringUtils.formatItemName(stack, false);
|
||||
Item entity = b.getWorld().dropItem(b.getLocation().add(0.5, 1.2, 0.5), new CustomItem(new CustomItem(stack, 1), "&5&dALTAR &3Probe - &e" + System.nanoTime()));
|
||||
entity.setVelocity(new Vector(0, 0.1, 0));
|
||||
entity.setMetadata("no_pickup", new FixedMetadataValue(SlimefunStartup.instance, "altar_item"));
|
||||
entity.setMetadata("no_pickup", new FixedMetadataValue(SlimefunPlugin.instance, "altar_item"));
|
||||
entity.setCustomNameVisible(true);
|
||||
entity.setCustomName(nametag);
|
||||
p.playSound(b.getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.3F, 0.3F);
|
||||
|
@ -8,7 +8,7 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
@ -65,7 +65,7 @@ public final class Pedestals {
|
||||
}
|
||||
|
||||
private static ItemStack checkRecipe(ItemStack catalyst, List<ItemStack> items) {
|
||||
for (AltarRecipe recipe: SlimefunStartup.instance.getUtilities().altarRecipes) {
|
||||
for (AltarRecipe recipe: SlimefunPlugin.getUtilities().altarRecipes) {
|
||||
if (SlimefunManager.isItemSimiliar(catalyst, recipe.getCatalyst(), true)) {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (SlimefunManager.isItemSimiliar(items.get(i), recipe.getInput().get(0), true)) {
|
||||
|
@ -4,8 +4,10 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
@ -33,7 +35,7 @@ public class RitualAnimation implements Runnable {
|
||||
private boolean running;
|
||||
private int stage;
|
||||
|
||||
private Utilities utilities = SlimefunStartup.instance.getUtilities();
|
||||
private Utilities utilities = SlimefunPlugin.getUtilities();
|
||||
|
||||
public RitualAnimation(List<Block> altars, Block altar, Location drop, ItemStack output, List<Block> pedestals, List<ItemStack> items) {
|
||||
this.l = drop;
|
||||
@ -72,7 +74,7 @@ public class RitualAnimation implements Runnable {
|
||||
}
|
||||
|
||||
this.stage += 1;
|
||||
SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, this, 8);
|
||||
SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, this, 8);
|
||||
}
|
||||
|
||||
private boolean checkLockedItems() {
|
||||
@ -94,8 +96,8 @@ public class RitualAnimation implements Runnable {
|
||||
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 e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while playing Ritual Animation for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
@ -113,14 +115,14 @@ public class RitualAnimation implements Runnable {
|
||||
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 e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while playing Pedestal Animation for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
itemLock.remove(item);
|
||||
item.remove();
|
||||
|
||||
pedestal.removeMetadata("item_placed", SlimefunStartup.instance);
|
||||
pedestal.removeMetadata("item_placed", SlimefunPlugin.instance);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -48,7 +49,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.ExoticGarden.ExoticGarden;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
@ -61,6 +62,7 @@ import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.androids.comparators.ScriptReputationSorter;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||
@ -143,8 +145,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
public void init() {
|
||||
try {
|
||||
constructMenu(this);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while constructing an Android Inventory for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
@ -177,17 +179,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
|
||||
menu.replaceExistingItem(16, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&bMemory Core", "", "&8\u21E8 &7Click to open the Script Editor"));
|
||||
menu.addMenuClickHandler(16, (p, slot, item, action) -> {
|
||||
try {
|
||||
BlockStorage.addBlockInfo(b, "paused", "true");
|
||||
Messages.local.sendTranslation(p, "robot.stopped", true);
|
||||
openScriptEditor(p, b);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a new Instance of an Android Inventory for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
@ -240,11 +238,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
|
||||
protected void tick(Block b) {
|
||||
try {
|
||||
if (!(b.getState() instanceof Skull)) {
|
||||
return;
|
||||
}
|
||||
} catch (NullPointerException x) {
|
||||
// The Android was destroyed or moved.
|
||||
return;
|
||||
}
|
||||
|
||||
@ -279,28 +274,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
|
||||
switch (part) {
|
||||
case GO_DOWN:
|
||||
try {
|
||||
Block block = b.getRelative(BlockFace.DOWN);
|
||||
move(b, face, block);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
move(b, face, b.getRelative(BlockFace.DOWN));
|
||||
break;
|
||||
case GO_FORWARD:
|
||||
try {
|
||||
Block block = b.getRelative(face);
|
||||
move(b, face, block);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
move(b, face, b.getRelative(face));
|
||||
break;
|
||||
case GO_UP:
|
||||
try {
|
||||
Block block = b.getRelative(BlockFace.UP);
|
||||
move(b, face, block);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
move(b, face, b.getRelative(BlockFace.UP));
|
||||
break;
|
||||
case REPEAT:
|
||||
BlockStorage.addBlockInfo(b, "index", String.valueOf(0));
|
||||
@ -457,8 +437,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) {
|
||||
case NORTH:
|
||||
if (n.getLocation().getZ() < b.getZ()) {
|
||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance);
|
||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b)));
|
||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance);
|
||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b)));
|
||||
|
||||
((LivingEntity) n).damage(damage);
|
||||
return;
|
||||
@ -466,8 +446,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
break;
|
||||
case EAST:
|
||||
if (n.getLocation().getX() > b.getX()) {
|
||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance);
|
||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b)));
|
||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance);
|
||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b)));
|
||||
|
||||
((LivingEntity) n).damage(damage);
|
||||
return;
|
||||
@ -475,8 +455,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
break;
|
||||
case SOUTH:
|
||||
if (n.getLocation().getZ() > b.getZ()) {
|
||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance);
|
||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b)));
|
||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance);
|
||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b)));
|
||||
|
||||
((LivingEntity) n).damage(damage);
|
||||
return;
|
||||
@ -484,8 +464,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
break;
|
||||
case WEST:
|
||||
if (n.getLocation().getX() < b.getX()) {
|
||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunStartup.instance);
|
||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunStartup.instance, new AndroidObject(this, b)));
|
||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance);
|
||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b)));
|
||||
|
||||
((LivingEntity) n).damage(damage);
|
||||
return;
|
||||
@ -498,15 +478,19 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
|
||||
private void move(Block b, BlockFace face, Block block) throws Exception {
|
||||
if (block.getY() < 0 || block.getY() > block.getWorld().getMaxHeight())
|
||||
return;
|
||||
if (block.getType() == Material.AIR || block.getType() == Material.CAVE_AIR) {
|
||||
private void move(Block b, BlockFace face, Block block) {
|
||||
if (block.getY() > 0 && block.getY() < block.getWorld().getMaxHeight() && (block.getType() == Material.AIR || block.getType() == Material.CAVE_AIR)) {
|
||||
block.setType(Material.PLAYER_HEAD);
|
||||
Rotatable blockData = (Rotatable) block.getBlockData();
|
||||
blockData.setRotation(face.getOppositeFace());
|
||||
block.setBlockData(blockData);
|
||||
|
||||
try {
|
||||
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
b.setType(Material.AIR);
|
||||
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
|
||||
}
|
||||
@ -543,7 +527,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
private void movedig(Block b, BlockFace face, Block block) {
|
||||
Collection<ItemStack> drops = block.getDrops();
|
||||
if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), block)) {
|
||||
try {
|
||||
SlimefunItem item = BlockStorage.check(block);
|
||||
if (item != null) {
|
||||
if (fits(b, item.getItem()) && SlimefunItem.blockhandler.containsKey(item.getID()) && SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) {
|
||||
@ -553,7 +536,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
Rotatable blockData = (Rotatable) block.getBlockData();
|
||||
blockData.setRotation(face.getOppositeFace());
|
||||
block.setBlockData(blockData);
|
||||
|
||||
try {
|
||||
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
b.setType(Material.AIR);
|
||||
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
|
||||
}
|
||||
@ -567,21 +556,20 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
Rotatable blockData = (Rotatable) block.getBlockData();
|
||||
blockData.setRotation(face.getOppositeFace());
|
||||
block.setBlockData(blockData);
|
||||
|
||||
try {
|
||||
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
b.setType(Material.AIR);
|
||||
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
|
||||
}
|
||||
}
|
||||
} catch (Exception x) {
|
||||
x.printStackTrace();
|
||||
}
|
||||
}
|
||||
else {
|
||||
try {
|
||||
move(b, face, block);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -592,7 +580,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
|
||||
private void farm(Block b, Block block) {
|
||||
switch (block.getType()) {
|
||||
case WHEAT: {
|
||||
case WHEAT:
|
||||
if (isFullGrown(block)) {
|
||||
ItemStack drop = new ItemStack(Material.WHEAT, CSCoreLib.randomizer().nextInt(3) + 1);
|
||||
if (fits(b, drop)) {
|
||||
@ -604,8 +592,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case POTATOES: {
|
||||
case POTATOES:
|
||||
if (isFullGrown(block)) {
|
||||
ItemStack drop = new ItemStack(Material.POTATO, CSCoreLib.randomizer().nextInt(3) + 1);
|
||||
if (fits(b, drop)) {
|
||||
@ -617,8 +604,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CARROTS: {
|
||||
case CARROTS:
|
||||
if (isFullGrown(block)) {
|
||||
ItemStack drop = new ItemStack(Material.CARROT, CSCoreLib.randomizer().nextInt(3) + 1);
|
||||
if (fits(b, drop)) {
|
||||
@ -630,8 +616,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BEETROOTS: {
|
||||
case BEETROOTS:
|
||||
if (isFullGrown(block)) {
|
||||
ItemStack drop = new ItemStack(Material.BEETROOT, CSCoreLib.randomizer().nextInt(3) + 1);
|
||||
if (fits(b, drop)) {
|
||||
@ -643,8 +628,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case COCOA: {
|
||||
case COCOA:
|
||||
if (isFullGrown(block)) {
|
||||
ItemStack drop = new ItemStack(Material.COCOA_BEANS, CSCoreLib.randomizer().nextInt(3) + 1);
|
||||
if (fits(b, drop)) {
|
||||
@ -656,8 +640,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NETHER_WART: {
|
||||
case NETHER_WART:
|
||||
if (isFullGrown(block)) {
|
||||
ItemStack drop = new ItemStack(Material.NETHER_WART, CSCoreLib.randomizer().nextInt(3) + 1);
|
||||
if (fits(b, drop)) {
|
||||
@ -669,7 +652,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -677,7 +659,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
|
||||
private void exoticFarm(Block b, Block block) {
|
||||
farm(b, block);
|
||||
if (SlimefunStartup.instance.getHooks().isExoticGardenInstalled()) {
|
||||
if (SlimefunPlugin.getHooks().isExoticGardenInstalled()) {
|
||||
ItemStack drop = ExoticGarden.harvestPlant(block);
|
||||
if (drop != null && fits(b, drop)) {
|
||||
pushItems(b, drop);
|
||||
@ -730,57 +712,42 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
|
||||
public void openScriptEditor(Player p, final Block b) throws Exception {
|
||||
public void openScriptEditor(Player p, final Block b) {
|
||||
ChestMenu menu = new ChestMenu("&eScript Editor");
|
||||
|
||||
menu.addItem(1, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDliZjZkYjRhZWRhOWQ4ODIyYjlmNzM2NTM4ZThjMThiOWE0ODQ0Zjg0ZWI0NTUwNGFkZmJmZWU4N2ViIn19fQ=="), "&2> Edit Script", "", "&aEdits your current Script"),
|
||||
(pl, slot, item, action) -> {
|
||||
try {
|
||||
menu.addItem(1, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDliZjZkYjRhZWRhOWQ4ODIyYjlmNzM2NTM4ZThjMThiOWE0ODQ0Zjg0ZWI0NTUwNGFkZmJmZWU4N2ViIn19fQ=="), "&2> Edit Script", "", "&aEdits your current Script"));
|
||||
menu.addMenuClickHandler(1, (pl, slot, item, action) -> {
|
||||
openScript(pl, b, BlockStorage.getLocationInfo(b.getLocation(), "script"));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
menu.addItem(3, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&4> Create new Script", "", "&cDeletes your current Script", "&cand creates a blank one"),
|
||||
(pl, slot, item, action) -> {
|
||||
try {
|
||||
menu.addItem(3, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&4> Create new Script", "", "&cDeletes your current Script", "&cand creates a blank one"));
|
||||
menu.addMenuClickHandler(3, (pl, slot, item, action) -> {
|
||||
openScript(pl, b, "START-TURN_LEFT-REPEAT");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
menu.addItem(5, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzAxNTg2ZTM5ZjZmZmE2M2I0ZmIzMDFiNjVjYTdkYThhOTJmNzM1M2FhYWI4OWQzODg2NTc5MTI1ZGZiYWY5In19fQ=="), "&6> Download a Script", "", "&eDownload a Script from the Server", "&eYou can edit or simply use it"),
|
||||
(pl, slot, item, action) -> {
|
||||
try {
|
||||
menu.addItem(5, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzAxNTg2ZTM5ZjZmZmE2M2I0ZmIzMDFiNjVjYTdkYThhOTJmNzM1M2FhYWI4OWQzODg2NTc5MTI1ZGZiYWY5In19fQ=="), "&6> Download a Script", "", "&eDownload a Script from the Server", "&eYou can edit or simply use it"));
|
||||
menu.addMenuClickHandler(5, (pl, slot, item, action) -> {
|
||||
openScriptDownloader(pl, b, 1);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
menu.addItem(8, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface"),
|
||||
(pl, slot, item, action) -> {
|
||||
try {
|
||||
menu.addItem(8, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface"));
|
||||
menu.addMenuClickHandler(8, (pl, slot, item, action) -> {
|
||||
BlockStorage.getInventory(b).open(p);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
);
|
||||
|
||||
menu.open(p);
|
||||
}
|
||||
|
||||
public void openScript(final Player p, final Block b, final String script) throws Exception {
|
||||
public void openScript(final Player p, final Block b, final String script) {
|
||||
ChestMenu menu = new ChestMenu("&eScript Editor");
|
||||
final String[] commands = script.split("-");
|
||||
|
||||
@ -796,16 +763,17 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
int additional = commands.length == 54 ? 0: 1;
|
||||
|
||||
if (additional == 1) {
|
||||
try {
|
||||
menu.addItem(i, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&7> Add new Command"));
|
||||
menu.addMenuClickHandler(i, (pl, slot, item, action) -> {
|
||||
try {
|
||||
openScriptComponentEditor(pl, b, script, index);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
menu.addItem(i + additional, new CustomItem(ScriptPart.REPEAT.toItemStack(), ScriptPart.REPEAT.toItemStack().getItemMeta().getDisplayName(), "", "&7\u21E8 &eLeft Click &7to return to the Android's interface"));
|
||||
menu.addMenuClickHandler(i + additional, (pl, slot, item, action) -> {
|
||||
@ -835,11 +803,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
builder.append("REPEAT");
|
||||
BlockStorage.addBlockInfo(b, "script", builder.toString());
|
||||
|
||||
try {
|
||||
openScript(pl, b, builder.toString());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
else if (action.isRightClicked()) {
|
||||
int j = 0;
|
||||
@ -850,18 +814,11 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
builder.append("REPEAT");
|
||||
BlockStorage.addBlockInfo(b, "script", builder.toString());
|
||||
try {
|
||||
|
||||
openScript(pl, b, builder.toString());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
else {
|
||||
try {
|
||||
openScriptComponentEditor(pl, b, script, index);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
@ -871,7 +828,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
menu.open(p);
|
||||
}
|
||||
|
||||
private void openScriptDownloader(final Player p, final Block b, final int page) throws Exception {
|
||||
private void openScriptDownloader(final Player p, final Block b, final int page) {
|
||||
final ChestMenu menu = new ChestMenu("Android Scripts");
|
||||
|
||||
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HAT, 0.7F, 0.7F));
|
||||
@ -883,9 +840,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
|
||||
for (int i = 45; i < 54; i++) {
|
||||
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "));
|
||||
menu.addMenuClickHandler(i,
|
||||
(pl, slot, item, action) -> false
|
||||
);
|
||||
menu.addMenuClickHandler(i, (pl, slot, item, action) -> false);
|
||||
}
|
||||
|
||||
menu.addItem(46, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&r\u21E6 Previous Page", "", "&7(" + page + " / " + pages + ")"));
|
||||
@ -893,15 +848,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
int next = page - 1;
|
||||
if (next < 1) next = pages;
|
||||
if (next != page) {
|
||||
try {
|
||||
openScriptDownloader(pl, b, next);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
menu.addItem(48, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTA1YTJjYWI4YjY4ZWE1N2UzYWY5OTJhMzZlNDdjOGZmOWFhODdjYzg3NzYyODE5NjZmOGMzY2YzMWEzOCJ9fX0="), "&eUpload a Script", "", "&6Click &7to upload your Android's Script", "&7to the Database"));
|
||||
menu.addMenuClickHandler(48, (pl, slot, item, action) -> {
|
||||
final String code = BlockStorage.getLocationInfo(b.getLocation(), "script");
|
||||
@ -933,12 +886,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
script.setValue("rating.negative", new ArrayList<String>());
|
||||
script.save();
|
||||
|
||||
try {
|
||||
Messages.local.sendTranslation(player, "android.uploaded", true);
|
||||
openScriptDownloader(player, b, page);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
@ -950,28 +899,24 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
int next = page + 1;
|
||||
if (next > pages) next = 1;
|
||||
if (next != page) {
|
||||
try {
|
||||
openScriptDownloader(pl, b, next);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
menu.addItem(53, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface"));
|
||||
menu.addMenuClickHandler(53, (pl, slot, item, action) -> {
|
||||
try {
|
||||
openScriptEditor(pl, b);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Download Menu for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
int category_index = 45 * (page - 1);
|
||||
int categoryIndex = 45 * (page - 1);
|
||||
for (int i = 0; i < 45; i++) {
|
||||
int target = category_index + i;
|
||||
int target = categoryIndex + i;
|
||||
if (target >= scripts.size()) break;
|
||||
else {
|
||||
final Config script = scripts.get(target);
|
||||
@ -1001,11 +946,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
script2.setValue("rating.negative", list);
|
||||
script2.save();
|
||||
|
||||
try {
|
||||
openScriptDownloader(pl, b, page);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
else {
|
||||
Messages.local.sendTranslation(pl, "android.scripts.rating.already", true);
|
||||
@ -1019,11 +960,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
script2.setValue("rating.positive", list);
|
||||
script2.save();
|
||||
|
||||
try {
|
||||
openScriptDownloader(pl, b, page);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
else {
|
||||
Messages.local.sendTranslation(pl, "android.scripts.rating.already", true);
|
||||
@ -1031,15 +968,11 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
}
|
||||
else if (!action.isRightClicked()) {
|
||||
try {
|
||||
script2.setValue("downloads", script2.getInt("downloads") + 1);
|
||||
script2.save();
|
||||
|
||||
BlockStorage.addBlockInfo(b, "script", script2.getString("code"));
|
||||
openScriptEditor(pl, b);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
@ -1074,7 +1007,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
return progress;
|
||||
}
|
||||
|
||||
protected void openScriptComponentEditor(Player p, final Block b, final String script, final int index) throws Exception {
|
||||
protected void openScriptComponentEditor(Player p, final Block b, final String script, final int index) {
|
||||
ChestMenu menu = new ChestMenu("&eScript Editor");
|
||||
|
||||
final String[] commands = script.split("-");
|
||||
@ -1083,6 +1016,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (pl, slot, item, action) -> false);
|
||||
}
|
||||
|
||||
try {
|
||||
menu.addItem(9, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"), (pl, slot, item, action) -> {
|
||||
int i = 0;
|
||||
StringBuilder builder = new StringBuilder("START-");
|
||||
@ -1095,20 +1029,21 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
builder.append("REPEAT");
|
||||
BlockStorage.addBlockInfo(b, "script", builder.toString());
|
||||
|
||||
try {
|
||||
openScript(p, b, builder.toString());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
|
||||
int i = 10;
|
||||
for (final ScriptPart part : getAccessibleScriptParts()) {
|
||||
menu.addItem(i, part.toItemStack(),
|
||||
(pl, slot, item, action) -> {
|
||||
menu.addItem(i, part.toItemStack());
|
||||
menu.addMenuClickHandler(i, (pl, slot, item, action) -> {
|
||||
int j = 0;
|
||||
StringBuilder builder = new StringBuilder("START-");
|
||||
|
||||
for (String command : commands) {
|
||||
if (j > 0) {
|
||||
if (j == index) builder.append(part.toString() + "-");
|
||||
@ -1116,17 +1051,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
||||
}
|
||||
j++;
|
||||
}
|
||||
|
||||
builder.append("REPEAT");
|
||||
BlockStorage.addBlockInfo(b, "script", builder.toString());
|
||||
|
||||
try {
|
||||
openScript(pl, b, builder.toString());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
);
|
||||
});
|
||||
i++;
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,12 @@
|
||||
package me.mrCookieSlime.Slimefun.androids;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public enum ScriptPart {
|
||||
|
||||
@ -63,7 +66,7 @@ public enum ScriptPart {
|
||||
this.type = type;
|
||||
this.item = new CustomItem(CustomSkull.getItem(texture), name);
|
||||
} catch(Exception x) {
|
||||
x.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while initializing Android-Script Texture for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,8 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Chunk;
|
||||
@ -27,7 +29,7 @@ import com.google.gson.JsonPrimitive;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -38,26 +40,17 @@ public class BlockStorage {
|
||||
private static final String path_blocks = "data-storage/Slimefun/stored-blocks/";
|
||||
private static final String path_chunks = "data-storage/Slimefun/stored-chunks/";
|
||||
|
||||
public static Map<String, BlockStorage> worlds = new HashMap<>();
|
||||
public static Map<String, Set<Location>> ticking_chunks = new HashMap<>();
|
||||
public static Set<String> loaded_tickers = new HashSet<>();
|
||||
|
||||
private World world;
|
||||
|
||||
private Map<Location, Config> storage = new HashMap<>();
|
||||
private static Map<String, String> map_chunks = new HashMap<>();
|
||||
|
||||
private Map<Location, BlockMenu> inventories = new HashMap<>();
|
||||
public static Map<String, UniversalBlockMenu> universal_inventories = new HashMap<>();
|
||||
|
||||
private Map<String, Config> cache_blocks = new HashMap<>();
|
||||
|
||||
public static BlockStorage getStorage(World world) {
|
||||
return worlds.get(world.getName());
|
||||
return SlimefunPlugin.getUtilities().worlds.get(world.getName());
|
||||
}
|
||||
|
||||
public static BlockStorage getForcedStorage(World world) {
|
||||
return isWorldRegistered(world.getName()) ? worlds.get(world.getName()): new BlockStorage(world);
|
||||
return isWorldRegistered(world.getName()) ? SlimefunPlugin.getUtilities().worlds.get(world.getName()): new BlockStorage(world);
|
||||
}
|
||||
|
||||
private static String serializeLocation(Location l) {
|
||||
@ -74,18 +67,23 @@ public class BlockStorage {
|
||||
|
||||
private static Location deserializeLocation(String l) {
|
||||
try {
|
||||
World w = Bukkit.getWorld(l.split(";")[0]);
|
||||
if (w != null) return new Location(w, Integer.parseInt(l.split(";")[1]), Integer.parseInt(l.split(";")[2]), Integer.parseInt(l.split(";")[3]));
|
||||
String[] components = l.split(";");
|
||||
if (components.length != 4) return null;
|
||||
|
||||
World w = Bukkit.getWorld(components[0]);
|
||||
if (w != null) return new Location(w, Integer.parseInt(components[1]), Integer.parseInt(components[2]), Integer.parseInt(components[3]));
|
||||
} catch (NumberFormatException x) {
|
||||
Slimefun.getLogger().log(Level.WARNING, "Could not parse Number", x);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public BlockStorage(final World w) {
|
||||
if (worlds.containsKey(w.getName())) return;
|
||||
if (SlimefunPlugin.getUtilities().worlds.containsKey(w.getName())) return;
|
||||
this.world = w;
|
||||
System.out.println("[Slimefun] Loading Blocks for World \"" + w.getName() + "\"");
|
||||
System.out.println("[Slimefun] This may take a long time...");
|
||||
|
||||
Slimefun.getLogger().log(Level.INFO, "Loading Blocks for World \"" + w.getName() + "\"");
|
||||
Slimefun.getLogger().log(Level.INFO, "This may take a long time...");
|
||||
|
||||
File f = new File(path_blocks + w.getName());
|
||||
if (f.exists()) {
|
||||
@ -98,20 +96,21 @@ public class BlockStorage {
|
||||
try {
|
||||
for (File file: f.listFiles()) {
|
||||
if (file.getName().equals("null.sfb")) {
|
||||
System.err.println("[Slimefun] Corrupted file detected!");
|
||||
System.err.println("[Slimefun] Slimefun will simply skip this File, but you");
|
||||
System.err.println("[Slimefun] should probably look into it!");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Corrupted file detected!");
|
||||
Slimefun.getLogger().log(Level.WARNING, "Slimefun will simply skip this File, but you");
|
||||
Slimefun.getLogger().log(Level.WARNING, "should maybe look into it!");
|
||||
Slimefun.getLogger().log(Level.WARNING, file.getPath());
|
||||
}
|
||||
else if (file.getName().endsWith(".sfb")) {
|
||||
if (timestamp + SlimefunStartup.instance.getSettings().BLOCK_LOADING_INFO_DELAY < System.currentTimeMillis()) {
|
||||
System.out.println("[Slimefun] Loading Blocks... " + Math.round((((done * 100.0F) / total) * 100.0F) / 100.0F) + "% done (\"" + w.getName() + "\")");
|
||||
if (timestamp + SlimefunPlugin.getSettings().blocksInfoLoadingDelay < System.currentTimeMillis()) {
|
||||
Slimefun.getLogger().log(Level.INFO, "Loading Blocks... " + Math.round((((done * 100.0F) / total) * 100.0F) / 100.0F) + "% done (\"" + w.getName() + "\")");
|
||||
timestamp = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
|
||||
for (String key: cfg.getKeys(false)) {
|
||||
Location l = deserializeLocation(key);
|
||||
String chunk_string = locationToChunkString(l);
|
||||
String chunkString = locationToChunkString(l);
|
||||
try {
|
||||
totalBlocks++;
|
||||
String json = cfg.getString(key);
|
||||
@ -121,22 +120,24 @@ public class BlockStorage {
|
||||
// It should not be possible to have two blocks on the same location. Ignore the
|
||||
// new entry if a block is already present and print an error to the console.
|
||||
|
||||
System.out.println("[Slimefun] Ignoring duplicate block @ " + l.getBlockX() + ", " + l.getBlockY() + ", " + l.getBlockZ());
|
||||
System.out.println("[Slimefun] Old block data: " + serializeBlockInfo(storage.get(l)));
|
||||
System.out.println("[Slimefun] New block data (" + key + "): " + json);
|
||||
Slimefun.getLogger().log(Level.INFO, "Ignoring duplicate block @ " + l.getBlockX() + ", " + l.getBlockY() + ", " + l.getBlockZ());
|
||||
Slimefun.getLogger().log(Level.INFO, "Old block data: " + serializeBlockInfo(storage.get(l)));
|
||||
Slimefun.getLogger().log(Level.INFO, "New block data (" + key + "): " + json);
|
||||
continue;
|
||||
}
|
||||
storage.put(l, blockInfo);
|
||||
|
||||
if (SlimefunItem.isTicking(file.getName().replace(".sfb", ""))) {
|
||||
Set<Location> locations = ticking_chunks.containsKey(chunk_string) ? ticking_chunks.get(chunk_string): new HashSet<>();
|
||||
Set<Location> locations = SlimefunPlugin.getUtilities().tickingChunks.getOrDefault(chunkString, new HashSet<>());
|
||||
locations.add(l);
|
||||
ticking_chunks.put(chunk_string, locations);
|
||||
if (!loaded_tickers.contains(chunk_string)) loaded_tickers.add(chunk_string);
|
||||
SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations);
|
||||
|
||||
if (!SlimefunPlugin.getUtilities().loadedTickers.contains(chunkString)) {
|
||||
SlimefunPlugin.getUtilities().loadedTickers.add(chunkString);
|
||||
}
|
||||
}
|
||||
} catch (Exception x) {
|
||||
System.err.println("[Slimefun] Failed to load " + file.getName() + "(ERR: " + key + ")");
|
||||
x.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.WARNING, "Failed to load " + file.getName() + "(" + key + ") for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
done++;
|
||||
@ -144,8 +145,8 @@ public class BlockStorage {
|
||||
}
|
||||
} finally {
|
||||
long time = (System.currentTimeMillis() - start);
|
||||
System.out.println("[Slimefun] Loading Blocks... 100% (FINISHED - " + time + "ms)");
|
||||
System.out.println("[Slimefun] Loaded a total of " + totalBlocks + " Blocks for World \"" + world.getName() + "\"");
|
||||
Slimefun.getLogger().log(Level.INFO, "Loading Blocks... 100% (FINISHED - " + time + "ms)");
|
||||
Slimefun.getLogger().log(Level.INFO, "Loaded a total of " + totalBlocks + " Blocks for World \"" + world.getName() + "\"");
|
||||
if (totalBlocks > 0) System.out.println("[Slimefun] Avg: " + DoubleHandler.fixDouble((double) time / (double) totalBlocks, 3) + "ms/Block");
|
||||
}
|
||||
}
|
||||
@ -156,31 +157,32 @@ public class BlockStorage {
|
||||
FileConfiguration cfg = YamlConfiguration.loadConfiguration(chunks);
|
||||
for (String key: cfg.getKeys(false)) {
|
||||
try {
|
||||
if (world.getName().equals(key.split(";")[0])) map_chunks.put(key, cfg.getString(key));
|
||||
if (world.getName().equals(key.split(";")[0])) SlimefunPlugin.getUtilities().mapChunks.put(key, cfg.getString(key));
|
||||
} catch (Exception x) {
|
||||
System.err.println("[Slimefun] Failed to load " + chunks.getName() + " for World \"" + world.getName() + "\" (ERR: " + key + ")");
|
||||
x.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.WARNING, "Failed to load " + chunks.getName() + " in World " + world.getName() + "(" + key + ") for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
worlds.put(world.getName(), this);
|
||||
SlimefunPlugin.getUtilities().worlds.put(world.getName(), this);
|
||||
|
||||
for (File file: new File("data-storage/Slimefun/stored-inventories").listFiles()) {
|
||||
if (file.getName().startsWith(w.getName()) && file.getName().endsWith(".sfi")) {
|
||||
Location l = deserializeLocation(file.getName().replace(".sfi", ""));
|
||||
Config cfg = new Config(file);
|
||||
|
||||
try {
|
||||
if (cfg.getString("preset") != null) {
|
||||
BlockMenuPreset preset = BlockMenuPreset.getPreset(cfg.getString("preset"));
|
||||
inventories.put(l, new BlockMenu(preset, l, cfg));
|
||||
if (preset == null) {
|
||||
preset = BlockMenuPreset.getPreset(checkID(l));
|
||||
}
|
||||
else {
|
||||
BlockMenuPreset preset = BlockMenuPreset.getPreset(checkID(l));
|
||||
|
||||
if (preset != null) {
|
||||
inventories.put(l, new BlockMenu(preset, l, cfg));
|
||||
}
|
||||
}
|
||||
catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while loading this Inventory: " + file.getName(), x);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -191,25 +193,25 @@ public class BlockStorage {
|
||||
BlockMenuPreset preset = BlockMenuPreset.getPreset(cfg.getString("preset"));
|
||||
|
||||
if (preset != null) {
|
||||
universal_inventories.put(preset.getID(), new UniversalBlockMenu(preset, cfg));
|
||||
SlimefunPlugin.getUtilities().universalInventories.put(preset.getID(), new UniversalBlockMenu(preset, cfg));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int chunk_changes = 0;
|
||||
private static int chunkChanges = 0;
|
||||
private int changes = 0;
|
||||
|
||||
public void computeChanges() {
|
||||
changes = cache_blocks.size() + chunk_changes;
|
||||
changes = cache_blocks.size() + chunkChanges;
|
||||
|
||||
Map<Location, BlockMenu> inventories2 = new HashMap<>(inventories);
|
||||
for (Map.Entry<Location, BlockMenu> entry: inventories2.entrySet()) {
|
||||
changes += entry.getValue().getUnsavedChanges();
|
||||
}
|
||||
|
||||
Map<String, UniversalBlockMenu> universal_inventories2 = new HashMap<>(universal_inventories);
|
||||
for (Map.Entry<String, UniversalBlockMenu> entry: universal_inventories2.entrySet()) {
|
||||
Map<String, UniversalBlockMenu> universalInventories2 = new HashMap<>(SlimefunPlugin.getUtilities().universalInventories);
|
||||
for (Map.Entry<String, UniversalBlockMenu> entry: universalInventories2.entrySet()) {
|
||||
changes += entry.getValue().getUnsavedChanges();
|
||||
}
|
||||
}
|
||||
@ -224,10 +226,9 @@ public class BlockStorage {
|
||||
|
||||
public void save(boolean computeChanges, boolean remove) {
|
||||
if (computeChanges) computeChanges();
|
||||
|
||||
if (changes == 0) return;
|
||||
|
||||
System.out.println("[Slimefun] Saving Blocks for World \"" + world.getName() + "\" (" + changes + " Change(s) queued)");
|
||||
Slimefun.getLogger().log(Level.INFO, "Saving Blocks for World \"" + world.getName() + "\" (" + changes + " Change(s) queued)");
|
||||
|
||||
Map<String, Config> cache = new HashMap<>(cache_blocks);
|
||||
|
||||
@ -235,15 +236,18 @@ public class BlockStorage {
|
||||
cache_blocks.remove(entry.getKey());
|
||||
Config cfg = entry.getValue();
|
||||
if (cfg.getKeys().isEmpty()) {
|
||||
cfg.getFile().delete();
|
||||
if (!cfg.getFile().delete()) {
|
||||
Slimefun.getLogger().log(Level.WARNING, "Could not delete File: " + cfg.getFile().getName());
|
||||
}
|
||||
}
|
||||
else {
|
||||
File tmpFile = new File(cfg.getFile().getParentFile(), cfg.getFile().getName() + ".tmp");
|
||||
cfg.save(tmpFile);
|
||||
|
||||
try {
|
||||
Files.move(tmpFile.toPath(), cfg.getFile().toPath(), StandardCopyOption.ATOMIC_MOVE);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while copying a temporary File for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -254,29 +258,29 @@ public class BlockStorage {
|
||||
entry.getValue().save(entry.getKey());
|
||||
}
|
||||
|
||||
Map<String, UniversalBlockMenu> universal_inventories2 = new HashMap<>(universal_inventories);
|
||||
Map<String, UniversalBlockMenu> universalInventories2 = new HashMap<>(SlimefunPlugin.getUtilities().universalInventories);
|
||||
|
||||
for (Map.Entry<String, UniversalBlockMenu> entry: universal_inventories2.entrySet()) {
|
||||
for (Map.Entry<String, UniversalBlockMenu> entry: universalInventories2.entrySet()) {
|
||||
entry.getValue().save();
|
||||
}
|
||||
|
||||
if (chunk_changes > 0) {
|
||||
if (chunkChanges > 0) {
|
||||
File chunks = new File(path_chunks + "chunks.sfc");
|
||||
Config cfg = new Config("data-storage/Slimefun/temp.yml");
|
||||
|
||||
for (Map.Entry<String, String> entry: map_chunks.entrySet()) {
|
||||
for (Map.Entry<String, String> entry: SlimefunPlugin.getUtilities().mapChunks.entrySet()) {
|
||||
cfg.setValue(entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
cfg.save(chunks);
|
||||
|
||||
if (remove) {
|
||||
worlds.remove(world.getName());
|
||||
SlimefunPlugin.getUtilities().worlds.remove(world.getName());
|
||||
}
|
||||
}
|
||||
|
||||
changes = 0;
|
||||
chunk_changes = 0;
|
||||
chunkChanges = 0;
|
||||
}
|
||||
|
||||
public static void store(Block block, ItemStack item) {
|
||||
@ -340,13 +344,14 @@ public class BlockStorage {
|
||||
try {
|
||||
return new BlockInfoConfig(parseJSON(json));
|
||||
} catch(Exception x) {
|
||||
System.err.println(x.getClass().getName());
|
||||
System.err.println("[Slimefun] Failed to parse BlockInfo for Block @ " + l.getBlockX() + ", " + l.getBlockY() + ", " + l.getBlockZ());
|
||||
System.err.println(json);
|
||||
System.err.println("[Slimefun] ");
|
||||
System.err.println("[Slimefun] IGNORE THIS ERROR UNLESS IT IS SPAMMING");
|
||||
System.err.println("[Slimefun] ");
|
||||
x.printStackTrace();
|
||||
Logger logger = Slimefun.getLogger();
|
||||
logger.log(Level.WARNING, x.getClass().getName());
|
||||
logger.log(Level.WARNING, "Failed to parse BlockInfo for Block @ " + l.getBlockX() + ", " + l.getBlockY() + ", " + l.getBlockZ());
|
||||
logger.log(Level.WARNING, json);
|
||||
logger.log(Level.WARNING, "");
|
||||
logger.log(Level.WARNING, "IGNORE THIS ERROR UNLESS IT IS SPAMMING");
|
||||
logger.log(Level.WARNING, "");
|
||||
logger.log(Level.SEVERE, "An Error occured while parsing Block Info for Slimefun " + Slimefun.getVersion(), x);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -360,7 +365,8 @@ public class BlockStorage {
|
||||
}
|
||||
|
||||
private static String getJSONData(Chunk chunk) {
|
||||
return map_chunks.get(serializeChunk(chunk));
|
||||
if (chunk == null) return null;
|
||||
return SlimefunPlugin.getUtilities().mapChunks.get(serializeChunk(chunk));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -413,7 +419,7 @@ public class BlockStorage {
|
||||
storage.storage.put(l, cfg);
|
||||
if (BlockMenuPreset.isInventory(cfg.getString("id"))) {
|
||||
if (BlockMenuPreset.isUniversalInventory(cfg.getString("id"))) {
|
||||
if (!universal_inventories.containsKey(cfg.getString("id"))) storage.loadUniversalInventory(BlockMenuPreset.getPreset(cfg.getString("id")));
|
||||
if (!SlimefunPlugin.getUtilities().universalInventories.containsKey(cfg.getString("id"))) storage.loadUniversalInventory(BlockMenuPreset.getPreset(cfg.getString("id")));
|
||||
}
|
||||
else if (!storage.hasInventory(l)) {
|
||||
File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi");
|
||||
@ -446,7 +452,7 @@ public class BlockStorage {
|
||||
}
|
||||
|
||||
public static void clearBlockInfo(Location l, boolean destroy) {
|
||||
SlimefunStartup.ticker.delete.put(l, destroy);
|
||||
SlimefunPlugin.getTicker().delete.put(l, destroy);
|
||||
}
|
||||
|
||||
public static void _integrated_removeBlockInfo(Location l, boolean destroy) {
|
||||
@ -462,15 +468,15 @@ public class BlockStorage {
|
||||
storage.getUniversalInventory(l).close();
|
||||
storage.getUniversalInventory(l).save();
|
||||
}
|
||||
String chunk_string = locationToChunkString(l);
|
||||
if (ticking_chunks.containsKey(chunk_string)) {
|
||||
Set<Location> locations = ticking_chunks.get(chunk_string);
|
||||
String chunkString = locationToChunkString(l);
|
||||
if (SlimefunPlugin.getUtilities().tickingChunks.containsKey(chunkString)) {
|
||||
Set<Location> locations = SlimefunPlugin.getUtilities().tickingChunks.get(chunkString);
|
||||
locations.remove(l);
|
||||
if (locations.isEmpty()) {
|
||||
ticking_chunks.remove(chunk_string);
|
||||
loaded_tickers.remove(chunk_string);
|
||||
SlimefunPlugin.getUtilities().tickingChunks.remove(chunkString);
|
||||
SlimefunPlugin.getUtilities().loadedTickers.remove(chunkString);
|
||||
}
|
||||
else ticking_chunks.put(chunk_string, locations);
|
||||
else SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -481,7 +487,7 @@ public class BlockStorage {
|
||||
}
|
||||
|
||||
public static void moveBlockInfo(Location from, Location to) {
|
||||
SlimefunStartup.ticker.move.put(from, to);
|
||||
SlimefunPlugin.getTicker().move.put(from, to);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -504,15 +510,15 @@ public class BlockStorage {
|
||||
refreshCache(storage, from, getLocationInfo(from).getString("id"), null, true);
|
||||
storage.storage.remove(from);
|
||||
|
||||
String chunk_string = locationToChunkString(from);
|
||||
if (ticking_chunks.containsKey(chunk_string)) {
|
||||
Set<Location> locations = ticking_chunks.get(chunk_string);
|
||||
String chunkString = locationToChunkString(from);
|
||||
if (SlimefunPlugin.getUtilities().tickingChunks.containsKey(chunkString)) {
|
||||
Set<Location> locations = SlimefunPlugin.getUtilities().tickingChunks.get(chunkString);
|
||||
locations.remove(from);
|
||||
if (locations.isEmpty()) {
|
||||
ticking_chunks.remove(chunk_string);
|
||||
loaded_tickers.remove(chunk_string);
|
||||
SlimefunPlugin.getUtilities().tickingChunks.remove(chunkString);
|
||||
SlimefunPlugin.getUtilities().loadedTickers.remove(chunkString);
|
||||
}
|
||||
else ticking_chunks.put(chunk_string, locations);
|
||||
else SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations);
|
||||
}
|
||||
}
|
||||
|
||||
@ -524,14 +530,14 @@ public class BlockStorage {
|
||||
if (updateTicker) {
|
||||
SlimefunItem item = SlimefunItem.getByID(key);
|
||||
if (item != null && item.isTicking()) {
|
||||
String chunk_string = locationToChunkString(l);
|
||||
String chunkString = locationToChunkString(l);
|
||||
if (value != null) {
|
||||
Set<Location> locations = ticking_chunks.get(chunk_string);
|
||||
Set<Location> locations = SlimefunPlugin.getUtilities().tickingChunks.get(chunkString);
|
||||
if (locations == null) locations = new HashSet<>();
|
||||
|
||||
locations.add(l);
|
||||
ticking_chunks.put(chunk_string, locations);
|
||||
if (!loaded_tickers.contains(chunk_string)) loaded_tickers.add(chunk_string);
|
||||
SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations);
|
||||
if (!SlimefunPlugin.getUtilities().loadedTickers.contains(chunkString)) SlimefunPlugin.getUtilities().loadedTickers.add(chunkString);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -571,11 +577,11 @@ public class BlockStorage {
|
||||
}
|
||||
|
||||
public static boolean isWorldRegistered(String name) {
|
||||
return worlds.containsKey(name);
|
||||
return SlimefunPlugin.getUtilities().worlds.containsKey(name);
|
||||
}
|
||||
|
||||
public static Set<String> getTickingChunks() {
|
||||
return new HashSet<>(loaded_tickers);
|
||||
return new HashSet<>(SlimefunPlugin.getUtilities().loadedTickers);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -597,7 +603,7 @@ public class BlockStorage {
|
||||
}
|
||||
|
||||
public static Set<Location> getTickingLocations(String chunk) {
|
||||
return new HashSet<>(ticking_chunks.get(chunk));
|
||||
return new HashSet<>(SlimefunPlugin.getUtilities().tickingChunks.get(chunk));
|
||||
}
|
||||
|
||||
public BlockMenu loadInventory(Location l, BlockMenuPreset preset) {
|
||||
@ -607,7 +613,7 @@ public class BlockStorage {
|
||||
}
|
||||
|
||||
public void loadUniversalInventory(BlockMenuPreset preset) {
|
||||
universal_inventories.put(preset.getID(), new UniversalBlockMenu(preset));
|
||||
SlimefunPlugin.getUtilities().universalInventories.put(preset.getID(), new UniversalBlockMenu(preset));
|
||||
}
|
||||
|
||||
public void clearInventory(Location l) {
|
||||
@ -616,7 +622,7 @@ public class BlockStorage {
|
||||
if (menu != null) {
|
||||
for (HumanEntity human : new ArrayList<>(menu.toInventory().getViewers())) {
|
||||
// Prevents "java.lang.IllegalStateException: Asynchronous entity add!" when closing inventory while holding an item
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> human.closeInventory());
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> human.closeInventory());
|
||||
}
|
||||
|
||||
inventories.get(l).delete(l);
|
||||
@ -629,7 +635,7 @@ public class BlockStorage {
|
||||
}
|
||||
|
||||
public boolean hasUniversalInventory(String id) {
|
||||
return universal_inventories.containsKey(id);
|
||||
return SlimefunPlugin.getUtilities().universalInventories.containsKey(id);
|
||||
}
|
||||
|
||||
public UniversalBlockMenu getUniversalInventory(Block block) {
|
||||
@ -642,7 +648,7 @@ public class BlockStorage {
|
||||
}
|
||||
|
||||
public UniversalBlockMenu getUniversalInventory(String id) {
|
||||
return universal_inventories.get(id);
|
||||
return SlimefunPlugin.getUtilities().universalInventories.get(id);
|
||||
}
|
||||
|
||||
public static BlockMenu getInventory(Block b) {
|
||||
@ -659,7 +665,7 @@ public class BlockStorage {
|
||||
public static Config getChunkInfo(Chunk chunk) {
|
||||
try {
|
||||
Config cfg = new Config("data-storage/Slimefun/temp.yml");
|
||||
if (!map_chunks.containsKey(serializeChunk(chunk))) return cfg;
|
||||
if (!SlimefunPlugin.getUtilities().mapChunks.containsKey(serializeChunk(chunk))) return cfg;
|
||||
|
||||
for (Map.Entry<String, String> entry: parseJSON(getJSONData(chunk)).entrySet()) {
|
||||
cfg.setValue(entry.getKey(), entry.getValue());
|
||||
@ -667,20 +673,13 @@ public class BlockStorage {
|
||||
|
||||
return cfg;
|
||||
} catch (Exception x) {
|
||||
System.err.println(x.getClass().getName());
|
||||
System.err.println("[Slimefun] Failed to parse ChunkInfo for Chunk @ " + chunk.getX() + ", " + chunk.getZ());
|
||||
try {
|
||||
System.err.println(getJSONData(chunk));
|
||||
} catch (Exception x2) {
|
||||
System.err.println("No Metadata found!");
|
||||
}
|
||||
x.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.SEVERE, "Failed to parse ChunkInfo for Chunk: " + (chunk == null ? "?": chunk.getX()) + ", " + (chunk == null ? "?": chunk.getZ()) + " (" + getJSONData(chunk) + ") for Slimefun " + Slimefun.getVersion(), x);
|
||||
return new Config("data-storage/Slimefun/temp.yml");
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean hasChunkInfo(Chunk chunk) {
|
||||
return map_chunks.containsKey(serializeChunk(chunk));
|
||||
return SlimefunPlugin.getUtilities().mapChunks.containsKey(serializeChunk(chunk));
|
||||
}
|
||||
|
||||
public static void setChunkInfo(Chunk chunk, String key, String value) {
|
||||
@ -693,9 +692,9 @@ public class BlockStorage {
|
||||
json.add(path, new JsonPrimitive(cfg.getString(path)));
|
||||
}
|
||||
|
||||
map_chunks.put(serializeChunk(chunk), json.toString());
|
||||
SlimefunPlugin.getUtilities().mapChunks.put(serializeChunk(chunk), json.toString());
|
||||
|
||||
chunk_changes++;
|
||||
chunkChanges++;
|
||||
}
|
||||
|
||||
public static String getChunkInfo(Chunk chunk, String key) {
|
||||
@ -707,7 +706,7 @@ public class BlockStorage {
|
||||
}
|
||||
|
||||
public static void clearChunkInfo(Chunk chunk) {
|
||||
map_chunks.remove(serializeChunk(chunk));
|
||||
SlimefunPlugin.getUtilities().mapChunks.remove(serializeChunk(chunk));
|
||||
}
|
||||
|
||||
public static String getBlockInfoAsJson(Block block) {
|
||||
|
@ -7,6 +7,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
@ -16,7 +17,7 @@ import org.bukkit.plugin.Plugin;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Clock;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
|
||||
public class ErrorReport {
|
||||
@ -46,7 +47,7 @@ public class ErrorReport {
|
||||
stream.println();
|
||||
stream.println("Slimefun Environment:");
|
||||
stream.println(" CS-CoreLib v" + CSCoreLib.getLib().getDescription().getVersion());
|
||||
stream.println(" Slimefun v" + SlimefunStartup.instance.getDescription().getVersion());
|
||||
stream.println(" Slimefun v" + SlimefunPlugin.instance.getDescription().getVersion());
|
||||
stream.println();
|
||||
|
||||
List<String> plugins = new ArrayList<>();
|
||||
@ -81,13 +82,14 @@ public class ErrorReport {
|
||||
stream.println();
|
||||
throwable.printStackTrace(stream);
|
||||
|
||||
System.err.println("[Slimefun] Saved as: ");
|
||||
System.err.println("[Slimefun] /plugins/Slimefun/error-reports/" + file.getName());
|
||||
System.err.println("[Slimefun] Please consider sending this File to the developer(s) of Slimefun, this message does not have to be included.");
|
||||
System.err.println("[Slimefun] You can put the file on Pastebin and then post it here: https://github.com/TheBusyBiscuit/Slimefun4/issues");
|
||||
System.err.println("[Slimefun] ");
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.WARNING, "");
|
||||
Slimefun.getLogger().log(Level.WARNING, "An Error occured! It has been saved as: ");
|
||||
Slimefun.getLogger().log(Level.WARNING, "/plugins/Slimefun/error-reports/" + file.getName());
|
||||
Slimefun.getLogger().log(Level.WARNING, "Please consider sending this File to the developer(s) of Slimefun, this message does not have to be included.");
|
||||
Slimefun.getLogger().log(Level.WARNING, "You can put the file on Pastebin and then post it here: https://github.com/TheBusyBiscuit/Slimefun4/issues");
|
||||
Slimefun.getLogger().log(Level.WARNING, "");
|
||||
} catch (FileNotFoundException x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while saving an Error-Report for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
|
||||
|
||||
@ -27,8 +27,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
|
||||
*/
|
||||
public final class PlayerProfile {
|
||||
|
||||
public static Map<UUID, PlayerProfile> profiles = new HashMap<>();
|
||||
|
||||
private UUID uuid;
|
||||
private Config cfg;
|
||||
private boolean dirty = false;
|
||||
@ -161,7 +159,7 @@ public final class PlayerProfile {
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
List<String> titles = SlimefunStartup.instance.getSettings().RESEARCHES_TITLES;
|
||||
List<String> titles = SlimefunPlugin.getSettings().researchesTitles;
|
||||
|
||||
int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size();
|
||||
if (index > 0) index--;
|
||||
@ -169,11 +167,11 @@ public final class PlayerProfile {
|
||||
}
|
||||
|
||||
public static PlayerProfile fromUUID(UUID uuid) {
|
||||
PlayerProfile profile = profiles.get(uuid);
|
||||
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(uuid);
|
||||
|
||||
if (profile == null) {
|
||||
profile = new PlayerProfile(uuid);
|
||||
profiles.put(uuid, profile);
|
||||
SlimefunPlugin.getUtilities().profiles.put(uuid, profile);
|
||||
}
|
||||
else {
|
||||
profile.markedForDeletion = false;
|
||||
@ -183,11 +181,11 @@ public final class PlayerProfile {
|
||||
}
|
||||
|
||||
public static boolean isLoaded(UUID uuid) {
|
||||
return profiles.containsKey(uuid);
|
||||
return SlimefunPlugin.getUtilities().profiles.containsKey(uuid);
|
||||
}
|
||||
|
||||
public static Iterator<PlayerProfile> iterator() {
|
||||
return profiles.values().iterator();
|
||||
return SlimefunPlugin.getUtilities().profiles.values().iterator();
|
||||
}
|
||||
|
||||
public static BackpackInventory getBackpack(ItemStack item) {
|
||||
|
@ -2,15 +2,14 @@ package me.mrCookieSlime.Slimefun.api;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
@ -24,30 +23,14 @@ import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
*
|
||||
* @since 4.0
|
||||
*/
|
||||
public class Slimefun {
|
||||
public final class Slimefun {
|
||||
|
||||
public static Map<Integer, List<GuideHandler>> guide_handlers = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Instance of the GPSNetwork.
|
||||
*/
|
||||
private static GPSNetwork gps = new GPSNetwork();
|
||||
|
||||
/**
|
||||
* Whether EmeraldEnchants is enabled or not.
|
||||
*/
|
||||
public static boolean emeraldenchants = false;
|
||||
|
||||
/**
|
||||
* Lists all the registered categories.
|
||||
*/
|
||||
public static List<Category> current_categories = new ArrayList<>();
|
||||
private Slimefun() {}
|
||||
|
||||
public static void registerGuideHandler(GuideHandler handler) {
|
||||
List<GuideHandler> handlers = new ArrayList<>();
|
||||
if (guide_handlers.containsKey(handler.getTier())) handlers = guide_handlers.get(handler.getTier());
|
||||
List<GuideHandler> handlers = SlimefunPlugin.getUtilities().guideHandlers.getOrDefault(handler.getTier(), new ArrayList<>());
|
||||
handlers.add(handler);
|
||||
guide_handlers.put(handler.getTier(), handlers);
|
||||
SlimefunPlugin.getUtilities().guideHandlers.put(handler.getTier(), handlers);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -56,7 +39,11 @@ public class Slimefun {
|
||||
* @return the GPSNetwork instance.
|
||||
*/
|
||||
public static GPSNetwork getGPSNetwork() {
|
||||
return gps;
|
||||
return SlimefunPlugin.instance.gps;
|
||||
}
|
||||
|
||||
public static Logger getLogger() {
|
||||
return SlimefunPlugin.instance.getLogger();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -91,7 +78,7 @@ public class Slimefun {
|
||||
* @return the Items.yml Config instance.
|
||||
*/
|
||||
public static Config getItemConfig() {
|
||||
return SlimefunStartup.getItemCfg();
|
||||
return SlimefunPlugin.getItemCfg();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -207,10 +194,10 @@ public class Slimefun {
|
||||
String world = p.getWorld().getName();
|
||||
SlimefunItem sfItem = SlimefunItem.getByItem(item);
|
||||
if (sfItem == null) return !SlimefunItem.isDisabled(item);
|
||||
if (SlimefunStartup.getWhitelist().contains(world + ".enabled")) {
|
||||
if (SlimefunStartup.getWhitelist().getBoolean(world + ".enabled")) {
|
||||
if (!SlimefunStartup.getWhitelist().contains(world + ".enabled-items." + sfItem.getID())) SlimefunStartup.getWhitelist().setDefaultValue(world + ".enabled-items." + sfItem.getID(), true);
|
||||
if (SlimefunStartup.getWhitelist().getBoolean(world + ".enabled-items." + sfItem.getID())) return true;
|
||||
if (SlimefunPlugin.getWhitelist().contains(world + ".enabled")) {
|
||||
if (SlimefunPlugin.getWhitelist().getBoolean(world + ".enabled")) {
|
||||
if (!SlimefunPlugin.getWhitelist().contains(world + ".enabled-items." + sfItem.getID())) SlimefunPlugin.getWhitelist().setDefaultValue(world + ".enabled-items." + sfItem.getID(), true);
|
||||
if (SlimefunPlugin.getWhitelist().getBoolean(world + ".enabled-items." + sfItem.getID())) return true;
|
||||
else {
|
||||
if (message) Messages.local.sendTranslation(p, "messages.disabled-in-world", true);
|
||||
return false;
|
||||
@ -236,10 +223,10 @@ public class Slimefun {
|
||||
*/
|
||||
public static boolean isEnabled(Player p, SlimefunItem sfItem, boolean message) {
|
||||
String world = p.getWorld().getName();
|
||||
if (SlimefunStartup.getWhitelist().contains(world + ".enabled")) {
|
||||
if (SlimefunStartup.getWhitelist().getBoolean(world + ".enabled")) {
|
||||
if (!SlimefunStartup.getWhitelist().contains(world + ".enabled-items." + sfItem.getID())) SlimefunStartup.getWhitelist().setDefaultValue(world + ".enabled-items." + sfItem.getID(), true);
|
||||
if (SlimefunStartup.getWhitelist().getBoolean(world + ".enabled-items." + sfItem.getID())) return true;
|
||||
if (SlimefunPlugin.getWhitelist().contains(world + ".enabled")) {
|
||||
if (SlimefunPlugin.getWhitelist().getBoolean(world + ".enabled")) {
|
||||
if (!SlimefunPlugin.getWhitelist().contains(world + ".enabled-items." + sfItem.getID())) SlimefunPlugin.getWhitelist().setDefaultValue(world + ".enabled-items." + sfItem.getID(), true);
|
||||
if (SlimefunPlugin.getWhitelist().getBoolean(world + ".enabled-items." + sfItem.getID())) return true;
|
||||
else {
|
||||
if (message) Messages.local.sendTranslation(p, "messages.disabled-in-world", true);
|
||||
return false;
|
||||
@ -270,7 +257,7 @@ public class Slimefun {
|
||||
* Returns a list of all the ItemStacks representing the registered categories.
|
||||
*
|
||||
* @return the list of the display items of all the registered categories.
|
||||
* @see #current_categories
|
||||
* @see #currentCategories
|
||||
*/
|
||||
public static List<ItemStack> listCategories() {
|
||||
List<ItemStack> items = new ArrayList<>();
|
||||
@ -335,19 +322,11 @@ public class Slimefun {
|
||||
addWikiPage(id, "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether EmeraldEnchants is enabled or not.
|
||||
* <p>
|
||||
* It can be directly accessed by {@link #emeraldenchants}.
|
||||
*
|
||||
* @return <code>true</code> if EmeraldEnchants is enabled,
|
||||
* <code>false</code> otherwise.
|
||||
*/
|
||||
public static boolean isEmeraldEnchantsInstalled() {
|
||||
return emeraldenchants;
|
||||
public static List<GuideHandler> getGuideHandlers(int tier) {
|
||||
return SlimefunPlugin.getUtilities().guideHandlers.getOrDefault(tier, new ArrayList<>());
|
||||
}
|
||||
|
||||
public static List<GuideHandler> getGuideHandlers(int tier) {
|
||||
return guide_handlers.containsKey(tier) ? guide_handlers.get(tier): new ArrayList<>();
|
||||
public static String getVersion() {
|
||||
return SlimefunPlugin.instance.getDescription().getVersion();
|
||||
}
|
||||
}
|
@ -10,12 +10,15 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Clock;
|
||||
|
||||
public class SlimefunBackup {
|
||||
public final class SlimefunBackup {
|
||||
|
||||
private SlimefunBackup() {}
|
||||
|
||||
public static void start() {
|
||||
File folder = new File("data-storage/Slimefun/block-backups");
|
||||
@ -31,20 +34,18 @@ public class SlimefunBackup {
|
||||
});
|
||||
|
||||
for (int i = backups.size() - 20; i > 0; i--) {
|
||||
backups.get(i).delete();
|
||||
if (!backups.get(i).delete()) {
|
||||
Slimefun.getLogger().log(Level.WARNING, "Could not delete Backup: " + backups.get(i).getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File file = new File("data-storage/Slimefun/block-backups/" + Clock.format(new Date()) + ".zip");
|
||||
byte[] buffer = new byte[1024];
|
||||
|
||||
if (file.exists()) {
|
||||
file.delete();
|
||||
}
|
||||
|
||||
if (!file.exists() || file.delete()) {
|
||||
try {
|
||||
file.createNewFile();
|
||||
|
||||
if (file.createNewFile()) {
|
||||
try (ZipOutputStream output = new ZipOutputStream(new FileOutputStream(file))) {
|
||||
for (File f1: new File("data-storage/Slimefun/stored-blocks/").listFiles()) {
|
||||
for (File f: f1.listFiles()) {
|
||||
@ -107,9 +108,14 @@ public class SlimefunBackup {
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("[Slimefun] Backed up Blocks to " + file.getName());
|
||||
} catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
Slimefun.getLogger().log(Level.INFO, "Backed up Data to: " + file.getName());
|
||||
}
|
||||
else {
|
||||
Slimefun.getLogger().log(Level.WARNING, "Could not create backup-file: " + file.getName());
|
||||
}
|
||||
} catch(IOException x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a World-Backup for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,9 @@
|
||||
package me.mrCookieSlime.Slimefun.api;
|
||||
|
||||
public enum SlimefunGuideLayout {
|
||||
|
||||
BOOK,
|
||||
CHEST,
|
||||
CHEAT_SHEET;
|
||||
|
||||
}
|
@ -5,7 +5,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class SlimefunRecipes {
|
||||
public final class SlimefunRecipes {
|
||||
|
||||
private SlimefunRecipes() {}
|
||||
|
||||
public static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) {
|
||||
for (SlimefunItem item: SlimefunItem.all) {
|
||||
|
@ -7,25 +7,25 @@ import java.util.UUID;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
|
||||
public final class Soul {
|
||||
|
||||
private Soul() {}
|
||||
|
||||
public static void storeItem(UUID uuid, int slot, ItemStack item) {
|
||||
Map<Integer, ItemStack> items = SlimefunStartup.instance.getUtilities().soulbound.get(uuid);
|
||||
Map<Integer, ItemStack> items = SlimefunPlugin.getUtilities().soulbound.get(uuid);
|
||||
|
||||
if (items == null) {
|
||||
items = new HashMap<>();
|
||||
SlimefunStartup.instance.getUtilities().soulbound.put(uuid, items);
|
||||
SlimefunPlugin.getUtilities().soulbound.put(uuid, items);
|
||||
}
|
||||
|
||||
items.put(slot, item);
|
||||
}
|
||||
|
||||
public static void retrieveItems(Player p) {
|
||||
Map<Integer, ItemStack> items = SlimefunStartup.instance.getUtilities().soulbound.get(p.getUniqueId());
|
||||
Map<Integer, ItemStack> items = SlimefunPlugin.getUtilities().soulbound.get(p.getUniqueId());
|
||||
|
||||
if (items != null) {
|
||||
for (Map.Entry<Integer, ItemStack> entry: items.entrySet()) {
|
||||
@ -33,7 +33,7 @@ public final class Soul {
|
||||
}
|
||||
}
|
||||
|
||||
SlimefunStartup.instance.getUtilities().soulbound.remove(p.getUniqueId());
|
||||
SlimefunPlugin.getUtilities().soulbound.remove(p.getUniqueId());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -17,7 +18,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
|
||||
@ -27,6 +28,7 @@ public class TickerTask implements Runnable {
|
||||
|
||||
public Map<Location, Location> move = new HashMap<>();
|
||||
public Map<Location, Boolean> delete = new HashMap<>();
|
||||
public Map<Location, Long> blockTimings = new HashMap<>();
|
||||
|
||||
private Set<BlockTicker> tickers = new HashSet<>();
|
||||
|
||||
@ -41,7 +43,6 @@ public class TickerTask implements Runnable {
|
||||
private Map<String, Long> chunkTimings = new HashMap<>();
|
||||
private Set<String> chunksSkipped = new HashSet<>();
|
||||
private Map<Location, Integer> buggedBlocks = new HashMap<>();
|
||||
public Map<Location, Long> blockTimings = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
@ -85,7 +86,7 @@ public class TickerTask implements Runnable {
|
||||
item.getBlockTicker().update();
|
||||
|
||||
if (item.getBlockTicker().isSynchronized()) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
try {
|
||||
long timestamp3 = System.currentTimeMillis();
|
||||
item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l));
|
||||
@ -107,22 +108,17 @@ public class TickerTask implements Runnable {
|
||||
// Generate a new Error-Report
|
||||
new ErrorReport(x, this, l, item);
|
||||
|
||||
System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName());
|
||||
System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ());
|
||||
|
||||
buggedBlocks.put(l, errors);
|
||||
}
|
||||
else if (errors == 4) {
|
||||
System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")");
|
||||
System.err.println("[Slimefun] has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
|
||||
System.err.println("[Slimefun] Check your /plugins/Slimefun/error-reports/ folder for details.");
|
||||
System.err.println("[Slimefun] ");
|
||||
Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")");
|
||||
Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
|
||||
Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details.");
|
||||
Slimefun.getLogger().log(Level.SEVERE, " ");
|
||||
|
||||
BlockStorage._integrated_removeBlockInfo(l, true);
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
l.getBlock().setType(Material.AIR);
|
||||
});
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> l.getBlock().setType(Material.AIR));
|
||||
}
|
||||
else {
|
||||
buggedBlocks.put(l, errors);
|
||||
@ -148,23 +144,17 @@ public class TickerTask implements Runnable {
|
||||
if (errors == 1) {
|
||||
// Generate a new Error-Report
|
||||
new ErrorReport(x, this, l, item);
|
||||
|
||||
System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName());
|
||||
System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ());
|
||||
|
||||
buggedBlocks.put(l, errors);
|
||||
}
|
||||
else if (errors == 4) {
|
||||
System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")");
|
||||
System.err.println("[Slimefun] has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
|
||||
System.err.println("[Slimefun] Check your /plugins/Slimefun/error-reports/ folder for details.");
|
||||
System.err.println("[Slimefun] ");
|
||||
Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")");
|
||||
Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
|
||||
Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details.");
|
||||
Slimefun.getLogger().log(Level.SEVERE, " ");
|
||||
|
||||
BlockStorage._integrated_removeBlockInfo(l, true);
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
l.getBlock().setType(Material.AIR);
|
||||
});
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> l.getBlock().setType(Material.AIR));
|
||||
}
|
||||
else {
|
||||
buggedBlocks.put(l, errors);
|
||||
@ -231,8 +221,8 @@ public class TickerTask implements Runnable {
|
||||
|
||||
try {
|
||||
tellraw.send((Player) sender);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while sending a Timings Summary for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -268,8 +258,8 @@ public class TickerTask implements Runnable {
|
||||
|
||||
try {
|
||||
tellraw.send((Player) sender);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while sending a Timings Summary for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -4,31 +4,35 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Skull;
|
||||
|
||||
public class ChargableBlock {
|
||||
public final class ChargableBlock {
|
||||
|
||||
public static Map<String, Integer> max_charges = new HashMap<>();
|
||||
private ChargableBlock() {}
|
||||
|
||||
public static Map<String, Integer> maxCharges = new HashMap<>();
|
||||
public static Set<String> rechargeable = new HashSet<>();
|
||||
public static Set<String> capacitors = new HashSet<>();
|
||||
|
||||
public static void registerChargableBlock(String id, int capacity, boolean recharge) {
|
||||
max_charges.put(id, capacity);
|
||||
maxCharges.put(id, capacity);
|
||||
if (recharge) rechargeable.add(id);
|
||||
}
|
||||
|
||||
public static void registerCapacitor(String id, int capacity) {
|
||||
max_charges.put(id, capacity);
|
||||
maxCharges.put(id, capacity);
|
||||
rechargeable.add(id);
|
||||
capacitors.add(id);
|
||||
}
|
||||
@ -39,13 +43,13 @@ public class ChargableBlock {
|
||||
|
||||
public static boolean isChargable(Location l) {
|
||||
if (!BlockStorage.hasBlockInfo(l)) return false;
|
||||
return max_charges.containsKey(BlockStorage.checkID(l));
|
||||
return maxCharges.containsKey(BlockStorage.checkID(l));
|
||||
}
|
||||
|
||||
public static boolean isRechargable(Block b) {
|
||||
if (!BlockStorage.hasBlockInfo(b)) return false;
|
||||
String id = BlockStorage.checkID(b);
|
||||
return max_charges.containsKey(id) && rechargeable.contains(id);
|
||||
return maxCharges.containsKey(id) && rechargeable.contains(id);
|
||||
}
|
||||
|
||||
public static boolean isCapacitor(Block b) {
|
||||
@ -63,7 +67,7 @@ public class ChargableBlock {
|
||||
|
||||
public static int getDefaultCapacity(Location l) {
|
||||
String id = BlockStorage.checkID(l);
|
||||
return id == null ? 0: max_charges.get(id);
|
||||
return id == null ? 0: maxCharges.get(id);
|
||||
}
|
||||
|
||||
public static int getCharge(Block b) {
|
||||
@ -96,17 +100,13 @@ public class ChargableBlock {
|
||||
if (charge != getCharge(l)) {
|
||||
BlockStorage.addBlockInfo(l, "energy-charge", String.valueOf(charge), false);
|
||||
if (updateTexture) {
|
||||
try {
|
||||
updateTexture(l);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void updateTexture(final Location l) throws Exception {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
private static void updateTexture(final Location l) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
try {
|
||||
Block b = l.getBlock();
|
||||
int charge = getCharge(b);
|
||||
@ -117,8 +117,8 @@ public class ChargableBlock {
|
||||
else if (charge < (int) (capacity * 0.75D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19");
|
||||
else CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2EyNTY5NDE1YzE0ZTMxYzk4ZWM5OTNhMmY5OWU2ZDY0ODQ2ZGIzNjdhMTNiMTk5OTY1YWQ5OWM0MzhjODZjIn19fQ==");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while updating a Capacitor Texture for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -145,21 +145,14 @@ public class ChargableBlock {
|
||||
setCharge(l, getMaxCharge(l));
|
||||
}
|
||||
if (capacitors.contains(BlockStorage.checkID(l))) {
|
||||
try {
|
||||
updateTexture(l);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (charge < 0 && energy >= -charge) {
|
||||
setCharge(l, energy + charge);
|
||||
|
||||
if (capacitors.contains(BlockStorage.checkID(l))) {
|
||||
try {
|
||||
updateTexture(l);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return rest;
|
||||
|
@ -9,57 +9,51 @@ import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.network.Network;
|
||||
import me.mrCookieSlime.Slimefun.api.network.NetworkComponent;
|
||||
import me.mrCookieSlime.Slimefun.holograms.EnergyHologram;
|
||||
|
||||
public class EnergyNet extends Network {
|
||||
|
||||
public static enum NetworkComponent {
|
||||
SOURCE,
|
||||
DISTRIBUTOR,
|
||||
CONSUMER,
|
||||
NONE;
|
||||
}
|
||||
|
||||
private static final int RANGE = 6;
|
||||
|
||||
public static Set<String> machines_input = new HashSet<>();
|
||||
public static Set<String> machines_storage = new HashSet<>();
|
||||
public static Set<String> machines_output = new HashSet<>();
|
||||
public static Set<String> machinesInput = new HashSet<>();
|
||||
public static Set<String> machinesStorage = new HashSet<>();
|
||||
public static Set<String> machinesOutput = new HashSet<>();
|
||||
|
||||
public static NetworkComponent getComponent(Block b) {
|
||||
public static EnergyNetComponent getComponent(Block b) {
|
||||
return getComponent(b.getLocation());
|
||||
}
|
||||
|
||||
public static NetworkComponent getComponent(String id) {
|
||||
if (machines_input.contains(id)) return NetworkComponent.SOURCE;
|
||||
if (machines_storage.contains(id)) return NetworkComponent.DISTRIBUTOR;
|
||||
if (machines_output.contains(id)) return NetworkComponent.CONSUMER;
|
||||
return NetworkComponent.NONE;
|
||||
public static EnergyNetComponent getComponent(String id) {
|
||||
if (machinesInput.contains(id)) return EnergyNetComponent.SOURCE;
|
||||
if (machinesStorage.contains(id)) return EnergyNetComponent.DISTRIBUTOR;
|
||||
if (machinesOutput.contains(id)) return EnergyNetComponent.CONSUMER;
|
||||
return EnergyNetComponent.NONE;
|
||||
}
|
||||
|
||||
public static NetworkComponent getComponent(Location l) {
|
||||
if (!BlockStorage.hasBlockInfo(l)) return NetworkComponent.NONE;
|
||||
public static EnergyNetComponent getComponent(Location l) {
|
||||
if (!BlockStorage.hasBlockInfo(l)) return EnergyNetComponent.NONE;
|
||||
String id = BlockStorage.checkID(l);
|
||||
if (machines_input.contains(id)) return NetworkComponent.SOURCE;
|
||||
if (machines_storage.contains(id)) return NetworkComponent.DISTRIBUTOR;
|
||||
if (machines_output.contains(id)) return NetworkComponent.CONSUMER;
|
||||
return NetworkComponent.NONE;
|
||||
if (machinesInput.contains(id)) return EnergyNetComponent.SOURCE;
|
||||
if (machinesStorage.contains(id)) return EnergyNetComponent.DISTRIBUTOR;
|
||||
if (machinesOutput.contains(id)) return EnergyNetComponent.CONSUMER;
|
||||
return EnergyNetComponent.NONE;
|
||||
}
|
||||
|
||||
public static void registerComponent(String id, NetworkComponent component) {
|
||||
public static void registerComponent(String id, EnergyNetComponent component) {
|
||||
switch (component) {
|
||||
case CONSUMER:
|
||||
machines_output.add(id);
|
||||
machinesOutput.add(id);
|
||||
break;
|
||||
case DISTRIBUTOR:
|
||||
machines_storage.add(id);
|
||||
machinesStorage.add(id);
|
||||
break;
|
||||
case SOURCE:
|
||||
machines_input.add(id);
|
||||
machinesInput.add(id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -71,12 +65,12 @@ public class EnergyNet extends Network {
|
||||
}
|
||||
|
||||
public static EnergyNet getNetworkFromLocationOrCreate(Location l) {
|
||||
EnergyNet energy_network = getNetworkFromLocation(l);
|
||||
if (energy_network == null) {
|
||||
energy_network = new EnergyNet(l);
|
||||
registerNetwork(energy_network);
|
||||
EnergyNet energyNetwork = getNetworkFromLocation(l);
|
||||
if (energyNetwork == null) {
|
||||
energyNetwork = new EnergyNet(l);
|
||||
registerNetwork(energyNetwork);
|
||||
}
|
||||
return energy_network;
|
||||
return energyNetwork;
|
||||
}
|
||||
|
||||
private Set<Location> input = new HashSet<>();
|
||||
@ -91,24 +85,25 @@ public class EnergyNet extends Network {
|
||||
return RANGE;
|
||||
}
|
||||
|
||||
public Network.Component classifyLocation(Location l) {
|
||||
if (regulator.equals(l)) return Network.Component.REGULATOR;
|
||||
public NetworkComponent classifyLocation(Location l) {
|
||||
if (regulator.equals(l)) return NetworkComponent.REGULATOR;
|
||||
switch (getComponent(l)) {
|
||||
case DISTRIBUTOR:
|
||||
return Network.Component.CONNECTOR;
|
||||
return NetworkComponent.CONNECTOR;
|
||||
case CONSUMER:
|
||||
case SOURCE:
|
||||
return Network.Component.TERMINUS;
|
||||
return NetworkComponent.TERMINUS;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void locationClassificationChange(Location l, Network.Component from, Network.Component to) {
|
||||
if (from == Network.Component.TERMINUS) {
|
||||
public void locationClassificationChange(Location l, NetworkComponent from, NetworkComponent to) {
|
||||
if (from == NetworkComponent.TERMINUS) {
|
||||
input.remove(l);
|
||||
output.remove(l);
|
||||
}
|
||||
|
||||
switch (getComponent(l)) {
|
||||
case DISTRIBUTOR:
|
||||
if (ChargableBlock.isCapacitor(l)) storage.add(l);
|
||||
@ -146,7 +141,7 @@ public class EnergyNet extends Network {
|
||||
if (item.getEnergyTicker().explode(source)) {
|
||||
exploded.add(source);
|
||||
BlockStorage.clearBlockInfo(source);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
source.getBlock().setType(Material.LAVA);
|
||||
source.getWorld().createExplosion(source, 0F, false);
|
||||
});
|
||||
@ -154,7 +149,7 @@ public class EnergyNet extends Network {
|
||||
else {
|
||||
supply = supply + energy;
|
||||
}
|
||||
SlimefunStartup.ticker.blockTimings.put(source, System.currentTimeMillis() - timestamp);
|
||||
SlimefunPlugin.getTicker().blockTimings.put(source, System.currentTimeMillis() - timestamp);
|
||||
}
|
||||
|
||||
input.removeAll(exploded);
|
||||
|
@ -0,0 +1,10 @@
|
||||
package me.mrCookieSlime.Slimefun.api.energy;
|
||||
|
||||
public enum EnergyNetComponent {
|
||||
|
||||
SOURCE,
|
||||
DISTRIBUTOR,
|
||||
CONSUMER,
|
||||
NONE;
|
||||
|
||||
}
|
@ -11,9 +11,11 @@ import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
||||
|
||||
public class ItemEnergy {
|
||||
public final class ItemEnergy {
|
||||
|
||||
// "&c&o&8\u21E8 &e\u26A1 &70 / 50 J"
|
||||
private ItemEnergy() {}
|
||||
|
||||
// "&c&o&8\u21E8 &e\u26A1 &70 / 50 J"
|
||||
|
||||
public static float getStoredEnergy(ItemStack item) {
|
||||
if (item == null || item.getType() == null || item.getType() == Material.AIR) return 0F;
|
||||
|
@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.api.inventory;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
@ -10,6 +11,7 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public class BlockMenu extends DirtyChestMenu {
|
||||
|
||||
@ -93,7 +95,13 @@ public class BlockMenu extends DirtyChestMenu {
|
||||
}
|
||||
|
||||
public void delete(Location l) {
|
||||
new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi").delete();
|
||||
File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi");
|
||||
|
||||
if (file.exists()) {
|
||||
if (!file.delete()) {
|
||||
Slimefun.getLogger().log(Level.WARNING, "Could not delete File: " + file.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public BlockMenuPreset getPreset() {
|
||||
|
@ -12,7 +12,7 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||
|
||||
public abstract class BlockMenuPreset extends ChestMenu {
|
||||
@ -50,10 +50,14 @@ public abstract class BlockMenuPreset extends ChestMenu {
|
||||
}
|
||||
|
||||
public abstract void init();
|
||||
public abstract void newInstance(BlockMenu menu, Block b);
|
||||
public abstract boolean canOpen(Block b, Player p);
|
||||
public abstract int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow);
|
||||
|
||||
|
||||
public void newInstance(BlockMenu menu, Block b) {
|
||||
// This method can optionally be overridden by implementations
|
||||
}
|
||||
|
||||
public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) {
|
||||
return this.getSlotsAccessedByItemTransport(flow);
|
||||
}
|
||||
@ -101,7 +105,7 @@ public abstract class BlockMenuPreset extends ChestMenu {
|
||||
}
|
||||
|
||||
public static BlockMenuPreset getPreset(String id) {
|
||||
return presets.get(id);
|
||||
return id == null ? null: presets.get(id);
|
||||
}
|
||||
|
||||
public static boolean isInventory(String id) {
|
||||
@ -157,9 +161,7 @@ public abstract class BlockMenuPreset extends ChestMenu {
|
||||
}
|
||||
|
||||
public void newInstance(final BlockMenu menu, final Location l) {
|
||||
Bukkit.getScheduler().runTask(SlimefunStartup.instance, () -> {
|
||||
newInstance(menu, l.getBlock());
|
||||
});
|
||||
Bukkit.getScheduler().runTask(SlimefunPlugin.instance, () -> newInstance(menu, l.getBlock()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,7 +15,9 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
||||
|
||||
public class CargoManager {
|
||||
public final class CargoManager {
|
||||
|
||||
private CargoManager() {}
|
||||
|
||||
public static ItemStack withdraw(Block node, BlockStorage storage, Block target, ItemStack template) {
|
||||
if (storage.hasUniversalInventory(target)) {
|
||||
|
@ -24,21 +24,22 @@ import org.bukkit.inventory.meta.ItemMeta;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.network.Network;
|
||||
import me.mrCookieSlime.Slimefun.api.network.NetworkComponent;
|
||||
import me.mrCookieSlime.Slimefun.holograms.CargoHologram;
|
||||
|
||||
public class CargoNet extends Network {
|
||||
|
||||
public static boolean EXTRA_CHANNELS = false;
|
||||
public static boolean extraChannels = false;
|
||||
|
||||
private static final int RANGE = 5;
|
||||
public static List<BlockFace> faces = Arrays.asList(BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST);
|
||||
public static Map<Location, Integer> round_robin = new HashMap<>();
|
||||
public static Map<Location, Integer> roundRobin = new HashMap<>();
|
||||
public static Set<ItemRequest> requests = new HashSet<>();
|
||||
|
||||
private static int[] slots = new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39};
|
||||
@ -55,12 +56,12 @@ public class CargoNet extends Network {
|
||||
}
|
||||
|
||||
public static CargoNet getNetworkFromLocationOrCreate(Location l) {
|
||||
CargoNet cargo_network = getNetworkFromLocation(l);
|
||||
if (cargo_network == null) {
|
||||
cargo_network = new CargoNet(l);
|
||||
registerNetwork(cargo_network);
|
||||
CargoNet cargoNetwork = getNetworkFromLocation(l);
|
||||
if (cargoNetwork == null) {
|
||||
cargoNetwork = new CargoNet(l);
|
||||
registerNetwork(cargoNetwork);
|
||||
}
|
||||
return cargo_network;
|
||||
return cargoNetwork;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -86,28 +87,28 @@ public class CargoNet extends Network {
|
||||
return RANGE;
|
||||
}
|
||||
|
||||
public Network.Component classifyLocation(Location l) {
|
||||
public NetworkComponent classifyLocation(Location l) {
|
||||
String id = BlockStorage.checkID(l);
|
||||
if (id == null) return null;
|
||||
switch(id) {
|
||||
case "CARGO_MANAGER":
|
||||
return Component.REGULATOR;
|
||||
return NetworkComponent.REGULATOR;
|
||||
case "CARGO_NODE":
|
||||
return Component.CONNECTOR;
|
||||
return NetworkComponent.CONNECTOR;
|
||||
case "CARGO_NODE_INPUT":
|
||||
case "CARGO_NODE_OUTPUT":
|
||||
case "CARGO_NODE_OUTPUT_ADVANCED":
|
||||
case "CT_IMPORT_BUS":
|
||||
case "CT_EXPORT_BUS":
|
||||
case "CHEST_TERMINAL":
|
||||
return Component.TERMINUS;
|
||||
return NetworkComponent.TERMINUS;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void locationClassificationChange(Location l, Component from, Component to) {
|
||||
if (from == Component.TERMINUS) {
|
||||
public void locationClassificationChange(Location l, NetworkComponent from, NetworkComponent to) {
|
||||
if (from == NetworkComponent.TERMINUS) {
|
||||
inputNodes.remove(l);
|
||||
outputNodes.remove(l);
|
||||
advancedOutputNodes.remove(l);
|
||||
@ -115,7 +116,7 @@ public class CargoNet extends Network {
|
||||
imports.remove(l);
|
||||
exports.remove(l);
|
||||
}
|
||||
if (to == Component.TERMINUS) {
|
||||
if (to == NetworkComponent.TERMINUS) {
|
||||
switch(BlockStorage.checkID(l)) {
|
||||
case "CARGO_NODE_INPUT":
|
||||
inputNodes.add(l);
|
||||
@ -187,12 +188,12 @@ public class CargoNet extends Network {
|
||||
|
||||
CargoNet self = this;
|
||||
final BlockStorage storage = BlockStorage.getStorage(b.getWorld());
|
||||
SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
if (BlockStorage.getLocationInfo(b.getLocation(), "visualizer") == null) {
|
||||
self.display();
|
||||
}
|
||||
//Chest Terminal Code
|
||||
if (EXTRA_CHANNELS) {
|
||||
if (extraChannels) {
|
||||
for (Location bus : imports) {
|
||||
BlockMenu menu = BlockStorage.getInventory(bus);
|
||||
|
||||
@ -242,9 +243,9 @@ public class CargoNet extends Network {
|
||||
for (final Location terminal : terminals) {
|
||||
BlockMenu menu = BlockStorage.getInventory(terminal);
|
||||
|
||||
ItemStack sending_item = menu.getItemInSlot(TERMINAL_OUT_SLOT);
|
||||
if (sending_item != null) {
|
||||
requests.add(new ItemRequest(terminal, TERMINAL_OUT_SLOT, sending_item, ItemTransportFlow.INSERT));
|
||||
ItemStack sendingItem = menu.getItemInSlot(TERMINAL_OUT_SLOT);
|
||||
if (sendingItem != null) {
|
||||
requests.add(new ItemRequest(terminal, TERMINAL_OUT_SLOT, sendingItem, ItemTransportFlow.INSERT));
|
||||
}
|
||||
}
|
||||
|
||||
@ -345,23 +346,23 @@ public class CargoNet extends Network {
|
||||
List<Location> outputlist = new ArrayList<>(output.get(frequency));
|
||||
|
||||
if (roundrobin) {
|
||||
if (!round_robin.containsKey(input)) {
|
||||
round_robin.put(input, 0);
|
||||
if (!roundRobin.containsKey(input)) {
|
||||
roundRobin.put(input, 0);
|
||||
}
|
||||
|
||||
int c_index = round_robin.get(input);
|
||||
int cIndex = roundRobin.get(input);
|
||||
|
||||
if (c_index < outputlist.size()) {
|
||||
for (int i = 0; i < c_index; i++) {
|
||||
if (cIndex < outputlist.size()) {
|
||||
for (int i = 0; i < cIndex; i++) {
|
||||
final Location temp = outputlist.get(0);
|
||||
outputlist.remove(temp);
|
||||
outputlist.add(temp);
|
||||
}
|
||||
c_index++;
|
||||
cIndex++;
|
||||
}
|
||||
else c_index = 1;
|
||||
else cIndex = 1;
|
||||
|
||||
round_robin.put(input, c_index);
|
||||
roundRobin.put(input, cIndex);
|
||||
}
|
||||
|
||||
for (Location out : outputlist) {
|
||||
@ -389,7 +390,7 @@ public class CargoNet extends Network {
|
||||
}
|
||||
}
|
||||
//Chest Terminal Code
|
||||
if (EXTRA_CHANNELS) {
|
||||
if (extraChannels) {
|
||||
List<StoredItem> items = new ArrayList<>();
|
||||
for (Location l: providers) {
|
||||
Block target = getAttachedBlock(l.getBlock());
|
||||
|
@ -3,18 +3,18 @@ package me.mrCookieSlime.Slimefun.api.item_transport;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
|
||||
public final class ChestManipulator {
|
||||
|
||||
private ChestManipulator() {}
|
||||
|
||||
public static void registerListener(CargoTransportEvent listener) {
|
||||
SlimefunStartup.instance.getUtilities().cargoTransportEvents.add(listener);
|
||||
SlimefunPlugin.getUtilities().cargoTransportEvents.add(listener);
|
||||
}
|
||||
|
||||
public static ItemStack trigger(Block b, int slot, ItemStack prev, ItemStack next) {
|
||||
for (CargoTransportEvent listener: SlimefunStartup.instance.getUtilities().cargoTransportEvents) {
|
||||
for (CargoTransportEvent listener: SlimefunPlugin.getUtilities().cargoTransportEvents) {
|
||||
next = listener.onEvent(b, slot, prev, next);
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package me.mrCookieSlime.Slimefun.api.network;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.List;
|
||||
import java.util.Queue;
|
||||
import java.util.HashSet;
|
||||
@ -10,14 +11,15 @@ import java.util.ArrayList;
|
||||
import org.bukkit.Location;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.MC_1_13.ParticleEffect;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public abstract class Network {
|
||||
|
||||
private static List<Network> NETWORK_LIST = new ArrayList<>();
|
||||
private static List<Network> networkList = new ArrayList<>();
|
||||
|
||||
public static<T extends Network> T getNetworkFromLocation(Location l, Class<T> type) {
|
||||
for(Network n: NETWORK_LIST) {
|
||||
for(Network n: networkList) {
|
||||
if(type.isInstance(n) && n.connectsTo(l)) {
|
||||
return type.cast(n);
|
||||
}
|
||||
@ -27,7 +29,7 @@ public abstract class Network {
|
||||
|
||||
public static<T extends Network> List<T> getNetworksFromLocation(Location l, Class<T> type) {
|
||||
List<T> ret = new ArrayList<>();
|
||||
for(Network n: NETWORK_LIST) {
|
||||
for(Network n: networkList) {
|
||||
if(type.isInstance(n) && n.connectsTo(l)) {
|
||||
ret.add(type.cast(n));
|
||||
}
|
||||
@ -36,11 +38,11 @@ public abstract class Network {
|
||||
}
|
||||
|
||||
public static void registerNetwork(Network n) {
|
||||
NETWORK_LIST.add(n);
|
||||
networkList.add(n);
|
||||
}
|
||||
|
||||
public static void unregisterNetwork(Network n) {
|
||||
NETWORK_LIST.remove(n);
|
||||
networkList.remove(n);
|
||||
}
|
||||
|
||||
public static void handleAllNetworkLocationUpdate(Location l) {
|
||||
@ -49,16 +51,9 @@ public abstract class Network {
|
||||
}
|
||||
}
|
||||
|
||||
public static enum Component {
|
||||
CONNECTOR,
|
||||
REGULATOR,
|
||||
TERMINUS;
|
||||
}
|
||||
|
||||
|
||||
public abstract int getRange();
|
||||
public abstract Component classifyLocation(Location l);
|
||||
public abstract void locationClassificationChange(Location l, Component from, Component to);
|
||||
public abstract NetworkComponent classifyLocation(Location l);
|
||||
public abstract void locationClassificationChange(Location l, NetworkComponent from, NetworkComponent to);
|
||||
|
||||
protected Location regulator;
|
||||
private Queue<Location> nodeQueue = new ArrayDeque<>();
|
||||
@ -94,15 +89,15 @@ public abstract class Network {
|
||||
return connectedLocations.contains(l);
|
||||
}
|
||||
|
||||
private Component getCurrentClassification(Location l) {
|
||||
private NetworkComponent getCurrentClassification(Location l) {
|
||||
if(regulatorNodes.contains(l)) {
|
||||
return Component.REGULATOR;
|
||||
return NetworkComponent.REGULATOR;
|
||||
}
|
||||
else if(connectorNodes.contains(l)) {
|
||||
return Component.CONNECTOR;
|
||||
return NetworkComponent.CONNECTOR;
|
||||
}
|
||||
else if(terminusNodes.contains(l)) {
|
||||
return Component.TERMINUS;
|
||||
return NetworkComponent.TERMINUS;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -111,28 +106,28 @@ public abstract class Network {
|
||||
int steps = 0;
|
||||
while (nodeQueue.peek() != null) {
|
||||
Location l = nodeQueue.poll();
|
||||
Component currentAssignment = getCurrentClassification(l);
|
||||
Component classification = classifyLocation(l);
|
||||
NetworkComponent currentAssignment = getCurrentClassification(l);
|
||||
NetworkComponent classification = classifyLocation(l);
|
||||
|
||||
if (classification != currentAssignment) {
|
||||
if (currentAssignment == Component.REGULATOR || currentAssignment == Component.CONNECTOR) {
|
||||
if (currentAssignment == NetworkComponent.REGULATOR || currentAssignment == NetworkComponent.CONNECTOR) {
|
||||
// Requires a complete rebuild of the network, so we just throw the current one away.
|
||||
unregisterNetwork(this);
|
||||
return;
|
||||
}
|
||||
else if (currentAssignment == Component.TERMINUS) {
|
||||
else if (currentAssignment == NetworkComponent.TERMINUS) {
|
||||
terminusNodes.remove(l);
|
||||
}
|
||||
|
||||
if (classification == Component.REGULATOR) {
|
||||
if (classification == NetworkComponent.REGULATOR) {
|
||||
regulatorNodes.add(l);
|
||||
discoverNeighbors(l);
|
||||
}
|
||||
else if(classification == Component.CONNECTOR) {
|
||||
else if(classification == NetworkComponent.CONNECTOR) {
|
||||
connectorNodes.add(l);
|
||||
discoverNeighbors(l);
|
||||
}
|
||||
else if(classification == Component.TERMINUS) {
|
||||
else if(classification == NetworkComponent.TERMINUS) {
|
||||
terminusNodes.add(l);
|
||||
}
|
||||
|
||||
@ -147,8 +142,8 @@ public abstract class Network {
|
||||
|
||||
private void discoverNeighbors(Location l, double xDiff, double yDiff, double zDiff) {
|
||||
for(int i = getRange() + 1; i > 0; i --) {
|
||||
Location new_location = l.clone().add(i * xDiff, i * yDiff, i * zDiff);
|
||||
addLocationToNetwork(new_location);
|
||||
Location newLocation = l.clone().add(i * xDiff, i * yDiff, i * zDiff);
|
||||
addLocationToNetwork(newLocation);
|
||||
}
|
||||
}
|
||||
|
||||
@ -162,12 +157,12 @@ public abstract class Network {
|
||||
}
|
||||
|
||||
public void display() {
|
||||
SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
|
||||
SlimefunPlugin.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
for(Location l: connectedLocations) {
|
||||
try {
|
||||
ParticleEffect.REDSTONE.display(l.clone().add(0.5, 0.5, 0.5), 0, 0, 0, 1, 1);
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch(Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while playing Network Animation for Slimefun " + Slimefun.getVersion(), x);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -0,0 +1,7 @@
|
||||
package me.mrCookieSlime.Slimefun.api.network;
|
||||
|
||||
public enum NetworkComponent {
|
||||
CONNECTOR,
|
||||
REGULATOR,
|
||||
TERMINUS;
|
||||
}
|
@ -2,12 +2,14 @@ package me.mrCookieSlime.Slimefun.autosave;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public class BlockAutoSaver implements Runnable {
|
||||
|
||||
@ -27,7 +29,7 @@ public class BlockAutoSaver implements Runnable {
|
||||
}
|
||||
|
||||
if (!worlds.isEmpty()) {
|
||||
System.out.println("[Slimefun] Auto-Saving Block Data... (Next Auto-Save: " + SlimefunStartup.getCfg().getInt("options.auto-save-delay-in-minutes") + "m)");
|
||||
Slimefun.getLogger().log(Level.INFO, "Auto-Saving Block Data... (Next Auto-Save: " + SlimefunPlugin.getCfg().getInt("options.auto-save-delay-in-minutes") + "m)");
|
||||
|
||||
for (BlockStorage storage: worlds) {
|
||||
storage.save(false);
|
||||
|
@ -1,8 +1,10 @@
|
||||
package me.mrCookieSlime.Slimefun.autosave;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public class PlayerAutoSaver implements Runnable {
|
||||
|
||||
@ -23,7 +25,7 @@ public class PlayerAutoSaver implements Runnable {
|
||||
}
|
||||
|
||||
if (players > 0) {
|
||||
System.out.println("[Slimefun] Auto-Saved Player Data for " + players + " Player(s)!");
|
||||
Slimefun.getLogger().log(Level.INFO, "Auto-Saved Player Data for " + players + " Player(s)!");
|
||||
}
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user