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
84303891d7
2
pom.xml
2
pom.xml
@ -124,7 +124,7 @@
|
||||
<dependency>
|
||||
<groupId>com.github.thebusybiscuit</groupId>
|
||||
<artifactId>CS-CoreLib2</artifactId>
|
||||
<version>0.3.12</version>
|
||||
<version>0.4.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -8,8 +8,8 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.FireworkEffect;
|
||||
import org.bukkit.FireworkEffect.Type;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.FireworkEffectMeta;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
@ -486,8 +486,13 @@ public final class SlimefunItems {
|
||||
|
||||
public static final ItemStack SOLAR_PANEL = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Panel", "", "&a&oTransforms Sunlight to Energy");
|
||||
public static final ItemStack SOLAR_ARRAY = new CustomItem(Material.DAYLIGHT_DETECTOR, "&bSolar Array", "", "&a&oTransforms Sunlight to Energy");
|
||||
public static final ItemStack DIGITAL_MINER = new CustomItem(Material.IRON_PICKAXE, "&bDigital Miner", "", "&a&oDigs out everything!");
|
||||
public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&a&oDigs out everything!", "&a&oAutomatically crushes your Ores");
|
||||
|
||||
@Deprecated
|
||||
public static final ItemStack DIGITAL_MINER = new CustomItem(Material.IRON_PICKAXE, "&bDigital Miner", "", "&4DEPRECATED", "&cThis machine will soon be removed!");
|
||||
|
||||
@Deprecated
|
||||
public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&4DEPRECATED", "&cThis machine will soon be removed!");
|
||||
|
||||
public static final ItemStack AUTOMATED_PANNING_MACHINE = new CustomItem(Material.BOWL, "&aAutomated Panning Machine", "", "&a&oA MultiBlock Version of the Gold Pan");
|
||||
public static final ItemStack OUTPUT_CHEST = new CustomItem(Material.CHEST, "&4Output Chest", "", "&c&oA basic machine will try to put", "&c&oitems in this chest if it's placed", "&c&oadjacent to the dispenser.");
|
||||
public static final ItemStack HOLOGRAM_PROJECTOR = new CustomItem(Material.QUARTZ_SLAB, "&bHologram Projector", "", "&rProjects an Editable Hologram");
|
||||
@ -605,7 +610,10 @@ public final class SlimefunItems {
|
||||
public static final ItemStack SOLAR_GENERATOR_4 = new CustomItem(Material.DAYLIGHT_DETECTOR, "&eEnergized Solar Generator", "", "&9Works at Night", "", "&4End-Game Generator", "&8\u21E8 &e\u26A1 &70 J Buffer", "&8\u21E8 &e\u26A1 &7256 J/s (Day)", "&8\u21E8 &e\u26A1 &7128 J/s (Night)");
|
||||
|
||||
public static final ItemStack COAL_GENERATOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCoal Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &764 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s");
|
||||
public static final ItemStack COAL_GENERATOR_2 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&cCoal Generator &7(&eII&7)", "", "&6Advanced Generator", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &730 J/s");
|
||||
|
||||
public static final ItemStack LAVA_GENERATOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&4Lava Generator", "", "&6Average Generator", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s");
|
||||
public static final ItemStack LAVA_GENERATOR_2 = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&4Lava Generator &7&eII&7)", "", "&6Advanced Generator", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &740 J/s");
|
||||
|
||||
public static final ItemStack ELECTRIC_FURNACE = new CustomItem(Material.FURNACE, "&cElectric Furnace", "", "&eBasic Machine", "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &74 J/s");
|
||||
public static final ItemStack ELECTRIC_FURNACE_2 = new CustomItem(Material.FURNACE, "&cElectric Furnace &7- &eII", "", "&aMedium Machine", "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &76 J/s");
|
||||
|
@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun.Objects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
@ -25,13 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
* @see SeasonalCategory
|
||||
*/
|
||||
public class Category {
|
||||
/**
|
||||
* List of the registered Categories.
|
||||
* @since 4.0
|
||||
* @see Categories
|
||||
*/
|
||||
public static List<Category> list = new ArrayList<>();
|
||||
|
||||
|
||||
private ItemStack item;
|
||||
private List<SlimefunItem> items;
|
||||
private int tier;
|
||||
@ -79,15 +72,19 @@ public class Category {
|
||||
* @since 4.0
|
||||
*/
|
||||
public void register() {
|
||||
list.add(this);
|
||||
Collections.sort(list, new CategorySorter());
|
||||
SlimefunPlugin.getUtilities().allCategories.add(this);
|
||||
Collections.sort(list(), SlimefunPlugin.getUtilities().categorySorter);
|
||||
|
||||
if (this instanceof SeasonalCategory) {
|
||||
if (((SeasonalCategory) this).isUnlocked()) SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this);
|
||||
if (((SeasonalCategory) this).isUnlocked()) {
|
||||
SlimefunPlugin.getUtilities().enabledCategories.add(this);
|
||||
}
|
||||
}
|
||||
else {
|
||||
SlimefunPlugin.getUtilities().enabledCategories.add(this);
|
||||
}
|
||||
else SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this);
|
||||
|
||||
Collections.sort(SlimefunPlugin.getUtilities().currentlyEnabledCategories, new CategorySorter());
|
||||
Collections.sort(SlimefunPlugin.getUtilities().enabledCategories, SlimefunPlugin.getUtilities().categorySorter);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -99,7 +96,7 @@ public class Category {
|
||||
* @see Categories
|
||||
*/
|
||||
public static List<Category> list() {
|
||||
return list;
|
||||
return SlimefunPlugin.getUtilities().allCategories;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -143,8 +140,9 @@ public class Category {
|
||||
*
|
||||
* @since 4.0
|
||||
*/
|
||||
@Deprecated
|
||||
public static Category getByItem(ItemStack item) {
|
||||
for (Category c: list) {
|
||||
for (Category c: list()) {
|
||||
if (c.getItem().isSimilar(item)) return c;
|
||||
}
|
||||
return null;
|
||||
@ -161,19 +159,4 @@ public class Category {
|
||||
return tier;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 4.0
|
||||
*/
|
||||
class CategorySorter implements Comparator<Category> {
|
||||
|
||||
/**
|
||||
* @since 4.0
|
||||
*/
|
||||
@Override
|
||||
public int compare(Category c1, Category c2) {
|
||||
return Integer.compare(c1.getTier(), c2.getTier());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -418,4 +418,9 @@ public class Research {
|
||||
public static List<Research> getResearches(String uuid) {
|
||||
return getResearches(UUID.fromString(uuid));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Research {" + id + "," + name + "}";
|
||||
}
|
||||
}
|
@ -1,38 +1,42 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
/**
|
||||
* @since 4.0
|
||||
*/
|
||||
public class EnderTalisman extends SlimefunItem {
|
||||
|
||||
private String suffix;
|
||||
private boolean consumable;
|
||||
private boolean cancel;
|
||||
private PotionEffect[] effects;
|
||||
private int chance;
|
||||
public class EnderTalisman extends Talisman {
|
||||
|
||||
public EnderTalisman(Talisman parent) {
|
||||
super(Categories.TALISMANS_2, parent.upgrade(), "ENDER_" + parent.getID(), RecipeType.MAGIC_WORKBENCH, new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, null, parent.getItem(), null, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, parent.upgrade());
|
||||
this.consumable = parent.isConsumable();
|
||||
this.cancel = parent.isEventCancelled();
|
||||
this.suffix = parent.getSuffix();
|
||||
this.effects = parent.getEffects();
|
||||
this.chance = parent.getChance();
|
||||
super(Categories.TALISMANS_2, parent.upgrade(), "ENDER_" + parent.getID(), new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, null, parent.getItem(), null, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3});
|
||||
|
||||
consumable = parent.isConsumable();
|
||||
cancel = parent.isEventCancelled();
|
||||
suffix = parent.getSuffix();
|
||||
effects = parent.getEffects();
|
||||
chance = parent.getChance();
|
||||
|
||||
Slimefun.addHint("ENDER_" + parent.getID(), "&eEnder Talismans have the advantage", "&eof still working while they", "&eare in your Ender Chest");
|
||||
}
|
||||
|
||||
public String getSuffix() { return this.suffix; }
|
||||
public boolean isConsumable() { return this.consumable; }
|
||||
public boolean isEventCancelled() { return this.cancel; }
|
||||
public PotionEffect[] getEffects() { return this.effects; }
|
||||
public int getChance() { return this.chance; }
|
||||
|
||||
@Override
|
||||
public ItemStack upgrade() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void install() {
|
||||
// Let's override that, otherwise we would be creating Ender Talismans
|
||||
// for every Ender Talisman
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create() {
|
||||
// Let's override that, otherwise we would be creating Ender Talismans
|
||||
// for every Ender Talisman
|
||||
}
|
||||
}
|
||||
|
@ -33,10 +33,7 @@ import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
|
||||
public class SlimefunItem {
|
||||
|
||||
public static List<SlimefunItem> items = new ArrayList<>();
|
||||
public static List<SlimefunItem> all = new ArrayList<>();
|
||||
|
||||
|
||||
private String id;
|
||||
private String hash;
|
||||
private State state;
|
||||
@ -211,7 +208,7 @@ public class SlimefunItem {
|
||||
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);
|
||||
SlimefunPlugin.getUtilities().allItems.add(this);
|
||||
|
||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true);
|
||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing);
|
||||
@ -246,7 +243,7 @@ public class SlimefunItem {
|
||||
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);
|
||||
SlimefunPlugin.getUtilities().enabledItems.add(this);
|
||||
if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++;
|
||||
SlimefunPlugin.getUtilities().itemIDs.put(this.id, this);
|
||||
|
||||
@ -274,7 +271,7 @@ public class SlimefunItem {
|
||||
}
|
||||
|
||||
public static List<SlimefunItem> list() {
|
||||
return items;
|
||||
return SlimefunPlugin.getUtilities().enabledItems;
|
||||
}
|
||||
|
||||
public void bindToResearch(Research r) {
|
||||
@ -325,7 +322,7 @@ public class SlimefunItem {
|
||||
|
||||
public static SlimefunItem getByItem(ItemStack item) {
|
||||
if (item == null) return null;
|
||||
for (SlimefunItem sfi: items) {
|
||||
for (SlimefunItem sfi: SlimefunPlugin.getUtilities().enabledItems) {
|
||||
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)) ||
|
||||
@ -378,7 +375,7 @@ public class SlimefunItem {
|
||||
}
|
||||
|
||||
public static State getState(ItemStack item) {
|
||||
for (SlimefunItem i: all) {
|
||||
for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) {
|
||||
if (i.isItem(item)) {
|
||||
return i.getState();
|
||||
}
|
||||
@ -387,7 +384,7 @@ public class SlimefunItem {
|
||||
}
|
||||
|
||||
public static boolean isDisabled(ItemStack item) {
|
||||
for (SlimefunItem i: all) {
|
||||
for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) {
|
||||
if (i.isItem(item)) {
|
||||
return i.isDisabled();
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import org.bukkit.potion.PotionEffect;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
@ -28,11 +29,11 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
*/
|
||||
public class Talisman extends SlimefunItem {
|
||||
|
||||
private String suffix;
|
||||
private boolean consumable = true;
|
||||
private boolean cancel = true;
|
||||
private PotionEffect[] effects;
|
||||
private int chance = 100;
|
||||
protected String suffix;
|
||||
protected boolean consumable = true;
|
||||
protected boolean cancel = true;
|
||||
protected PotionEffect[] effects;
|
||||
protected int chance = 100;
|
||||
|
||||
public Talisman(ItemStack item, String id, ItemStack[] recipe, boolean consumable, boolean cancelEvent, String messageSuffix, PotionEffect... effects) {
|
||||
super(Categories.TALISMANS_1, item, id, RecipeType.MAGIC_WORKBENCH, recipe, new CustomItem(item, consumable ? 4 : 1));
|
||||
@ -52,12 +53,16 @@ public class Talisman extends SlimefunItem {
|
||||
}
|
||||
|
||||
public Talisman(ItemStack item, String id, ItemStack[] recipe, String messageSuffix, int chance, PotionEffect... effects) {
|
||||
super(Categories.TALISMANS_1, item, id, RecipeType.MAGIC_WORKBENCH, recipe, item);
|
||||
super(Categories.TALISMANS_1, item, id, RecipeType.MAGIC_WORKBENCH, recipe);
|
||||
this.suffix = messageSuffix;
|
||||
this.effects = effects;
|
||||
this.chance = chance;
|
||||
}
|
||||
|
||||
protected Talisman(Category category, ItemStack item, String id, ItemStack[] recipe) {
|
||||
super(category, item, id, RecipeType.MAGIC_WORKBENCH, recipe);
|
||||
}
|
||||
|
||||
public String getSuffix() {
|
||||
return this.suffix;
|
||||
}
|
||||
@ -78,39 +83,6 @@ public class Talisman extends SlimefunItem {
|
||||
return this.chance;
|
||||
}
|
||||
|
||||
public static boolean checkFor(Event e, SlimefunItem item) {
|
||||
if (!(item instanceof Talisman)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Talisman talisman = (Talisman) item;
|
||||
if (new Random().nextInt(100) < talisman.getChance()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Player p = getPlayerByEventType(e);
|
||||
if (p == null || !pass(p, talisman)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (p.getInventory().containsAtLeast(talisman.getItem(), 1)) {
|
||||
if (Slimefun.hasUnlocked(p, talisman.getItem(), true)) {
|
||||
executeTalismanAttributes(e,p,talisman);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
else if (p.getEnderChest().containsAtLeast(talisman.upgrade(), 1)) {
|
||||
if (Slimefun.hasUnlocked(p, talisman.upgrade(), true)) {
|
||||
executeTalismanAttributes(e,p,talisman);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
else return false;
|
||||
|
||||
}
|
||||
|
||||
public ItemStack upgrade() {
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("&7&oEnder Infused");
|
||||
@ -142,6 +114,38 @@ public class Talisman extends SlimefunItem {
|
||||
private static boolean isTalismanMessage(Talisman talisman){
|
||||
return !("").equalsIgnoreCase(talisman.getSuffix());
|
||||
}
|
||||
|
||||
public static boolean checkFor(Event e, SlimefunItem item) {
|
||||
if (!(item instanceof Talisman)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Talisman talisman = (Talisman) item;
|
||||
if (new Random().nextInt(100) < talisman.getChance()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Player p = getPlayerByEventType(e);
|
||||
if (p == null || !pass(p, talisman)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (p.getInventory().containsAtLeast(talisman.getItem(), 1)) {
|
||||
if (Slimefun.hasUnlocked(p, talisman.getItem(), true)) {
|
||||
executeTalismanAttributes(e,p,talisman);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
else if (p.getEnderChest().containsAtLeast(talisman.upgrade(), 1)) {
|
||||
if (Slimefun.hasUnlocked(p, talisman.upgrade(), true)) {
|
||||
executeTalismanAttributes(e,p,talisman);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
private static void executeTalismanAttributes(Event e, Player p, Talisman talisman){
|
||||
consumeItem(p,talisman);
|
||||
|
@ -98,7 +98,7 @@ public final class MachineHelper {
|
||||
im.setLore(lore);
|
||||
item.setItemMeta(im);
|
||||
|
||||
menu.replaceExistingItem(22, item);
|
||||
menu.replaceExistingItem(slot, item);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,66 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent;
|
||||
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.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
||||
import me.mrCookieSlime.Slimefun.holograms.CargoHologram;
|
||||
|
||||
public class CargoManagerBlock extends SlimefunItem {
|
||||
|
||||
public CargoManagerBlock(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, id, recipeType, recipe);
|
||||
|
||||
SlimefunItem.registerBlockHandler("CARGO_MANAGER", (p, b, tool, reason) -> {
|
||||
CargoHologram.remove(b);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preRegister() {
|
||||
addItemHandler(new BlockTicker() {
|
||||
|
||||
@Override
|
||||
public void tick(Block b, SlimefunItem item, Config data) {
|
||||
CargoNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}, new ItemInteractionHandler() {
|
||||
|
||||
@Override
|
||||
public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) {
|
||||
if (e.getClickedBlock() == null) return false;
|
||||
String item = BlockStorage.checkID(e.getClickedBlock());
|
||||
if (item == null || !item.equals(getID())) return false;
|
||||
e.setCancelled(true);
|
||||
|
||||
if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "visualizer") == null) {
|
||||
BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", "disabled");
|
||||
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&4\u2718"));
|
||||
}
|
||||
else {
|
||||
BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", null);
|
||||
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&2\u2714"));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
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.ancient_altar.AncientAltarListener;
|
||||
|
||||
public class AncientPedestal extends SlimefunItem {
|
||||
|
||||
public AncientPedestal(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
|
||||
super(category, item, id, recipeType, recipe, recipeOutput);
|
||||
|
||||
SlimefunItem.registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||
Item stack = AncientAltarListener.findItem(b);
|
||||
if (stack != null) {
|
||||
stack.removeMetadata("item_placed", SlimefunPlugin.instance);
|
||||
b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName()));
|
||||
stack.remove();
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
@ -23,34 +23,34 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
|
||||
public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
||||
|
||||
private final List<ItemStack> recipes = new ArrayList<>();
|
||||
private final List<ItemStack> recipeList = new ArrayList<>();
|
||||
|
||||
public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, id, recipeType, recipe);
|
||||
|
||||
recipes.add(new ItemStack(Material.ROTTEN_FLESH));
|
||||
recipes.add(new ItemStack(Material.LEATHER));
|
||||
recipeList.add(new ItemStack(Material.ROTTEN_FLESH));
|
||||
recipeList.add(new ItemStack(Material.LEATHER));
|
||||
|
||||
recipes.add(new ItemStack(Material.WET_SPONGE));
|
||||
recipes.add(new ItemStack(Material.SPONGE));
|
||||
recipeList.add(new ItemStack(Material.WET_SPONGE));
|
||||
recipeList.add(new ItemStack(Material.SPONGE));
|
||||
|
||||
recipes.add(new ItemStack(Material.KELP));
|
||||
recipes.add(new ItemStack(Material.DRIED_KELP));
|
||||
recipeList.add(new ItemStack(Material.KELP));
|
||||
recipeList.add(new ItemStack(Material.DRIED_KELP));
|
||||
|
||||
recipes.add(new ItemStack(Material.COOKED_BEEF));
|
||||
recipes.add(SlimefunItems.BEEF_JERKY);
|
||||
recipeList.add(new ItemStack(Material.COOKED_BEEF));
|
||||
recipeList.add(SlimefunItems.BEEF_JERKY);
|
||||
|
||||
recipes.add(new ItemStack(Material.POTION));
|
||||
recipes.add(new ItemStack(Material.GLASS_BOTTLE));
|
||||
recipeList.add(new ItemStack(Material.POTION));
|
||||
recipeList.add(new ItemStack(Material.GLASS_BOTTLE));
|
||||
|
||||
recipes.add(new ItemStack(Material.OAK_SAPLING));
|
||||
recipes.add(new ItemStack(Material.STICK, 2));
|
||||
recipeList.add(new ItemStack(Material.OAK_SAPLING));
|
||||
recipeList.add(new ItemStack(Material.STICK, 2));
|
||||
|
||||
recipes.add(new ItemStack(Material.OAK_LEAVES));
|
||||
recipes.add(new ItemStack(Material.STICK));
|
||||
recipeList.add(new ItemStack(Material.OAK_LEAVES));
|
||||
recipeList.add(new ItemStack(Material.STICK));
|
||||
|
||||
recipes.add(new ItemStack(Material.WATER_BUCKET));
|
||||
recipes.add(new ItemStack(Material.BUCKET));
|
||||
recipeList.add(new ItemStack(Material.WATER_BUCKET));
|
||||
recipeList.add(new ItemStack(Material.BUCKET));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -65,7 +65,7 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDisplayRecipes() {
|
||||
return recipes;
|
||||
return recipeList;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -100,9 +100,9 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
||||
Material mat = item.getType();
|
||||
ItemStack output = null;
|
||||
|
||||
for (int i = 0; i < recipes.size(); i += 2) {
|
||||
if (SlimefunManager.isItemSimiliar(item, recipes.get(i), true)) {
|
||||
output = recipes.get(i + 1);
|
||||
for (int i = 0; i < recipeList.size(); i += 2) {
|
||||
if (SlimefunManager.isItemSimiliar(item, recipeList.get(i), true)) {
|
||||
output = recipeList.get(i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,6 +31,14 @@ public abstract class CarbonPress extends AContainer implements RecipeDisplayIte
|
||||
return "CARBON_PRESS";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.DIAMOND_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cCarbon Press";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -33,5 +33,15 @@ public abstract class ElectricIngotFactory extends AContainer implements RecipeD
|
||||
public String getMachineIdentifier() {
|
||||
return "ELECTRIC_INGOT_FACTORY";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cElectric Ingot Factory";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,32 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
|
||||
public abstract class ElectricOreGrinder extends AContainer implements RecipeDisplayItem {
|
||||
|
||||
public ElectricOreGrinder(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, name, recipeType, recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMachineIdentifier() {
|
||||
return "ELECTRIC_ORE_GRINDER";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.IRON_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&bElectric Ore Grinder";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.GPS.Elevator;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
|
||||
public class ElevatorPlate extends SimpleSlimefunItem<ItemInteractionHandler> {
|
||||
|
||||
public ElevatorPlate(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
|
||||
super(category, item, id, recipeType, recipe, recipeOutput);
|
||||
|
||||
SlimefunItem.registerBlockHandler("ELEVATOR_PLATE", new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
BlockStorage.addBlockInfo(b, "floor", "&rFloor #0");
|
||||
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemInteractionHandler getItemHandler() {
|
||||
return (e, p, item) -> {
|
||||
if (e.getClickedBlock() == null) return false;
|
||||
String id = BlockStorage.checkID(e.getClickedBlock());
|
||||
if (id == null || !id.equals(getID())) return false;
|
||||
|
||||
if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) {
|
||||
Elevator.openEditor(p, e.getClickedBlock());
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
@ -29,5 +30,15 @@ public abstract class FoodComposter extends AContainer implements RecipeDisplayI
|
||||
public String getMachineIdentifier() {
|
||||
return "FOOD_COMPOSTER";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.GOLDEN_HOE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cFood Composter";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,13 +1,13 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public abstract class FoodFabricator extends AContainer {
|
||||
|
||||
public FoodFabricator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
@ -28,5 +28,15 @@ public abstract class FoodFabricator extends AContainer {
|
||||
public String getMachineIdentifier() {
|
||||
return "FOOD_FABRICATOR";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.GOLDEN_HOE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cFood Fabricator";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -40,6 +40,16 @@ public abstract class Freezer extends AContainer implements RecipeDisplayItem {
|
||||
return displayRecipes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.GOLDEN_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&bFreezer";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMachineIdentifier() {
|
||||
return "FREEZER";
|
||||
|
@ -0,0 +1,46 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Tag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||
|
||||
public abstract class CoalGenerator extends AGenerator {
|
||||
|
||||
public CoalGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, id, recipeType, recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
registerFuel(new MachineFuel(8, new ItemStack(Material.COAL)));
|
||||
registerFuel(new MachineFuel(8, new ItemStack(Material.CHARCOAL)));
|
||||
registerFuel(new MachineFuel(80, new ItemStack(Material.COAL_BLOCK)));
|
||||
registerFuel(new MachineFuel(12, new ItemStack(Material.BLAZE_ROD)));
|
||||
|
||||
// Logs
|
||||
for (Material mat: Tag.LOGS.getValues()) {
|
||||
registerFuel(new MachineFuel(2, new ItemStack(mat)));
|
||||
}
|
||||
|
||||
// Wooden Planks
|
||||
for (Material mat: Tag.PLANKS.getValues()) {
|
||||
registerFuel(new MachineFuel(1, new ItemStack(mat)));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cCoal Generator";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||
|
||||
public abstract class CombustionGenerator extends AGenerator {
|
||||
|
||||
public CombustionGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, id, recipeType, recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
registerFuel(new MachineFuel(30, SlimefunItems.BUCKET_OF_OIL));
|
||||
registerFuel(new MachineFuel(90, SlimefunItems.BUCKET_OF_FUEL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cCombustion Reactor";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||
|
||||
public abstract class LavaGenerator extends AGenerator {
|
||||
|
||||
public LavaGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, id, recipeType, recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
registerFuel(new MachineFuel(40, new ItemStack(Material.LAVA_BUCKET)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&4Lava Generator";
|
||||
}
|
||||
|
||||
}
|
@ -29,7 +29,8 @@ public class Juicer extends MultiBlockMachine {
|
||||
new ItemStack(Material.APPLE), SlimefunItems.APPLE_JUICE,
|
||||
new ItemStack(Material.MELON), SlimefunItems.MELON_JUICE,
|
||||
new ItemStack(Material.CARROT), SlimefunItems.CARROT_JUICE,
|
||||
new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE
|
||||
new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE,
|
||||
new ItemStack(Material.GOLDEN_APPLE), SlimefunItems.GOLDEN_APPLE_JUICE
|
||||
},
|
||||
Material.NETHER_BRICK_FENCE
|
||||
);
|
||||
|
@ -16,7 +16,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
|
||||
public class TableSaw extends MultiBlockMachine {
|
||||
|
||||
private final List<ItemStack> displayRecipes = new ArrayList<ItemStack>();
|
||||
private final List<ItemStack> displayRecipes = new ArrayList<>();
|
||||
|
||||
public TableSaw() {
|
||||
super(
|
||||
|
@ -69,6 +69,8 @@ public final class Messages {
|
||||
local.setDefault("messages.cannot-place" ,"&cYou cannot place that block there!");
|
||||
local.setDefault("messages.no-pvp" ,"&cYou cannot pvp in here!");
|
||||
|
||||
local.setDefault("tooltips.item-permission", "", "&rYou do not have Permission", "&rto access this Item");
|
||||
|
||||
local.setDefault("machines.pattern-not-found", "&eSorry, I could not recognize this Pattern. Please place the Items in the correct Pattern into the Dispenser.");
|
||||
local.setDefault("machines.unknown-material", "&eSorry, I could not recognize the Item in my Dispenser. Please put something in that I know.");
|
||||
local.setDefault("machines.wrong-item", "&eSorry, I could not recognize the Item you right clicked me with. Check the Recipes and see which Items you can use.");
|
||||
|
@ -49,7 +49,7 @@ public final class MiscSetup {
|
||||
}
|
||||
|
||||
public static void loadItems(Settings settings) {
|
||||
Iterator<SlimefunItem> iterator = SlimefunItem.items.iterator();
|
||||
Iterator<SlimefunItem> iterator = SlimefunItem.list().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
SlimefunItem item = iterator.next();
|
||||
if (item == null) {
|
||||
|
@ -127,10 +127,12 @@ public final class SlimefunManager {
|
||||
private static boolean equalsLore(List<String> lore, List<String> lore2) {
|
||||
StringBuilder string1 = new StringBuilder();
|
||||
StringBuilder string2 = new StringBuilder();
|
||||
|
||||
String colors = ChatColor.YELLOW.toString() + ChatColor.YELLOW.toString() + ChatColor.GRAY.toString();
|
||||
for (String string: lore) {
|
||||
if (!string.equals(ChatColor.GRAY + "Soulbound") && !string.startsWith(colors)) string1.append("-NEW LINE-").append(string);
|
||||
}
|
||||
|
||||
for (String string: lore2) {
|
||||
if (!string.equals(ChatColor.GRAY + "Soulbound") && !string.startsWith(colors)) string2.append("-NEW LINE-").append(string);
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ import org.bukkit.block.CreatureSpawner;
|
||||
import org.bukkit.entity.EnderPearl;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
@ -46,7 +45,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||
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;
|
||||
@ -75,13 +73,13 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
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.cargo.AdvancedCargoOutputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoManagerBlock;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe;
|
||||
@ -105,6 +103,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SoulboundRune;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SwordOfBeheading;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AncientPedestal;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible;
|
||||
@ -128,8 +127,10 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Electric
|
||||
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.ElectricIngotPulverizer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricOreGrinder;
|
||||
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.ElevatorPlate;
|
||||
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;
|
||||
@ -140,6 +141,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.NetherDr
|
||||
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.machines.electric.generators.CoalGenerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CombustionGenerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.LavaGenerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor;
|
||||
@ -159,7 +163,6 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker;
|
||||
import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener;
|
||||
import me.mrCookieSlime.Slimefun.androids.AndroidType;
|
||||
import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
@ -167,7 +170,6 @@ 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.item_transport.CargoNet;
|
||||
import me.mrCookieSlime.Slimefun.holograms.CargoHologram;
|
||||
import me.mrCookieSlime.Slimefun.holograms.ReactorHologram;
|
||||
|
||||
public final class SlimefunSetup {
|
||||
@ -1003,8 +1005,8 @@ public final class SlimefunSetup {
|
||||
if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS);
|
||||
if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION);
|
||||
if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS);
|
||||
p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2));
|
||||
p.setFireTicks(0);
|
||||
p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2));
|
||||
e.setCancelled(true);
|
||||
return true;
|
||||
}
|
||||
@ -1102,6 +1104,7 @@ public final class SlimefunSetup {
|
||||
@Override
|
||||
public boolean onInteract(final Player p, MultiBlock mb, final Block b) {
|
||||
if (mb.isMultiBlock(SlimefunItem.getByID("DIGITAL_MINER"))) {
|
||||
p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!");
|
||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.DIGITAL_MINER, true)) {
|
||||
Block chestBlock = b.getRelative(BlockFace.UP);
|
||||
|
||||
@ -1159,6 +1162,7 @@ public final class SlimefunSetup {
|
||||
@Override
|
||||
public boolean onInteract(final Player p, MultiBlock mb, final Block b) {
|
||||
if (mb.isMultiBlock(SlimefunItem.getByID("ADVANCED_DIGITAL_MINER"))) {
|
||||
p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!");
|
||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.ADVANCED_DIGITAL_MINER, true)) {
|
||||
Block chestBlock = b.getRelative(BlockFace.UP);
|
||||
|
||||
@ -1458,7 +1462,7 @@ public final class SlimefunSetup {
|
||||
.register(true);
|
||||
|
||||
new Juice(Categories.FOOD, SlimefunItems.GOLDEN_APPLE_JUICE, "GOLDEN_APPLE_JUICE", RecipeType.JUICER,
|
||||
new ItemStack[] {new ItemStack(Material.GOLDEN_APPLE), null, null, null, null, null, null, null, null})
|
||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.GOLDEN_APPLE), null, null, null, null})
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.BROKEN_SPAWNER, "BROKEN_SPAWNER", new RecipeType(SlimefunItems.PICKAXE_OF_CONTAINMENT),
|
||||
@ -1728,24 +1732,10 @@ public final class SlimefunSetup {
|
||||
new CustomItem(SlimefunItems.WITHER_PROOF_OBSIDIAN, 4))
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.ANCIENT_PEDESTAL, "ANCIENT_PEDESTAL", RecipeType.MAGIC_WORKBENCH,
|
||||
new AncientPedestal(Categories.LUMPS_AND_MAGIC, SlimefunItems.ANCIENT_PEDESTAL, "ANCIENT_PEDESTAL", RecipeType.MAGIC_WORKBENCH,
|
||||
new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.STONE), null, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}, new CustomItem(SlimefunItems.ANCIENT_PEDESTAL, 4))
|
||||
.register(true);
|
||||
|
||||
SlimefunItem.registerBlockHandler("ANCIENT_PEDESTAL", new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
Item stack = AncientAltarListener.findItem(b);
|
||||
if (stack != null) {
|
||||
stack.removeMetadata("item_placed", SlimefunPlugin.instance);
|
||||
b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName()));
|
||||
stack.remove();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
new SlimefunItem(Categories.MAGIC, SlimefunItems.ANCIENT_ALTAR, "ANCIENT_ALTAR", RecipeType.MAGIC_WORKBENCH,
|
||||
new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)})
|
||||
.register(true);
|
||||
@ -2013,17 +2003,7 @@ public final class SlimefunSetup {
|
||||
|
||||
new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY, "ELECTRIC_INGOT_FACTORY", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, new ItemStack(Material.FLINT_AND_STEEL), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cElectric Ingot Factory";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 4;
|
||||
@ -2039,16 +2019,6 @@ public final class SlimefunSetup {
|
||||
new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, "ELECTRIC_INGOT_FACTORY_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.BRASS_INGOT}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cElectric Ingot Factory";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 7;
|
||||
@ -2064,16 +2034,6 @@ public final class SlimefunSetup {
|
||||
new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_3, "ELECTRIC_INGOT_FACTORY_3", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.BRASS_INGOT}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cElectric Ingot Factory";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 20;
|
||||
@ -2131,19 +2091,9 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerChargeableBlock(true, 1024);
|
||||
|
||||
new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ElectricOreGrinder(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 ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.STONE_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&bElectric Ore Grinder";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 6;
|
||||
@ -2154,26 +2104,11 @@ public final class SlimefunSetup {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMachineIdentifier() {
|
||||
return "ELECTRIC_ORE_GRINDER";
|
||||
}
|
||||
|
||||
}.registerChargeableBlock(true, 128);
|
||||
|
||||
new AContainer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ElectricOreGrinder(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 ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.DIAMOND_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&bElectric Ore Grinder";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 15;
|
||||
@ -2184,21 +2119,11 @@ public final class SlimefunSetup {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMachineIdentifier() {
|
||||
return "ELECTRIC_ORE_GRINDER";
|
||||
}
|
||||
|
||||
}.registerChargeableBlock(true, 512);
|
||||
|
||||
new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER, "HEATED_PRESSURE_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.GLASS), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 5;
|
||||
@ -2214,11 +2139,6 @@ public final class SlimefunSetup {
|
||||
new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER_2, "HEATED_PRESSURE_CHAMBER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_ALLOY_INGOT}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 22;
|
||||
@ -2235,43 +2155,9 @@ public final class SlimefunSetup {
|
||||
new ItemStack[] {null, SlimefunItems.ELECTRIC_ORE_GRINDER, null, SlimefunItems.LEAD_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT})
|
||||
.registerChargeableBlock(true, 512);
|
||||
|
||||
new AGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, SlimefunItems.NICKEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.NICKEL_INGOT, null, SlimefunItems.NICKEL_INGOT, null}) {
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
registerFuel(new MachineFuel(8, new ItemStack(Material.COAL)));
|
||||
registerFuel(new MachineFuel(8, new ItemStack(Material.CHARCOAL)));
|
||||
registerFuel(new MachineFuel(80, new ItemStack(Material.COAL_BLOCK)));
|
||||
registerFuel(new MachineFuel(12, new ItemStack(Material.BLAZE_ROD)));
|
||||
|
||||
// Logs
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.OAK_LOG)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.SPRUCE_LOG)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.BIRCH_LOG)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.JUNGLE_LOG)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.ACACIA_LOG)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.DARK_OAK_LOG)));
|
||||
|
||||
// Wooden Planks
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.OAK_WOOD)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.SPRUCE_WOOD)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.BIRCH_WOOD)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.JUNGLE_WOOD)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.ACACIA_WOOD)));
|
||||
registerFuel(new MachineFuel(1, new ItemStack(Material.DARK_OAK_WOOD)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cCoal Generator";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getEnergyProduction() {
|
||||
return 8;
|
||||
@ -2279,6 +2165,16 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerUnrechargeableBlock(true, 64);
|
||||
|
||||
new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR_2, "COAL_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HEATING_COIL, new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.COAL_GENERATOR, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
||||
|
||||
@Override
|
||||
public int getEnergyProduction() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
}.registerUnrechargeableBlock(true, 256);
|
||||
|
||||
new AGenerator(Categories.ELECTRICITY, SlimefunItems.BIO_REACTOR, "BIO_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.HEATING_COIL, SlimefunItems.COMPOSTER, SlimefunItems.HEATING_COIL, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}) {
|
||||
|
||||
@ -3048,24 +2944,9 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerChargeableBlock(true, 256);
|
||||
|
||||
new AGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR, "LAVA_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR, "LAVA_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.GOLD_16K, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL}) {
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
registerFuel(new MachineFuel(40, new ItemStack(Material.LAVA_BUCKET)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&4Lava Generator";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getEnergyProduction() {
|
||||
return 10;
|
||||
@ -3073,25 +2954,19 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerUnrechargeableBlock(true, 512);
|
||||
|
||||
new AGenerator(Categories.ELECTRICITY, SlimefunItems.COMBUSTION_REACTOR, "COMBUSTION_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR_2, "LAVA_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.LAVA_GENERATOR, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL}) {
|
||||
|
||||
@Override
|
||||
public int getEnergyProduction() {
|
||||
return 20;
|
||||
}
|
||||
|
||||
}.registerUnrechargeableBlock(true, 1024);
|
||||
|
||||
new CombustionGenerator(Categories.ELECTRICITY, SlimefunItems.COMBUSTION_REACTOR, "COMBUSTION_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL}) {
|
||||
|
||||
@Override
|
||||
public void registerDefaultRecipes() {
|
||||
registerFuel(new MachineFuel(30, SlimefunItems.BUCKET_OF_OIL));
|
||||
registerFuel(new MachineFuel(90, SlimefunItems.BUCKET_OF_FUEL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cCombustion Reactor";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getEnergyProduction() {
|
||||
return 12;
|
||||
@ -3155,49 +3030,14 @@ public final class SlimefunSetup {
|
||||
new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM, null, null, null, null, null, null, null})
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.GPS, SlimefunItems.ELEVATOR, "ELEVATOR_PLATE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ElevatorPlate(Categories.GPS, SlimefunItems.ELEVATOR, "ELEVATOR_PLATE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON), SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT},
|
||||
new CustomItem(SlimefunItems.ELEVATOR, 2))
|
||||
.register(true, new ItemInteractionHandler() {
|
||||
|
||||
@Override
|
||||
public boolean onRightClick(final ItemUseEvent e, Player p, ItemStack stack) {
|
||||
if (e.getClickedBlock() == null) return false;
|
||||
String item = BlockStorage.checkID(e.getClickedBlock());
|
||||
if (item == null || !item.equals("ELEVATOR_PLATE")) return false;
|
||||
|
||||
if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(p.getUniqueId().toString())) Elevator.openEditor(p, e.getClickedBlock());
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
SlimefunItem.registerBlockHandler("ELEVATOR_PLATE", new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
BlockStorage.addBlockInfo(b, "floor", "&rFloor #0");
|
||||
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
.register(true);
|
||||
|
||||
new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR, "FOOD_FABRICATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.GOLDEN_HOE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cFood Fabricator";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 7;
|
||||
@ -3212,17 +3052,7 @@ public final class SlimefunSetup {
|
||||
|
||||
new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR_2, "FOOD_FABRICATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.DIAMOND_HOE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cFood Fabricator";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 24;
|
||||
@ -3277,17 +3107,7 @@ public final class SlimefunSetup {
|
||||
|
||||
new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER, "FOOD_COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.GOLDEN_HOE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cFood Composter";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 8;
|
||||
@ -3303,16 +3123,6 @@ public final class SlimefunSetup {
|
||||
new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER_2, "FOOD_COMPOSTER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.DIAMOND_HOE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cFood Composter";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 26;
|
||||
@ -3354,8 +3164,7 @@ public final class SlimefunSetup {
|
||||
.register(true);
|
||||
|
||||
new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR, "CROP_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET})
|
||||
{
|
||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) {
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
@ -3375,8 +3184,7 @@ public final class SlimefunSetup {
|
||||
}.registerChargeableBlock(true, 1024);
|
||||
|
||||
new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR_2, "CROP_GROWTH_ACCELERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET})
|
||||
{
|
||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) {
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
@ -3397,17 +3205,7 @@ public final class SlimefunSetup {
|
||||
|
||||
new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER, "FREEZER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PACKED_ICE), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COOLING_UNIT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.COOLING_UNIT}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.GOLDEN_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&bFreezer";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 9;
|
||||
@ -3423,16 +3221,6 @@ public final class SlimefunSetup {
|
||||
new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER_2, "FREEZER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.FREEZER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.COOLING_UNIT}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.DIAMOND_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&bFreezer";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 15;
|
||||
@ -3559,49 +3347,9 @@ public final class SlimefunSetup {
|
||||
new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS, SlimefunItems.SILVER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS}, new CustomItem(SlimefunItems.CARGO_MOTOR, 4))
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new CargoManagerBlock(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT})
|
||||
.register(true, new BlockTicker() {
|
||||
|
||||
@Override
|
||||
public void tick(Block b, SlimefunItem item, Config data) {
|
||||
CargoNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}, new ItemInteractionHandler() {
|
||||
|
||||
@Override
|
||||
public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) {
|
||||
if (e.getClickedBlock() == null) return false;
|
||||
String item = BlockStorage.checkID(e.getClickedBlock());
|
||||
if (item == null || !item.equals("CARGO_MANAGER")) return false;
|
||||
e.setCancelled(true);
|
||||
|
||||
if (BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "visualizer") == null) {
|
||||
BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", "disabled");
|
||||
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&4\u2718"));
|
||||
}
|
||||
else {
|
||||
BlockStorage.addBlockInfo(e.getClickedBlock(), "visualizer", null);
|
||||
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cCargo Net Visualizer: " + "&2\u2714"));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
SlimefunItem.registerBlockHandler("CARGO_MANAGER", new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
CargoHologram.remove(b);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_NODE, "CARGO_NODE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT}, new CustomItem(SlimefunItems.CARGO_NODE, 4))
|
||||
@ -3661,16 +3409,6 @@ public final class SlimefunSetup {
|
||||
new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS, "CARBON_PRESS", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.CARBON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBON, SlimefunItems.CARBON, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.CARBONADO, SlimefunItems.HEATING_COIL}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.DIAMOND_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cCarbon Press";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 10;
|
||||
@ -3686,16 +3424,6 @@ public final class SlimefunSetup {
|
||||
new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_2, "CARBON_PRESS_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.CARBON, SlimefunItems.CARBON_PRESS, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.DIAMOND_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cCarbon Press";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 25;
|
||||
@ -3711,16 +3439,6 @@ public final class SlimefunSetup {
|
||||
new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_3, "CARBON_PRESS_3", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.CARBON_PRESS_2, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) {
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.DIAMOND_PICKAXE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&cCarbon Press";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyConsumption() {
|
||||
return 90;
|
||||
|
@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
@ -57,7 +58,8 @@ public final class SlimefunGuide {
|
||||
private SlimefunGuide() {}
|
||||
|
||||
private static final int category_size = 36;
|
||||
|
||||
private static final int[] slots = new int[] {0, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35};
|
||||
|
||||
@Deprecated
|
||||
public static ItemStack getItem() {
|
||||
return getItem(SlimefunGuideLayout.CHEST);
|
||||
@ -86,8 +88,6 @@ public final class SlimefunGuide {
|
||||
return new CustomItem(new ItemStack(Material.ENCHANTED_BOOK), "&eSlimefun Guide &7(Right Click)", (book ? "": "&2"), "&rThis is your basic Guide for Slimefun", "&rYou can see all Items added by this Plugin", "&ror its Addons including their Recipes", "&ra bit of information and more");
|
||||
}
|
||||
|
||||
private static final int[] slots = new int[] {0, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35};
|
||||
|
||||
public static void openSettings(Player p, final ItemStack guide) {
|
||||
final ChestMenu menu = new ChestMenu("Settings / Info");
|
||||
|
||||
@ -184,16 +184,12 @@ public final class SlimefunGuide {
|
||||
final ChestMenu menu = new ChestMenu("Credits");
|
||||
|
||||
menu.setEmptySlotsClickable(false);
|
||||
menu.addMenuOpeningHandler(
|
||||
pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HARP, 0.7F, 0.7F)
|
||||
);
|
||||
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HARP, 0.7F, 0.7F));
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
if (i != 4) {
|
||||
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);
|
||||
}
|
||||
else {
|
||||
menu.addItem(4, new CustomItem(new ItemStack(Material.EMERALD), "&7\u21E6 Back to Settings"));
|
||||
@ -205,11 +201,7 @@ public final class SlimefunGuide {
|
||||
}
|
||||
|
||||
int index = 9;
|
||||
double total = 0;
|
||||
|
||||
for (Contributor contributor : SlimefunPlugin.getUtilities().contributors) {
|
||||
total += contributor.getCommits();
|
||||
}
|
||||
double total = 1.0 * SlimefunPlugin.getUtilities().contributors.stream().mapToInt(Contributor::getCommits).sum();
|
||||
|
||||
for (final Contributor contributor: SlimefunPlugin.getUtilities().contributors) {
|
||||
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);
|
||||
@ -259,7 +251,10 @@ public final class SlimefunGuide {
|
||||
public static void openGuide(Player p, boolean book) {
|
||||
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);
|
||||
|
||||
if (!getHistory().containsKey(p.getUniqueId())) {
|
||||
openMainMenu(p, true, book, 1);
|
||||
}
|
||||
else {
|
||||
Object last = getLastEntry(p, false);
|
||||
if (last instanceof Category) openCategory(p, (Category) last, true, 1, book);
|
||||
@ -270,8 +265,9 @@ public final class SlimefunGuide {
|
||||
}
|
||||
|
||||
public static void openMainMenu(final Player p, final boolean survival, final boolean book, final int selected_page) {
|
||||
if (survival)
|
||||
if (survival) {
|
||||
clearHistory(p.getUniqueId());
|
||||
}
|
||||
|
||||
if (book) {
|
||||
List<TellRawMessage> pages = new ArrayList<>();
|
||||
@ -293,7 +289,7 @@ public final class SlimefunGuide {
|
||||
}
|
||||
|
||||
if (locked) {
|
||||
// Dont display that Category...
|
||||
// Don't display that Category...
|
||||
}
|
||||
else {
|
||||
if (tier < category.getTier()) {
|
||||
@ -400,11 +396,9 @@ public final class SlimefunGuide {
|
||||
final ChestMenu menu = new ChestMenu("Slimefun Guide");
|
||||
|
||||
menu.setEmptySlotsClickable(false);
|
||||
menu.addMenuOpeningHandler(
|
||||
pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F)
|
||||
);
|
||||
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F));
|
||||
|
||||
List<Category> categories = SlimefunPlugin.getUtilities().currentlyEnabledCategories;
|
||||
List<Category> categories = SlimefunPlugin.getUtilities().enabledCategories;
|
||||
List<GuideHandler> handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList());
|
||||
|
||||
int index = 9;
|
||||
@ -412,16 +406,12 @@ public final class SlimefunGuide {
|
||||
|
||||
for (int i = 0; i < 9; 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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
int target = (category_size * (selected_page - 1)) - 1;
|
||||
@ -435,12 +425,13 @@ public final class SlimefunGuide {
|
||||
target++;
|
||||
|
||||
if (target >= categories.size()) {
|
||||
if (!survival) break;
|
||||
if (!survival) {
|
||||
break;
|
||||
}
|
||||
index = handlers.get(target - categories.size()).next(p, index, menu);
|
||||
}
|
||||
else {
|
||||
final Category category = categories.get(target);
|
||||
|
||||
boolean locked = true;
|
||||
|
||||
for (SlimefunItem item: category.getItems()) {
|
||||
@ -487,13 +478,13 @@ public final class SlimefunGuide {
|
||||
parents.add(ChatColor.translateAlternateColorCodes('&', "&rYou need to unlock all Items"));
|
||||
parents.add(ChatColor.translateAlternateColorCodes('&', "&rfrom the following Categories first:"));
|
||||
parents.add("");
|
||||
|
||||
for (Category parent : ((LockedCategory) category).getParents()) {
|
||||
parents.add(parent.getItem().getItemMeta().getDisplayName());
|
||||
}
|
||||
|
||||
menu.addItem(index, new CustomItem(Material.BARRIER, "&4LOCKED &7- &r" + category.getItem().getItemMeta().getDisplayName(), parents.toArray(new String[parents.size()])));
|
||||
menu.addMenuClickHandler(index,
|
||||
(pl, slot, item, action) -> false
|
||||
);
|
||||
menu.addMenuClickHandler(index, (pl, slot, item, action) -> false);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
@ -611,19 +602,23 @@ public final class SlimefunGuide {
|
||||
for (int i = 0; i < texts.size(); i = i + 10) {
|
||||
TellRawMessage page = new TellRawMessage();
|
||||
page.addText(ChatColor.translateAlternateColorCodes('&', "&b&l- Slimefun Guide -\n\n"));
|
||||
|
||||
for (int j = i; j < texts.size() && j < i + 10; j++) {
|
||||
page.addText(texts.get(j) + "\n");
|
||||
if (tooltips.get(j) != null) page.addHoverEvent(HoverAction.SHOW_TEXT, tooltips.get(j));
|
||||
if (actions.get(j) != null) page.addClickEvent(actions.get(j));
|
||||
}
|
||||
|
||||
page.addText("\n");
|
||||
page.addText(ChatColor.translateAlternateColorCodes('&', "&6\u21E6 &lBack"));
|
||||
page.addHoverEvent(HoverAction.SHOW_TEXT, ChatColor.translateAlternateColorCodes('&', "&eClick to go back to the Category Overview"));
|
||||
page.addClickEvent(new PlayerRunnable(2) {
|
||||
|
||||
@Override
|
||||
public void run(final Player p) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openMainMenu(p, survival, true, 1), 1L);
|
||||
}
|
||||
|
||||
});
|
||||
pages.add(page);
|
||||
}
|
||||
@ -680,10 +675,12 @@ public final class SlimefunGuide {
|
||||
int target = categoryIndex + i;
|
||||
if (target >= category.getItems().size()) break;
|
||||
final SlimefunItem sfitem = category.getItems().get(target);
|
||||
|
||||
if (Slimefun.isEnabled(p, sfitem, false)) {
|
||||
if (survival && !Slimefun.hasUnlocked(p, sfitem.getItem(), false) && sfitem.getResearch() != null) {
|
||||
if (Slimefun.hasPermission(p, sfitem, false)) {
|
||||
final Research research = sfitem.getResearch();
|
||||
|
||||
menu.addItem(index, new CustomItem(Material.BARRIER, "&r" + StringUtils.formatItemName(sfitem.getItem(), false), "&4&lLOCKED", "", "&a> Click to unlock", "", "&7Cost: &b" + research.getCost() + " Level"));
|
||||
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
|
||||
if (!Research.isResearching(pl)) {
|
||||
@ -716,7 +713,8 @@ public final class SlimefunGuide {
|
||||
index++;
|
||||
}
|
||||
else {
|
||||
menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), "", "&rYou do not have Permission", "&rto access this Item"));
|
||||
List<String> tooltip = Messages.local.getTranslation("tooltips.item-permission");
|
||||
menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), tooltip.toArray(new String[tooltip.size()])));
|
||||
menu.addMenuClickHandler(index, (pl, slot, item, action) -> false);
|
||||
index++;
|
||||
}
|
||||
@ -742,25 +740,28 @@ public final class SlimefunGuide {
|
||||
}
|
||||
|
||||
public static void addToHistory(Player p, Object obj) {
|
||||
List<Object> list = new ArrayList<>();
|
||||
if (getHistory().containsKey(p.getUniqueId())) list = getHistory().get(p.getUniqueId());
|
||||
LinkedList<Object> list = getHistory().get(p.getUniqueId());
|
||||
|
||||
if (list == null) {
|
||||
list = new LinkedList<>();
|
||||
getHistory().put(p.getUniqueId(), list);
|
||||
}
|
||||
|
||||
list.add(obj);
|
||||
getHistory().put(p.getUniqueId(), list);
|
||||
}
|
||||
|
||||
private static Object getLastEntry(Player p, boolean remove) {
|
||||
List<Object> list = new ArrayList<>();
|
||||
if (getHistory().containsKey(p.getUniqueId())) list = getHistory().get(p.getUniqueId());
|
||||
LinkedList<Object> history = getHistory().get(p.getUniqueId());
|
||||
|
||||
if (remove && !list.isEmpty()) {
|
||||
Object obj = list.get(list.size() - 1);
|
||||
list.remove(obj);
|
||||
if (remove && history != null && !history.isEmpty()) {
|
||||
history.removeLast();
|
||||
}
|
||||
|
||||
if (list.isEmpty()) getHistory().remove(p.getUniqueId());
|
||||
else getHistory().put(p.getUniqueId(), list);
|
||||
if (history != null && history.isEmpty()) {
|
||||
getHistory().remove(p.getUniqueId());
|
||||
}
|
||||
|
||||
return list.isEmpty() ? null: list.get(list.size() - 1);
|
||||
return history == null || history.isEmpty() ? null: history.getLast();
|
||||
}
|
||||
|
||||
public static void displayItem(Player p, final ItemStack item, boolean addToHistory, final boolean book, final int page) {
|
||||
@ -831,7 +832,9 @@ public final class SlimefunGuide {
|
||||
|
||||
if (addToHistory) addToHistory(p, sfItem != null ? sfItem: item);
|
||||
|
||||
if (getHistory().containsKey(p.getUniqueId()) && getHistory().get(p.getUniqueId()).size() > 1) {
|
||||
LinkedList<Object> history = getHistory().get(p.getUniqueId());
|
||||
|
||||
if (history != null && history.size() > 1) {
|
||||
menu.addItem(0, new CustomItem(new ItemStack(Material.ENCHANTED_BOOK), "&7\u21E6 Back", "", "&rLeft Click: &7Go back to previous Page", "&rShift + left Click: &7Go back to Main Menu"));
|
||||
menu.addMenuClickHandler(0, (pl, slot, itemstack, action) -> {
|
||||
if (action.isShiftClicked()) openMainMenu(p, true, book, 1);
|
||||
@ -1018,7 +1021,7 @@ public final class SlimefunGuide {
|
||||
menu.open(p);
|
||||
}
|
||||
|
||||
private static Map<UUID, List<Object>> getHistory() {
|
||||
private static Map<UUID, LinkedList<Object>> getHistory() {
|
||||
return SlimefunPlugin.getUtilities().guideHistory;
|
||||
}
|
||||
|
||||
|
@ -359,8 +359,6 @@ public final class SlimefunPlugin extends JavaPlugin {
|
||||
|
||||
// Prevent Memory Leaks
|
||||
Messages.local = null;
|
||||
SlimefunItem.all = null;
|
||||
SlimefunItem.items = null;
|
||||
AContainer.processing = null;
|
||||
AContainer.progress = null;
|
||||
OreWasher.items = null;
|
||||
|
@ -212,5 +212,10 @@ public final class PlayerProfile {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PlayerProfile {" + uuid + "}";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,16 +1,17 @@
|
||||
package me.mrCookieSlime.Slimefun.api;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public final class SlimefunRecipes {
|
||||
|
||||
private SlimefunRecipes() {}
|
||||
|
||||
public static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) {
|
||||
for (SlimefunItem item: SlimefunItem.all) {
|
||||
for (SlimefunItem item: SlimefunPlugin.getUtilities().allItems) {
|
||||
if (item instanceof AContainer && ((AContainer) item).getMachineIdentifier().equals(machine)) {
|
||||
((AContainer) item).registerRecipe(seconds, input, output);
|
||||
}
|
||||
|
@ -41,11 +41,11 @@ import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout;
|
||||
|
||||
public class SlimefunCommand implements CommandExecutor, Listener {
|
||||
|
||||
private SlimefunPlugin plugin;
|
||||
private final SlimefunPlugin plugin;
|
||||
|
||||
private List<String> arguments = new ArrayList<>();
|
||||
private List<String> descriptions = new ArrayList<>();
|
||||
private List<String> tabs = new ArrayList<>();
|
||||
private final List<String> arguments = new ArrayList<>();
|
||||
private final List<String> descriptions = new ArrayList<>();
|
||||
private final List<String> tabs = new ArrayList<>();
|
||||
|
||||
public SlimefunCommand(SlimefunPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
|
@ -12,7 +12,7 @@ import org.bukkit.command.TabCompleter;
|
||||
|
||||
public class SlimefunTabCompleter implements TabCompleter {
|
||||
|
||||
private SlimefunCommand command;
|
||||
private final SlimefunCommand command;
|
||||
|
||||
public SlimefunTabCompleter(SlimefunCommand command) {
|
||||
this.command = command;
|
||||
|
@ -30,6 +30,10 @@ public final class HologramProjectorHologram {
|
||||
if (n instanceof ArmorStand && n.getCustomName() != null && n.getCustomName().equals(nametag) && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n;
|
||||
}
|
||||
|
||||
if (!createIfNoneExists) {
|
||||
return null;
|
||||
}
|
||||
|
||||
ArmorStand hologram = ArmorStandFactory.createHidden(l);
|
||||
hologram.setCustomName(nametag);
|
||||
return hologram;
|
||||
|
@ -27,31 +27,29 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
|
||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||
|
||||
public class BackpackListener implements Listener {
|
||||
|
||||
private Utilities utilities;
|
||||
|
||||
public BackpackListener(SlimefunPlugin plugin) {
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
utilities = SlimefunPlugin.getUtilities();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClose(InventoryCloseEvent e) {
|
||||
if (utilities.enchanting.containsKey(e.getPlayer().getUniqueId())) utilities.enchanting.remove(e.getPlayer().getUniqueId());
|
||||
if (SlimefunPlugin.getUtilities().enchanting.containsKey(e.getPlayer().getUniqueId())) {
|
||||
SlimefunPlugin.getUtilities().enchanting.remove(e.getPlayer().getUniqueId());
|
||||
}
|
||||
|
||||
if (utilities.backpack.containsKey(e.getPlayer().getUniqueId())) {
|
||||
if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getPlayer().getUniqueId())) {
|
||||
((Player) e.getPlayer()).playSound(e.getPlayer().getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F);
|
||||
PlayerProfile.getBackpack(utilities.backpack.get(e.getPlayer().getUniqueId())).markDirty();
|
||||
utilities.backpack.remove(e.getPlayer().getUniqueId());
|
||||
PlayerProfile.getBackpack(SlimefunPlugin.getUtilities().backpack.get(e.getPlayer().getUniqueId())).markDirty();
|
||||
SlimefunPlugin.getUtilities().backpack.remove(e.getPlayer().getUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onItemDrop(PlayerDropItemEvent e) {
|
||||
if (utilities.backpack.containsKey(e.getPlayer().getUniqueId())){
|
||||
if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getPlayer().getUniqueId())){
|
||||
ItemStack item = e.getItemDrop().getItemStack();
|
||||
SlimefunItem sfItem = SlimefunItem.getByItem(item);
|
||||
if (sfItem instanceof SlimefunBackpack) e.setCancelled(true);
|
||||
@ -60,8 +58,8 @@ public class BackpackListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onClick(InventoryClickEvent e) {
|
||||
if (utilities.backpack.containsKey(e.getWhoClicked().getUniqueId())) {
|
||||
ItemStack item = utilities.backpack.get(e.getWhoClicked().getUniqueId());
|
||||
if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getWhoClicked().getUniqueId())) {
|
||||
ItemStack item = SlimefunPlugin.getUtilities().backpack.get(e.getWhoClicked().getUniqueId());
|
||||
if (e.getClick() == ClickType.NUMBER_KEY) {
|
||||
ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton());
|
||||
SlimefunItem sfItem = SlimefunItem.getByItem(hotbarItem);
|
||||
@ -134,10 +132,10 @@ public class BackpackListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
if(!utilities.backpack.containsValue(item)) {
|
||||
if(!SlimefunPlugin.getUtilities().backpack.containsValue(item)) {
|
||||
PlayerProfile.getBackpack(item).open(p);
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F);
|
||||
utilities.backpack.put(p.getUniqueId(), item);
|
||||
SlimefunPlugin.getUtilities().backpack.put(p.getUniqueId(), item);
|
||||
}
|
||||
else Messages.local.sendTranslation(p, "backpack.already-open", true);
|
||||
}
|
||||
|
@ -82,8 +82,11 @@ public class BlockListener implements Listener {
|
||||
if (mb.getTriggerBlock() == b.getType()) {
|
||||
Material[] blocks = mb.getBuild();
|
||||
|
||||
if (mb.getTriggerBlock() == blocks[1]) {
|
||||
if (
|
||||
// Please.
|
||||
// Someone please find a better way to do this...
|
||||
|
||||
if ((
|
||||
mb.getTriggerBlock() == blocks[1] &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[0]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[2]) &&
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN), blocks[4]) &&
|
||||
@ -92,42 +95,49 @@ public class BlockListener implements Listener {
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN), blocks[7]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN), blocks[6]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN), blocks[8])
|
||||
) {
|
||||
if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[0]));
|
||||
else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[5]));
|
||||
else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -2, 0), blocks[8]));
|
||||
else multiblocks.add(mb);
|
||||
}
|
||||
}
|
||||
else if (mb.getTriggerBlock() == blocks[4] &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[3]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[5]) &&
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN), blocks[7]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[6]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[8]) &&
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[1]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[0]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[2])
|
||||
) {
|
||||
if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[0]));
|
||||
else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[5]));
|
||||
else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[8]));
|
||||
else multiblocks.add(mb);
|
||||
}
|
||||
else if (mb.getTriggerBlock() == blocks[7] &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[6]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[8]) &&
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[1]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[0]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[2]) &&
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[4]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[3]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[5])
|
||||
) {
|
||||
if (blocks[0] != null && blocks[0] == blocks[2] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 2, 0), blocks[0]));
|
||||
else if (blocks[3] != null && blocks[3] == blocks[5] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[5]));
|
||||
else if (blocks[6] != null && blocks[6] == blocks[8] && !BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 0, 0), blocks[8]));
|
||||
else multiblocks.add(mb);
|
||||
&&
|
||||
blocks[0] != null && blocks[0] == blocks[2]
|
||||
&& BlockAdjacents.hasMaterialOnBothSides(b, blocks[0]) &&
|
||||
blocks[3] != null && blocks[3] == blocks[5]
|
||||
&& BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[5]) &&
|
||||
blocks[6] != null && blocks[6] == blocks[8]
|
||||
&& BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -2, 0), blocks[8])
|
||||
) || (
|
||||
mb.getTriggerBlock() == blocks[4] &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[3]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[5]) &&
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.DOWN), blocks[7]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[6]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.DOWN), blocks[8]) &&
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[1]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[0]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[2])
|
||||
&&
|
||||
blocks[0] != null && blocks[0] == blocks[2]
|
||||
&& BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[0]) &&
|
||||
blocks[3] != null && blocks[3] == blocks[5]
|
||||
&& BlockAdjacents.hasMaterialOnBothSides(b, blocks[5]) &&
|
||||
blocks[6] != null && blocks[6] == blocks[8]
|
||||
&& BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, -1, 0), blocks[8])
|
||||
) || (
|
||||
mb.getTriggerBlock() == blocks[7] &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[6]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b, blocks[8]) &&
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[1]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[0]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP).getRelative(BlockFace.UP), blocks[2]) &&
|
||||
BlockAdjacents.isMaterial(b.getRelative(BlockFace.UP), blocks[4]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[3]) &&
|
||||
BlockAdjacents.hasMaterialOnSide(b.getRelative(BlockFace.UP), blocks[5])
|
||||
&&
|
||||
blocks[0] != null && blocks[0] == blocks[2]
|
||||
&& BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 2, 0), blocks[0]) &&
|
||||
blocks[3] != null && blocks[3] == blocks[5]
|
||||
&& BlockAdjacents.hasMaterialOnBothSides(b.getRelative(0, 1, 0), blocks[5]) &&
|
||||
blocks[6] != null && blocks[6] == blocks[8]
|
||||
&& BlockAdjacents.hasMaterialOnBothSides(b, blocks[8])
|
||||
)) {
|
||||
multiblocks.add(mb);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,49 +18,48 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||
|
||||
public class BowListener implements Listener {
|
||||
|
||||
private Utilities utilities;
|
||||
|
||||
public BowListener(SlimefunPlugin plugin) {
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
utilities = SlimefunPlugin.getUtilities();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onBowUse(EntityShootBowEvent e) {
|
||||
if (!(e.getEntity() instanceof Player) || !(e.getProjectile() instanceof Arrow)) return;
|
||||
if (SlimefunItem.getByItem(e.getBow()) != null) utilities.arrows.put(e.getProjectile().getUniqueId(), e.getBow());
|
||||
if (e.getEntity() instanceof Player && e.getProjectile() instanceof Arrow && SlimefunItem.getByItem(e.getBow()) != null) {
|
||||
SlimefunPlugin.getUtilities().arrows.put(e.getProjectile().getUniqueId(), e.getBow());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onArrowHit(final ProjectileHitEvent e) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
if (!e.getEntity().isValid()) return;
|
||||
utilities.arrows.remove(e.getEntity().getUniqueId());
|
||||
SlimefunPlugin.getUtilities().arrows.remove(e.getEntity().getUniqueId());
|
||||
if (e.getEntity() instanceof Arrow) handleGrapplingHook((Arrow) e.getEntity());
|
||||
}, 4L);
|
||||
}
|
||||
|
||||
private void handleGrapplingHook(Arrow arrow) {
|
||||
if (arrow != null && arrow.getShooter() instanceof Player && utilities.jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) {
|
||||
if (arrow != null && arrow.getShooter() instanceof Player && SlimefunPlugin.getUtilities().jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) {
|
||||
final Player p = (Player) arrow.getShooter();
|
||||
if (p.getGameMode() != GameMode.CREATIVE && utilities.jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK"));
|
||||
if (p.getGameMode() != GameMode.CREATIVE && SlimefunPlugin.getUtilities().jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK"));
|
||||
if (p.getLocation().distance(arrow.getLocation()) < 3.0D) {
|
||||
if (arrow.getLocation().getY() > p.getLocation().getY()) {
|
||||
p.setVelocity(new Vector(0.0D, 0.25D, 0.0D));
|
||||
}
|
||||
else p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector()));
|
||||
else {
|
||||
p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector()));
|
||||
}
|
||||
|
||||
for (Entity n: utilities.remove.get(p.getUniqueId())) {
|
||||
for (Entity n: SlimefunPlugin.getUtilities().remove.get(p.getUniqueId())) {
|
||||
if (n.isValid()) n.remove();
|
||||
}
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
utilities.jumpState.remove(p.getUniqueId());
|
||||
utilities.remove.remove(p.getUniqueId());
|
||||
SlimefunPlugin.getUtilities().jumpState.remove(p.getUniqueId());
|
||||
SlimefunPlugin.getUtilities().remove.remove(p.getUniqueId());
|
||||
}, 20L);
|
||||
}
|
||||
else {
|
||||
@ -83,13 +82,13 @@ public class BowListener implements Listener {
|
||||
|
||||
p.setVelocity(v);
|
||||
|
||||
for (Entity n: utilities.remove.get(p.getUniqueId())) {
|
||||
for (Entity n: SlimefunPlugin.getUtilities().remove.get(p.getUniqueId())) {
|
||||
if (n.isValid()) n.remove();
|
||||
}
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||
utilities.jumpState.remove(p.getUniqueId());
|
||||
utilities.remove.remove(p.getUniqueId());
|
||||
SlimefunPlugin.getUtilities().jumpState.remove(p.getUniqueId());
|
||||
SlimefunPlugin.getUtilities().remove.remove(p.getUniqueId());
|
||||
}, 20L);
|
||||
}
|
||||
}
|
||||
@ -98,11 +97,12 @@ public class BowListener implements Listener {
|
||||
@EventHandler
|
||||
public void onArrowSuccessfulHit(EntityDamageByEntityEvent e) {
|
||||
if (e.getDamager() instanceof Arrow) {
|
||||
if (utilities.arrows.containsKey(e.getDamager().getUniqueId()) && e.getEntity() instanceof LivingEntity) {
|
||||
if (SlimefunPlugin.getUtilities().arrows.containsKey(e.getDamager().getUniqueId()) && e.getEntity() instanceof LivingEntity) {
|
||||
for (ItemHandler handler: SlimefunItem.getHandlers("BowShootHandler")) {
|
||||
if (((BowShootHandler) handler).onHit(e, (LivingEntity) e.getEntity())) break;
|
||||
}
|
||||
utilities.arrows.remove(e.getDamager().getUniqueId());
|
||||
|
||||
SlimefunPlugin.getUtilities().arrows.remove(e.getDamager().getUniqueId());
|
||||
}
|
||||
|
||||
handleGrapplingHook((Arrow) e.getDamager());
|
||||
|
@ -12,7 +12,7 @@ import org.bukkit.inventory.meta.PotionMeta;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
|
||||
@ -28,26 +28,30 @@ public class CoolerListener implements Listener {
|
||||
if (e.getFoodLevel() < ((Player) e.getEntity()).getFoodLevel()) {
|
||||
Player p = (Player) e.getEntity();
|
||||
for (ItemStack item: p.getInventory().getContents()) {
|
||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("COOLER"), false)) {
|
||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.COOLER, false)) {
|
||||
BackpackInventory backpack = PlayerProfile.getBackpack(item);
|
||||
if (backpack != null) {
|
||||
Inventory inv = backpack.getInventory();
|
||||
ItemStack drink = null;
|
||||
int slot = -1;
|
||||
|
||||
for (ItemStack i: inv.getContents()) {
|
||||
if (i != null && i.getType() == Material.POTION && i.hasItemMeta()) {
|
||||
drink = i;
|
||||
for (int i = 0; i < inv.getSize(); i++) {
|
||||
ItemStack stack = inv.getItem(i);
|
||||
if (stack != null && stack.getType() == Material.POTION && stack.hasItemMeta() && stack.getItemMeta().hasDisplayName()) {
|
||||
slot = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (drink != null) {
|
||||
PotionMeta im = (PotionMeta) drink.getItemMeta();
|
||||
|
||||
if (slot >= 0) {
|
||||
PotionMeta im = (PotionMeta) inv.getItem(slot).getItemMeta();
|
||||
|
||||
for (PotionEffect effect: im.getCustomEffects()) {
|
||||
p.addPotionEffect(effect);
|
||||
}
|
||||
|
||||
p.setSaturation(6F);
|
||||
p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_DRINK, 1F, 1F);
|
||||
inv.removeItem(drink);
|
||||
inv.setItem(slot, null);
|
||||
backpack.markDirty();
|
||||
break;
|
||||
}
|
||||
|
@ -22,16 +22,13 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.Soul;
|
||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||
|
||||
public class DamageListener implements Listener {
|
||||
|
||||
private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)");
|
||||
private Utilities utilities;
|
||||
|
||||
public DamageListener(SlimefunPlugin plugin) {
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
utilities = SlimefunPlugin.getUtilities();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -80,9 +77,9 @@ public class DamageListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onArrowHit(EntityDamageEvent e) {
|
||||
if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL && utilities.damage.contains(e.getEntity().getUniqueId())) {
|
||||
if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL && SlimefunPlugin.getUtilities().damage.contains(e.getEntity().getUniqueId())) {
|
||||
e.setCancelled(true);
|
||||
utilities.damage.remove(e.getEntity().getUniqueId());
|
||||
SlimefunPlugin.getUtilities().damage.remove(e.getEntity().getUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
|
17
src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java
Normal file
17
src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java
Normal file
@ -0,0 +1,17 @@
|
||||
package me.mrCookieSlime.Slimefun.utils;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
|
||||
public class CategorySorter implements Comparator<Category> {
|
||||
|
||||
/**
|
||||
* @since 4.0
|
||||
*/
|
||||
@Override
|
||||
public int compare(Category c1, Category c2) {
|
||||
return Integer.compare(c1.getTier(), c2.getTier());
|
||||
}
|
||||
|
||||
}
|
@ -17,6 +17,7 @@ import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.GEO.OreGenResource;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
@ -46,11 +47,23 @@ import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector;
|
||||
public final class Utilities {
|
||||
|
||||
public int vanillaItems = 0;
|
||||
|
||||
|
||||
public final List<SlimefunItem> allItems = new ArrayList<>();
|
||||
public final List<SlimefunItem> enabledItems = new ArrayList<>();
|
||||
public final Map<String, SlimefunItem> itemIDs = new HashMap<>();
|
||||
|
||||
public final List<MultiBlock> allMultiblocks = new LinkedList<>();
|
||||
public final List<Research> allResearches = new LinkedList<>();
|
||||
|
||||
/**
|
||||
* List of the registered Categories.
|
||||
* @since 4.0
|
||||
* @see Categories
|
||||
*/
|
||||
public final List<Category> allCategories = new ArrayList<>();
|
||||
public final List<Category> enabledCategories = new ArrayList<>();
|
||||
public final CategorySorter categorySorter = new CategorySorter();
|
||||
|
||||
public final Set<ItemStack> radioactiveItems = new HashSet<>();
|
||||
public final Map<String, Set<ItemHandler>> itemHandlers = new HashMap<>();
|
||||
public final Map<String, SlimefunBlockHandler> blockHandlers = new HashMap<>();
|
||||
@ -69,8 +82,6 @@ public final class Utilities {
|
||||
|
||||
public final Map<String, BlockMenuPreset> blockMenuPresets = new HashMap<>();
|
||||
|
||||
public final List<Category> currentlyEnabledCategories = new ArrayList<>();
|
||||
|
||||
public final Map<String, ItemStack> automatedCraftingChamberRecipes = new HashMap<>();
|
||||
|
||||
public final Map<String, BlockStorage> worlds = new HashMap<>();
|
||||
@ -112,7 +123,7 @@ public final class Utilities {
|
||||
public final Map<String, String> contributorHeads = new HashMap<>();
|
||||
public final List<Contributor> contributors = new ArrayList<>();
|
||||
|
||||
public final Map<UUID, List<Object>> guideHistory = new HashMap<>();
|
||||
public final Map<UUID, LinkedList<Object>> guideHistory = new HashMap<>();
|
||||
|
||||
public final List<CargoTransportEvent> cargoTransportEvents = new ArrayList<>();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user