mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
41caa1b623
2
pom.xml
2
pom.xml
@ -124,7 +124,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.thebusybiscuit</groupId>
|
<groupId>com.github.thebusybiscuit</groupId>
|
||||||
<artifactId>CS-CoreLib2</artifactId>
|
<artifactId>CS-CoreLib2</artifactId>
|
||||||
<version>0.3.10</version>
|
<version>0.4.1</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -5,16 +5,24 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
public interface OreGenResource {
|
public interface OreGenResource {
|
||||||
|
|
||||||
// Returns the default supply of this resource in that biome
|
/**
|
||||||
|
* Returns the default supply of this resource in that biome
|
||||||
|
*/
|
||||||
int getDefaultSupply(Biome biome);
|
int getDefaultSupply(Biome biome);
|
||||||
|
|
||||||
// Name/ID e.g. "Oil"
|
/**
|
||||||
|
* Name/ID e.g. "Oil"
|
||||||
|
*/
|
||||||
String getName();
|
String getName();
|
||||||
|
|
||||||
// For the GEO-Scanner
|
/**
|
||||||
|
* For the GEO-Scanner
|
||||||
|
*/
|
||||||
ItemStack getIcon();
|
ItemStack getIcon();
|
||||||
|
|
||||||
// Measurement Unit e.g. "Buckets"
|
/**
|
||||||
|
* Measurement Unit e.g. "Buckets"
|
||||||
|
*/
|
||||||
String getMeasurementUnit();
|
String getMeasurementUnit();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.GEO.Resources;
|
package me.mrCookieSlime.Slimefun.GEO.resources;
|
||||||
|
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.GEO.Resources;
|
package me.mrCookieSlime.Slimefun.GEO.resources;
|
||||||
|
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
@ -74,7 +74,7 @@ public final class Elevator {
|
|||||||
else {
|
else {
|
||||||
tellraw.addText("&7" + index + ". &r" + floor + "\n");
|
tellraw.addText("&7" + index + ". &r" + floor + "\n");
|
||||||
tellraw.addHoverEvent(HoverAction.SHOW_TEXT, "\n&eClick to teleport to this Floor\n&r" + floor + "\n");
|
tellraw.addHoverEvent(HoverAction.SHOW_TEXT, "\n&eClick to teleport to this Floor\n&r" + floor + "\n");
|
||||||
tellraw.addClickEvent(me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.ClickAction.RUN_COMMAND, "/sf elevator " + block.getX() + " " + block.getY() + " " + block.getZ() + " ");
|
tellraw.addClickEvent(me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.ClickAction.RUN_COMMAND, "/sf elevator " + block.getX() + ' ' + block.getY() + ' ' + block.getZ() + " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
|
@ -160,7 +160,8 @@ public class GPSNetwork {
|
|||||||
|
|
||||||
menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete"));
|
menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete"));
|
||||||
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> {
|
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> {
|
||||||
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(" ", "_");
|
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey()))
|
||||||
|
.toUpperCase().replace(' ', '_');
|
||||||
Config cfg = new Config("data-storage/Slimefun/waypoints/" + pl.getUniqueId().toString() + ".yml");
|
Config cfg = new Config("data-storage/Slimefun/waypoints/" + pl.getUniqueId().toString() + ".yml");
|
||||||
cfg.setValue(id, null);
|
cfg.setValue(id, null);
|
||||||
cfg.save();
|
cfg.save();
|
||||||
@ -210,7 +211,8 @@ public class GPSNetwork {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Config cfg = new Config("data-storage/Slimefun/waypoints/" + p.getUniqueId().toString() + ".yml");
|
Config cfg = new Config("data-storage/Slimefun/waypoints/" + p.getUniqueId().toString() + ".yml");
|
||||||
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', name)).toUpperCase().replace(" ", "_");
|
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', name)).toUpperCase()
|
||||||
|
.replace(' ', '_');
|
||||||
cfg.setValue(id, l);
|
cfg.setValue(id, l);
|
||||||
cfg.setValue(id + ".name", name);
|
cfg.setValue(id + ".name", name);
|
||||||
cfg.save();
|
cfg.save();
|
||||||
@ -234,7 +236,7 @@ public class GPSNetwork {
|
|||||||
for (OreGenResource resource: OreGenSystem.listResources()) {
|
for (OreGenResource resource: OreGenSystem.listResources()) {
|
||||||
int supply = OreGenSystem.getSupplies(resource, chunk, true);
|
int supply = OreGenSystem.getSupplies(resource, chunk, true);
|
||||||
|
|
||||||
menu.addItem(index, new CustomItem(resource.getIcon(), "&7Resource: &e" + resource.getName(), "", "&7Scanned Chunk:", "&8\u21E8 &7X: " + chunk.getX() + " Z: " + chunk.getZ(), "", "&7Result: &e" + supply + " " + resource.getMeasurementUnit()), (pl, slot, item, action) -> false);
|
menu.addItem(index, new CustomItem(resource.getIcon(), "&7Resource: &e" + resource.getName(), "", "&7Scanned Chunk:", "&8\u21E8 &7X: " + chunk.getX() + " Z: " + chunk.getZ(), "", "&7Result: &e" + supply + ' ' + resource.getMeasurementUnit()), (pl, slot, item, action) -> false);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,18 +1,13 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Lists;
|
package me.mrCookieSlime.Slimefun.Lists;
|
||||||
|
|
||||||
import java.util.logging.Level;
|
|
||||||
|
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomArmor;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomArmor;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
|
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory;
|
import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Built-in categories.
|
* Built-in categories.
|
||||||
@ -25,39 +20,31 @@ public final class Categories {
|
|||||||
|
|
||||||
private Categories() {}
|
private Categories() {}
|
||||||
|
|
||||||
private static final String lore = "&a> Click to open";
|
private static final String LORE = "&a> Click to open";
|
||||||
|
|
||||||
public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", lore), 1);
|
public static final Category WEAPONS = new Category(new CustomItem(Material.GOLDEN_SWORD, "&7Weapons", "", LORE), 1);
|
||||||
public static final Category PORTABLE = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDBjYjFlNjdiNTEyYWIyZDRiZjNkN2FjZTBlYWFmNjFjMzJjZDQ2ODFkZGMzOTg3Y2ViMzI2NzA2YTMzZmEifX19"), "&7Items", "", lore), 1);
|
public static final Category PORTABLE = new Category(new CustomItem(SlimefunItems.BACKPACK_MEDIUM, "&7Items", "", LORE), 1);
|
||||||
public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", lore), 2);
|
public static final Category FOOD = new Category(new CustomItem(Material.APPLE, "&7Food", "", LORE), 2);
|
||||||
public static final Category MACHINES_1 = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Basic Machines", "", lore), 1);
|
public static final Category MACHINES_1 = new Category(new CustomItem(Material.SMITHING_TABLE, "&7Basic Machines", "", LORE), 1);
|
||||||
public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19"), "&bEnergy and Electricity", "", lore), 4, MACHINES_1);
|
public static final LockedCategory ELECTRICITY = new LockedCategory(new CustomItem(SlimefunItems.NUCLEAR_REACTOR, "&bEnergy and Electricity", "", LORE), 4, MACHINES_1);
|
||||||
public static final LockedCategory GPS = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS-based Machines", "", lore), 4, MACHINES_1);
|
public static final LockedCategory GPS = new LockedCategory(new CustomItem(SlimefunItems.GPS_TRANSMITTER, "&bGPS-based Machines", "", LORE), 4, MACHINES_1);
|
||||||
public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", lore), 2);
|
public static final Category ARMOR = new Category(new CustomItem(Material.IRON_CHESTPLATE, "&7Armor", "", LORE), 2);
|
||||||
public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(SlimefunItems.RUNE_ENDER, "&7Magical Items", "", lore), 2);
|
public static final Category LUMPS_AND_MAGIC = new Category(new CustomItem(SlimefunItems.RUNE_ENDER, "&7Magical Items", "", LORE), 2);
|
||||||
public static final Category MAGIC = new Category(new CustomItem(SlimefunItems.ENDER_BACKPACK, "&7Magical Gadgets", "", lore), 3);
|
public static final Category MAGIC = new Category(new CustomItem(Material.ELYTRA, "&7Magical Gadgets", "", LORE), 3);
|
||||||
public static final Category MISC = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTRkYTk3ZjA4MGUzOTViODQyYzRjYzgyYTg0MDgyM2Q0ZGJkOGNhNjg4YTIwNjg1M2U1NzgzZTRiZmRjMDEyIn19fQ=="), "&7Miscellaneous", "", lore), 2);
|
public static final Category MISC = new Category(new CustomItem(SlimefunItems.CAN, "&7Miscellaneous", "", LORE), 2);
|
||||||
public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", lore), Color.SILVER), 3);
|
public static final Category TECH = new Category(new CustomArmor(new CustomItem(Material.LEATHER_CHESTPLATE, "&7Technical Gadgets", "", LORE), Color.SILVER), 3);
|
||||||
public static final Category RESOURCES = new Category(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2U4ZjVhZGIxNGQ2YzlmNmI4MTBkMDI3NTQzZjFhOGMxZjQxN2UyZmVkOTkzYzk3YmNkODljNzRmNWUyZTgifX19"), "&7Resources", "", lore), 1);
|
public static final Category RESOURCES = new Category(new CustomItem(SlimefunItems.SYNTHETIC_SAPPHIRE, "&7Resources", "", LORE), 1);
|
||||||
public static final Category CARGO = new LockedCategory(new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&cCargo Management", "", lore), 4, MACHINES_1);
|
public static final Category CARGO = new LockedCategory(new CustomItem(SlimefunItems.CARGO_MANAGER, "&cCargo Management", "", LORE), 4, MACHINES_1);
|
||||||
public static final Category TECH_MISC = new Category(new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components", "", lore), 2);
|
public static final Category TECH_MISC = new Category(new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components", "", LORE), 2);
|
||||||
public static final Category MAGIC_ARMOR = new Category(new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor", "", lore), 2);
|
public static final Category MAGIC_ARMOR = new Category(new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor", "", LORE), 2);
|
||||||
public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", lore), 2);
|
public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", LORE), 2);
|
||||||
public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", lore), 3, TALISMANS_1);
|
public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", LORE), 3, TALISMANS_1);
|
||||||
public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", lore), 1);
|
public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", LORE), 1);
|
||||||
|
|
||||||
|
// Seasonal Categories
|
||||||
public static final SeasonalCategory CHRISTMAS = new SeasonalCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta"));
|
public static final SeasonalCategory CHRISTMAS = new SeasonalCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta"));
|
||||||
public static final SeasonalCategory VALENTINES_DAY = new SeasonalCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love"));
|
public static final SeasonalCategory VALENTINES_DAY = new SeasonalCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love"));
|
||||||
public static final SeasonalCategory EASTER = new SeasonalCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs"));
|
public static final SeasonalCategory EASTER = new SeasonalCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs"));
|
||||||
public static final SeasonalCategory BIRTHDAY = new SeasonalCategory(10, 1, new CustomItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", "", "&a> Click to celebrate with me"));
|
public static final SeasonalCategory BIRTHDAY = new SeasonalCategory(10, 1, new CustomItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", "", "&a> Click to celebrate with me"));
|
||||||
|
|
||||||
private static ItemStack getSkull(String texture) {
|
|
||||||
try {
|
|
||||||
return CustomSkull.getItem(texture);
|
|
||||||
}
|
|
||||||
catch(Exception x) {
|
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while initializing the Categories for Slimefun " + Slimefun.getVersion(), x);
|
|
||||||
|
|
||||||
return new ItemStack(Material.PLAYER_HEAD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Lists;
|
package me.mrCookieSlime.Slimefun.Lists;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
@ -8,8 +10,8 @@ import org.bukkit.ChatColor;
|
|||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.FireworkEffect;
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.FireworkEffect.Type;
|
import org.bukkit.FireworkEffect.Type;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.FireworkEffectMeta;
|
import org.bukkit.inventory.meta.FireworkEffectMeta;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
@ -486,8 +488,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_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 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 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 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");
|
public static final ItemStack HOLOGRAM_PROJECTOR = new CustomItem(Material.QUARTZ_SLAB, "&bHologram Projector", "", "&rProjects an Editable Hologram");
|
||||||
@ -531,6 +538,7 @@ public final class SlimefunItems {
|
|||||||
public static final ItemStack RUNE_ENDER;
|
public static final ItemStack RUNE_ENDER;
|
||||||
public static final ItemStack RUNE_RAINBOW;
|
public static final ItemStack RUNE_RAINBOW;
|
||||||
public static final ItemStack RUNE_LIGHTNING;
|
public static final ItemStack RUNE_LIGHTNING;
|
||||||
|
public static final ItemStack RUNE_SOULBOUND;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
ItemStack itemB = new ItemStack(Material.FIREWORK_STAR);
|
ItemStack itemB = new ItemStack(Material.FIREWORK_STAR);
|
||||||
@ -563,7 +571,7 @@ public final class SlimefunItems {
|
|||||||
|
|
||||||
ItemStack itemE = new ItemStack(Material.FIREWORK_STAR);
|
ItemStack itemE = new ItemStack(Material.FIREWORK_STAR);
|
||||||
FireworkEffectMeta imE = (FireworkEffectMeta) itemE.getItemMeta();
|
FireworkEffectMeta imE = (FireworkEffectMeta) itemE.getItemMeta();
|
||||||
imE.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.ORANGE).build());
|
imE.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.fromRGB(112, 47, 7)).build());
|
||||||
imE.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&c&lEarth&8&l]"));
|
imE.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&c&lEarth&8&l]"));
|
||||||
itemE.setItemMeta(imE);
|
itemE.setItemMeta(imE);
|
||||||
RUNE_EARTH = itemE;
|
RUNE_EARTH = itemE;
|
||||||
@ -577,17 +585,33 @@ public final class SlimefunItems {
|
|||||||
|
|
||||||
ItemStack itemR = new ItemStack(Material.FIREWORK_STAR);
|
ItemStack itemR = new ItemStack(Material.FIREWORK_STAR);
|
||||||
FireworkEffectMeta imR = (FireworkEffectMeta) itemR.getItemMeta();
|
FireworkEffectMeta imR = (FireworkEffectMeta) itemR.getItemMeta();
|
||||||
imR.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.PURPLE).build());
|
imR.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.FUCHSIA).build());
|
||||||
imR.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&d&lRainbow&8&l]"));
|
imR.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&d&lRainbow&8&l]"));
|
||||||
itemR.setItemMeta(imR);
|
itemR.setItemMeta(imR);
|
||||||
RUNE_RAINBOW = itemR;
|
RUNE_RAINBOW = itemR;
|
||||||
|
|
||||||
ItemStack itemL = new ItemStack(Material.FIREWORK_STAR);
|
ItemStack itemL = new ItemStack(Material.FIREWORK_STAR);
|
||||||
FireworkEffectMeta imL = (FireworkEffectMeta) itemL.getItemMeta();
|
FireworkEffectMeta imL = (FireworkEffectMeta) itemL.getItemMeta();
|
||||||
imL.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.YELLOW).build());
|
imL.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.fromRGB(255, 255, 95)).build());
|
||||||
imL.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&e&lLightning&8&l]"));
|
imL.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&e&lLightning&8&l]"));
|
||||||
itemL.setItemMeta(imL);
|
itemL.setItemMeta(imL);
|
||||||
RUNE_LIGHTNING = itemL;
|
RUNE_LIGHTNING = itemL;
|
||||||
|
|
||||||
|
ItemStack itemS = new ItemStack(Material.FIREWORK_STAR);
|
||||||
|
FireworkEffectMeta imS = (FireworkEffectMeta) itemS.getItemMeta();
|
||||||
|
imS.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.fromRGB(47, 0, 117)).build());
|
||||||
|
imS.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&5&lSoulbound&8&l]"));
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
lore.add(ChatColor.YELLOW + "Drop this rune onto a dropped item to");
|
||||||
|
lore.add(ChatColor.DARK_PURPLE + "bind " + ChatColor.YELLOW + "that item to your soul.");
|
||||||
|
lore.add(" ");
|
||||||
|
lore.add(ChatColor.YELLOW + "It is advised that you only use this rune");
|
||||||
|
lore.add(ChatColor.YELLOW + "on " + ChatColor.GOLD + "important " + ChatColor.YELLOW + "items.");
|
||||||
|
lore.add(" ");
|
||||||
|
lore.add(ChatColor.YELLOW + "Items bound to your soul won't drop on death.");
|
||||||
|
imS.setLore(lore);
|
||||||
|
itemS.setItemMeta(imS);
|
||||||
|
RUNE_SOULBOUND = itemS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Electricity */
|
/* Electricity */
|
||||||
@ -597,7 +621,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 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 = 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 = 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 = 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");
|
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,10 +2,11 @@ package me.mrCookieSlime.Slimefun.Objects;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
@ -23,12 +24,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
|||||||
* @see SeasonalCategory
|
* @see SeasonalCategory
|
||||||
*/
|
*/
|
||||||
public class Category {
|
public class Category {
|
||||||
/**
|
|
||||||
* List of the registered Categories.
|
|
||||||
* @since 4.0
|
|
||||||
* @see Categories
|
|
||||||
*/
|
|
||||||
public static List<Category> list = new ArrayList<>();
|
|
||||||
|
|
||||||
private ItemStack item;
|
private ItemStack item;
|
||||||
private List<SlimefunItem> items;
|
private List<SlimefunItem> items;
|
||||||
@ -44,6 +39,11 @@ public class Category {
|
|||||||
*/
|
*/
|
||||||
public Category(ItemStack item) {
|
public Category(ItemStack item) {
|
||||||
this.item = item;
|
this.item = item;
|
||||||
|
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||||
|
this.item.setItemMeta(meta);
|
||||||
|
|
||||||
this.items = new ArrayList<>();
|
this.items = new ArrayList<>();
|
||||||
this.tier = 3;
|
this.tier = 3;
|
||||||
}
|
}
|
||||||
@ -72,15 +72,19 @@ public class Category {
|
|||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
public void register() {
|
public void register() {
|
||||||
list.add(this);
|
SlimefunPlugin.getUtilities().allCategories.add(this);
|
||||||
Collections.sort(list, new CategorySorter());
|
Collections.sort(list(), SlimefunPlugin.getUtilities().categorySorter);
|
||||||
|
|
||||||
if (this instanceof SeasonalCategory) {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -92,7 +96,7 @@ public class Category {
|
|||||||
* @see Categories
|
* @see Categories
|
||||||
*/
|
*/
|
||||||
public static List<Category> list() {
|
public static List<Category> list() {
|
||||||
return list;
|
return SlimefunPlugin.getUtilities().allCategories;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -136,8 +140,9 @@ public class Category {
|
|||||||
*
|
*
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static Category getByItem(ItemStack item) {
|
public static Category getByItem(ItemStack item) {
|
||||||
for (Category c: list) {
|
for (Category c: list()) {
|
||||||
if (c.getItem().isSimilar(item)) return c;
|
if (c.getItem().isSimilar(item)) return c;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -154,19 +159,4 @@ public class Category {
|
|||||||
return tier;
|
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());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,40 +1,74 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects;
|
package me.mrCookieSlime.Slimefun.Objects;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
|
|
||||||
public class MultiBlock {
|
public class MultiBlock {
|
||||||
|
|
||||||
public static List<MultiBlock> list = new ArrayList<>();
|
|
||||||
|
|
||||||
private Material[] blocks;
|
private Material[] blocks;
|
||||||
private Material trigger;
|
private BlockFace trigger;
|
||||||
|
private boolean isSymmetric;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public MultiBlock(Material[] build, Material trigger) {
|
public MultiBlock(Material[] build, Material trigger) {
|
||||||
|
this.blocks = build;
|
||||||
|
this.isSymmetric = isSymmetric(build);
|
||||||
|
//Hacky, the other constructor should be used
|
||||||
|
for (int i = 1; i < 9; i +=3)
|
||||||
|
{
|
||||||
|
if (trigger.equals(build[i]))
|
||||||
|
{
|
||||||
|
switch (i) {
|
||||||
|
case 1:
|
||||||
|
this.trigger = BlockFace.DOWN;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
this.trigger = BlockFace.SELF;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
this.trigger = BlockFace.UP;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public MultiBlock(Material[] build, BlockFace trigger)
|
||||||
|
{
|
||||||
this.blocks = build;
|
this.blocks = build;
|
||||||
this.trigger = trigger;
|
this.trigger = trigger;
|
||||||
|
this.isSymmetric = isSymmetric(build);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isSymmetric(Material[] blocks)
|
||||||
|
{
|
||||||
|
return blocks[0] == blocks[2]
|
||||||
|
&& blocks[3] == blocks[5]
|
||||||
|
&& blocks[6] == blocks[8];
|
||||||
}
|
}
|
||||||
|
|
||||||
public Material[] getBuild() {
|
public Material[] getBuild() {
|
||||||
return this.blocks;
|
return this.blocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Material getTriggerBlock() {
|
public BlockFace getTriggerBlock() {
|
||||||
return this.trigger;
|
return this.trigger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register() {
|
public void register() {
|
||||||
list.add(this);
|
SlimefunPlugin.getUtilities().allMultiblocks.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<MultiBlock> list() {
|
public static List<MultiBlock> list() {
|
||||||
return list;
|
return SlimefunPlugin.getUtilities().allMultiblocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isMultiBlock(SlimefunItem machine) {
|
public boolean isMultiBlock(SlimefunItem machine) {
|
||||||
@ -72,4 +106,9 @@ public class MultiBlock {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isSymmetric()
|
||||||
|
{
|
||||||
|
return this.isSymmetric;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package me.mrCookieSlime.Slimefun.Objects;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -41,13 +40,6 @@ public class Research {
|
|||||||
|
|
||||||
private static final int[] research_progress = {23, 44, 57, 92};
|
private static final int[] research_progress = {23, 44, 57, 92};
|
||||||
|
|
||||||
/**
|
|
||||||
* Contains all the registered researches;
|
|
||||||
* @since 4.0
|
|
||||||
* @see ResearchSetup
|
|
||||||
*/
|
|
||||||
public static List<Research> list = new LinkedList<>();
|
|
||||||
|
|
||||||
private int id;
|
private int id;
|
||||||
private String name;
|
private String name;
|
||||||
private List<SlimefunItem> items;
|
private List<SlimefunItem> items;
|
||||||
@ -116,7 +108,7 @@ public class Research {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public int getLevel() {
|
public int getLevel() {
|
||||||
return cost;
|
return getCost();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -129,7 +121,7 @@ public class Research {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void setLevel(int level) {
|
public void setLevel(int level) {
|
||||||
this.cost = level;
|
setCost(level);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -303,7 +295,7 @@ public class Research {
|
|||||||
this.cost = SlimefunPlugin.getResearchCfg().getInt(this.getID() + ".cost");
|
this.cost = SlimefunPlugin.getResearchCfg().getInt(this.getID() + ".cost");
|
||||||
this.enabled = SlimefunPlugin.getResearchCfg().getBoolean(this.getID() + ".enabled");
|
this.enabled = SlimefunPlugin.getResearchCfg().getBoolean(this.getID() + ".enabled");
|
||||||
|
|
||||||
list.add(this);
|
SlimefunPlugin.getUtilities().allResearches.add(this);
|
||||||
if (SlimefunPlugin.getSettings().printOutLoading) {
|
if (SlimefunPlugin.getSettings().printOutLoading) {
|
||||||
Slimefun.getLogger().log(Level.INFO, "Loaded Research \"" + this.getName() + "\"");
|
Slimefun.getLogger().log(Level.INFO, "Loaded Research \"" + this.getName() + "\"");
|
||||||
}
|
}
|
||||||
@ -318,7 +310,7 @@ public class Research {
|
|||||||
* @see ResearchSetup
|
* @see ResearchSetup
|
||||||
*/
|
*/
|
||||||
public static List<Research> list() {
|
public static List<Research> list() {
|
||||||
return list;
|
return SlimefunPlugin.getUtilities().allResearches;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -388,7 +380,7 @@ public class Research {
|
|||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
public static Research getByID(int id) {
|
public static Research getByID(int id) {
|
||||||
for (Research research: list) {
|
for (Research research: list()) {
|
||||||
if (research.getID() == id) return research;
|
if (research.getID() == id) return research;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -426,4 +418,9 @@ public class Research {
|
|||||||
public static List<Research> getResearches(String uuid) {
|
public static List<Research> getResearches(String uuid) {
|
||||||
return getResearches(UUID.fromString(uuid));
|
return getResearches(UUID.fromString(uuid));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Research {" + id + ',' + name + "}";
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,38 +1,42 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
|
||||||
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.potion.PotionEffect;
|
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
public class EnderTalisman extends SlimefunItem {
|
public class EnderTalisman extends Talisman {
|
||||||
|
|
||||||
private String suffix;
|
|
||||||
private boolean consumable;
|
|
||||||
private boolean cancel;
|
|
||||||
private PotionEffect[] effects;
|
|
||||||
private int chance;
|
|
||||||
|
|
||||||
public EnderTalisman(Talisman parent) {
|
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());
|
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});
|
||||||
this.consumable = parent.isConsumable();
|
|
||||||
this.cancel = parent.isEventCancelled();
|
consumable = parent.isConsumable();
|
||||||
this.suffix = parent.getSuffix();
|
cancel = parent.isEventCancelled();
|
||||||
this.effects = parent.getEffects();
|
suffix = parent.getSuffix();
|
||||||
this.chance = parent.getChance();
|
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");
|
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; }
|
@Override
|
||||||
public boolean isConsumable() { return this.consumable; }
|
public ItemStack upgrade() {
|
||||||
public boolean isEventCancelled() { return this.cancel; }
|
throw new UnsupportedOperationException();
|
||||||
public PotionEffect[] getEffects() { return this.effects; }
|
}
|
||||||
public int getChance() { return this.chance; }
|
|
||||||
|
@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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
|
||||||
public class EnhancedFurnace extends SlimefunItem {
|
public class EnhancedFurnace extends SimpleSlimefunItem<BlockTicker> {
|
||||||
|
|
||||||
private int speed;
|
private int speed;
|
||||||
private int efficiency;
|
private int efficiency;
|
||||||
@ -24,8 +24,27 @@ public class EnhancedFurnace extends SlimefunItem {
|
|||||||
this.speed = speed - 1;
|
this.speed = speed - 1;
|
||||||
this.efficiency = efficiency - 1;
|
this.efficiency = efficiency - 1;
|
||||||
this.fortune = fortune - 1;
|
this.fortune = fortune - 1;
|
||||||
|
}
|
||||||
|
|
||||||
addItemHandler(new BlockTicker() {
|
public int getSpeed() {
|
||||||
|
return speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFuelEfficiency() {
|
||||||
|
return efficiency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getOutput() {
|
||||||
|
int fortune = this.fortune;
|
||||||
|
fortune = new Random().nextInt(fortune + 2) - 1;
|
||||||
|
if (fortune <= 0) fortune = 0;
|
||||||
|
fortune++;
|
||||||
|
return fortune;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockTicker getItemHandler() {
|
||||||
|
return new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick(Block b, SlimefunItem item, Config data) {
|
public void tick(Block b, SlimefunItem item, Config data) {
|
||||||
@ -49,22 +68,6 @@ public class EnhancedFurnace extends SlimefunItem {
|
|||||||
public boolean isSynchronized() {
|
public boolean isSynchronized() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
}
|
|
||||||
|
|
||||||
public int getSpeed() {
|
|
||||||
return speed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFuelEfficiency() {
|
|
||||||
return efficiency;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getOutput() {
|
|
||||||
int fortune = this.fortune;
|
|
||||||
fortune = new Random().nextInt(fortune + 2) - 1;
|
|
||||||
if (fortune <= 0) fortune = 0;
|
|
||||||
fortune++;
|
|
||||||
return fortune;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
|
||||||
|
|
||||||
public class ExcludedBlock extends SlimefunItem implements NotPlaceable {
|
public class ExcludedBlock extends SlimefunItem implements NotPlaceable {
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
|
||||||
|
|
||||||
public class ExcludedGadget extends SlimefunGadget implements NotPlaceable {
|
public class ExcludedGadget extends SlimefunGadget implements NotPlaceable {
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
|
||||||
|
|
||||||
public class ExcludedSoulboundTool extends SoulboundItem implements NotPlaceable {
|
public class ExcludedSoulboundTool extends SoulboundItem implements NotPlaceable {
|
||||||
|
|
||||||
|
@ -4,8 +4,9 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class ExcludedTool extends SlimefunItem implements NotPlaceable {
|
public class ExcludedTool extends SlimefunItem implements NotPlaceable {
|
||||||
|
|
||||||
public ExcludedTool(Category category, ItemStack item, String id,RecipeType recipeType, ItemStack[] recipe) {
|
public ExcludedTool(Category category, ItemStack item, String id,RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces;
|
|
||||||
|
|
||||||
public interface NotPlaceable {
|
|
||||||
|
|
||||||
}
|
|
@ -21,9 +21,8 @@ public abstract class SimpleSlimefunItem<T extends ItemHandler> extends Slimefun
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(getItemHandler());
|
addItemHandler(getItemHandler());
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract T getItemHandler();
|
public abstract T getItemHandler();
|
||||||
|
@ -7,7 +7,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
|
||||||
public class SlimefunGadget extends SlimefunItem implements RecipeDisplayItem {
|
public class SlimefunGadget extends SlimefunItem implements RecipeDisplayItem {
|
||||||
|
|
||||||
|
@ -2,10 +2,8 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
@ -36,10 +34,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
|||||||
|
|
||||||
public class SlimefunItem {
|
public class SlimefunItem {
|
||||||
|
|
||||||
public static List<SlimefunItem> items = new ArrayList<>();
|
|
||||||
public static Map<String, SlimefunItem> mapID = new HashMap<>();
|
|
||||||
public static List<SlimefunItem> all = new ArrayList<>();
|
|
||||||
|
|
||||||
private String id;
|
private String id;
|
||||||
private String hash;
|
private String hash;
|
||||||
private State state;
|
private State state;
|
||||||
@ -151,7 +145,10 @@ public class SlimefunItem {
|
|||||||
* @since 4.1.11, rename of {@link #getName()}.
|
* @since 4.1.11, rename of {@link #getName()}.
|
||||||
*/
|
*/
|
||||||
public String getID() { return id; }
|
public String getID() { return id; }
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public String getHash() { return hash; }
|
public String getHash() { return hash; }
|
||||||
|
|
||||||
public State getState() { return state; }
|
public State getState() { return state; }
|
||||||
public ItemStack getItem() { return item; }
|
public ItemStack getItem() { return item; }
|
||||||
public Category getCategory() { return category; }
|
public Category getCategory() { return category; }
|
||||||
@ -205,9 +202,13 @@ public class SlimefunItem {
|
|||||||
public void register(boolean slimefun) {
|
public void register(boolean slimefun) {
|
||||||
this.addon = !slimefun;
|
this.addon = !slimefun;
|
||||||
try {
|
try {
|
||||||
if (mapID.containsKey(this.id)) throw new IllegalArgumentException("ID \"" + this.id + "\" already exists");
|
preRegister();
|
||||||
|
|
||||||
|
if (SlimefunPlugin.getUtilities().itemIDs.containsKey(this.id)) {
|
||||||
|
throw new IllegalArgumentException("ID \"" + this.id + "\" already exists");
|
||||||
|
}
|
||||||
if (this.recipe.length < 9) this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null};
|
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 + ".enabled", true);
|
||||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing);
|
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing);
|
||||||
@ -218,7 +219,7 @@ public class SlimefunItem {
|
|||||||
|
|
||||||
if (this.keys != null && this.values != null) {
|
if (this.keys != null && this.values != null) {
|
||||||
for (int i = 0; i < this.keys.length; i++) {
|
for (int i = 0; i < this.keys.length; i++) {
|
||||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + "." + this.keys[i], this.values[i]);
|
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + '.' + this.keys[i], this.values[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,9 +243,9 @@ public class SlimefunItem {
|
|||||||
this.enchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-enchanting");
|
this.enchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-enchanting");
|
||||||
this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting");
|
this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting");
|
||||||
this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission");
|
this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission");
|
||||||
items.add(this);
|
SlimefunPlugin.getUtilities().enabledItems.add(this);
|
||||||
if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++;
|
if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++;
|
||||||
mapID.put(this.id, this);
|
SlimefunPlugin.getUtilities().itemIDs.put(this.id, this);
|
||||||
|
|
||||||
create();
|
create();
|
||||||
|
|
||||||
@ -270,7 +271,7 @@ public class SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static List<SlimefunItem> list() {
|
public static List<SlimefunItem> list() {
|
||||||
return items;
|
return SlimefunPlugin.getUtilities().enabledItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void bindToResearch(Research r) {
|
public void bindToResearch(Research r) {
|
||||||
@ -278,6 +279,7 @@ public class SlimefunItem {
|
|||||||
this.research = r;
|
this.research = r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void setHash(String hash) {
|
public void setHash(String hash) {
|
||||||
this.hash = hash;
|
this.hash = hash;
|
||||||
}
|
}
|
||||||
@ -308,19 +310,19 @@ public class SlimefunItem {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static SlimefunItem getByName(String name) {
|
public static SlimefunItem getByName(String name) {
|
||||||
return mapID.get(name);
|
return getByID(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @since 4.1.11, rename of {@link #getByName(String)}.
|
* @since 4.1.11, rename of {@link #getByName(String)}.
|
||||||
*/
|
*/
|
||||||
public static SlimefunItem getByID(String id) {
|
public static SlimefunItem getByID(String id) {
|
||||||
return mapID.get(id);
|
return SlimefunPlugin.getUtilities().itemIDs.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SlimefunItem getByItem(ItemStack item) {
|
public static SlimefunItem getByItem(ItemStack item) {
|
||||||
if (item == null) return null;
|
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)) ||
|
if ((sfi instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
||||||
(sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
(sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
||||||
(sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
(sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
||||||
@ -349,7 +351,8 @@ public class SlimefunItem {
|
|||||||
if (recipeOutput != null) output = recipeOutput.clone();
|
if (recipeOutput != null) output = recipeOutput.clone();
|
||||||
|
|
||||||
if (recipeType.toItem().isSimilar(RecipeType.MOB_DROP.toItem())) {
|
if (recipeType.toItem().isSimilar(RecipeType.MOB_DROP.toItem())) {
|
||||||
String mob = ChatColor.stripColor(recipe[4].getItemMeta().getDisplayName()).toUpperCase().replace(" ", "_");
|
String mob = ChatColor.stripColor(recipe[4].getItemMeta().getDisplayName()).toUpperCase()
|
||||||
|
.replace(' ', '_');
|
||||||
try {
|
try {
|
||||||
EntityType entity = EntityType.valueOf(mob);
|
EntityType entity = EntityType.valueOf(mob);
|
||||||
List<ItemStack> dropping = SlimefunPlugin.getUtilities().drops.getOrDefault(entity, new ArrayList<>());
|
List<ItemStack> dropping = SlimefunPlugin.getUtilities().drops.getOrDefault(entity, new ArrayList<>());
|
||||||
@ -373,7 +376,7 @@ public class SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static State getState(ItemStack item) {
|
public static State getState(ItemStack item) {
|
||||||
for (SlimefunItem i: all) {
|
for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) {
|
||||||
if (i.isItem(item)) {
|
if (i.isItem(item)) {
|
||||||
return i.getState();
|
return i.getState();
|
||||||
}
|
}
|
||||||
@ -382,7 +385,7 @@ public class SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isDisabled(ItemStack item) {
|
public static boolean isDisabled(ItemStack item) {
|
||||||
for (SlimefunItem i: all) {
|
for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) {
|
||||||
if (i.isItem(item)) {
|
if (i.isItem(item)) {
|
||||||
return i.isDisabled();
|
return i.isDisabled();
|
||||||
}
|
}
|
||||||
@ -528,6 +531,11 @@ public class SlimefunItem {
|
|||||||
ChargableBlock.registerCapacitor(id, capacity);
|
ChargableBlock.registerCapacitor(id, capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void preRegister() {
|
||||||
|
// Override this method to execute code before the Item has been registered
|
||||||
|
// Useful for calls to addItemHandler(...)
|
||||||
|
}
|
||||||
|
|
||||||
public void postRegister() {
|
public void postRegister() {
|
||||||
// Override this method to execute code after the Item has been registered
|
// Override this method to execute code after the Item has been registered
|
||||||
// Useful for calls to Slimefun.getItemValue(...)
|
// Useful for calls to Slimefun.getItemValue(...)
|
||||||
|
@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
|
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
|
||||||
public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
|
public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void create() {
|
public void postRegister() {
|
||||||
this.toMultiBlock().register();
|
this.toMultiBlock().register();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,6 +80,7 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
|
|||||||
else if (i.getType() == Material.FLINT_AND_STEEL) mats.add(Material.FIRE);
|
else if (i.getType() == Material.FLINT_AND_STEEL) mats.add(Material.FIRE);
|
||||||
else mats.add(i.getType());
|
else mats.add(i.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
Material[] build = mats.toArray(new Material[mats.size()]);
|
Material[] build = mats.toArray(new Material[mats.size()]);
|
||||||
return new MultiBlock(build, this.trigger);
|
return new MultiBlock(build, this.trigger);
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import org.bukkit.potion.PotionEffect;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
@ -28,11 +29,11 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
*/
|
*/
|
||||||
public class Talisman extends SlimefunItem {
|
public class Talisman extends SlimefunItem {
|
||||||
|
|
||||||
private String suffix;
|
protected String suffix;
|
||||||
private boolean consumable = true;
|
protected boolean consumable = true;
|
||||||
private boolean cancel = true;
|
protected boolean cancel = true;
|
||||||
private PotionEffect[] effects;
|
protected PotionEffect[] effects;
|
||||||
private int chance = 100;
|
protected int chance = 100;
|
||||||
|
|
||||||
public Talisman(ItemStack item, String id, ItemStack[] recipe, boolean consumable, boolean cancelEvent, String messageSuffix, PotionEffect... effects) {
|
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));
|
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) {
|
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.suffix = messageSuffix;
|
||||||
this.effects = effects;
|
this.effects = effects;
|
||||||
this.chance = chance;
|
this.chance = chance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Talisman(Category category, ItemStack item, String id, ItemStack[] recipe) {
|
||||||
|
super(category, item, id, RecipeType.MAGIC_WORKBENCH, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
public String getSuffix() {
|
public String getSuffix() {
|
||||||
return this.suffix;
|
return this.suffix;
|
||||||
}
|
}
|
||||||
@ -78,6 +83,38 @@ public class Talisman extends SlimefunItem {
|
|||||||
return this.chance;
|
return this.chance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ItemStack upgrade() {
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
lore.add("&7&oEnder Infused");
|
||||||
|
lore.add("");
|
||||||
|
for (String line : getItem().getItemMeta().getLore()) {
|
||||||
|
lore.add(line);
|
||||||
|
}
|
||||||
|
return new CustomItem(getItem().getType(), "&5Ender " + ChatColor.stripColor(getItem().getItemMeta().getDisplayName()), lore.toArray(new String[lore.size()]));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void create() {
|
||||||
|
EnderTalisman talisman = new EnderTalisman(this);
|
||||||
|
talisman.register(!isAddonItem());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void install() {
|
||||||
|
EnderTalisman talisman = (EnderTalisman) SlimefunItem.getByItem(upgrade());
|
||||||
|
Research research = Research.getByID(112);
|
||||||
|
if (talisman != null) {
|
||||||
|
Slimefun.addOfficialWikiPage(talisman.getID(), "Talismans");
|
||||||
|
if (research != null) talisman.bindToResearch(research);
|
||||||
|
}
|
||||||
|
|
||||||
|
Slimefun.addOfficialWikiPage(getID(), "Talismans");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isTalismanMessage(Talisman talisman){
|
||||||
|
return !("").equalsIgnoreCase(talisman.getSuffix());
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean checkFor(Event e, SlimefunItem item) {
|
public static boolean checkFor(Event e, SlimefunItem item) {
|
||||||
if (!(item instanceof Talisman)) {
|
if (!(item instanceof Talisman)) {
|
||||||
return false;
|
return false;
|
||||||
@ -108,39 +145,6 @@ public class Talisman extends SlimefunItem {
|
|||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
else return false;
|
else return false;
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack upgrade() {
|
|
||||||
List<String> lore = new ArrayList<>();
|
|
||||||
lore.add("&7&oEnder Infused");
|
|
||||||
lore.add("");
|
|
||||||
for (String line : getItem().getItemMeta().getLore()) {
|
|
||||||
lore.add(line);
|
|
||||||
}
|
|
||||||
return new CustomItem(getItem().getType(), "&5Ender " + ChatColor.stripColor(getItem().getItemMeta().getDisplayName()), lore.toArray(new String[lore.size()]));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void create() {
|
|
||||||
EnderTalisman talisman = new EnderTalisman(this);
|
|
||||||
talisman.register(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void install() {
|
|
||||||
EnderTalisman talisman = (EnderTalisman) SlimefunItem.getByItem(upgrade());
|
|
||||||
Research research = Research.getByID(112);
|
|
||||||
if (talisman != null) {
|
|
||||||
Slimefun.addOfficialWikiPage(talisman.getID(), "Talismans");
|
|
||||||
if (research != null) talisman.bindToResearch(research);
|
|
||||||
}
|
|
||||||
|
|
||||||
Slimefun.addOfficialWikiPage(getID(), "Talismans");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean isTalismanMessage(Talisman talisman){
|
|
||||||
return !("").equalsIgnoreCase(talisman.getSuffix());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void executeTalismanAttributes(Event e, Player p, Talisman talisman){
|
private static void executeTalismanAttributes(Event e, Player p, Talisman talisman){
|
||||||
|
@ -18,16 +18,14 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.utils.InventoryBlock;
|
|
||||||
|
|
||||||
public abstract class AContainer extends SlimefunItem implements InventoryBlock {
|
public abstract class AContainer extends SlimefunItem implements InventoryBlock {
|
||||||
|
|
||||||
@ -43,12 +41,9 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
|
|||||||
public AContainer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public AContainer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, id, recipeType, recipe);
|
||||||
|
|
||||||
createPreset(id, getInventoryTitle(), this::constructMenu);
|
createPreset(this, getInventoryTitle(), this::constructMenu);
|
||||||
|
|
||||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
registerBlockHandler(id, (p, b, tool, reason) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
@ -69,7 +64,6 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
|
|||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
processing.remove(b);
|
processing.remove(b);
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.registerDefaultRecipes();
|
this.registerDefaultRecipes();
|
||||||
@ -121,6 +115,17 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
|
|||||||
// Override this method to register your machine recipes
|
// Override this method to register your machine recipes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ItemStack> getDisplayRecipes() {
|
||||||
|
List<ItemStack> displayRecipes = new ArrayList<>(recipes.size() * 2);
|
||||||
|
|
||||||
|
for (MachineRecipe recipe: recipes) {
|
||||||
|
displayRecipes.add(recipe.getInput()[0]);
|
||||||
|
displayRecipes.add(recipe.getOutput()[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return displayRecipes;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getInputSlots() {
|
public int[] getInputSlots() {
|
||||||
return new int[] {19, 20};
|
return new int[] {19, 20};
|
||||||
@ -149,7 +154,7 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -162,8 +167,6 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
@ -16,9 +16,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
@ -53,10 +51,7 @@ public abstract class AFarm extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
registerBlockHandler(id, (p, b, tool, reason) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getOutputSlots()) {
|
for (int slot : getOutputSlots()) {
|
||||||
@ -67,47 +62,6 @@ public abstract class AFarm extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public AFarm(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
|
|
||||||
super(category, item, id, recipeType, recipe, recipeOutput);
|
|
||||||
|
|
||||||
new BlockMenuPreset(id, getInventoryTitle()) {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init() {
|
|
||||||
constructMenu(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canOpen(Block b, Player p) {
|
|
||||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) {
|
|
||||||
if (flow == ItemTransportFlow.WITHDRAW) return getOutputSlots();
|
|
||||||
return new int[0];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
|
||||||
if (inv != null) {
|
|
||||||
for (int slot: getOutputSlots()) {
|
|
||||||
if (inv.getItemInSlot(slot) != null) {
|
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
|
||||||
inv.replaceExistingItem(slot, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,7 +128,7 @@ public abstract class AFarm extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -187,8 +141,6 @@ public abstract class AFarm extends SlimefunItem {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Inventory inject(Block b) {
|
private Inventory inject(Block b) {
|
||||||
|
@ -23,9 +23,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
@ -67,10 +65,7 @@ public abstract class AGenerator extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
registerBlockHandler(id, (p, b, tool, reason) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
@ -89,7 +84,6 @@ public abstract class AGenerator extends SlimefunItem {
|
|||||||
progress.remove(b.getLocation());
|
progress.remove(b.getLocation());
|
||||||
processing.remove(b.getLocation());
|
processing.remove(b.getLocation());
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.registerDefaultRecipes();
|
this.registerDefaultRecipes();
|
||||||
@ -157,7 +151,7 @@ public abstract class AGenerator extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new EnergyTicker() {
|
addItemHandler(new EnergyTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -216,8 +210,6 @@ public abstract class AGenerator extends SlimefunItem {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private MachineFuel findRecipe(BlockMenu menu, Map<Integer, Integer> found) {
|
private MachineFuel findRecipe(BlockMenu menu, Map<Integer, Integer> found) {
|
||||||
|
@ -26,9 +26,7 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
@ -138,10 +136,7 @@ public abstract class AReactor extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
registerBlockHandler(id, (p, b, tool, reason) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getFuelSlots()) {
|
for (int slot : getFuelSlots()) {
|
||||||
@ -170,7 +165,6 @@ public abstract class AReactor extends SlimefunItem {
|
|||||||
processing.remove(b.getLocation());
|
processing.remove(b.getLocation());
|
||||||
ReactorHologram.remove(b.getLocation());
|
ReactorHologram.remove(b.getLocation());
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.registerDefaultRecipes();
|
this.registerDefaultRecipes();
|
||||||
@ -252,7 +246,7 @@ public abstract class AReactor extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new EnergyTicker() {
|
addItemHandler(new EnergyTicker() {
|
||||||
|
|
||||||
private Set<Location> explode = new HashSet<>();
|
private Set<Location> explode = new HashSet<>();
|
||||||
@ -365,8 +359,6 @@ public abstract class AReactor extends SlimefunItem {
|
|||||||
return explosion;
|
return explosion;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restockCoolant(Location l, BlockMenu port) {
|
private void restockCoolant(Location l, BlockMenu port) {
|
||||||
|
@ -98,7 +98,7 @@ public final class MachineHelper {
|
|||||||
im.setLore(lore);
|
im.setLore(lore);
|
||||||
item.setItemMeta(im);
|
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;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.utils;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
@ -13,7 +13,11 @@ public interface DamageableItem {
|
|||||||
boolean isDamageable();
|
boolean isDamageable();
|
||||||
|
|
||||||
default void damageItem(Player p, ItemStack item) {
|
default void damageItem(Player p, ItemStack item) {
|
||||||
if (item != null && item.getType() != null && item.getType() != Material.AIR && item.getAmount() > 0 && isDamageable() && item.getEnchantments().containsKey(Enchantment.DURABILITY) && Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) {
|
if (item != null && item.getType() != null && item.getType() != Material.AIR && item.getAmount() > 0 && isDamageable()) {
|
||||||
|
if (item.getEnchantments().containsKey(Enchantment.DURABILITY) && Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
Damageable damageable = (Damageable) meta;
|
Damageable damageable = (Damageable) meta;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.utils;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@ -13,7 +13,9 @@ import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.Calculator;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.Calculator;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||||
|
|
||||||
@ -22,8 +24,8 @@ public interface InventoryBlock {
|
|||||||
int[] getInputSlots();
|
int[] getInputSlots();
|
||||||
int[] getOutputSlots();
|
int[] getOutputSlots();
|
||||||
|
|
||||||
default void createPreset(String id, String title, Consumer<BlockMenuPreset> setup) {
|
default void createPreset(SlimefunItem item, String title, Consumer<BlockMenuPreset> setup) {
|
||||||
new BlockMenuPreset(id, title) {
|
new BlockMenuPreset(item.getID(), title) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
public void init() {
|
||||||
@ -38,7 +40,7 @@ public interface InventoryBlock {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canOpen(Block b, Player p) {
|
public boolean canOpen(Block b, Player p) {
|
||||||
return p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), Action.ACCESS_INVENTORIES);
|
return p.hasPermission("slimefun.inventory.bypass") || (SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), Action.ACCESS_INVENTORIES) && Slimefun.hasUnlocked(p, item, false));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces;
|
||||||
|
|
||||||
|
public interface NotPlaceable {
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.utils;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -19,12 +19,12 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.DamageableItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.utils.DamageableItem;
|
|
||||||
|
|
||||||
public class ExplosivePickaxe extends SimpleSlimefunItem<BlockBreakHandler> implements NotPlaceable, DamageableItem {
|
public class ExplosivePickaxe extends SimpleSlimefunItem<BlockBreakHandler> implements NotPlaceable, DamageableItem {
|
||||||
|
|
||||||
|
@ -13,11 +13,11 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.DamageableItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.utils.DamageableItem;
|
|
||||||
|
|
||||||
public class ExplosiveShovel extends SimpleSlimefunItem<BlockBreakHandler> implements NotPlaceable, DamageableItem {
|
public class ExplosiveShovel extends SimpleSlimefunItem<BlockBreakHandler> implements NotPlaceable, DamageableItem {
|
||||||
|
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
|
||||||
|
public class HerculesPickaxe extends SimpleSlimefunItem<BlockBreakHandler> {
|
||||||
|
|
||||||
|
public HerculesPickaxe(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, id, recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockBreakHandler getItemHandler() {
|
||||||
|
return (e, item, fortune, drops) -> {
|
||||||
|
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.HERCULES_PICKAXE, true) && e.getBlock().getType().toString().endsWith("_ORE")) {
|
||||||
|
if (e.getBlock().getType() == Material.IRON_ORE) {
|
||||||
|
drops.add(new CustomItem(SlimefunItems.IRON_DUST, 2));
|
||||||
|
}
|
||||||
|
else if (e.getBlock().getType() == Material.GOLD_ORE) {
|
||||||
|
drops.add(new CustomItem(SlimefunItems.GOLD_DUST, 2));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (ItemStack drop: e.getBlock().getDrops()) {
|
||||||
|
drops.add(new CustomItem(drop, drop.getAmount() * 2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.ChestedHorse;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.EntityKillHandler;
|
||||||
|
|
||||||
|
public class HunterTalisman extends Talisman {
|
||||||
|
|
||||||
|
public HunterTalisman(ItemStack item, String id, ItemStack[] recipe, boolean consumable, boolean cancelEvent, String messageSuffix, int chance) {
|
||||||
|
super(item, id, recipe, consumable, cancelEvent, messageSuffix, chance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void preRegister() {
|
||||||
|
addItemHandler(getItemHandler());
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityKillHandler getItemHandler() {
|
||||||
|
return (e, entity, killer, item) -> {
|
||||||
|
if (Talisman.checkFor(e, this) && !(e.getEntity() instanceof Player)) {
|
||||||
|
if (!e.getEntity().getCanPickupItems()) {
|
||||||
|
List<ItemStack> extraDrops = new ArrayList<>(e.getDrops());
|
||||||
|
|
||||||
|
if (e.getEntity() instanceof ChestedHorse) {
|
||||||
|
for (ItemStack invItem : ((ChestedHorse) e.getEntity()).getInventory().getStorageContents()) {
|
||||||
|
extraDrops.remove(invItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
//The chest is not included in getStorageContents()
|
||||||
|
extraDrops.remove(new ItemStack(Material.CHEST));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ItemStack drop: extraDrops) {
|
||||||
|
e.getDrops().add(drop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Effect;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Block.TreeCalculator;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
|
||||||
|
public class LumberAxe extends SimpleSlimefunItem<BlockBreakHandler> implements NotPlaceable {
|
||||||
|
|
||||||
|
public LumberAxe(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, id, recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockBreakHandler getItemHandler() {
|
||||||
|
return (e, item, fortune, drops) -> {
|
||||||
|
if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), getItem(), true)) {
|
||||||
|
if (MaterialHelper.isLog( e.getBlock().getType())) {
|
||||||
|
List<Location> logs = new ArrayList<>();
|
||||||
|
TreeCalculator.getTree(e.getBlock().getLocation(), e.getBlock().getLocation(), logs);
|
||||||
|
|
||||||
|
if (logs.contains(e.getBlock().getLocation())) logs.remove(e.getBlock().getLocation());
|
||||||
|
for (Location b: logs) {
|
||||||
|
if (SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b, Action.BREAK_BLOCK)) {
|
||||||
|
b.getWorld().playEffect(b, Effect.STEP_SOUND, b.getBlock().getType());
|
||||||
|
|
||||||
|
for (ItemStack drop: b.getBlock().getDrops()) {
|
||||||
|
b.getWorld().dropItemNaturally(b, drop);
|
||||||
|
}
|
||||||
|
|
||||||
|
b.getBlock().setType(Material.AIR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.CreatureSpawner;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
|
||||||
|
public class PickaxeOfContainment extends SimpleSlimefunItem<BlockBreakHandler> {
|
||||||
|
|
||||||
|
public PickaxeOfContainment(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, id, recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockBreakHandler getItemHandler() {
|
||||||
|
return (e, item, fortune, drops) -> {
|
||||||
|
if (SlimefunManager.isItemSimiliar(item, getItem(), true)) {
|
||||||
|
// Refactored it into this so we don't need to call e.getBlock() all the time.
|
||||||
|
Block b = e.getBlock();
|
||||||
|
if (b.getType() != Material.SPAWNER) return true;
|
||||||
|
|
||||||
|
// If the spawner's BlockStorage has BlockInfo, then it's not a vanilla spawner and shouldn't give a broken spawner.
|
||||||
|
ItemStack spawner = SlimefunItems.BROKEN_SPAWNER.clone();
|
||||||
|
if (BlockStorage.hasBlockInfo(b)) {
|
||||||
|
spawner = SlimefunItems.REPAIRED_SPAWNER.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemMeta im = spawner.getItemMeta();
|
||||||
|
List<String> lore = im.getLore();
|
||||||
|
|
||||||
|
for (int i = 0; i < lore.size(); i++) {
|
||||||
|
if (lore.get(i).contains("<Type>")) lore.set(i, lore.get(i).replace("<Type>", StringUtils.format(((CreatureSpawner) b.getState()).getSpawnedType().toString())));
|
||||||
|
}
|
||||||
|
|
||||||
|
im.setLore(lore);
|
||||||
|
spawner.setItemMeta(im);
|
||||||
|
b.getLocation().getWorld().dropItemNaturally(b.getLocation(), spawner);
|
||||||
|
e.setExpToDrop(0);
|
||||||
|
e.setDropItems(false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (e.getBlock().getType() == Material.SPAWNER) e.setDropItems(false);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -7,10 +7,10 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.DamageableItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.utils.DamageableItem;
|
|
||||||
|
|
||||||
public class PickaxeOfTheSeeker extends SimpleSlimefunItem<ItemInteractionHandler> implements DamageableItem {
|
public class PickaxeOfTheSeeker extends SimpleSlimefunItem<ItemInteractionHandler> implements DamageableItem {
|
||||||
|
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Effect;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Block.Vein;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
|
||||||
|
public class PickaxeOfVeinMining extends SimpleSlimefunItem<BlockBreakHandler> {
|
||||||
|
|
||||||
|
public PickaxeOfVeinMining(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, id, recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockBreakHandler getItemHandler() {
|
||||||
|
return (e, item, fortune, drops) -> {
|
||||||
|
if (SlimefunManager.isItemSimiliar(item, getItem(), true)) {
|
||||||
|
if (e.getBlock().getType().toString().endsWith("_ORE")) {
|
||||||
|
List<Location> blocks = new ArrayList<>();
|
||||||
|
Vein.calculate(e.getBlock().getLocation(), e.getBlock().getLocation(), blocks, 16);
|
||||||
|
|
||||||
|
for (Location block: blocks) {
|
||||||
|
if (SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), block, Action.BREAK_BLOCK)) {
|
||||||
|
Block b = block.getBlock();
|
||||||
|
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
|
||||||
|
|
||||||
|
for (ItemStack drop: b.getDrops()) {
|
||||||
|
b.getWorld().dropItemNaturally(b.getLocation(), drop.getType().isBlock() ? drop: new CustomItem(drop, fortune));
|
||||||
|
}
|
||||||
|
|
||||||
|
b.setType(Material.AIR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -21,10 +21,10 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.DamageableItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.NotPlaceable;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.utils.DamageableItem;
|
|
||||||
|
|
||||||
public class SeismicAxe extends SimpleSlimefunItem<ItemInteractionHandler> implements NotPlaceable, DamageableItem {
|
public class SeismicAxe extends SimpleSlimefunItem<ItemInteractionHandler> implements NotPlaceable, DamageableItem {
|
||||||
|
|
||||||
|
@ -0,0 +1,50 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Effect;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
|
||||||
|
public class SmeltersPickaxe extends SimpleSlimefunItem<BlockBreakHandler> {
|
||||||
|
|
||||||
|
public SmeltersPickaxe(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, id, recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockBreakHandler getItemHandler() {
|
||||||
|
return (e, item, fortune, drops) -> {
|
||||||
|
if (SlimefunManager.isItemSimiliar(item, getItem(), true)) {
|
||||||
|
if (BlockStorage.hasBlockInfo(e.getBlock())) return true;
|
||||||
|
if (e.getBlock().getType() == Material.PLAYER_HEAD) return true;
|
||||||
|
|
||||||
|
int j = -1;
|
||||||
|
List<ItemStack> dropsList = (List<ItemStack>) e.getBlock().getDrops();
|
||||||
|
for (int i = 0; i < dropsList.size(); i++) {
|
||||||
|
if (dropsList.get(i) != null) {
|
||||||
|
j++;
|
||||||
|
drops.add(e.getBlock().getType().toString().endsWith("_ORE") ? new CustomItem(dropsList.get(i), fortune): dropsList.get(i));
|
||||||
|
if (RecipeCalculator.getSmeltedOutput(drops.get(i).getType()) != null) {
|
||||||
|
e.getBlock().getWorld().playEffect(e.getBlock().getLocation(), Effect.MOBSPAWNER_FLAMES, 1);
|
||||||
|
drops.set(j, new CustomItem(RecipeCalculator.getSmeltedOutput(drops.get(i).getType()), drops.get(i).getAmount()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Item;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemDropHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
|
public class SoulboundRune extends SimpleSlimefunItem<ItemDropHandler> {
|
||||||
|
|
||||||
|
public SoulboundRune(Category category, ItemStack item, String id, RecipeType type, ItemStack[] recipe) {
|
||||||
|
super(category, item, id, type, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemDropHandler getItemHandler() {
|
||||||
|
return (e, p, i) -> {
|
||||||
|
ItemStack item = i.getItemStack();
|
||||||
|
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.RUNE_SOULBOUND, true)) {
|
||||||
|
|
||||||
|
if (!Slimefun.hasUnlocked(p, SlimefunItems.RUNE_SOULBOUND, true)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||||
|
// Being sure the entity is still valid and not picked up or whatsoever.
|
||||||
|
if (!i.isValid()) return;
|
||||||
|
|
||||||
|
Location l = i.getLocation();
|
||||||
|
Collection<Entity> entites = l.getWorld().getNearbyEntities(l, 1.5, 1.5, 1.5,
|
||||||
|
entity -> entity instanceof Item && !SlimefunManager.isItemSoulbound(((Item) entity).getItemStack()) &&
|
||||||
|
!SlimefunManager.isItemSimiliar(((Item) entity).getItemStack(), SlimefunItems.RUNE_SOULBOUND, true)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (entites.isEmpty()) return;
|
||||||
|
|
||||||
|
Entity entity = entites.stream().findFirst().get();
|
||||||
|
ItemStack ench = ((Item) entity).getItemStack();
|
||||||
|
Item ent = (Item) entity;
|
||||||
|
|
||||||
|
if (ench.getAmount() == 1) {
|
||||||
|
e.setCancelled(true);
|
||||||
|
|
||||||
|
ItemMeta enchMeta = ench.getItemMeta();
|
||||||
|
List<String> lore = enchMeta.hasLore() ? enchMeta.getLore(): new ArrayList<>();
|
||||||
|
|
||||||
|
// This lightning is just an effect, it deals no damage.
|
||||||
|
l.getWorld().strikeLightningEffect(l);
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||||
|
|
||||||
|
// Being sure entities are still valid and not picked up or whatsoever.
|
||||||
|
if (i.isValid() && ent.isValid()) {
|
||||||
|
|
||||||
|
l.getWorld().createExplosion(l, 0.0F);
|
||||||
|
l.getWorld().playSound(l, Sound.ENTITY_GENERIC_EXPLODE, 0.3F, 1F);
|
||||||
|
|
||||||
|
lore.add(ChatColor.GRAY + "Soulbound");
|
||||||
|
|
||||||
|
enchMeta.setLore(lore);
|
||||||
|
ench.setItemMeta(enchMeta);
|
||||||
|
|
||||||
|
ent.remove();
|
||||||
|
i.remove();
|
||||||
|
l.getWorld().dropItemNaturally(l, ench);
|
||||||
|
|
||||||
|
Messages.local.sendTranslation(p, "messages.soulbound-rune.success", true);
|
||||||
|
}
|
||||||
|
}, 10L);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Messages.local.sendTranslation(p, "messages.soulbound-rune.fail", true);
|
||||||
|
}
|
||||||
|
}, 20L);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -82,7 +82,7 @@ public class StormStaff extends SimpleSlimefunItem<ItemInteractionHandler> {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (ChatColor.translateAlternateColorCodes('&', "&e" + i + " Uses &7left").equals(itemLore.get(4))) {
|
else if (ChatColor.translateAlternateColorCodes('&', "&e" + i + " Uses &7left").equals(itemLore.get(4))) {
|
||||||
itemLore.set(4, ChatColor.translateAlternateColorCodes('&', "&e" + (i - 1) + " " + (i > 2 ? "Uses": "Use") + " &7left"));
|
itemLore.set(4, ChatColor.translateAlternateColorCodes('&', "&e" + (i - 1) + ' ' + (i > 2 ? "Uses": "Use") + " &7left"));
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
|
||||||
// Saving the changes to lore and item.
|
// Saving the changes to lore and item.
|
||||||
|
@ -0,0 +1,83 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Creeper;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Skeleton;
|
||||||
|
import org.bukkit.entity.WitherSkeleton;
|
||||||
|
import org.bukkit.entity.Zombie;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.EntityKillHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
|
public class SwordOfBeheading extends SimpleSlimefunItem<EntityKillHandler> {
|
||||||
|
|
||||||
|
private final Random random = new Random();
|
||||||
|
|
||||||
|
private int chanceZombie;
|
||||||
|
private int chanceSkeleton;
|
||||||
|
private int chanceCreeper;
|
||||||
|
private int chanceWitherSkeleton;
|
||||||
|
private int chancePlayer;
|
||||||
|
|
||||||
|
public SwordOfBeheading(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
||||||
|
super(category, item, id, recipeType, recipe, keys, values);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityKillHandler getItemHandler() {
|
||||||
|
return (e, entity, killer, item) -> {
|
||||||
|
if (SlimefunManager.isItemSimiliar(item, getItem(), true)) {
|
||||||
|
if (e.getEntity() instanceof Zombie) {
|
||||||
|
if (random.nextInt(100) < chanceZombie) {
|
||||||
|
e.getDrops().add(new ItemStack(Material.ZOMBIE_HEAD));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (e.getEntity() instanceof WitherSkeleton) {
|
||||||
|
if (random.nextInt(100) < chanceWitherSkeleton)
|
||||||
|
e.getDrops().add(new ItemStack(Material.WITHER_SKELETON_SKULL));
|
||||||
|
}
|
||||||
|
else if (e.getEntity() instanceof Skeleton) {
|
||||||
|
if (random.nextInt(100) < chanceSkeleton)
|
||||||
|
e.getDrops().add(new ItemStack(Material.SKELETON_SKULL));
|
||||||
|
}
|
||||||
|
else if (e.getEntity() instanceof Creeper) {
|
||||||
|
if (random.nextInt(100) < chanceCreeper) {
|
||||||
|
e.getDrops().add(new ItemStack(Material.CREEPER_HEAD));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (e.getEntity() instanceof Player) {
|
||||||
|
if (random.nextInt(100) < chancePlayer) {
|
||||||
|
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);
|
||||||
|
ItemMeta meta = skull.getItemMeta();
|
||||||
|
((SkullMeta) meta).setOwningPlayer((Player) e.getEntity());
|
||||||
|
skull.setItemMeta(meta);
|
||||||
|
|
||||||
|
e.getDrops().add(skull);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postRegister() {
|
||||||
|
chanceZombie = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE");
|
||||||
|
chanceSkeleton = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON");
|
||||||
|
chanceCreeper = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER");
|
||||||
|
chanceWitherSkeleton = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON");
|
||||||
|
chancePlayer = (int) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.PLAYER");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -28,7 +28,7 @@ public class Composter extends SlimefunGadget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new ItemInteractionHandler() {
|
addItemHandler(new ItemInteractionHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -73,8 +73,6 @@ public class Composter extends SlimefunGadget {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public class Crucible extends SlimefunGadget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new ItemInteractionHandler() {
|
addItemHandler(new ItemInteractionHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -81,8 +81,6 @@ public class Crucible extends SlimefunGadget {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,44 +1,26 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.ArmorStand;
|
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
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.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.holograms.InfusedHopperHologram;
|
|
||||||
|
|
||||||
public class InfusedHopper extends SimpleSlimefunItem<BlockTicker> {
|
public class InfusedHopper extends SimpleSlimefunItem<BlockTicker> {
|
||||||
|
|
||||||
public InfusedHopper(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public InfusedHopper(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, id, recipeType, recipe);
|
||||||
|
|
||||||
SlimefunItem.registerBlockHandler(getID(), new SlimefunBlockHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
|
||||||
InfusedHopperHologram.getArmorStand(b, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
InfusedHopperHologram.remove(b);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -53,16 +35,14 @@ public class InfusedHopper extends SimpleSlimefunItem<BlockTicker> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArmorStand hologram = InfusedHopperHologram.getArmorStand(b, true);
|
Location l = b.getLocation().add(0.5, 1.2, 0.5);
|
||||||
boolean sound = false;
|
boolean sound = false;
|
||||||
|
|
||||||
for (Entity n: hologram.getNearbyEntities(3.5D, 3.5D, 3.5D)) {
|
for (Entity n: b.getWorld().getNearbyEntities(l, 3.5D, 3.5D, 3.5D, n -> n instanceof Item && n.isValid() && !n.hasMetadata("no_pickup") && n.getLocation().distanceSquared(l) > 0.1)) {
|
||||||
if (n instanceof Item && !n.hasMetadata("no_pickup") && n.getLocation().distance(hologram.getLocation()) > 0.4D) {
|
|
||||||
n.setVelocity(new Vector(0, 0.1, 0));
|
n.setVelocity(new Vector(0, 0.1, 0));
|
||||||
n.teleport(hologram);
|
n.teleport(l);
|
||||||
sound = true;
|
sound = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (sound) {
|
if (sound) {
|
||||||
b.getWorld().playSound(b.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5F, 2F);
|
b.getWorld().playSound(b.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5F, 2F);
|
||||||
|
@ -16,9 +16,7 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
@ -36,7 +34,7 @@ public class ReactorAccessPort extends SlimefunItem {
|
|||||||
public ReactorAccessPort(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ReactorAccessPort(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
|
|
||||||
new BlockMenuPreset(name, getInventoryTitle()) {
|
new BlockMenuPreset(name, "&2Reactor Access Port") {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
public void init() {
|
||||||
@ -97,10 +95,7 @@ public class ReactorAccessPort extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
registerBlockHandler(name, (p, b, tool, reason) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
@ -126,7 +121,6 @@ public class ReactorAccessPort extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,10 +146,6 @@ public class ReactorAccessPort extends SlimefunItem {
|
|||||||
preset.addItem(7, new CustomItem(SlimefunItems.REACTOR_COOLANT_CELL, "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode"),(p, slot, item, action) -> false);
|
preset.addItem(7, new CustomItem(SlimefunItems.REACTOR_COOLANT_CELL, "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode"),(p, slot, item, action) -> false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getInventoryTitle() {
|
|
||||||
return "&2Reactor Access Port";
|
|
||||||
}
|
|
||||||
|
|
||||||
public int[] getInputSlots() {
|
public int[] getInputSlots() {
|
||||||
return new int[] {19, 28, 37, 25, 34, 43};
|
return new int[] {19, 28, 37, 25, 34, 43};
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,11 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.utils.InventoryBlock;
|
|
||||||
|
|
||||||
public class TrashCan extends SlimefunItem implements InventoryBlock {
|
public class TrashCan extends SlimefunItem implements InventoryBlock {
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ public class TrashCan extends SlimefunItem implements InventoryBlock {
|
|||||||
|
|
||||||
public TrashCan(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public TrashCan(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
createPreset(getID(), "&4Trash Can", this::constructMenu);
|
createPreset(this, "&4Trash Can", this::constructMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void constructMenu(BlockMenuPreset preset) {
|
private void constructMenu(BlockMenuPreset preset) {
|
||||||
@ -43,7 +43,7 @@ public class TrashCan extends SlimefunItem implements InventoryBlock {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -59,8 +59,6 @@ public class TrashCan extends SlimefunItem implements InventoryBlock {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ import org.bukkit.block.Block;
|
|||||||
import org.bukkit.entity.Ageable;
|
import org.bukkit.entity.Ageable;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
@ -17,9 +16,8 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
@ -27,22 +25,18 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.holograms.AnimalGrowthAcceleratorHologram;
|
|
||||||
import me.mrCookieSlime.Slimefun.utils.InventoryBlock;
|
|
||||||
|
|
||||||
public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBlock {
|
public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBlock {
|
||||||
|
|
||||||
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
||||||
|
|
||||||
|
protected int energyConsumption = 14;
|
||||||
|
|
||||||
public AnimalGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public AnimalGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
createPreset(getID(), "&bGrowth Accelerator", this::constructMenu);
|
createPreset(this, "&bGrowth Accelerator", this::constructMenu);
|
||||||
|
|
||||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
registerBlockHandler(name, (p, b, tool, reason) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
AnimalGrowthAcceleratorHologram.remove(b);
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
@ -53,7 +47,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,10 +56,6 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getEnergyConsumption() {
|
|
||||||
return 14;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getInputSlots() {
|
public int[] getInputSlots() {
|
||||||
return new int[] {10, 11, 12, 13, 14, 15, 16};
|
return new int[] {10, 11, 12, 13, 14, 15, 16};
|
||||||
@ -78,7 +67,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -95,26 +84,27 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
for (Entity n : AnimalGrowthAcceleratorHologram.getArmorStand(b, true).getNearbyEntities(3D, 3D, 3D)) {
|
for (Entity n : b.getWorld().getNearbyEntities(b.getLocation(), 3.0, 3.0, 3.0, n -> n instanceof Ageable && n.isValid() && !((Ageable) n).isAdult())) {
|
||||||
if (n instanceof Ageable && !((Ageable) n).isAdult()) {
|
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.ORGANIC_FOOD, false)) {
|
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.ORGANIC_FOOD, false)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < energyConsumption) return;
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
|
||||||
|
ChargableBlock.addCharge(b, -energyConsumption);
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
||||||
((Ageable) n).setAge(((Ageable) n).getAge() + 2000);
|
((Ageable) n).setAge(((Ageable) n).getAge() + 2000);
|
||||||
if (((Ageable) n).getAge() > 0) ((Ageable) n).setAge(0);
|
|
||||||
|
if (((Ageable) n).getAge() > 0) {
|
||||||
|
((Ageable) n).setAge(0);
|
||||||
|
}
|
||||||
|
|
||||||
n.getWorld().spawnParticle(Particle.VILLAGER_HAPPY,((LivingEntity) n).getEyeLocation(), 8, 0.2F, 0.2F, 0.2F);
|
n.getWorld().spawnParticle(Particle.VILLAGER_HAPPY,((LivingEntity) n).getEyeLocation(), 8, 0.2F, 0.2F, 0.2F);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,22 +5,19 @@ import java.util.logging.Level;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Particle;
|
import org.bukkit.Particle;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Animals;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.Animals;
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
@ -28,40 +25,18 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
|
||||||
import me.mrCookieSlime.Slimefun.holograms.AutoBreederHologram;
|
|
||||||
|
|
||||||
public class AutoBreeder extends SlimefunItem {
|
public class AutoBreeder extends SlimefunItem implements InventoryBlock {
|
||||||
|
|
||||||
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
||||||
|
|
||||||
|
protected int energyConsumption = 60;
|
||||||
|
|
||||||
public AutoBreeder(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public AutoBreeder(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
|
createPreset(this, "&6Auto Breeder", this::constructMenu);
|
||||||
|
|
||||||
new BlockMenuPreset(name, "&6Auto Breeder") {
|
registerBlockHandler(name, (p, b, tool, reason) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init() {
|
|
||||||
constructMenu(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canOpen(Block b, Player p) {
|
|
||||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) {
|
|
||||||
if (flow == ItemTransportFlow.INSERT) return getInputSlots();
|
|
||||||
return new int[0];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
AutoBreederHologram.remove(b);
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
@ -72,7 +47,6 @@ public class AutoBreeder extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,16 +56,18 @@ public class AutoBreeder extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getEnergyConsumption() {
|
@Override
|
||||||
return 60;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int[] getInputSlots() {
|
public int[] getInputSlots() {
|
||||||
return new int[] {10, 11, 12, 13, 14, 15, 16};
|
return new int[] {10, 11, 12, 13, 14, 15, 16};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public int[] getOutputSlots() {
|
||||||
|
return new int[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -108,25 +84,23 @@ public class AutoBreeder extends SlimefunItem {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void tick(Block b) throws Exception {
|
protected void tick(Block b) throws Exception {
|
||||||
for (Entity n : AutoBreederHologram.getArmorStand(b, true).getNearbyEntities(4D, 2D, 4D)) {
|
for (Entity n : b.getWorld().getNearbyEntities(b.getLocation(), 4.0, 2.0, 4.0, n -> n instanceof Animals && n.isValid() && ((Animals) n).isAdult() && !((Animals) n).isLoveMode())) {
|
||||||
if (Animals.isFeedable(n)) {
|
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.ORGANIC_FOOD, false)) {
|
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.ORGANIC_FOOD, false)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < energyConsumption) return;
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
|
||||||
|
ChargableBlock.addCharge(b, -energyConsumption);
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
||||||
Animals.feed(n);
|
|
||||||
|
((Animals) n).setLoveModeTicks(600);
|
||||||
n.getWorld().spawnParticle(Particle.HEART,((LivingEntity) n).getEyeLocation(), 8, 0.2F, 0.2F, 0.2F);
|
n.getWorld().spawnParticle(Particle.HEART,((LivingEntity) n).getEyeLocation(), 8, 0.2F, 0.2F, 0.2F);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,41 +16,41 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
|
||||||
|
|
||||||
public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
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) {
|
public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, id, recipeType, recipe);
|
||||||
|
|
||||||
recipes.add(new ItemStack(Material.ROTTEN_FLESH));
|
recipeList.add(new ItemStack(Material.ROTTEN_FLESH));
|
||||||
recipes.add(new ItemStack(Material.LEATHER));
|
recipeList.add(new ItemStack(Material.LEATHER));
|
||||||
|
|
||||||
recipes.add(new ItemStack(Material.WET_SPONGE));
|
recipeList.add(new ItemStack(Material.WET_SPONGE));
|
||||||
recipes.add(new ItemStack(Material.SPONGE));
|
recipeList.add(new ItemStack(Material.SPONGE));
|
||||||
|
|
||||||
recipes.add(new ItemStack(Material.KELP));
|
recipeList.add(new ItemStack(Material.KELP));
|
||||||
recipes.add(new ItemStack(Material.DRIED_KELP));
|
recipeList.add(new ItemStack(Material.DRIED_KELP));
|
||||||
|
|
||||||
recipes.add(new ItemStack(Material.COOKED_BEEF));
|
recipeList.add(new ItemStack(Material.COOKED_BEEF));
|
||||||
recipes.add(SlimefunItems.BEEF_JERKY);
|
recipeList.add(SlimefunItems.BEEF_JERKY);
|
||||||
|
|
||||||
recipes.add(new ItemStack(Material.POTION));
|
recipeList.add(new ItemStack(Material.POTION));
|
||||||
recipes.add(new ItemStack(Material.GLASS_BOTTLE));
|
recipeList.add(new ItemStack(Material.GLASS_BOTTLE));
|
||||||
|
|
||||||
recipes.add(new ItemStack(Material.OAK_SAPLING));
|
recipeList.add(new ItemStack(Material.OAK_SAPLING));
|
||||||
recipes.add(new ItemStack(Material.STICK, 2));
|
recipeList.add(new ItemStack(Material.STICK, 2));
|
||||||
|
|
||||||
recipes.add(new ItemStack(Material.OAK_LEAVES));
|
recipeList.add(new ItemStack(Material.OAK_LEAVES));
|
||||||
recipes.add(new ItemStack(Material.STICK));
|
recipeList.add(new ItemStack(Material.STICK));
|
||||||
|
|
||||||
recipes.add(new ItemStack(Material.WATER_BUCKET));
|
recipeList.add(new ItemStack(Material.WATER_BUCKET));
|
||||||
recipes.add(new ItemStack(Material.BUCKET));
|
recipeList.add(new ItemStack(Material.BUCKET));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -65,7 +65,7 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ItemStack> getDisplayRecipes() {
|
public List<ItemStack> getDisplayRecipes() {
|
||||||
return recipes;
|
return recipeList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -100,9 +100,9 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
|||||||
Material mat = item.getType();
|
Material mat = item.getType();
|
||||||
ItemStack output = null;
|
ItemStack output = null;
|
||||||
|
|
||||||
for (int i = 0; i < recipes.size(); i += 2) {
|
for (int i = 0; i < recipeList.size(); i += 2) {
|
||||||
if (SlimefunManager.isItemSimiliar(item, recipes.get(i), true)) {
|
if (SlimefunManager.isItemSimiliar(item, recipeList.get(i), true)) {
|
||||||
output = recipes.get(i + 1);
|
output = recipeList.get(i + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
@ -31,7 +32,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
|||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.RecipeSorter;
|
import me.mrCookieSlime.Slimefun.api.item_transport.RecipeSorter;
|
||||||
import me.mrCookieSlime.Slimefun.utils.InventoryBlock;
|
|
||||||
|
|
||||||
public abstract class AutomatedCraftingChamber extends SlimefunItem implements InventoryBlock {
|
public abstract class AutomatedCraftingChamber extends SlimefunItem implements InventoryBlock {
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem implements I
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -185,8 +185,6 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem implements I
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@ -11,8 +8,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
|
||||||
|
|
||||||
public abstract class CarbonPress extends AContainer implements RecipeDisplayItem {
|
public abstract class CarbonPress extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
@ -30,23 +26,19 @@ public abstract class CarbonPress extends AContainer implements RecipeDisplayIte
|
|||||||
registerRecipe(90, new ItemStack[] {SlimefunItems.RAW_CARBONADO}, new ItemStack[] {SlimefunItems.CARBONADO});
|
registerRecipe(90, new ItemStack[] {SlimefunItems.RAW_CARBONADO}, new ItemStack[] {SlimefunItems.CARBONADO});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ItemStack> getDisplayRecipes() {
|
|
||||||
List<ItemStack> displayRecipes = new ArrayList<>(recipes.size() * 2);
|
|
||||||
|
|
||||||
for (MachineRecipe recipe: recipes) {
|
|
||||||
displayRecipes.add(recipe.getInput()[0]);
|
|
||||||
displayRecipes.add(recipe.getOutput()[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return displayRecipes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMachineIdentifier() {
|
public String getMachineIdentifier() {
|
||||||
return "CARBON_PRESS";
|
return "CARBON_PRESS";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getProgressBar() {
|
||||||
|
return new ItemStack(Material.DIAMOND_PICKAXE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getInventoryTitle() {
|
||||||
|
return "&cCarbon Press";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.Particle;
|
import org.bukkit.Particle;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.Ageable;
|
import org.bukkit.block.data.Ageable;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
@ -17,9 +16,8 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
@ -27,13 +25,11 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.utils.InventoryBlock;
|
|
||||||
|
|
||||||
public abstract class CropGrowthAccelerator extends SlimefunItem implements InventoryBlock {
|
public abstract class CropGrowthAccelerator extends SlimefunItem implements InventoryBlock {
|
||||||
|
|
||||||
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
||||||
|
private static final Map<Material, Integer> crops = new EnumMap<>(Material.class);
|
||||||
public static final Map<Material, Integer> crops = new EnumMap<>(Material.class);
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
crops.put(Material.WHEAT, 7);
|
crops.put(Material.WHEAT, 7);
|
||||||
@ -47,12 +43,9 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve
|
|||||||
|
|
||||||
public CropGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public CropGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
createPreset(getID(), "&bGrowth Accelerator", this::constructMenu);
|
createPreset(this, "&bGrowth Accelerator", this::constructMenu);
|
||||||
|
|
||||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
registerBlockHandler(name, (p, b, tool, reason) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
@ -63,7 +56,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,7 +82,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -107,8 +99,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
@ -16,10 +16,10 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
|
||||||
|
|
||||||
public abstract class ElectricGoldPan extends AContainer implements RecipeDisplayItem {
|
public abstract class ElectricGoldPan extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@ -11,7 +8,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
|
||||||
public abstract class ElectricIngotFactory extends AContainer implements RecipeDisplayItem {
|
public abstract class ElectricIngotFactory extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
@ -32,21 +29,19 @@ public abstract class ElectricIngotFactory extends AContainer implements RecipeD
|
|||||||
registerRecipe(new MachineRecipe(8, new ItemStack[] {SlimefunItems.ZINC_DUST}, new ItemStack[] {SlimefunItems.ZINC_INGOT}));
|
registerRecipe(new MachineRecipe(8, new ItemStack[] {SlimefunItems.ZINC_DUST}, new ItemStack[] {SlimefunItems.ZINC_INGOT}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ItemStack> getDisplayRecipes() {
|
|
||||||
List<ItemStack> displayRecipes = new ArrayList<>(recipes.size() * 2);
|
|
||||||
|
|
||||||
for (MachineRecipe recipe: recipes) {
|
|
||||||
displayRecipes.add(recipe.getInput()[0]);
|
|
||||||
displayRecipes.add(recipe.getOutput()[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return displayRecipes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMachineIdentifier() {
|
public String getMachineIdentifier() {
|
||||||
return "ELECTRIC_INGOT_FACTORY";
|
return "ELECTRIC_INGOT_FACTORY";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getProgressBar() {
|
||||||
|
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getInventoryTitle() {
|
||||||
|
return "&cElectric Ingot Factory";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
|
||||||
public class ElectricIngotPulverizer extends AContainer implements RecipeDisplayItem {
|
public class ElectricIngotPulverizer extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
|
@ -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";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -16,9 +16,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
@ -82,10 +79,7 @@ public abstract class ElectricSmeltery extends AContainer {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
registerBlockHandler(name, (p, b, tool, reason) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
@ -104,7 +98,6 @@ public abstract class ElectricSmeltery extends AContainer {
|
|||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
processing.remove(b);
|
processing.remove(b);
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.registerDefaultRecipes();
|
this.registerDefaultRecipes();
|
||||||
|
@ -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;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -36,7 +36,7 @@ public class EnergyRegulator extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -49,8 +49,6 @@ public class EnergyRegulator extends SlimefunItem {
|
|||||||
EnergyNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b);
|
EnergyNet.getNetworkFromLocationOrCreate(b.getLocation()).tick(b);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -22,27 +20,25 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.utils.InventoryBlock;
|
|
||||||
|
|
||||||
public class FluidPump extends SlimefunItem implements InventoryBlock {
|
public class FluidPump extends SlimefunItem implements InventoryBlock {
|
||||||
|
|
||||||
public static Map<Block, MachineRecipe> processing = new HashMap<>();
|
|
||||||
public static Map<Block, Integer> progress = new HashMap<>();
|
|
||||||
|
|
||||||
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 22};
|
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 22};
|
||||||
private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30};
|
private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30};
|
||||||
private static final int[] border_out = {14, 15, 16, 17, 23, 26, 32, 33, 34, 35};
|
private static final int[] border_out = {14, 15, 16, 17, 23, 26, 32, 33, 34, 35};
|
||||||
|
|
||||||
|
protected int energyConsumption = 32;
|
||||||
|
|
||||||
public FluidPump(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public FluidPump(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
|
|
||||||
createPreset(getID(), "&9Fluid Pump", this::constructMenu);
|
createPreset(this, "&9Fluid Pump", this::constructMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void constructMenu(BlockMenuPreset preset) {
|
private void constructMenu(BlockMenuPreset preset) {
|
||||||
@ -88,13 +84,13 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
|
|||||||
if (fluid.getType() == Material.LAVA) {
|
if (fluid.getType() == Material.LAVA) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < energyConsumption) return;
|
||||||
|
|
||||||
ItemStack output = new ItemStack(Material.LAVA_BUCKET);
|
ItemStack output = new ItemStack(Material.LAVA_BUCKET);
|
||||||
|
|
||||||
if (!fits(b, output)) return;
|
if (!fits(b, output)) return;
|
||||||
|
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -energyConsumption);
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
||||||
pushItems(b, output);
|
pushItems(b, output);
|
||||||
|
|
||||||
@ -110,13 +106,13 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
|
|||||||
else if (fluid.getType() == Material.WATER) {
|
else if (fluid.getType() == Material.WATER) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < energyConsumption) return;
|
||||||
|
|
||||||
ItemStack output = new ItemStack(Material.WATER_BUCKET);
|
ItemStack output = new ItemStack(Material.WATER_BUCKET);
|
||||||
|
|
||||||
if (!fits(b, output)) return;
|
if (!fits(b, output)) return;
|
||||||
|
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -energyConsumption);
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
||||||
pushItems(b, output);
|
pushItems(b, output);
|
||||||
|
|
||||||
@ -128,12 +124,8 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getEnergyConsumption() {
|
|
||||||
return 32;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -146,8 +138,6 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,13 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import org.bukkit.Material;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
|
||||||
|
|
||||||
public abstract class FoodComposter extends AContainer implements RecipeDisplayItem {
|
public abstract class FoodComposter extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
@ -29,21 +26,19 @@ public abstract class FoodComposter extends AContainer implements RecipeDisplayI
|
|||||||
registerRecipe(30, new ItemStack[] {SlimefunItems.APPLE_ORGANIC_FOOD}, new ItemStack[] {SlimefunItems.APPLE_FERTILIZER});
|
registerRecipe(30, new ItemStack[] {SlimefunItems.APPLE_ORGANIC_FOOD}, new ItemStack[] {SlimefunItems.APPLE_FERTILIZER});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ItemStack> getDisplayRecipes() {
|
|
||||||
List<ItemStack> displayRecipes = new ArrayList<>(recipes.size() * 2);
|
|
||||||
|
|
||||||
for (MachineRecipe recipe: recipes) {
|
|
||||||
displayRecipes.add(recipe.getInput()[0]);
|
|
||||||
displayRecipes.add(recipe.getOutput()[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return displayRecipes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMachineIdentifier() {
|
public String getMachineIdentifier() {
|
||||||
return "FOOD_COMPOSTER";
|
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;
|
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.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
public abstract class FoodFabricator extends AContainer {
|
public abstract class FoodFabricator extends AContainer {
|
||||||
|
|
||||||
public FoodFabricator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public FoodFabricator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
@ -29,4 +29,14 @@ public abstract class FoodFabricator extends AContainer {
|
|||||||
return "FOOD_FABRICATOR";
|
return "FOOD_FABRICATOR";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getProgressBar() {
|
||||||
|
return new ItemStack(Material.GOLDEN_HOE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getInventoryTitle() {
|
||||||
|
return "&cFood Fabricator";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -24,7 +24,8 @@ public abstract class Freezer extends AContainer implements RecipeDisplayItem {
|
|||||||
registerRecipe(2, new ItemStack[] {new ItemStack(Material.WATER_BUCKET)}, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.ICE)});
|
registerRecipe(2, new ItemStack[] {new ItemStack(Material.WATER_BUCKET)}, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.ICE)});
|
||||||
registerRecipe(8, new ItemStack[] {new ItemStack(Material.LAVA_BUCKET)}, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.OBSIDIAN)});
|
registerRecipe(8, new ItemStack[] {new ItemStack(Material.LAVA_BUCKET)}, new ItemStack[] {new ItemStack(Material.BUCKET), new ItemStack(Material.OBSIDIAN)});
|
||||||
registerRecipe(4, new ItemStack[] {new ItemStack(Material.ICE)}, new ItemStack[] {new ItemStack(Material.PACKED_ICE)});
|
registerRecipe(4, new ItemStack[] {new ItemStack(Material.ICE)}, new ItemStack[] {new ItemStack(Material.PACKED_ICE)});
|
||||||
registerRecipe(6, new ItemStack[] {new ItemStack(Material.PACKED_ICE)}, new ItemStack[] {SlimefunItems.REACTOR_COOLANT_CELL});
|
registerRecipe(6, new ItemStack[] {new ItemStack(Material.PACKED_ICE)}, new ItemStack[] {new ItemStack(Material.BLUE_ICE)});
|
||||||
|
registerRecipe(8, new ItemStack[] {new ItemStack(Material.BLUE_ICE)}, new ItemStack[] {SlimefunItems.REACTOR_COOLANT_CELL});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -39,6 +40,16 @@ public abstract class Freezer extends AContainer implements RecipeDisplayItem {
|
|||||||
return displayRecipes;
|
return displayRecipes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getProgressBar() {
|
||||||
|
return new ItemStack(Material.GOLDEN_PICKAXE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getInventoryTitle() {
|
||||||
|
return "&bFreezer";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMachineIdentifier() {
|
public String getMachineIdentifier() {
|
||||||
return "FREEZER";
|
return "FREEZER";
|
||||||
|
@ -117,7 +117,7 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -130,8 +130,6 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -15,10 +15,10 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
|
||||||
|
|
||||||
public abstract class Refinery extends AContainer implements RecipeDisplayItem {
|
public abstract class Refinery extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
|
@ -38,6 +38,8 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
private static final int[] border_1 = {9, 10, 11, 18, 20, 27, 29, 36, 37, 38};
|
private static final int[] border_1 = {9, 10, 11, 18, 20, 27, 29, 36, 37, 38};
|
||||||
private static final int[] border_2 = {15, 16, 17, 24, 26, 33, 35, 42, 43, 44};
|
private static final int[] border_2 = {15, 16, 17, 24, 26, 33, 35, 42, 43, 44};
|
||||||
|
|
||||||
|
protected int energyConsumption = 4096;
|
||||||
|
|
||||||
public WitherAssembler(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public WitherAssembler(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
|
|
||||||
@ -179,14 +181,14 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick(final Block b, SlimefunItem sf, Config data) {
|
public void tick(final Block b, SlimefunItem sf, Config data) {
|
||||||
if (BlockStorage.getLocationInfo(b.getLocation(), "enabled").equals("false")) return;
|
if (BlockStorage.getLocationInfo(b.getLocation(), "enabled").equals("false")) return;
|
||||||
if (lifetime % 60 == 0) {
|
if (lifetime % 60 == 0) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < energyConsumption) return;
|
||||||
|
|
||||||
int soulsand = 0;
|
int soulsand = 0;
|
||||||
int skulls = 0;
|
int skulls = 0;
|
||||||
@ -240,7 +242,7 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -energyConsumption);
|
||||||
|
|
||||||
final double offset = Double.parseDouble(BlockStorage.getLocationInfo(b.getLocation(), "offset"));
|
final double offset = Double.parseDouble(BlockStorage.getLocationInfo(b.getLocation(), "offset"));
|
||||||
|
|
||||||
@ -259,12 +261,6 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getEnergyConsumption() {
|
|
||||||
return 4096;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@ -17,22 +17,23 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.holograms.XPCollectorHologram;
|
|
||||||
import me.mrCookieSlime.Slimefun.utils.InventoryBlock;
|
|
||||||
|
|
||||||
public class XPCollector extends SlimefunItem implements InventoryBlock {
|
public class XPCollector extends SlimefunItem implements InventoryBlock {
|
||||||
|
|
||||||
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
||||||
|
|
||||||
|
protected int energyConsumption = 10;
|
||||||
|
|
||||||
public XPCollector(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public XPCollector(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
createPreset(getID(), "&aEXP Collector", this::constructMenu);
|
createPreset(this, "&aEXP Collector", this::constructMenu);
|
||||||
|
|
||||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
registerBlockHandler(name, new SlimefunBlockHandler() {
|
||||||
|
|
||||||
@ -43,7 +44,6 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||||
XPCollectorHologram.remove(b);
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot: getOutputSlots()) {
|
for (int slot: getOutputSlots()) {
|
||||||
@ -76,12 +76,8 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getEnergyConsumption() {
|
|
||||||
return 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void preRegister() {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -98,21 +94,19 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
super.register(slimefun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
Iterator<Entity> iterator = XPCollectorHologram.getArmorStand(b, true).getNearbyEntities(4D, 4D, 4D).iterator();
|
Iterator<Entity> iterator = b.getWorld().getNearbyEntities(b.getLocation(), 4.0, 4.0, 4.0, n -> n instanceof ExperienceOrb && n.isValid()).iterator();
|
||||||
while (iterator.hasNext()) {
|
int xp = 0;
|
||||||
|
|
||||||
|
while (iterator.hasNext() && xp == 0) {
|
||||||
Entity n = iterator.next();
|
Entity n = iterator.next();
|
||||||
if (n instanceof ExperienceOrb) {
|
if (ChargableBlock.getCharge(b) < energyConsumption) return;
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
|
||||||
|
|
||||||
if (n.isValid()) {
|
xp = getEXP(b) + ((ExperienceOrb) n).getExperience();
|
||||||
int xp = getEXP(b) + ((ExperienceOrb) n).getExperience();
|
|
||||||
|
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -energyConsumption);
|
||||||
n.remove();
|
n.remove();
|
||||||
|
|
||||||
int withdrawn = 0;
|
int withdrawn = 0;
|
||||||
@ -123,10 +117,6 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
BlockStorage.addBlockInfo(b, "stored-exp", String.valueOf(xp - withdrawn));
|
BlockStorage.addBlockInfo(b, "stored-exp", String.valueOf(xp - withdrawn));
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
|||||||
|
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(80, new ItemStack(Material.COAL_BLOCK)));
|
||||||
|
registerFuel(new MachineFuel(12, new ItemStack(Material.BLAZE_ROD)));
|
||||||
|
|
||||||
|
// Coals
|
||||||
|
for (Material mat: Tag.ITEMS_COALS.getValues()) {
|
||||||
|
registerFuel(new MachineFuel(8, new ItemStack(mat)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -50,8 +50,10 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
|
|||||||
|
|
||||||
if (input != null && input.getType() == Material.GRAVEL) {
|
if (input != null && input.getType() == Material.GRAVEL) {
|
||||||
PlayerInventory.consumeItemInHand(p);
|
PlayerInventory.consumeItemInHand(p);
|
||||||
|
|
||||||
for (int i = 1; i < 7; i++) {
|
for (int i = 1; i < 7; i++) {
|
||||||
int j = i;
|
int j = i;
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||||
b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL);
|
b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL);
|
||||||
if (j == 6) {
|
if (j == 6) {
|
||||||
|
@ -29,7 +29,8 @@ public class Juicer extends MultiBlockMachine {
|
|||||||
new ItemStack(Material.APPLE), SlimefunItems.APPLE_JUICE,
|
new ItemStack(Material.APPLE), SlimefunItems.APPLE_JUICE,
|
||||||
new ItemStack(Material.MELON), SlimefunItems.MELON_JUICE,
|
new ItemStack(Material.MELON), SlimefunItems.MELON_JUICE,
|
||||||
new ItemStack(Material.CARROT), SlimefunItems.CARROT_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
|
Material.NETHER_BRICK_FENCE
|
||||||
);
|
);
|
||||||
|
@ -107,7 +107,7 @@ public class MagicWorkbench extends MultiBlockMachine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id.equals("")) {
|
if (id.isEmpty()) {
|
||||||
for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) {
|
for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) {
|
||||||
if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: <ID>"))) {
|
if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: <ID>"))) {
|
||||||
int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID();
|
int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID();
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Tag;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -12,6 +16,8 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|||||||
|
|
||||||
public class TableSaw extends MultiBlockMachine {
|
public class TableSaw extends MultiBlockMachine {
|
||||||
|
|
||||||
|
private final List<ItemStack> displayRecipes = new ArrayList<>();
|
||||||
|
|
||||||
public TableSaw() {
|
public TableSaw() {
|
||||||
super(
|
super(
|
||||||
Categories.MACHINES_1,
|
Categories.MACHINES_1,
|
||||||
@ -21,6 +27,16 @@ public class TableSaw extends MultiBlockMachine {
|
|||||||
new ItemStack[0],
|
new ItemStack[0],
|
||||||
Material.STONECUTTER
|
Material.STONECUTTER
|
||||||
);
|
);
|
||||||
|
|
||||||
|
for (Material log: Tag.LOGS.getValues()) {
|
||||||
|
displayRecipes.add(new ItemStack(log));
|
||||||
|
displayRecipes.add(new ItemStack(MaterialHelper.getWoodFromLog(log), 8));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ItemStack> getDisplayRecipes() {
|
||||||
|
return displayRecipes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.handlers;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.entity.EntityDeathEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface EntityKillHandler extends ItemHandler {
|
||||||
|
|
||||||
|
boolean onKill(EntityDeathEvent e, Entity entity, Player killer, ItemStack item);
|
||||||
|
|
||||||
|
default String toCodename() {
|
||||||
|
return "EntityKillHandler";
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.handlers;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Item;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface ItemDropHandler extends ItemHandler {
|
||||||
|
|
||||||
|
boolean onItemDrop(PlayerDropItemEvent e, Player p, Item item);
|
||||||
|
|
||||||
|
default String toCodename() {
|
||||||
|
return "ItemDropHandler";
|
||||||
|
}
|
||||||
|
}
|
@ -25,7 +25,7 @@ public class JetBootsTask extends SlimefunTask {
|
|||||||
Player p = Bukkit.getPlayer(uuid);
|
Player p = Bukkit.getPlayer(uuid);
|
||||||
float cost = 0.075F;
|
float cost = 0.075F;
|
||||||
float charge = ItemEnergy.getStoredEnergy(p.getInventory().getBoots());
|
float charge = ItemEnergy.getStoredEnergy(p.getInventory().getBoots());
|
||||||
double accuracy = Double.parseDouble(new DecimalFormat("##.##").format(speed - 0.7).replace(",", "."));
|
double accuracy = Double.parseDouble(new DecimalFormat("##.##").format(speed - 0.7).replace(',', '.'));
|
||||||
if (charge >= cost) {
|
if (charge >= cost) {
|
||||||
p.getInventory().setBoots(ItemEnergy.chargeItem(p.getInventory().getBoots(), -cost));
|
p.getInventory().setBoots(ItemEnergy.chargeItem(p.getInventory().getBoots(), -cost));
|
||||||
PlayerInventory.update(p);
|
PlayerInventory.update(p);
|
||||||
|
@ -56,6 +56,8 @@ public final class Messages {
|
|||||||
local.setDefault("messages.talisman.knight", "&a&oYour Talisman gave you 5 Seconds of Regeneration");
|
local.setDefault("messages.talisman.knight", "&a&oYour Talisman gave you 5 Seconds of Regeneration");
|
||||||
local.setDefault("messages.talisman.whirlwind", "&a&oYour Talisman reflected the Projectile");
|
local.setDefault("messages.talisman.whirlwind", "&a&oYour Talisman reflected the Projectile");
|
||||||
local.setDefault("messages.talisman.wizard", "&a&oYour Talisman has given you a better Fortune Level but maybe also lowered some other Enchantment Levels");
|
local.setDefault("messages.talisman.wizard", "&a&oYour Talisman has given you a better Fortune Level but maybe also lowered some other Enchantment Levels");
|
||||||
|
local.setDefault("messages.soulbound-rune.fail", "&cYou can only bind one item to your soul at a time.");
|
||||||
|
local.setDefault("messages.soulbound-rune.success", "&aYou have successfully bound this item to your soul! You will keep it when you die.");
|
||||||
local.setDefault("messages.broken-leg", "&c&oSeems like you broke your Leg, maybe a Splint could help?");
|
local.setDefault("messages.broken-leg", "&c&oSeems like you broke your Leg, maybe a Splint could help?");
|
||||||
local.setDefault("messages.fixed-leg", "&a&oThe Splint helps. It feels better now.");
|
local.setDefault("messages.fixed-leg", "&a&oThe Splint helps. It feels better now.");
|
||||||
local.setDefault("messages.start-bleeding", "&c&oYou started to bleed. Maybe a Bandage could help?");
|
local.setDefault("messages.start-bleeding", "&c&oYou started to bleed. Maybe a Bandage could help?");
|
||||||
|
@ -49,7 +49,7 @@ public final class MiscSetup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void loadItems(Settings settings) {
|
public static void loadItems(Settings settings) {
|
||||||
Iterator<SlimefunItem> iterator = SlimefunItem.items.iterator();
|
Iterator<SlimefunItem> iterator = SlimefunItem.list().iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
SlimefunItem item = iterator.next();
|
SlimefunItem item = iterator.next();
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
|
@ -243,5 +243,6 @@ public final class ResearchSetup {
|
|||||||
Slimefun.registerResearch(new Research(243, "A Dry Day", 15), SlimefunItems.AUTO_DRIER);
|
Slimefun.registerResearch(new Research(243, "A Dry Day", 15), SlimefunItems.AUTO_DRIER);
|
||||||
Slimefun.registerResearch(new Research(244, "Diet Cookie", 3), SlimefunItems.DIET_COOKIE);
|
Slimefun.registerResearch(new Research(244, "Diet Cookie", 3), SlimefunItems.DIET_COOKIE);
|
||||||
Slimefun.registerResearch(new Research(245, "Storm Staff", 30), SlimefunItems.STAFF_STORM);
|
Slimefun.registerResearch(new Research(245, "Storm Staff", 30), SlimefunItems.STAFF_STORM);
|
||||||
|
Slimefun.registerResearch(new Research(246, "Soulbound Rune", 60), SlimefunItems.RUNE_SOULBOUND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,15 +3,24 @@ package me.mrCookieSlime.Slimefun.Setup;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants;
|
||||||
|
import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
|
||||||
public final class SlimefunManager {
|
public final class SlimefunManager {
|
||||||
|
|
||||||
@ -116,14 +125,41 @@ public final class SlimefunManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean equalsLore(List<String> lore, List<String> lore2) {
|
private static boolean equalsLore(List<String> lore, List<String> lore2) {
|
||||||
String string1 = "";
|
StringBuilder string1 = new StringBuilder();
|
||||||
String string2 = "";
|
StringBuilder string2 = new StringBuilder();
|
||||||
|
|
||||||
|
String colors = ChatColor.YELLOW.toString() + ChatColor.YELLOW.toString() + ChatColor.GRAY.toString();
|
||||||
for (String string: lore) {
|
for (String string: lore) {
|
||||||
if (!string.startsWith("&e&e&7")) string1 = string1 + "-NEW LINE-" + string;
|
if (!string.equals(ChatColor.GRAY + "Soulbound") && !string.startsWith(colors)) string1.append("-NEW LINE-").append(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String string: lore2) {
|
for (String string: lore2) {
|
||||||
if (!string.startsWith("&e&e&7")) string2 = string2 + "-NEW LINE-" + string;
|
if (!string.equals(ChatColor.GRAY + "Soulbound") && !string.startsWith(colors)) string2.append("-NEW LINE-").append(string);
|
||||||
|
}
|
||||||
|
return string1.toString().equals(string2.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isItemSoulbound(ItemStack item) {
|
||||||
|
if (item == null || item.getType() == Material.AIR) return false;
|
||||||
|
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BOUND_BACKPACK, false)) return true;
|
||||||
|
else {
|
||||||
|
ItemStack strippedItem = item.clone();
|
||||||
|
|
||||||
|
for (Enchantment enchantment : item.getEnchantments().keySet()) {
|
||||||
|
strippedItem.removeEnchantment(enchantment);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SlimefunPlugin.getHooks().isEmeraldEnchantsInstalled()) {
|
||||||
|
for (ItemEnchantment enchantment : EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)){
|
||||||
|
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(strippedItem, enchantment.getEnchantment(), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (SlimefunItem.getByItem(strippedItem) instanceof SoulboundItem) return true;
|
||||||
|
else if (item.hasItemMeta()) {
|
||||||
|
ItemMeta im = item.getItemMeta();
|
||||||
|
return (im.hasLore() && im.getLore().contains(ChatColor.GRAY + "Soulbound"));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return string1.equals(string2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,37 +23,28 @@ import org.bukkit.block.CreatureSpawner;
|
|||||||
import org.bukkit.entity.EnderPearl;
|
import org.bukkit.entity.EnderPearl;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Item;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||||
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent;
|
import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Block.TreeCalculator;
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Block.Vein;
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator;
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils;
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.GPS.Elevator;
|
|
||||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
||||||
import me.mrCookieSlime.Slimefun.GPS.NetworkStatus;
|
import me.mrCookieSlime.Slimefun.GPS.NetworkStatus;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
@ -65,7 +56,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedBlock;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedSoulboundTool;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedSoulboundTool;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedTool;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.JetBoots;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.JetBoots;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Jetpack;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Jetpack;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice;
|
||||||
@ -83,28 +73,37 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
|
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.AGenerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode;
|
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.cargo.CargoOutputNode;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GoldPan;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GoldPan;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HerculesPickaxe;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HunterTalisman;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.InfernalBonemeal;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.InfernalBonemeal;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeFlask;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeFlask;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeTome;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeTome;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.LumberAxe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfContainment;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfVeinMining;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SmeltersPickaxe;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SoulboundRune;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff;
|
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.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.BlockPlacer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible;
|
||||||
@ -112,7 +111,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AnimalGrowthAccelerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AnimalGrowthAccelerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoAnvil;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoAnvil;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoBreeder;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoBreeder;
|
||||||
@ -128,8 +126,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.ElectricGoldPan;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotFactory;
|
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.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.ElectricSmeltery;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectrifiedCrucible;
|
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.EnergyRegulator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPump;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPump;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter;
|
||||||
@ -140,6 +140,10 @@ 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.OilPump;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Refinery;
|
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.WitherAssembler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.XPCollector;
|
||||||
|
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.ArmorForge;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor;
|
||||||
@ -152,7 +156,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.TableSaw;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.TableSaw;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
|
||||||
@ -160,7 +163,6 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker;
|
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.AndroidType;
|
||||||
import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid;
|
import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
@ -168,7 +170,6 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
||||||
import me.mrCookieSlime.Slimefun.holograms.CargoHologram;
|
|
||||||
import me.mrCookieSlime.Slimefun.holograms.ReactorHologram;
|
import me.mrCookieSlime.Slimefun.holograms.ReactorHologram;
|
||||||
|
|
||||||
public final class SlimefunSetup {
|
public final class SlimefunSetup {
|
||||||
@ -341,7 +342,7 @@ public final class SlimefunSetup {
|
|||||||
new PotionEffect[] {new PotionEffect(PotionEffectType.JUMP, 300, 5)})
|
new PotionEffect[] {new PotionEffect(PotionEffectType.JUMP, 300, 5)})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.WEAPONS, SlimefunItems.SWORD_OF_BEHEADING, "SWORD_OF_BEHEADING", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SwordOfBeheading(Categories.WEAPONS, SlimefunItems.SWORD_OF_BEHEADING, "SWORD_OF_BEHEADING", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.EMERALD), SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.BLAZE_ROD), null}, new String[] {"chance.PLAYER", "chance.SKELETON", "chance.WITHER_SKELETON", "chance.ZOMBIE", "chance.CREEPER"}, new Integer[] {70, 40, 25, 40, 40})
|
new ItemStack[] {null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.EMERALD), SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.BLAZE_ROD), null}, new String[] {"chance.PLAYER", "chance.SKELETON", "chance.WITHER_SKELETON", "chance.ZOMBIE", "chance.CREEPER"}, new Integer[] {70, 40, 25, 40, 40})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
@ -774,34 +775,9 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.STAFF_WATER, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING})
|
new ItemStack[] {SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.STAFF_WATER, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.TOOLS, SlimefunItems.AUTO_SMELT_PICKAXE, "SMELTERS_PICKAXE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SmeltersPickaxe(Categories.TOOLS, SlimefunItems.AUTO_SMELT_PICKAXE, "SMELTERS_PICKAXE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null})
|
new ItemStack[] {SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null})
|
||||||
.register(true, new BlockBreakHandler() {
|
.register(true);
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) {
|
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.AUTO_SMELT_PICKAXE, true)) {
|
|
||||||
if (BlockStorage.hasBlockInfo(e.getBlock())) return true;
|
|
||||||
if (e.getBlock().getType() == Material.PLAYER_HEAD) return true;
|
|
||||||
|
|
||||||
int j = -1;
|
|
||||||
List<ItemStack> dropsList = (List<ItemStack>) e.getBlock().getDrops();
|
|
||||||
for (int i = 0; i < dropsList.size(); i++) {
|
|
||||||
if (dropsList.get(i) != null) {
|
|
||||||
j++;
|
|
||||||
drops.add(e.getBlock().getType().toString().endsWith("_ORE") ? new CustomItem(dropsList.get(i), fortune): dropsList.get(i));
|
|
||||||
if (RecipeCalculator.getSmeltedOutput(drops.get(i).getType()) != null) {
|
|
||||||
e.getBlock().getWorld().playEffect(e.getBlock().getLocation(), Effect.MOBSPAWNER_FLAMES, 1);
|
|
||||||
drops.set(j, new CustomItem(RecipeCalculator.getSmeltedOutput(drops.get(i).getType()), drops.get(i).getAmount()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.TALISMAN, "COMMON_TALISMAN", RecipeType.MAGIC_WORKBENCH,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.TALISMAN, "COMMON_TALISMAN", RecipeType.MAGIC_WORKBENCH,
|
||||||
new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2},
|
new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2},
|
||||||
@ -818,7 +794,7 @@ public final class SlimefunSetup {
|
|||||||
false, false, "miner", 20)
|
false, false, "miner", 20)
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new Talisman(SlimefunItems.TALISMAN_HUNTER, "HUNTER_TALISMAN",
|
new HunterTalisman(SlimefunItems.TALISMAN_HUNTER, "HUNTER_TALISMAN",
|
||||||
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.MONSTER_JERKY, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3},
|
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.MONSTER_JERKY, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3},
|
||||||
false, false, "hunter", 20)
|
false, false, "hunter", 20)
|
||||||
.register(true);
|
.register(true);
|
||||||
@ -883,33 +859,9 @@ public final class SlimefunSetup {
|
|||||||
false, false, "wizard", 60)
|
false, false, "wizard", 60)
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new ExcludedTool(Categories.TOOLS, SlimefunItems.LUMBER_AXE, "LUMBER_AXE", RecipeType.MAGIC_WORKBENCH,
|
new LumberAxe(Categories.TOOLS, SlimefunItems.LUMBER_AXE, "LUMBER_AXE", RecipeType.MAGIC_WORKBENCH,
|
||||||
new ItemStack[] {SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.SYNTHETIC_DIAMOND, null, SlimefunItems.SYNTHETIC_EMERALD, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null})
|
new ItemStack[] {SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.SYNTHETIC_DIAMOND, null, SlimefunItems.SYNTHETIC_EMERALD, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null})
|
||||||
.register(true, new BlockBreakHandler() {
|
.register(true);
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) {
|
|
||||||
if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.LUMBER_AXE, true)) {
|
|
||||||
if (MaterialHelper.isLog( e.getBlock().getType())) {
|
|
||||||
List<Location> logs = new ArrayList<>();
|
|
||||||
TreeCalculator.getTree(e.getBlock().getLocation(), e.getBlock().getLocation(), logs);
|
|
||||||
|
|
||||||
if (logs.contains(e.getBlock().getLocation())) logs.remove(e.getBlock().getLocation());
|
|
||||||
for (Location b: logs) {
|
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b.getBlock())) {
|
|
||||||
b.getWorld().playEffect(b, Effect.STEP_SOUND, b.getBlock().getType());
|
|
||||||
for (ItemStack drop: b.getBlock().getDrops()) {
|
|
||||||
b.getWorld().dropItemNaturally(b, drop);
|
|
||||||
}
|
|
||||||
b.getBlock().setType(Material.AIR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.SALT, "SALT", RecipeType.ORE_WASHER,
|
new SlimefunItem(Categories.MISC, SlimefunItems.SALT, "SALT", RecipeType.ORE_WASHER,
|
||||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.SAND, 4), null, null, null, null})
|
new ItemStack[] {null, null, null, null, new ItemStack(Material.SAND, 4), null, null, null, null})
|
||||||
@ -1053,8 +1005,8 @@ public final class SlimefunSetup {
|
|||||||
if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS);
|
if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS);
|
||||||
if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION);
|
if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION);
|
||||||
if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS);
|
if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS);
|
||||||
p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2));
|
|
||||||
p.setFireTicks(0);
|
p.setFireTicks(0);
|
||||||
|
p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2));
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1089,63 +1041,13 @@ public final class SlimefunSetup {
|
|||||||
new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 20)})
|
new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 20)})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.TOOLS, SlimefunItems.PICKAXE_OF_CONTAINMENT, "PICKAXE_OF_CONTAINMENT", RecipeType.MAGIC_WORKBENCH,
|
new PickaxeOfContainment(Categories.TOOLS, SlimefunItems.PICKAXE_OF_CONTAINMENT, "PICKAXE_OF_CONTAINMENT", RecipeType.MAGIC_WORKBENCH,
|
||||||
new ItemStack[] {SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null})
|
new ItemStack[] {SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null})
|
||||||
.register(true, new BlockBreakHandler() {
|
.register(true);
|
||||||
|
|
||||||
@Override
|
new HerculesPickaxe(Categories.TOOLS, SlimefunItems.HERCULES_PICKAXE, "HERCULES_PICKAXE", RecipeType.MAGIC_WORKBENCH,
|
||||||
public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) {
|
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.PICKAXE_OF_CONTAINMENT, true)) {
|
|
||||||
// Refactored it into this so we don't need to call e.getBlock() all the time.
|
|
||||||
Block b = e.getBlock();
|
|
||||||
if (b.getType() != Material.SPAWNER) return true;
|
|
||||||
|
|
||||||
// If the spawner's BlockStorage has BlockInfo, then it's not a vanilla spawner and shouldn't give a broken spawner.
|
|
||||||
ItemStack spawner = SlimefunItems.BROKEN_SPAWNER.clone();
|
|
||||||
if (BlockStorage.hasBlockInfo(b)) {
|
|
||||||
spawner = SlimefunItems.REPAIRED_SPAWNER.clone();
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemMeta im = spawner.getItemMeta();
|
|
||||||
List<String> lore = im.getLore();
|
|
||||||
|
|
||||||
for (int i = 0; i < lore.size(); i++) {
|
|
||||||
if (lore.get(i).contains("<Type>")) lore.set(i, lore.get(i).replace("<Type>", StringUtils.format(((CreatureSpawner) b.getState()).getSpawnedType().toString())));
|
|
||||||
}
|
|
||||||
|
|
||||||
im.setLore(lore);
|
|
||||||
spawner.setItemMeta(im);
|
|
||||||
b.getLocation().getWorld().dropItemNaturally(b.getLocation(), spawner);
|
|
||||||
e.setExpToDrop(0);
|
|
||||||
e.setDropItems(false);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (e.getBlock().getType() == Material.SPAWNER) e.setDropItems(false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SlimefunItem(Categories.TOOLS, SlimefunItems.HERCULES_PICKAXE, "HERCULES_PICKAXE", RecipeType.MAGIC_WORKBENCH,
|
|
||||||
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null})
|
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null})
|
||||||
.register(true, new BlockBreakHandler() {
|
.register(true);
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) {
|
|
||||||
if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.HERCULES_PICKAXE, true) && e.getBlock().getType().toString().endsWith("_ORE")) {
|
|
||||||
if (e.getBlock().getType() == Material.IRON_ORE) drops.add(new CustomItem(SlimefunItems.IRON_DUST, 2));
|
|
||||||
else if (e.getBlock().getType() == Material.GOLD_ORE) drops.add(new CustomItem(SlimefunItems.GOLD_DUST, 2));
|
|
||||||
else {
|
|
||||||
for (ItemStack drop: e.getBlock().getDrops()) {
|
|
||||||
drops.add(new CustomItem(drop, 2));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new TableSaw().register();
|
new TableSaw().register();
|
||||||
|
|
||||||
@ -1202,6 +1104,7 @@ public final class SlimefunSetup {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onInteract(final Player p, MultiBlock mb, final Block b) {
|
public boolean onInteract(final Player p, MultiBlock mb, final Block b) {
|
||||||
if (mb.isMultiBlock(SlimefunItem.getByID("DIGITAL_MINER"))) {
|
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)) {
|
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.DIGITAL_MINER, true)) {
|
||||||
Block chestBlock = b.getRelative(BlockFace.UP);
|
Block chestBlock = b.getRelative(BlockFace.UP);
|
||||||
|
|
||||||
@ -1259,6 +1162,7 @@ public final class SlimefunSetup {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onInteract(final Player p, MultiBlock mb, final Block b) {
|
public boolean onInteract(final Player p, MultiBlock mb, final Block b) {
|
||||||
if (mb.isMultiBlock(SlimefunItem.getByID("ADVANCED_DIGITAL_MINER"))) {
|
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)) {
|
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.ADVANCED_DIGITAL_MINER, true)) {
|
||||||
Block chestBlock = b.getRelative(BlockFace.UP);
|
Block chestBlock = b.getRelative(BlockFace.UP);
|
||||||
|
|
||||||
@ -1495,30 +1399,9 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.STAFF_ELEMENTAL, null, null, SlimefunItems.STAFF_ELEMENTAL, null})
|
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.STAFF_ELEMENTAL, null, null, SlimefunItems.STAFF_ELEMENTAL, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.TOOLS, SlimefunItems.PICKAXE_OF_VEIN_MINING, "PICKAXE_OF_VEIN_MINING", RecipeType.MAGIC_WORKBENCH,
|
new PickaxeOfVeinMining(Categories.TOOLS, SlimefunItems.PICKAXE_OF_VEIN_MINING, "PICKAXE_OF_VEIN_MINING", RecipeType.MAGIC_WORKBENCH,
|
||||||
new ItemStack[] {new ItemStack(Material.EMERALD_ORE), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.EMERALD_ORE), null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null})
|
new ItemStack[] {new ItemStack(Material.EMERALD_ORE), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.EMERALD_ORE), null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null})
|
||||||
.register(true, new BlockBreakHandler() {
|
.register(true);
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) {
|
|
||||||
if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.PICKAXE_OF_VEIN_MINING, true)) {
|
|
||||||
if (e.getBlock().getType().toString().endsWith("_ORE")) {
|
|
||||||
List<Location> blocks = new ArrayList<>();
|
|
||||||
Vein.calculate(e.getBlock().getLocation(), e.getBlock().getLocation(), blocks, 16);
|
|
||||||
for (Location block: blocks) {
|
|
||||||
Block b = block.getBlock();
|
|
||||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
|
|
||||||
for (ItemStack drop: b.getDrops()) {
|
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), drop.getType().isBlock() ? drop: new CustomItem(drop, fortune));
|
|
||||||
}
|
|
||||||
b.setType(Material.AIR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SoulboundItem(Categories.WEAPONS, SlimefunItems.SOULBOUND_SWORD, "SOULBOUND_SWORD",
|
new SoulboundItem(Categories.WEAPONS, SlimefunItems.SOULBOUND_SWORD, "SOULBOUND_SWORD",
|
||||||
new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_SWORD), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null})
|
new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_SWORD), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null})
|
||||||
@ -1579,7 +1462,7 @@ public final class SlimefunSetup {
|
|||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new Juice(Categories.FOOD, SlimefunItems.GOLDEN_APPLE_JUICE, "GOLDEN_APPLE_JUICE", RecipeType.JUICER,
|
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);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.BROKEN_SPAWNER, "BROKEN_SPAWNER", new RecipeType(SlimefunItems.PICKAXE_OF_CONTAINMENT),
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.BROKEN_SPAWNER, "BROKEN_SPAWNER", new RecipeType(SlimefunItems.PICKAXE_OF_CONTAINMENT),
|
||||||
@ -1588,16 +1471,13 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
new SlimefunItem(Categories.MAGIC, SlimefunItems.REPAIRED_SPAWNER, "REINFORCED_SPAWNER", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.MAGIC, SlimefunItems.REPAIRED_SPAWNER, "REINFORCED_SPAWNER", RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {SlimefunItems.RUNE_ENDER, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.ESSENCE_OF_AFTERLIFE, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.BROKEN_SPAWNER, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.ESSENCE_OF_AFTERLIFE, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.RUNE_ENDER})
|
new ItemStack[] {SlimefunItems.RUNE_ENDER, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.ESSENCE_OF_AFTERLIFE, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.BROKEN_SPAWNER, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.ESSENCE_OF_AFTERLIFE, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.RUNE_ENDER})
|
||||||
.register(true, new BlockPlaceHandler() {
|
.register(true, (BlockPlaceHandler) (e, item) -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBlockPlace(BlockPlaceEvent e, ItemStack item) {
|
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REPAIRED_SPAWNER, false)) {
|
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REPAIRED_SPAWNER, false)) {
|
||||||
EntityType type = null;
|
EntityType type = null;
|
||||||
for (String line: item.getItemMeta().getLore()) {
|
for (String line: item.getItemMeta().getLore()) {
|
||||||
if (ChatColor.stripColor(line).startsWith("Type: ") && !line.contains("<Type>"))
|
if (ChatColor.stripColor(line).startsWith("Type: ") && !line.contains("<Type>"))
|
||||||
type = EntityType.valueOf(ChatColor.stripColor(line).replace("Type: ", "").replace(" ", "_").toUpperCase());
|
type = EntityType.valueOf(ChatColor.stripColor(line).replace("Type: ", "")
|
||||||
|
.replace(' ', '_').toUpperCase());
|
||||||
}
|
}
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
CreatureSpawner spawner = (CreatureSpawner) e.getBlock().getState();
|
CreatureSpawner spawner = (CreatureSpawner) e.getBlock().getState();
|
||||||
@ -1607,7 +1487,6 @@ public final class SlimefunSetup {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else return false;
|
else return false;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
new EnhancedFurnace(1, 1, 1, SlimefunItems.ENHANCED_FURNACE, "ENHANCED_FURNACE",
|
new EnhancedFurnace(1, 1, 1, SlimefunItems.ENHANCED_FURNACE, "ENHANCED_FURNACE",
|
||||||
@ -1849,24 +1728,10 @@ public final class SlimefunSetup {
|
|||||||
new CustomItem(SlimefunItems.WITHER_PROOF_OBSIDIAN, 4))
|
new CustomItem(SlimefunItems.WITHER_PROOF_OBSIDIAN, 4))
|
||||||
.register(true);
|
.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))
|
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);
|
.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 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)})
|
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);
|
.register(true);
|
||||||
@ -2135,16 +2000,6 @@ public final class SlimefunSetup {
|
|||||||
new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY, "ELECTRIC_INGOT_FACTORY", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 4;
|
return 4;
|
||||||
@ -2160,16 +2015,6 @@ public final class SlimefunSetup {
|
|||||||
new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, "ELECTRIC_INGOT_FACTORY_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 7;
|
return 7;
|
||||||
@ -2185,16 +2030,6 @@ public final class SlimefunSetup {
|
|||||||
new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_3, "ELECTRIC_INGOT_FACTORY_3", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 20;
|
return 20;
|
||||||
@ -2252,19 +2087,9 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 1024);
|
}.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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 6;
|
return 6;
|
||||||
@ -2275,26 +2100,11 @@ public final class SlimefunSetup {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getMachineIdentifier() {
|
|
||||||
return "ELECTRIC_ORE_GRINDER";
|
|
||||||
}
|
|
||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 15;
|
return 15;
|
||||||
@ -2305,21 +2115,11 @@ public final class SlimefunSetup {
|
|||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getMachineIdentifier() {
|
|
||||||
return "ELECTRIC_ORE_GRINDER";
|
|
||||||
}
|
|
||||||
|
|
||||||
}.registerChargeableBlock(true, 512);
|
}.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER, "HEATED_PRESSURE_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 5;
|
return 5;
|
||||||
@ -2335,11 +2135,6 @@ public final class SlimefunSetup {
|
|||||||
new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER_2, "HEATED_PRESSURE_CHAMBER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 22;
|
return 22;
|
||||||
@ -2356,43 +2151,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})
|
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);
|
.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}) {
|
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
|
@Override
|
||||||
public int getEnergyProduction() {
|
public int getEnergyProduction() {
|
||||||
return 8;
|
return 8;
|
||||||
@ -2400,6 +2161,16 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerUnrechargeableBlock(true, 64);
|
}.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 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}) {
|
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}) {
|
||||||
|
|
||||||
@ -3014,6 +2785,10 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.CYAN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_ENDER, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.YELLOW_DYE), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.MAGENTA_DYE)})
|
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.CYAN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_ENDER, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.YELLOW_DYE), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.MAGENTA_DYE)})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
|
new SoulboundRune(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_SOULBOUND, "ANCIENT_RUNE_SOULBOUND", RecipeType.ANCIENT_ALTAR,
|
||||||
|
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3})
|
||||||
|
.register(true);
|
||||||
|
|
||||||
new InfernalBonemeal(Categories.MAGIC, SlimefunItems.INFERNAL_BONEMEAL, "INFERNAL_BONEMEAL", RecipeType.ANCIENT_ALTAR,
|
new InfernalBonemeal(Categories.MAGIC, SlimefunItems.INFERNAL_BONEMEAL, "INFERNAL_BONEMEAL", RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.NETHER_WART), SlimefunItems.RUNE_EARTH, new ItemStack(Material.NETHER_WART), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.BONE_MEAL), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.NETHER_WART), new ItemStack(Material.BLAZE_POWDER), new ItemStack(Material.NETHER_WART)}, new CustomItem(SlimefunItems.INFERNAL_BONEMEAL, 8))
|
new ItemStack[] {new ItemStack(Material.NETHER_WART), SlimefunItems.RUNE_EARTH, new ItemStack(Material.NETHER_WART), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.BONE_MEAL), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.NETHER_WART), new ItemStack(Material.BLAZE_POWDER), new ItemStack(Material.NETHER_WART)}, new CustomItem(SlimefunItems.INFERNAL_BONEMEAL, 8))
|
||||||
.register(true);
|
.register(true);
|
||||||
@ -3165,24 +2940,9 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.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}) {
|
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
|
@Override
|
||||||
public int getEnergyProduction() {
|
public int getEnergyProduction() {
|
||||||
return 10;
|
return 10;
|
||||||
@ -3190,25 +2950,19 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerUnrechargeableBlock(true, 512);
|
}.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}) {
|
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
|
@Override
|
||||||
public int getEnergyProduction() {
|
public int getEnergyProduction() {
|
||||||
return 12;
|
return 12;
|
||||||
@ -3272,49 +3026,14 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM, null, null, null, null, null, null, null})
|
new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.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 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))
|
new CustomItem(SlimefunItems.ELEVATOR, 2))
|
||||||
.register(true, new ItemInteractionHandler() {
|
.register(true);
|
||||||
|
|
||||||
@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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR, "FOOD_FABRICATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 7;
|
return 7;
|
||||||
@ -3330,16 +3049,6 @@ public final class SlimefunSetup {
|
|||||||
new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR_2, "FOOD_FABRICATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 24;
|
return 24;
|
||||||
@ -3395,16 +3104,6 @@ public final class SlimefunSetup {
|
|||||||
new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER, "FOOD_COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 8;
|
return 8;
|
||||||
@ -3420,16 +3119,6 @@ public final class SlimefunSetup {
|
|||||||
new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER_2, "FOOD_COMPOSTER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 26;
|
return 26;
|
||||||
@ -3471,8 +3160,7 @@ public final class SlimefunSetup {
|
|||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR, "CROP_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
@ -3492,8 +3180,7 @@ public final class SlimefunSetup {
|
|||||||
}.registerChargeableBlock(true, 1024);
|
}.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR_2, "CROP_GROWTH_ACCELERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
@ -3515,16 +3202,6 @@ public final class SlimefunSetup {
|
|||||||
new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER, "FREEZER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 9;
|
return 9;
|
||||||
@ -3540,16 +3217,6 @@ public final class SlimefunSetup {
|
|||||||
new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER_2, "FREEZER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 15;
|
return 15;
|
||||||
@ -3563,7 +3230,7 @@ public final class SlimefunSetup {
|
|||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new SlimefunItem(Categories.TECH_MISC, SlimefunItems.REACTOR_COOLANT_CELL, "REACTOR_COOLANT_CELL", new RecipeType(SlimefunItems.FREEZER),
|
new SlimefunItem(Categories.TECH_MISC, SlimefunItems.REACTOR_COOLANT_CELL, "REACTOR_COOLANT_CELL", new RecipeType(SlimefunItems.FREEZER),
|
||||||
new ItemStack[] {new ItemStack(Material.PACKED_ICE), null, null, null, null, null, null, null, null})
|
new ItemStack[] {new ItemStack(Material.BLUE_ICE), null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.TECH_MISC, SlimefunItems.NETHER_ICE_COOLANT_CELL, "NETHER_ICE_COOLANT_CELL", new RecipeType(SlimefunItems.HEATED_PRESSURE_CHAMBER),
|
new SlimefunItem(Categories.TECH_MISC, SlimefunItems.NETHER_ICE_COOLANT_CELL, "NETHER_ICE_COOLANT_CELL", new RecipeType(SlimefunItems.HEATED_PRESSURE_CHAMBER),
|
||||||
@ -3676,49 +3343,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))
|
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);
|
.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})
|
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() {
|
.register(true);
|
||||||
|
|
||||||
@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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_NODE, "CARGO_NODE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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))
|
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))
|
||||||
@ -3778,16 +3405,6 @@ public final class SlimefunSetup {
|
|||||||
new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS, "CARBON_PRESS", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 10;
|
return 10;
|
||||||
@ -3803,16 +3420,6 @@ public final class SlimefunSetup {
|
|||||||
new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_2, "CARBON_PRESS_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 25;
|
return 25;
|
||||||
@ -3828,16 +3435,6 @@ public final class SlimefunSetup {
|
|||||||
new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_3, "CARBON_PRESS_3", RecipeType.ENHANCED_CRAFTING_TABLE,
|
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}) {
|
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
|
@Override
|
||||||
public int getEnergyConsumption() {
|
public int getEnergyConsumption() {
|
||||||
return 90;
|
return 90;
|
||||||
|
@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -42,6 +43,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.GuideHandler;
|
import me.mrCookieSlime.Slimefun.api.GuideHandler;
|
||||||
@ -50,13 +52,13 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout;
|
import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout;
|
||||||
import me.mrCookieSlime.Slimefun.hooks.github.Contributor;
|
import me.mrCookieSlime.Slimefun.hooks.github.Contributor;
|
||||||
import me.mrCookieSlime.Slimefun.hooks.github.IntegerFormat;
|
import me.mrCookieSlime.Slimefun.hooks.github.IntegerFormat;
|
||||||
import me.mrCookieSlime.Slimefun.utils.RecipeDisplayItem;
|
|
||||||
|
|
||||||
public final class SlimefunGuide {
|
public final class SlimefunGuide {
|
||||||
|
|
||||||
private SlimefunGuide() {}
|
private SlimefunGuide() {}
|
||||||
|
|
||||||
private static final int category_size = 36;
|
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
|
@Deprecated
|
||||||
public static ItemStack getItem() {
|
public static ItemStack getItem() {
|
||||||
@ -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");
|
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) {
|
public static void openSettings(Player p, final ItemStack guide) {
|
||||||
final ChestMenu menu = new ChestMenu("Settings / Info");
|
final ChestMenu menu = new ChestMenu("Settings / Info");
|
||||||
|
|
||||||
@ -184,16 +184,12 @@ public final class SlimefunGuide {
|
|||||||
final ChestMenu menu = new ChestMenu("Credits");
|
final ChestMenu menu = new ChestMenu("Credits");
|
||||||
|
|
||||||
menu.setEmptySlotsClickable(false);
|
menu.setEmptySlotsClickable(false);
|
||||||
menu.addMenuOpeningHandler(
|
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HARP, 0.7F, 0.7F));
|
||||||
pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HARP, 0.7F, 0.7F)
|
|
||||||
);
|
|
||||||
|
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
if (i != 4) {
|
if (i != 4) {
|
||||||
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "));
|
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "));
|
||||||
menu.addMenuClickHandler(i,
|
menu.addMenuClickHandler(i, (pl, slot, item, action) -> false);
|
||||||
(pl, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
menu.addItem(4, new CustomItem(new ItemStack(Material.EMERALD), "&7\u21E6 Back to Settings"));
|
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;
|
int index = 9;
|
||||||
double total = 0;
|
double total = 1.0 * SlimefunPlugin.getUtilities().contributors.stream().mapToInt(Contributor::getCommits).sum();
|
||||||
|
|
||||||
for (Contributor contributor : SlimefunPlugin.getUtilities().contributors) {
|
|
||||||
total += contributor.getCommits();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (final Contributor contributor: SlimefunPlugin.getUtilities().contributors) {
|
for (final Contributor contributor: SlimefunPlugin.getUtilities().contributors) {
|
||||||
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);
|
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);
|
||||||
@ -259,7 +251,10 @@ public final class SlimefunGuide {
|
|||||||
public static void openGuide(Player p, boolean book) {
|
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")) return;
|
||||||
if (!SlimefunPlugin.getWhitelist().getBoolean(p.getWorld().getName() + ".enabled-items.SLIMEFUN_GUIDE")) 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 {
|
else {
|
||||||
Object last = getLastEntry(p, false);
|
Object last = getLastEntry(p, false);
|
||||||
if (last instanceof Category) openCategory(p, (Category) last, true, 1, book);
|
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) {
|
public static void openMainMenu(final Player p, final boolean survival, final boolean book, final int selected_page) {
|
||||||
if (survival)
|
if (survival) {
|
||||||
clearHistory(p.getUniqueId());
|
clearHistory(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
if (book) {
|
if (book) {
|
||||||
List<TellRawMessage> pages = new ArrayList<>();
|
List<TellRawMessage> pages = new ArrayList<>();
|
||||||
@ -293,7 +289,7 @@ public final class SlimefunGuide {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (locked) {
|
if (locked) {
|
||||||
// Dont display that Category...
|
// Don't display that Category...
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (tier < category.getTier()) {
|
if (tier < category.getTier()) {
|
||||||
@ -402,7 +398,7 @@ public final class SlimefunGuide {
|
|||||||
menu.setEmptySlotsClickable(false);
|
menu.setEmptySlotsClickable(false);
|
||||||
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 1, 0));
|
menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 1, 0));
|
||||||
|
|
||||||
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());
|
List<GuideHandler> handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList());
|
||||||
|
|
||||||
int index = 9;
|
int index = 9;
|
||||||
@ -410,16 +406,12 @@ public final class SlimefunGuide {
|
|||||||
|
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "));
|
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "));
|
||||||
menu.addMenuClickHandler(i,
|
menu.addMenuClickHandler(i, (pl, slot, item, action) -> false);
|
||||||
(pl, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 45; i < 54; i++) {
|
for (int i = 45; i < 54; i++) {
|
||||||
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "));
|
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "));
|
||||||
menu.addMenuClickHandler(i,
|
menu.addMenuClickHandler(i, (pl, slot, item, action) -> false);
|
||||||
(pl, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int target = (category_size * (selected_page - 1)) - 1;
|
int target = (category_size * (selected_page - 1)) - 1;
|
||||||
@ -433,12 +425,13 @@ public final class SlimefunGuide {
|
|||||||
target++;
|
target++;
|
||||||
|
|
||||||
if (target >= categories.size()) {
|
if (target >= categories.size()) {
|
||||||
if (!survival) break;
|
if (!survival) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
index = handlers.get(target - categories.size()).next(p, index, menu);
|
index = handlers.get(target - categories.size()).next(p, index, menu);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
final Category category = categories.get(target);
|
final Category category = categories.get(target);
|
||||||
|
|
||||||
boolean locked = true;
|
boolean locked = true;
|
||||||
|
|
||||||
for (SlimefunItem item: category.getItems()) {
|
for (SlimefunItem item: category.getItems()) {
|
||||||
@ -485,13 +478,13 @@ public final class SlimefunGuide {
|
|||||||
parents.add(ChatColor.translateAlternateColorCodes('&', "&rYou need to unlock all Items"));
|
parents.add(ChatColor.translateAlternateColorCodes('&', "&rYou need to unlock all Items"));
|
||||||
parents.add(ChatColor.translateAlternateColorCodes('&', "&rfrom the following Categories first:"));
|
parents.add(ChatColor.translateAlternateColorCodes('&', "&rfrom the following Categories first:"));
|
||||||
parents.add("");
|
parents.add("");
|
||||||
|
|
||||||
for (Category parent : ((LockedCategory) category).getParents()) {
|
for (Category parent : ((LockedCategory) category).getParents()) {
|
||||||
parents.add(parent.getItem().getItemMeta().getDisplayName());
|
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.addItem(index, new CustomItem(Material.BARRIER, "&4LOCKED &7- &r" + category.getItem().getItemMeta().getDisplayName(), parents.toArray(new String[parents.size()])));
|
||||||
menu.addMenuClickHandler(index,
|
menu.addMenuClickHandler(index, (pl, slot, item, action) -> false);
|
||||||
(pl, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -609,19 +602,23 @@ public final class SlimefunGuide {
|
|||||||
for (int i = 0; i < texts.size(); i = i + 10) {
|
for (int i = 0; i < texts.size(); i = i + 10) {
|
||||||
TellRawMessage page = new TellRawMessage();
|
TellRawMessage page = new TellRawMessage();
|
||||||
page.addText(ChatColor.translateAlternateColorCodes('&', "&b&l- Slimefun Guide -\n\n"));
|
page.addText(ChatColor.translateAlternateColorCodes('&', "&b&l- Slimefun Guide -\n\n"));
|
||||||
|
|
||||||
for (int j = i; j < texts.size() && j < i + 10; j++) {
|
for (int j = i; j < texts.size() && j < i + 10; j++) {
|
||||||
page.addText(texts.get(j) + "\n");
|
page.addText(texts.get(j) + "\n");
|
||||||
if (tooltips.get(j) != null) page.addHoverEvent(HoverAction.SHOW_TEXT, tooltips.get(j));
|
if (tooltips.get(j) != null) page.addHoverEvent(HoverAction.SHOW_TEXT, tooltips.get(j));
|
||||||
if (actions.get(j) != null) page.addClickEvent(actions.get(j));
|
if (actions.get(j) != null) page.addClickEvent(actions.get(j));
|
||||||
}
|
}
|
||||||
|
|
||||||
page.addText("\n");
|
page.addText("\n");
|
||||||
page.addText(ChatColor.translateAlternateColorCodes('&', "&6\u21E6 &lBack"));
|
page.addText(ChatColor.translateAlternateColorCodes('&', "&6\u21E6 &lBack"));
|
||||||
page.addHoverEvent(HoverAction.SHOW_TEXT, ChatColor.translateAlternateColorCodes('&', "&eClick to go back to the Category Overview"));
|
page.addHoverEvent(HoverAction.SHOW_TEXT, ChatColor.translateAlternateColorCodes('&', "&eClick to go back to the Category Overview"));
|
||||||
page.addClickEvent(new PlayerRunnable(2) {
|
page.addClickEvent(new PlayerRunnable(2) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(final Player p) {
|
public void run(final Player p) {
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openMainMenu(p, survival, true, 1), 1L);
|
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> openMainMenu(p, survival, true, 1), 1L);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
pages.add(page);
|
pages.add(page);
|
||||||
}
|
}
|
||||||
@ -678,10 +675,12 @@ public final class SlimefunGuide {
|
|||||||
int target = categoryIndex + i;
|
int target = categoryIndex + i;
|
||||||
if (target >= category.getItems().size()) break;
|
if (target >= category.getItems().size()) break;
|
||||||
final SlimefunItem sfitem = category.getItems().get(target);
|
final SlimefunItem sfitem = category.getItems().get(target);
|
||||||
|
|
||||||
if (Slimefun.isEnabled(p, sfitem, false)) {
|
if (Slimefun.isEnabled(p, sfitem, false)) {
|
||||||
if (survival && !Slimefun.hasUnlocked(p, sfitem.getItem(), false) && sfitem.getResearch() != null) {
|
if (survival && !Slimefun.hasUnlocked(p, sfitem.getItem(), false) && sfitem.getResearch() != null) {
|
||||||
if (Slimefun.hasPermission(p, sfitem, false)) {
|
if (Slimefun.hasPermission(p, sfitem, false)) {
|
||||||
final Research research = sfitem.getResearch();
|
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.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) -> {
|
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
|
||||||
if (!Research.isResearching(pl)) {
|
if (!Research.isResearching(pl)) {
|
||||||
@ -714,10 +713,8 @@ public final class SlimefunGuide {
|
|||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
List<String> list = Messages.local.getTranslation("tooltips.item-permission");
|
List<String> tooltip = Messages.local.getTranslation("tooltips.item-permission");
|
||||||
String[] strings = list.toArray(new String[list.size()]);
|
menu.addItem(index, new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), tooltip.toArray(new String[tooltip.size()])));
|
||||||
CustomItem display = new CustomItem(Material.BARRIER, StringUtils.formatItemName(sfitem.getItem(), false), strings);
|
|
||||||
menu.addItem(index, display);
|
|
||||||
menu.addMenuClickHandler(index, (pl, slot, item, action) -> false);
|
menu.addMenuClickHandler(index, (pl, slot, item, action) -> false);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
@ -743,25 +740,28 @@ public final class SlimefunGuide {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void addToHistory(Player p, Object obj) {
|
public static void addToHistory(Player p, Object obj) {
|
||||||
List<Object> list = new ArrayList<>();
|
LinkedList<Object> list = getHistory().get(p.getUniqueId());
|
||||||
if (getHistory().containsKey(p.getUniqueId())) list = getHistory().get(p.getUniqueId());
|
|
||||||
list.add(obj);
|
if (list == null) {
|
||||||
|
list = new LinkedList<>();
|
||||||
getHistory().put(p.getUniqueId(), list);
|
getHistory().put(p.getUniqueId(), list);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Object getLastEntry(Player p, boolean remove) {
|
list.add(obj);
|
||||||
List<Object> list = new ArrayList<>();
|
|
||||||
if (getHistory().containsKey(p.getUniqueId())) list = getHistory().get(p.getUniqueId());
|
|
||||||
|
|
||||||
if (remove && !list.isEmpty()) {
|
|
||||||
Object obj = list.get(list.size() - 1);
|
|
||||||
list.remove(obj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (list.isEmpty()) getHistory().remove(p.getUniqueId());
|
private static Object getLastEntry(Player p, boolean remove) {
|
||||||
else getHistory().put(p.getUniqueId(), list);
|
LinkedList<Object> history = getHistory().get(p.getUniqueId());
|
||||||
|
|
||||||
return list.isEmpty() ? null: list.get(list.size() - 1);
|
if (remove && history != null && !history.isEmpty()) {
|
||||||
|
history.removeLast();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (history != null && history.isEmpty()) {
|
||||||
|
getHistory().remove(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {
|
public static void displayItem(Player p, final ItemStack item, boolean addToHistory, final boolean book, final int page) {
|
||||||
@ -832,7 +832,9 @@ public final class SlimefunGuide {
|
|||||||
|
|
||||||
if (addToHistory) addToHistory(p, sfItem != null ? sfItem: item);
|
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.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) -> {
|
menu.addMenuClickHandler(0, (pl, slot, itemstack, action) -> {
|
||||||
if (action.isShiftClicked()) openMainMenu(p, true, book, 1);
|
if (action.isShiftClicked()) openMainMenu(p, true, book, 1);
|
||||||
@ -1019,7 +1021,7 @@ public final class SlimefunGuide {
|
|||||||
menu.open(p);
|
menu.open(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Map<UUID, List<Object>> getHistory() {
|
private static Map<UUID, LinkedList<Object>> getHistory() {
|
||||||
return SlimefunPlugin.getUtilities().guideHistory;
|
return SlimefunPlugin.getUtilities().guideHistory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1031,11 +1033,9 @@ public final class SlimefunGuide {
|
|||||||
String timeleft = "";
|
String timeleft = "";
|
||||||
final int minutes = (int) (seconds / 60L);
|
final int minutes = (int) (seconds / 60L);
|
||||||
if (minutes > 0) {
|
if (minutes > 0) {
|
||||||
timeleft = String.valueOf(timeleft) + minutes + "m ";
|
timeleft += minutes + "m ";
|
||||||
}
|
}
|
||||||
seconds -= minutes * 60;
|
seconds -= minutes * 60;
|
||||||
timeleft = String.valueOf(timeleft) + seconds + "s";
|
return "&7" + timeleft + seconds + "s";
|
||||||
return "&7" + timeleft;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,12 +21,10 @@ import me.mrCookieSlime.CSCoreLibPlugin.PluginUtils;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils;
|
||||||
import me.mrCookieSlime.Slimefun.GEO.OreGenSystem;
|
import me.mrCookieSlime.Slimefun.GEO.OreGenSystem;
|
||||||
import me.mrCookieSlime.Slimefun.GEO.Resources.NetherIceResource;
|
import me.mrCookieSlime.Slimefun.GEO.resources.NetherIceResource;
|
||||||
import me.mrCookieSlime.Slimefun.GEO.Resources.OilResource;
|
import me.mrCookieSlime.Slimefun.GEO.resources.OilResource;
|
||||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
@ -46,7 +44,6 @@ import me.mrCookieSlime.Slimefun.api.SlimefunBackup;
|
|||||||
import me.mrCookieSlime.Slimefun.api.TickerTask;
|
import me.mrCookieSlime.Slimefun.api.TickerTask;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
|
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
|
||||||
import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver;
|
import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver;
|
||||||
import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver;
|
import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver;
|
||||||
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
||||||
@ -86,7 +83,7 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
private Config whitelist;
|
private Config whitelist;
|
||||||
private Config config;
|
private Config config;
|
||||||
|
|
||||||
public GPSNetwork gps = new GPSNetwork();
|
private final GPSNetwork gps = new GPSNetwork();
|
||||||
private ProtectionManager protections;
|
private ProtectionManager protections;
|
||||||
private Utilities utilities = new Utilities();
|
private Utilities utilities = new Utilities();
|
||||||
private Settings settings;
|
private Settings settings;
|
||||||
@ -112,9 +109,10 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
compatibleVersion = true;
|
compatibleVersion = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == 0) versions.append(version.substring(1).replaceFirst("_", ".").replace("_", ".X"));
|
String s = version.substring(1).replaceFirst("_", ".").replace("_", ".X");
|
||||||
else if (i == supported.length - 1) versions.append(" or " + version.substring(1).replaceFirst("_", ".").replace("_", ".X"));
|
if (i == 0) versions.append(s);
|
||||||
else versions.append(", " + version.substring(1).replaceFirst("_", ".").replace("_", ".X"));
|
else if (i == supported.length - 1) versions.append(" or ").append(s);
|
||||||
|
else versions.append(", ").append(s);
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@ -127,7 +125,7 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
getLogger().log(Level.SEVERE, "###");
|
getLogger().log(Level.SEVERE, "###");
|
||||||
getLogger().log(Level.SEVERE, "### You are using Minecraft " + ReflectionUtils.getVersion());
|
getLogger().log(Level.SEVERE, "### You are using Minecraft " + ReflectionUtils.getVersion());
|
||||||
getLogger().log(Level.SEVERE, "### but Slimefun v" + getDescription().getVersion() + " requires you to be using");
|
getLogger().log(Level.SEVERE, "### but Slimefun v" + getDescription().getVersion() + " requires you to be using");
|
||||||
getLogger().log(Level.SEVERE, "### Minecraft " + versions.toString());
|
getLogger().log(Level.SEVERE, "### Minecraft {0}", versions);
|
||||||
getLogger().log(Level.SEVERE, "###");
|
getLogger().log(Level.SEVERE, "###");
|
||||||
getLogger().log(Level.SEVERE, "### Please use an older Version of Slimefun and disable auto-updating");
|
getLogger().log(Level.SEVERE, "### Please use an older Version of Slimefun and disable auto-updating");
|
||||||
getLogger().log(Level.SEVERE, "### or consider updating your Server Software.");
|
getLogger().log(Level.SEVERE, "### or consider updating your Server Software.");
|
||||||
@ -331,7 +329,7 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
|
|
||||||
if (ticker != null) {
|
if (ticker != null) {
|
||||||
// Finishes all started movements/removals of block data
|
// Finishes all started movements/removals of block data
|
||||||
ticker.halted = true;
|
ticker.halt();
|
||||||
ticker.run();
|
ticker.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,14 +360,8 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
|
|
||||||
// Prevent Memory Leaks
|
// Prevent Memory Leaks
|
||||||
Messages.local = null;
|
Messages.local = null;
|
||||||
MultiBlock.list = null;
|
|
||||||
Research.list = null;
|
|
||||||
SlimefunItem.all = null;
|
|
||||||
SlimefunItem.items = null;
|
|
||||||
SlimefunItem.mapID = null;
|
|
||||||
AContainer.processing = null;
|
AContainer.processing = null;
|
||||||
AContainer.progress = null;
|
AContainer.progress = null;
|
||||||
CargoNet.faces = null;
|
|
||||||
OreWasher.items = null;
|
OreWasher.items = null;
|
||||||
|
|
||||||
instance = null;
|
instance = null;
|
||||||
@ -412,6 +404,10 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
return CSCoreLib.randomizer().nextInt(max) <= percentage;
|
return CSCoreLib.randomizer().nextInt(max) <= percentage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GPSNetwork getGPS() {
|
||||||
|
return gps;
|
||||||
|
}
|
||||||
|
|
||||||
public static SlimefunHooks getHooks() {
|
public static SlimefunHooks getHooks() {
|
||||||
return instance.hooks;
|
return instance.hooks;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import java.util.Collections;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
@ -20,6 +21,7 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.Tag;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.Dispenser;
|
import org.bukkit.block.Dispenser;
|
||||||
@ -33,7 +35,6 @@ import org.bukkit.entity.LivingEntity;
|
|||||||
import org.bukkit.entity.Monster;
|
import org.bukkit.entity.Monster;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
|
||||||
@ -57,6 +58,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
@ -66,9 +68,8 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||||
import me.mrCookieSlime.Slimefun.holograms.AndroidHologram;
|
|
||||||
|
|
||||||
public abstract class ProgrammableAndroid extends SlimefunItem {
|
public abstract class ProgrammableAndroid extends SlimefunItem implements InventoryBlock {
|
||||||
|
|
||||||
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 24, 25, 26, 27, 33, 35, 36, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 24, 25, 26, 27, 33, 35, 36, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
||||||
private static final int[] border_out = {10, 11, 12, 13, 14, 19, 23, 28, 32, 37, 38, 39, 40, 41};
|
private static final int[] border_out = {10, 11, 12, 13, 14, 19, 23, 28, 32, 37, 38, 39, 40, 41};
|
||||||
@ -83,18 +84,23 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
blockblacklist.add(Material.BEDROCK);
|
blockblacklist.add(Material.BEDROCK);
|
||||||
blockblacklist.add(Material.BARRIER);
|
blockblacklist.add(Material.BARRIER);
|
||||||
blockblacklist.add(Material.END_PORTAL_FRAME);
|
blockblacklist.add(Material.END_PORTAL_FRAME);
|
||||||
|
blockblacklist.add(Material.END_PORTAL);
|
||||||
|
blockblacklist.add(Material.NETHER_PORTAL);
|
||||||
blockblacklist.add(Material.COMMAND_BLOCK);
|
blockblacklist.add(Material.COMMAND_BLOCK);
|
||||||
blockblacklist.add(Material.CHAIN_COMMAND_BLOCK);
|
blockblacklist.add(Material.CHAIN_COMMAND_BLOCK);
|
||||||
blockblacklist.add(Material.REPEATING_COMMAND_BLOCK);
|
blockblacklist.add(Material.REPEATING_COMMAND_BLOCK);
|
||||||
blockblacklist.add(Material.STRUCTURE_BLOCK);
|
blockblacklist.add(Material.STRUCTURE_BLOCK);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Set<MachineFuel> recipes = new HashSet<>();
|
private final Set<MachineFuel> recipes = new HashSet<>();
|
||||||
|
private final Random random = new Random();
|
||||||
|
|
||||||
public String getInventoryTitle() {
|
@Override
|
||||||
return "Programmable Android";
|
public int[] getInputSlots() {
|
||||||
|
return new int[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int[] getOutputSlots() {
|
public int[] getOutputSlots() {
|
||||||
return new int[] {20, 21, 22, 29, 30, 31};
|
return new int[] {20, 21, 22, 29, 30, 31};
|
||||||
}
|
}
|
||||||
@ -107,26 +113,23 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
|
|
||||||
if (getTier() == 1) {
|
if (getTier() == 1) {
|
||||||
registerFuel(new MachineFuel(80, new ItemStack(Material.COAL)));
|
|
||||||
registerFuel(new MachineFuel(80, new ItemStack(Material.CHARCOAL)));
|
|
||||||
registerFuel(new MachineFuel(800, new ItemStack(Material.COAL_BLOCK)));
|
registerFuel(new MachineFuel(800, new ItemStack(Material.COAL_BLOCK)));
|
||||||
registerFuel(new MachineFuel(45, new ItemStack(Material.BLAZE_ROD)));
|
registerFuel(new MachineFuel(45, new ItemStack(Material.BLAZE_ROD)));
|
||||||
|
|
||||||
|
// Coals
|
||||||
|
for (Material mat: Tag.ITEMS_COALS.getValues()) {
|
||||||
|
registerFuel(new MachineFuel(8, new ItemStack(mat)));
|
||||||
|
}
|
||||||
|
|
||||||
// Logs
|
// Logs
|
||||||
registerFuel(new MachineFuel(4, new ItemStack(Material.OAK_LOG)));
|
for (Material mat: Tag.LOGS.getValues()) {
|
||||||
registerFuel(new MachineFuel(4, new ItemStack(Material.BIRCH_LOG)));
|
registerFuel(new MachineFuel(2, new ItemStack(mat)));
|
||||||
registerFuel(new MachineFuel(4, new ItemStack(Material.SPRUCE_LOG)));
|
}
|
||||||
registerFuel(new MachineFuel(4, new ItemStack(Material.JUNGLE_LOG)));
|
|
||||||
registerFuel(new MachineFuel(4, new ItemStack(Material.DARK_OAK_LOG)));
|
|
||||||
registerFuel(new MachineFuel(4, new ItemStack(Material.ACACIA_LOG)));
|
|
||||||
|
|
||||||
// Wooden Planks
|
// Wooden Planks
|
||||||
registerFuel(new MachineFuel(1, new ItemStack(Material.OAK_PLANKS)));
|
for (Material mat: Tag.PLANKS.getValues()) {
|
||||||
registerFuel(new MachineFuel(1, new ItemStack(Material.BIRCH_PLANKS)));
|
registerFuel(new MachineFuel(1, new ItemStack(mat)));
|
||||||
registerFuel(new MachineFuel(1, new ItemStack(Material.SPRUCE_PLANKS)));
|
}
|
||||||
registerFuel(new MachineFuel(1, new ItemStack(Material.JUNGLE_PLANKS)));
|
|
||||||
registerFuel(new MachineFuel(1, new ItemStack(Material.DARK_OAK_PLANKS)));
|
|
||||||
registerFuel(new MachineFuel(1, new ItemStack(Material.ACACIA_PLANKS)));
|
|
||||||
}
|
}
|
||||||
else if (getTier() == 2){
|
else if (getTier() == 2){
|
||||||
registerFuel(new MachineFuel(100, new ItemStack(Material.LAVA_BUCKET)));
|
registerFuel(new MachineFuel(100, new ItemStack(Material.LAVA_BUCKET)));
|
||||||
@ -139,7 +142,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
registerFuel(new MachineFuel(3000, SlimefunItems.BOOSTED_URANIUM));
|
registerFuel(new MachineFuel(3000, SlimefunItems.BOOSTED_URANIUM));
|
||||||
}
|
}
|
||||||
|
|
||||||
new BlockMenuPreset(name, getInventoryTitle()) {
|
new BlockMenuPreset(name, "Programmable Android") {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
public void init() {
|
||||||
@ -229,7 +232,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AndroidHologram.remove(b);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return allow;
|
return allow;
|
||||||
@ -247,13 +249,16 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
float fuel = Float.parseFloat(BlockStorage.getLocationInfo(b.getLocation(), "fuel"));
|
float fuel = Float.parseFloat(BlockStorage.getLocationInfo(b.getLocation(), "fuel"));
|
||||||
if (fuel < 0.001) {
|
if (fuel < 0.001) {
|
||||||
ItemStack item = BlockStorage.getInventory(b).getItemInSlot(43);
|
ItemStack item = BlockStorage.getInventory(b).getItemInSlot(43);
|
||||||
|
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
for (MachineFuel recipe: recipes) {
|
for (MachineFuel recipe: recipes) {
|
||||||
if (SlimefunManager.isItemSimiliar(item, recipe.getInput(), true)) {
|
if (SlimefunManager.isItemSimiliar(item, recipe.getInput(), true)) {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(43, InvUtils.decreaseItem(item, 1));
|
BlockStorage.getInventory(b).replaceExistingItem(43, InvUtils.decreaseItem(item, 1));
|
||||||
|
|
||||||
if (getTier() == 2) {
|
if (getTier() == 2) {
|
||||||
pushItems(b, new ItemStack(Material.BUCKET));
|
pushItems(b, new ItemStack(Material.BUCKET));
|
||||||
}
|
}
|
||||||
|
|
||||||
BlockStorage.addBlockInfo(b, "fuel", String.valueOf((int) (recipe.getTicks() * this.getFuelEfficiency())));
|
BlockStorage.addBlockInfo(b, "fuel", String.valueOf((int) (recipe.getTicks() * this.getFuelEfficiency())));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -264,6 +269,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
String[] script = BlockStorage.getLocationInfo(b.getLocation(), "script").split("-");
|
String[] script = BlockStorage.getLocationInfo(b.getLocation(), "script").split("-");
|
||||||
int index = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "index")) + 1;
|
int index = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "index")) + 1;
|
||||||
if (index >= script.length) index = 0;
|
if (index >= script.length) index = 0;
|
||||||
|
|
||||||
boolean refresh = true;
|
boolean refresh = true;
|
||||||
BlockStorage.addBlockInfo(b, "fuel", String.valueOf(fuel - 1));
|
BlockStorage.addBlockInfo(b, "fuel", String.valueOf(fuel - 1));
|
||||||
ScriptPart part = ScriptPart.valueOf(script[index]);
|
ScriptPart part = ScriptPart.valueOf(script[index]);
|
||||||
@ -314,8 +320,8 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
Block water = b.getRelative(BlockFace.DOWN);
|
Block water = b.getRelative(BlockFace.DOWN);
|
||||||
if (water.getType() == Material.WATER) {
|
if (water.getType() == Material.WATER) {
|
||||||
water.getWorld().playSound(water.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F);
|
water.getWorld().playSound(water.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F);
|
||||||
if (CSCoreLib.randomizer().nextInt(100) < 10 * getTier()) {
|
if (random.nextInt(100) < 10 * getTier()) {
|
||||||
ItemStack drop = fish[CSCoreLib.randomizer().nextInt(fish.length)];
|
ItemStack drop = fish[random.nextInt(fish.length)];
|
||||||
if (fits(b, drop)) pushItems(b, drop);
|
if (fits(b, drop)) pushItems(b, drop);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -394,11 +400,14 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
Block log = list.get(list.size() - 1).getBlock();
|
Block log = list.get(list.size() - 1).getBlock();
|
||||||
Collection<ItemStack> drops = log.getDrops();
|
Collection<ItemStack> drops = log.getDrops();
|
||||||
log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType());
|
log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType());
|
||||||
|
|
||||||
if (!drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), log)) {
|
if (!drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), log)) {
|
||||||
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
|
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
|
||||||
|
|
||||||
if (fits(b, items)) {
|
if (fits(b, items)) {
|
||||||
pushItems(b, items);
|
pushItems(b, items);
|
||||||
log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType());
|
log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType());
|
||||||
|
|
||||||
if (log.getY() == b.getRelative(face).getY()) {
|
if (log.getY() == b.getRelative(face).getY()) {
|
||||||
log.setType(MaterialHelper.getSaplingFromLog(log.getType()));
|
log.setType(MaterialHelper.getSaplingFromLog(log.getType()));
|
||||||
}
|
}
|
||||||
@ -431,48 +440,33 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void killEntities(Block b, double damage, Predicate<Entity> predicate) {
|
private void killEntities(Block b, double damage, Predicate<Entity> predicate) {
|
||||||
for (Entity n: AndroidHologram.getNearbyEntities(b, 4D + getTier())) {
|
double radius = 4.0 + getTier();
|
||||||
if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && predicate.test(n)) {
|
for (Entity n: b.getWorld().getNearbyEntities(b.getLocation(), radius, radius, radius, n -> n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.isValid() && predicate.test(n))) {
|
||||||
|
boolean attack = false;
|
||||||
|
|
||||||
switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) {
|
switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
if (n.getLocation().getZ() < b.getZ()) {
|
attack = n.getLocation().getZ() < b.getZ();
|
||||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance);
|
|
||||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b)));
|
|
||||||
|
|
||||||
((LivingEntity) n).damage(damage);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case EAST:
|
case EAST:
|
||||||
if (n.getLocation().getX() > b.getX()) {
|
attack = n.getLocation().getX() > b.getX();
|
||||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance);
|
|
||||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b)));
|
|
||||||
|
|
||||||
((LivingEntity) n).damage(damage);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
if (n.getLocation().getZ() > b.getZ()) {
|
attack = n.getLocation().getZ() > b.getZ();
|
||||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance);
|
|
||||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b)));
|
|
||||||
|
|
||||||
((LivingEntity) n).damage(damage);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case WEST:
|
case WEST:
|
||||||
if (n.getLocation().getX() < b.getX()) {
|
attack = n.getLocation().getX() < b.getX();
|
||||||
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance);
|
|
||||||
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b)));
|
|
||||||
|
|
||||||
((LivingEntity) n).damage(damage);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (attack) {
|
||||||
|
if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance);
|
||||||
|
n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b)));
|
||||||
|
|
||||||
|
((LivingEntity) n).damage(damage);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -531,16 +525,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
if (fits(b, item.getItem()) && SlimefunPlugin.getUtilities().blockHandlers.containsKey(item.getID()) && SlimefunPlugin.getUtilities().blockHandlers.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) {
|
if (fits(b, item.getItem()) && SlimefunPlugin.getUtilities().blockHandlers.containsKey(item.getID()) && SlimefunPlugin.getUtilities().blockHandlers.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) {
|
||||||
pushItems(b, BlockStorage.retrieve(block));
|
pushItems(b, BlockStorage.retrieve(block));
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
||||||
block.setType(Material.PLAYER_HEAD);
|
|
||||||
Rotatable blockData = (Rotatable) block.getBlockData();
|
|
||||||
blockData.setRotation(face.getOppositeFace());
|
|
||||||
block.setBlockData(blockData);
|
|
||||||
|
|
||||||
try {
|
block.setType(Material.AIR);
|
||||||
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
|
move(b, face, block);
|
||||||
} catch (Exception x) {
|
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x);
|
|
||||||
}
|
|
||||||
|
|
||||||
b.setType(Material.AIR);
|
b.setType(Material.AIR);
|
||||||
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
|
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
|
||||||
@ -551,16 +538,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
if (fits(b, items)) {
|
if (fits(b, items)) {
|
||||||
pushItems(b, items);
|
pushItems(b, items);
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
||||||
block.setType(Material.PLAYER_HEAD);
|
|
||||||
Rotatable blockData = (Rotatable) block.getBlockData();
|
|
||||||
blockData.setRotation(face.getOppositeFace());
|
|
||||||
block.setBlockData(blockData);
|
|
||||||
|
|
||||||
try {
|
block.setType(Material.AIR);
|
||||||
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
|
move(b, face, block);
|
||||||
} catch (Exception x) {
|
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x);
|
|
||||||
}
|
|
||||||
|
|
||||||
b.setType(Material.AIR);
|
b.setType(Material.AIR);
|
||||||
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
|
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
|
||||||
@ -573,87 +553,48 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isFullGrown(Block block){
|
private boolean isFullGrown(Block block){
|
||||||
|
if (!(block.getBlockData() instanceof Ageable)) return false;
|
||||||
Ageable ageable = ((Ageable) block.getBlockData());
|
Ageable ageable = ((Ageable) block.getBlockData());
|
||||||
return ageable.getAge() >= ageable.getMaximumAge();
|
return ageable.getAge() >= ageable.getMaximumAge();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void farm(Block b, Block block) {
|
private void farm(Block b, Block block) {
|
||||||
|
if (isFullGrown(block)) {
|
||||||
|
ItemStack drop = null;
|
||||||
switch (block.getType()) {
|
switch (block.getType()) {
|
||||||
case WHEAT:
|
case WHEAT:
|
||||||
if (isFullGrown(block)) {
|
drop = new ItemStack(Material.WHEAT, random.nextInt(2) + 1);
|
||||||
ItemStack drop = new ItemStack(Material.WHEAT, CSCoreLib.randomizer().nextInt(3) + 1);
|
|
||||||
if (fits(b, drop)) {
|
|
||||||
pushItems(b, drop);
|
|
||||||
Ageable ageable = (Ageable) block.getBlockData();
|
|
||||||
ageable.setAge(0);
|
|
||||||
block.setBlockData(ageable);
|
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case POTATOES:
|
case POTATOES:
|
||||||
if (isFullGrown(block)) {
|
drop = new ItemStack(Material.POTATO, random.nextInt(3) + 1);
|
||||||
ItemStack drop = new ItemStack(Material.POTATO, CSCoreLib.randomizer().nextInt(3) + 1);
|
|
||||||
if (fits(b, drop)) {
|
|
||||||
pushItems(b, drop);
|
|
||||||
Ageable ageable = (Ageable) block.getBlockData();
|
|
||||||
ageable.setAge(0);
|
|
||||||
block.setBlockData(ageable);
|
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case CARROTS:
|
case CARROTS:
|
||||||
if (isFullGrown(block)) {
|
drop = new ItemStack(Material.CARROT, random.nextInt(3) + 1);
|
||||||
ItemStack drop = new ItemStack(Material.CARROT, CSCoreLib.randomizer().nextInt(3) + 1);
|
|
||||||
if (fits(b, drop)) {
|
|
||||||
pushItems(b, drop);
|
|
||||||
Ageable ageable = (Ageable) block.getBlockData();
|
|
||||||
ageable.setAge(0);
|
|
||||||
block.setBlockData(ageable);
|
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case BEETROOTS:
|
case BEETROOTS:
|
||||||
if (isFullGrown(block)) {
|
drop = new ItemStack(Material.BEETROOT, random.nextInt(3) + 1);
|
||||||
ItemStack drop = new ItemStack(Material.BEETROOT, CSCoreLib.randomizer().nextInt(3) + 1);
|
|
||||||
if (fits(b, drop)) {
|
|
||||||
pushItems(b, drop);
|
|
||||||
Ageable ageable = (Ageable) block.getBlockData();
|
|
||||||
ageable.setAge(0);
|
|
||||||
block.setBlockData(ageable);
|
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case COCOA:
|
case COCOA:
|
||||||
if (isFullGrown(block)) {
|
drop = new ItemStack(Material.COCOA_BEANS, random.nextInt(3) + 1);
|
||||||
ItemStack drop = new ItemStack(Material.COCOA_BEANS, CSCoreLib.randomizer().nextInt(3) + 1);
|
|
||||||
if (fits(b, drop)) {
|
|
||||||
pushItems(b, drop);
|
|
||||||
Ageable ageable = (Ageable) block.getBlockData();
|
|
||||||
ageable.setAge(0);
|
|
||||||
block.setBlockData(ageable);
|
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case NETHER_WART:
|
case NETHER_WART:
|
||||||
if (isFullGrown(block)) {
|
drop = new ItemStack(Material.NETHER_WART, random.nextInt(3) + 1);
|
||||||
ItemStack drop = new ItemStack(Material.NETHER_WART, CSCoreLib.randomizer().nextInt(3) + 1);
|
break;
|
||||||
if (fits(b, drop)) {
|
case SWEET_BERRY_BUSH:
|
||||||
pushItems(b, drop);
|
drop = new ItemStack(Material.SWEET_BERRIES, random.nextInt(3) + 1);
|
||||||
Ageable ageable = (Ageable) block.getBlockData();
|
|
||||||
ageable.setAge(0);
|
|
||||||
block.setBlockData(ageable);
|
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (drop != null && fits(b, drop)) {
|
||||||
|
pushItems(b, drop);
|
||||||
|
Ageable ageable = (Ageable) block.getBlockData();
|
||||||
|
ageable.setAge(0);
|
||||||
|
block.setBlockData(ageable);
|
||||||
|
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exoticFarm(Block b, Block block) {
|
private void exoticFarm(Block b, Block block) {
|
||||||
@ -669,14 +610,10 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
|
|
||||||
private void constructMenu(BlockMenuPreset preset) throws Exception {
|
private void constructMenu(BlockMenuPreset preset) throws Exception {
|
||||||
for (int i : border) {
|
for (int i : border) {
|
||||||
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
|
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
for (int i : border_out) {
|
for (int i : border_out) {
|
||||||
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
|
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i : getOutputSlots()) {
|
for (int i : getOutputSlots()) {
|
||||||
@ -695,19 +632,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (getTier() == 1) {
|
if (getTier() == 1) {
|
||||||
preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on solid Fuel", "&re.g. Coal, Wood, etc..."),
|
preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on solid Fuel", "&re.g. Coal, Wood, etc..."), (p, slot, item, action) -> false);
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
else if (getTier() == 2){
|
else if (getTier() == 2){
|
||||||
preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on liquid Fuel", "&re.g. Lava, Oil, Fuel, etc..."),
|
preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on liquid Fuel", "&re.g. Lava, Oil, Fuel, etc..."), (p, slot, item, action) -> false);
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on radioactive Fuel", "&re.g. Uranium, Neptunium or Boosted Uranium"),
|
preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on radioactive Fuel", "&re.g. Uranium, Neptunium or Boosted Uranium"), (p, slot, item, action) -> false);
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -758,6 +689,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
|
|
||||||
for (int i = 1; i < commands.length; i++) {
|
for (int i = 1; i < commands.length; i++) {
|
||||||
final int index = i;
|
final int index = i;
|
||||||
|
|
||||||
if (i == commands.length - 1) {
|
if (i == commands.length - 1) {
|
||||||
int additional = commands.length == 54 ? 0: 1;
|
int additional = commands.length == 54 ? 0: 1;
|
||||||
|
|
||||||
@ -853,7 +785,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
menu.addItem(48, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTA1YTJjYWI4YjY4ZWE1N2UzYWY5OTJhMzZlNDdjOGZmOWFhODdjYzg3NzYyODE5NjZmOGMzY2YzMWEzOCJ9fX0="), "&eUpload a Script", "", "&6Click &7to upload your Android's Script", "&7to the Database"));
|
menu.addItem(48, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTA1YTJjYWI4YjY4ZWE1N2UzYWY5OTJhMzZlNDdjOGZmOWFhODdjYzg3NzYyODE5NjZmOGMzY2YzMWEzOCJ9fX0="), "&eUpload a Script", "", "&6Click &7to upload your Android's Script", "&7to the Database"));
|
||||||
menu.addMenuClickHandler(48, (pl, slot, item, action) -> {
|
menu.addMenuClickHandler(48, (pl, slot, item, action) -> {
|
||||||
final String code = BlockStorage.getLocationInfo(b.getLocation(), "script");
|
final String code = BlockStorage.getLocationInfo(b.getLocation(), "script");
|
||||||
@ -873,7 +804,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
Messages.local.sendTranslation(pl, "android.scripts.enter-name", true);
|
Messages.local.sendTranslation(pl, "android.scripts.enter-name", true);
|
||||||
|
|
||||||
MenuHelper.awaitChatInput(pl, (player, message) -> {
|
MenuHelper.awaitChatInput(pl, (player, message) -> {
|
||||||
Config script = new Config("plugins/Slimefun/scripts/" + getAndroidType().toString() + "/" + p.getName() + " " + id + ".sfs");
|
Config script = new Config("plugins/Slimefun/scripts/" + getAndroidType().toString() + '/' + p.getName() + ' ' + id + ".sfs");
|
||||||
|
|
||||||
script.setValue("author", player.getUniqueId().toString());
|
script.setValue("author", player.getUniqueId().toString());
|
||||||
script.setValue("author_name", player.getName());
|
script.setValue("author_name", player.getName());
|
||||||
@ -914,6 +845,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int categoryIndex = 45 * (page - 1);
|
int categoryIndex = 45 * (page - 1);
|
||||||
|
|
||||||
for (int i = 0; i < 45; i++) {
|
for (int i = 0; i < 45; i++) {
|
||||||
int target = categoryIndex + i;
|
int target = categoryIndex + i;
|
||||||
if (target >= scripts.size()) break;
|
if (target >= scripts.size()) break;
|
||||||
@ -1063,34 +995,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
menu.open(p);
|
menu.open(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Inventory inject(Block b) {
|
|
||||||
int size = BlockStorage.getInventory(b).toInventory().getSize();
|
|
||||||
Inventory inv = Bukkit.createInventory(null, size);
|
|
||||||
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US"));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int slot: getOutputSlots()) {
|
|
||||||
inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot));
|
|
||||||
}
|
|
||||||
|
|
||||||
return inv;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected boolean fits(Block b, ItemStack... items) {
|
|
||||||
return inject(b).addItem(items).isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void pushItems(Block b, ItemStack... items) {
|
|
||||||
Inventory inv = inject(b);
|
|
||||||
inv.addItem(items);
|
|
||||||
|
|
||||||
for (int slot : getOutputSlots()) {
|
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addItems(Block b, ItemStack... items) {
|
public void addItems(Block b, ItemStack... items) {
|
||||||
this.pushItems(b, items);
|
this.pushItems(b, items);
|
||||||
}
|
}
|
||||||
|
@ -54,15 +54,15 @@ public class BlockStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String serializeLocation(Location l) {
|
private static String serializeLocation(Location l) {
|
||||||
return l.getWorld().getName() + ";" + l.getBlockX() + ";" + l.getBlockY() + ";" + l.getBlockZ();
|
return l.getWorld().getName() + ';' + l.getBlockX() + ';' + l.getBlockY() + ';' + l.getBlockZ();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String serializeChunk(Chunk chunk) {
|
private static String serializeChunk(Chunk chunk) {
|
||||||
return chunk.getWorld().getName() + ";Chunk;" + chunk.getX() + ";" + chunk.getZ();
|
return chunk.getWorld().getName() + ";Chunk;" + chunk.getX() + ';' + chunk.getZ();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String locationToChunkString(Location l) {
|
private static String locationToChunkString(Location l) {
|
||||||
return l.getWorld().getName() + ";Chunk;" + (l.getBlockX() >> 4) + ";" + (l.getBlockZ() >> 4);
|
return l.getWorld().getName() + ";Chunk;" + (l.getBlockX() >> 4) + ';' + (l.getBlockZ() >> 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Location deserializeLocation(String l) {
|
private static Location deserializeLocation(String l) {
|
||||||
@ -137,7 +137,7 @@ public class BlockStorage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception x) {
|
} catch (Exception x) {
|
||||||
Slimefun.getLogger().log(Level.WARNING, "Failed to load " + file.getName() + "(" + key + ") for Slimefun " + Slimefun.getVersion(), x);
|
Slimefun.getLogger().log(Level.WARNING, "Failed to load " + file.getName() + '(' + key + ") for Slimefun " + Slimefun.getVersion(), x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
done++;
|
done++;
|
||||||
@ -162,7 +162,7 @@ public class BlockStorage {
|
|||||||
try {
|
try {
|
||||||
if (world.getName().equals(key.split(";")[0])) SlimefunPlugin.getUtilities().mapChunks.put(key, cfg.getString(key));
|
if (world.getName().equals(key.split(";")[0])) SlimefunPlugin.getUtilities().mapChunks.put(key, cfg.getString(key));
|
||||||
} catch (Exception x) {
|
} catch (Exception x) {
|
||||||
Slimefun.getLogger().log(Level.WARNING, "Failed to load " + chunks.getName() + " in World " + world.getName() + "(" + key + ") for Slimefun " + Slimefun.getVersion(), x);
|
Slimefun.getLogger().log(Level.WARNING, "Failed to load " + chunks.getName() + " in World " + world.getName() + '(' + key + ") for Slimefun " + Slimefun.getVersion(), x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -526,7 +526,7 @@ public class BlockStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void refreshCache(BlockStorage storage, Location l, String key, String value, boolean updateTicker) {
|
private static void refreshCache(BlockStorage storage, Location l, String key, String value, boolean updateTicker) {
|
||||||
Config cfg = storage.blocksCache.containsKey(key) ? storage.blocksCache.get(key): new Config(path_blocks + l.getWorld().getName() + "/" + key + ".sfb");
|
Config cfg = storage.blocksCache.containsKey(key) ? storage.blocksCache.get(key): new Config(path_blocks + l.getWorld().getName() + '/' + key + ".sfb");
|
||||||
cfg.setValue(serializeLocation(l), value);
|
cfg.setValue(serializeLocation(l), value);
|
||||||
storage.blocksCache.put(key, cfg);
|
storage.blocksCache.put(key, cfg);
|
||||||
|
|
||||||
|
@ -56,14 +56,14 @@ public class ErrorReport {
|
|||||||
|
|
||||||
for (Plugin p: Bukkit.getPluginManager().getPlugins()) {
|
for (Plugin p: Bukkit.getPluginManager().getPlugins()) {
|
||||||
if (Bukkit.getPluginManager().isPluginEnabled(p)) {
|
if (Bukkit.getPluginManager().isPluginEnabled(p)) {
|
||||||
plugins.add(" + " + p.getName() + " " + p.getDescription().getVersion());
|
plugins.add(" + " + p.getName() + ' ' + p.getDescription().getVersion());
|
||||||
if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun"))
|
if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun"))
|
||||||
addons.add(" + " + p.getName() + " " + p.getDescription().getVersion());
|
addons.add(" + " + p.getName() + ' ' + p.getDescription().getVersion());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
plugins.add(" - " + p.getName() + " " + p.getDescription().getVersion());
|
plugins.add(" - " + p.getName() + ' ' + p.getDescription().getVersion());
|
||||||
if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun"))
|
if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun"))
|
||||||
addons.add(" - " + p.getName() + " " + p.getDescription().getVersion());
|
addons.add(" - " + p.getName() + ' ' + p.getDescription().getVersion());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,4 +213,9 @@ public final class PlayerProfile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "PlayerProfile {" + uuid + "}";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ public final class Slimefun {
|
|||||||
* @return the GPSNetwork instance.
|
* @return the GPSNetwork instance.
|
||||||
*/
|
*/
|
||||||
public static GPSNetwork getGPSNetwork() {
|
public static GPSNetwork getGPSNetwork() {
|
||||||
return SlimefunPlugin.instance.gps;
|
return SlimefunPlugin.instance.getGPS();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Logger getLogger() {
|
public static Logger getLogger() {
|
||||||
@ -56,7 +56,7 @@ public final class Slimefun {
|
|||||||
* or null if it doesn't exist.
|
* or null if it doesn't exist.
|
||||||
*/
|
*/
|
||||||
public static Object getItemValue(String id, String key) {
|
public static Object getItemValue(String id, String key) {
|
||||||
return getItemConfig().getValue(id + "." + key);
|
return getItemConfig().getValue(id + '.' + key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,7 +67,7 @@ public final class Slimefun {
|
|||||||
* @param value the value to set, can be null
|
* @param value the value to set, can be null
|
||||||
*/
|
*/
|
||||||
public static void setItemVariable(String id, String key, Object value) {
|
public static void setItemVariable(String id, String key, Object value) {
|
||||||
getItemConfig().setDefaultValue(id + "." + key, value);
|
getItemConfig().setDefaultValue(id + '.' + key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,7 +49,7 @@ public final class SlimefunBackup {
|
|||||||
try (ZipOutputStream output = new ZipOutputStream(new FileOutputStream(file))) {
|
try (ZipOutputStream output = new ZipOutputStream(new FileOutputStream(file))) {
|
||||||
for (File f1: new File("data-storage/Slimefun/stored-blocks/").listFiles()) {
|
for (File f1: new File("data-storage/Slimefun/stored-blocks/").listFiles()) {
|
||||||
for (File f: f1.listFiles()) {
|
for (File f: f1.listFiles()) {
|
||||||
ZipEntry entry = new ZipEntry("stored-blocks/" + f1.getName() + "/" + f.getName());
|
ZipEntry entry = new ZipEntry("stored-blocks/" + f1.getName() + '/' + f.getName());
|
||||||
output.putNextEntry(entry);
|
output.putNextEntry(entry);
|
||||||
|
|
||||||
try (FileInputStream input = new FileInputStream(f)) {
|
try (FileInputStream input = new FileInputStream(f)) {
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
package me.mrCookieSlime.Slimefun.api;
|
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.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
public final class SlimefunRecipes {
|
public final class SlimefunRecipes {
|
||||||
|
|
||||||
private SlimefunRecipes() {}
|
private SlimefunRecipes() {}
|
||||||
|
|
||||||
public static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) {
|
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)) {
|
if (item instanceof AContainer && ((AContainer) item).getMachineIdentifier().equals(machine)) {
|
||||||
((AContainer) item).registerRecipe(seconds, input, output);
|
((AContainer) item).registerRecipe(seconds, input, output);
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,11 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
|||||||
|
|
||||||
public class TickerTask implements Runnable {
|
public class TickerTask implements Runnable {
|
||||||
|
|
||||||
public boolean halted = false;
|
private boolean halted = false;
|
||||||
|
|
||||||
public Map<Location, Location> move = new HashMap<>();
|
protected Map<Location, Location> move = new HashMap<>();
|
||||||
public Map<Location, Boolean> delete = new HashMap<>();
|
protected Map<Location, Boolean> delete = new HashMap<>();
|
||||||
public Map<Location, Long> blockTimings = new HashMap<>();
|
protected Map<Location, Long> blockTimings = new HashMap<>();
|
||||||
|
|
||||||
private Set<BlockTicker> tickers = new HashSet<>();
|
private Set<BlockTicker> tickers = new HashSet<>();
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ public class TickerTask implements Runnable {
|
|||||||
buggedBlocks.put(l, errors);
|
buggedBlocks.put(l, errors);
|
||||||
}
|
}
|
||||||
else if (errors == 4) {
|
else if (errors == 4) {
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")");
|
Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + '(' + item.getID() + ")");
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
|
Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details.");
|
Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details.");
|
||||||
Slimefun.getLogger().log(Level.SEVERE, " ");
|
Slimefun.getLogger().log(Level.SEVERE, " ");
|
||||||
@ -147,7 +147,7 @@ public class TickerTask implements Runnable {
|
|||||||
buggedBlocks.put(l, errors);
|
buggedBlocks.put(l, errors);
|
||||||
}
|
}
|
||||||
else if (errors == 4) {
|
else if (errors == 4) {
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")");
|
Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + '(' + item.getID() + ")");
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
|
Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details.");
|
Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details.");
|
||||||
Slimefun.getLogger().log(Level.SEVERE, " ");
|
Slimefun.getLogger().log(Level.SEVERE, " ");
|
||||||
@ -286,6 +286,18 @@ public class TickerTask implements Runnable {
|
|||||||
return chunkTimings.containsKey(c.toString()) ? chunkTimings.get(c.toString()): 0L;
|
return chunkTimings.containsKey(c.toString()) ? chunkTimings.get(c.toString()): 0L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addBlockTimings(Location l, long time) {
|
||||||
|
blockTimings.put(l, time);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isHalted() {
|
||||||
|
return halted;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void halt() {
|
||||||
|
halted = true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "TickerTask {\n"
|
return "TickerTask {\n"
|
||||||
|
@ -145,7 +145,7 @@ public class EnergyNet extends Network {
|
|||||||
else {
|
else {
|
||||||
supply = supply + energy;
|
supply = supply + energy;
|
||||||
}
|
}
|
||||||
SlimefunPlugin.getTicker().blockTimings.put(source, System.currentTimeMillis() - timestamp);
|
SlimefunPlugin.getTicker().addBlockTimings(source, System.currentTimeMillis() - timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
input.removeAll(exploded);
|
input.removeAll(exploded);
|
||||||
|
@ -21,7 +21,7 @@ public class BlockMenu extends DirtyChestMenu {
|
|||||||
private ItemManipulationEvent event;
|
private ItemManipulationEvent event;
|
||||||
|
|
||||||
private static String serializeLocation(Location l) {
|
private static String serializeLocation(Location l) {
|
||||||
return l.getWorld().getName() + ";" + l.getBlockX() + ";" + l.getBlockY() + ";" + l.getBlockZ();
|
return l.getWorld().getName() + ';' + l.getBlockX() + ';' + l.getBlockY() + ';' + l.getBlockZ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockMenu(BlockMenuPreset preset, Location l) {
|
public BlockMenu(BlockMenuPreset preset, Location l) {
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user