1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 11:45:51 +00:00

Reduced technical debt + Fixes #1095

This commit is contained in:
TheBusyBiscuit 2019-09-06 10:34:17 +02:00
parent 9293808357
commit c7040d09be
17 changed files with 331 additions and 320 deletions

View File

@ -44,9 +44,7 @@ public final class TeleportationSequence {
} }
private static boolean isValid(Player p, Location source) { private static boolean isValid(Player p, Location source) {
if (p == null) return false; return p != null && p.getLocation().distanceSquared(source) < 2.0;
if (p.getLocation().distance(source) > 1.4) return false;
return true;
} }
private static void cancel(UUID uuid, Player p) { private static void cancel(UUID uuid, Player p) {

View File

@ -0,0 +1,23 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
/**
* Defines whether a SlimefunItem is enabled, disabled or fall-back to its vanilla behavior.
*
* @since 4.1.10
*/
public enum ItemState {
/**
* This SlimefunItem is enabled.
*/
ENABLED,
/**
* This SlimefunItem is disabled and is not a {@link VanillaItem}.
*/
DISABLED,
/**
* This SlimefunItem is fall-back to its vanilla behavior, because it is disabled and is a {@link VanillaItem}.
*/
VANILLA
}

View File

@ -36,7 +36,7 @@ public class SlimefunItem {
private String id; private String id;
private String hash; private String hash;
private State state; private ItemState state;
private ItemStack item; private ItemStack item;
private Category category; private Category category;
private ItemStack[] recipe; private ItemStack[] recipe;
@ -58,28 +58,6 @@ public class SlimefunItem {
private Object[] values = null; private Object[] values = null;
private String wiki = null; private String wiki = null;
/**
* Defines whether a SlimefunItem is enabled, disabled or fall-back to its vanilla behavior.
*
* @since 4.1.10
*/
public static enum State {
/**
* This SlimefunItem is enabled.
*/
ENABLED,
/**
* This SlimefunItem is disabled and is not a {@link VanillaItem}.
*/
DISABLED,
/**
* This SlimefunItem is fall-back to its vanilla behavior, because it is disabled and is a {@link VanillaItem}.
*/
VANILLA
}
public SlimefunItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { public SlimefunItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
this.item = item; this.item = item;
this.category = category; this.category = category;
@ -149,7 +127,7 @@ public class SlimefunItem {
@Deprecated @Deprecated
public String getHash() { return hash; } public String getHash() { return hash; }
public State getState() { return state; } public ItemState getState() { return state; }
public ItemStack getItem() { return item; } public ItemStack getItem() { return item; }
public Category getCategory() { return category; } public Category getCategory() { return category; }
public ItemStack[] getRecipe() { return recipe; } public ItemStack[] getRecipe() { return recipe; }
@ -193,7 +171,7 @@ public class SlimefunItem {
public EnergyTicker getEnergyTicker() { return energyTicker; } public EnergyTicker getEnergyTicker() { return energyTicker; }
public String[] listKeys() { return keys; } public String[] listKeys() { return keys; }
public Object[] listValues() { return values; } public Object[] listValues() { return values; }
public boolean isDisabled() { return state != State.ENABLED; } public boolean isDisabled() { return state != ItemState.ENABLED; }
public void register() { public void register() {
register(false); register(false);
@ -229,14 +207,14 @@ public class SlimefunItem {
} }
if (this.ticking && !SlimefunPlugin.getCfg().getBoolean("URID.enable-tickers")) { if (this.ticking && !SlimefunPlugin.getCfg().getBoolean("URID.enable-tickers")) {
this.state = State.DISABLED; this.state = ItemState.DISABLED;
return; return;
} }
if (SlimefunPlugin.getItemCfg().getBoolean(id + ".enabled")) { if (SlimefunPlugin.getItemCfg().getBoolean(id + ".enabled")) {
if (!Category.list().contains(category)) category.register(); if (!Category.list().contains(category)) category.register();
this.state = State.ENABLED; this.state = ItemState.ENABLED;
this.replacing = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".can-be-used-in-workbenches"); this.replacing = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".can-be-used-in-workbenches");
this.hidden = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".hide-in-guide"); this.hidden = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".hide-in-guide");
@ -260,8 +238,12 @@ public class SlimefunItem {
} }
} }
else { else {
if (this instanceof VanillaItem) this.state = State.VANILLA; if (this instanceof VanillaItem) {
else this.state = State.DISABLED; this.state = ItemState.VANILLA;
}
else {
this.state = ItemState.DISABLED;
}
} }
postRegister(); postRegister();
@ -375,13 +357,13 @@ public class SlimefunItem {
} }
} }
public static State getState(ItemStack item) { public static ItemState getState(ItemStack item) {
for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) { for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) {
if (i.isItem(item)) { if (i.isItem(item)) {
return i.getState(); return i.getState();
} }
} }
return State.ENABLED; return ItemState.ENABLED;
} }
public static boolean isDisabled(ItemStack item) { public static boolean isDisabled(ItemStack item) {

View File

@ -27,14 +27,12 @@ public class PickaxeOfTheSeeker extends SimpleSlimefunItem<ItemInteractionHandle
for (int x = -4; x <= 4; x++) { for (int x = -4; x <= 4; x++) {
for (int y = -4; y <= 4; y++) { for (int y = -4; y <= 4; y++) {
for (int z = -4; z <= 4; z++) { for (int z = -4; z <= 4; z++) {
if (p.getLocation().getBlock().getRelative(x, y, z).getType().toString().endsWith("_ORE")) { if (p.getLocation().getBlock().getRelative(x, y, z).getType().toString().endsWith("_ORE") && closest == null || p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) {
if (closest == null || p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) {
closest = p.getLocation().getBlock().getRelative(x, y, z); closest = p.getLocation().getBlock().getRelative(x, y, z);
} }
} }
} }
} }
}
if (closest == null) { if (closest == null) {
Messages.local.sendTranslation(p, "miner.no-ores", true); Messages.local.sendTranslation(p, "miner.no-ores", true);

View File

@ -57,9 +57,8 @@ public class StormStaff extends SimpleSlimefunItem<ItemInteractionHandler> {
ItemMeta sfItemMeta = sfItem.getItemMeta(); ItemMeta sfItemMeta = sfItem.getItemMeta();
List<String> sfItemLore = sfItemMeta.getLore(); List<String> sfItemLore = sfItemMeta.getLore();
if (itemLore.size() < 6) {
// Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them. // Index 1 and 3 in SlimefunItems.STAFF_STORM has lores with words and stuff so we check for them.
if (itemLore.get(1).equals(sfItemLore.get(1)) && itemLore.get(3).equals(sfItemLore.get(3))) { if (itemLore.size() < 6 && itemLore.get(1).equals(sfItemLore.get(1)) && itemLore.get(3).equals(sfItemLore.get(3))) {
if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) { if (p.getFoodLevel() >= 4 || p.getGameMode() == GameMode.CREATIVE) {
// Get a target block with max. 30 blocks of distance // Get a target block with max. 30 blocks of distance
Location loc = p.getTargetBlock(null, 30).getLocation(); Location loc = p.getTargetBlock(null, 30).getLocation();
@ -106,7 +105,6 @@ public class StormStaff extends SimpleSlimefunItem<ItemInteractionHandler> {
return true; return true;
} }
} }
}
return false; return false;
}; };
} }

View File

@ -55,15 +55,13 @@ public class SwordOfBeheading extends SimpleSlimefunItem<EntityKillHandler> {
e.getDrops().add(new ItemStack(Material.CREEPER_HEAD)); e.getDrops().add(new ItemStack(Material.CREEPER_HEAD));
} }
} }
else if (e.getEntity() instanceof Player) { else if (e.getEntity() instanceof Player && random.nextInt(100) < chancePlayer) {
if (random.nextInt(100) < chancePlayer) {
ItemStack skull = new ItemStack(Material.PLAYER_HEAD); ItemStack skull = new ItemStack(Material.PLAYER_HEAD);
ItemMeta meta = skull.getItemMeta(); ItemMeta meta = skull.getItemMeta();
((SkullMeta) meta).setOwningPlayer((Player) e.getEntity()); ((SkullMeta) meta).setOwningPlayer((Player) e.getEntity());
skull.setItemMeta(meta); skull.setItemMeta(meta);
e.getDrops().add(skull); e.getDrops().add(skull);
}
} }
return true; return true;
} }

View File

@ -44,8 +44,8 @@ public class ChargingBench extends AContainer {
ChargableBlock.addCharge(b, -getEnergyConsumption()); ChargableBlock.addCharge(b, -getEnergyConsumption());
float rest = ItemEnergy.addStoredEnergy(stack, getEnergyConsumption() / 2F); float rest = ItemEnergy.addStoredEnergy(stack, getEnergyConsumption() / 2F);
if (rest > 0F) { if (rest > 0F) {
if (fits(b, new ItemStack[] {stack})) { if (fits(b, stack)) {
pushItems(b, new ItemStack[] {stack}); pushItems(b, stack);
BlockStorage.getInventory(b).replaceExistingItem(slot, null); BlockStorage.getInventory(b).replaceExistingItem(slot, null);
} }
else { else {
@ -56,8 +56,8 @@ public class ChargingBench extends AContainer {
BlockStorage.getInventory(b).replaceExistingItem(slot, stack); BlockStorage.getInventory(b).replaceExistingItem(slot, stack);
} }
} }
else if (fits(b, new ItemStack[] {stack})) { else if (fits(b, stack)) {
pushItems(b, new ItemStack[] {stack}); pushItems(b, stack);
BlockStorage.getInventory(b).replaceExistingItem(slot, null); BlockStorage.getInventory(b).replaceExistingItem(slot, null);
} }
else { else {

View File

@ -40,4 +40,14 @@ public abstract class ElectricFurnace extends AContainer {
return "ELECTRIC_FURNACE"; return "ELECTRIC_FURNACE";
} }
@Override
public ItemStack getProgressBar() {
return new ItemStack(Material.FLINT_AND_STEEL);
}
@Override
public String getInventoryTitle() {
return "&bElectric Furnace";
}
} }

View File

@ -0,0 +1,68 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
import java.util.UUID;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.Slimefun.GPS.NetworkStatus;
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.BlockTicker;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
public abstract class GPSTransmitter extends SimpleSlimefunItem<BlockTicker> {
public GPSTransmitter(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, id, recipeType, recipe);
SlimefunItem.registerBlockHandler(getID(), new SlimefunBlockHandler() {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString());
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE);
return true;
}
});
}
public abstract double getMultiplier(int y);
public abstract int getEnergyConsumption();
@Override
public BlockTicker getItemHandler() {
return new BlockTicker() {
@Override
public void tick(Block b, SlimefunItem item, Config data) {
int charge = ChargableBlock.getCharge(b);
if (charge >= getEnergyConsumption()) {
Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE);
ChargableBlock.setCharge(b.getLocation(), charge - getEnergyConsumption());
}
else {
Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE);
}
}
@Override
public boolean isSynchronized() {
return false;
}
};
}
}

View File

@ -0,0 +1,74 @@
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 BioGenerator extends AGenerator {
public BioGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, id, recipeType, recipe);
}
@Override
public void registerDefaultRecipes() {
registerFuel(new MachineFuel(2, new ItemStack(Material.ROTTEN_FLESH)));
registerFuel(new MachineFuel(2, new ItemStack(Material.SPIDER_EYE)));
registerFuel(new MachineFuel(2, new ItemStack(Material.BONE)));
registerFuel(new MachineFuel(3, new ItemStack(Material.APPLE)));
registerFuel(new MachineFuel(3, new ItemStack(Material.MELON)));
registerFuel(new MachineFuel(27, new ItemStack(Material.MELON)));
registerFuel(new MachineFuel(3, new ItemStack(Material.PUMPKIN)));
registerFuel(new MachineFuel(3, new ItemStack(Material.PUMPKIN_SEEDS)));
registerFuel(new MachineFuel(3, new ItemStack(Material.MELON_SEEDS)));
registerFuel(new MachineFuel(3, new ItemStack(Material.WHEAT)));
registerFuel(new MachineFuel(3, new ItemStack(Material.WHEAT_SEEDS)));
registerFuel(new MachineFuel(3, new ItemStack(Material.CARROT)));
registerFuel(new MachineFuel(3, new ItemStack(Material.POTATO)));
registerFuel(new MachineFuel(3, new ItemStack(Material.SUGAR_CANE)));
registerFuel(new MachineFuel(3, new ItemStack(Material.NETHER_WART)));
registerFuel(new MachineFuel(2, new ItemStack(Material.RED_MUSHROOM)));
registerFuel(new MachineFuel(2, new ItemStack(Material.BROWN_MUSHROOM)));
registerFuel(new MachineFuel(2, new ItemStack(Material.VINE)));
registerFuel(new MachineFuel(2, new ItemStack(Material.CACTUS)));
registerFuel(new MachineFuel(2, new ItemStack(Material.LILY_PAD)));
registerFuel(new MachineFuel(8, new ItemStack(Material.CHORUS_FRUIT)));
registerFuel(new MachineFuel(1, new ItemStack(Material.BAMBOO)));
registerFuel(new MachineFuel(1, new ItemStack(Material.KELP)));
registerFuel(new MachineFuel(2, new ItemStack(Material.DRIED_KELP)));
registerFuel(new MachineFuel(20, new ItemStack(Material.DRIED_KELP_BLOCK)));
registerFuel(new MachineFuel(1, new ItemStack(Material.SEAGRASS)));
registerFuel(new MachineFuel(2, new ItemStack(Material.SEA_PICKLE)));
// Leaves
for(Material m: Tag.LEAVES.getValues()) {
registerFuel(new MachineFuel(1, new ItemStack(m)));
}
// Saplings
for (Material m: Tag.SAPLINGS.getValues()) {
registerFuel(new MachineFuel(1, new ItemStack(m)));
}
// Small Flowers (formally just dandelions and poppies.
for (Material m: Tag.SMALL_FLOWERS.getValues()) {
registerFuel(new MachineFuel(1, new ItemStack(m)));
}
}
@Override
public ItemStack getProgressBar() {
return new ItemStack(Material.GOLDEN_HOE);
}
@Override
public String getInventoryTitle() {
return "&2Bio Reactor";
}
}

View File

@ -22,6 +22,10 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
private Random random = new Random(); private Random random = new Random();
private int chanceSiftedOre;
private int chanceFlint;
private int chanceClay;
public AutomatedPanningMachine() { public AutomatedPanningMachine() {
super( super(
Categories.MACHINES_1, Categories.MACHINES_1,
@ -37,18 +41,27 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
); );
} }
@Override
public void postRegister() {
super.postRegister();
chanceSiftedOre = (int) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE");
chanceClay = (int) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY");
chanceFlint = (int) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT");
}
@Override @Override
public void onInteract(Player p, Block b) { public void onInteract(Player p, Block b) {
final ItemStack input = p.getInventory().getItemInMainHand(); final ItemStack input = p.getInventory().getItemInMainHand();
ItemStack output = null; ItemStack output = null;
if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) output = SlimefunItems.SIFTED_ORE; if (random.nextInt(100) < chanceSiftedOre) output = SlimefunItems.SIFTED_ORE;
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) output = new ItemStack(Material.CLAY_BALL); else if (random.nextInt(100) < chanceClay) output = new ItemStack(Material.CLAY_BALL);
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) output = new ItemStack(Material.FLINT); else if (random.nextInt(100) < chanceFlint) output = new ItemStack(Material.FLINT);
final ItemStack drop = output; final ItemStack drop = output;
if (input != null && input.getType() == Material.GRAVEL) { if (input != null && input.getType() == Material.GRAVEL && (!input.hasItemMeta() || (input.hasItemMeta() && !input.getItemMeta().hasDisplayName()))) {
PlayerInventory.consumeItemInHand(p); PlayerInventory.consumeItemInHand(p);
for (int i = 1; i < 7; i++) { for (int i = 1; i < 7; i++) {
@ -56,12 +69,17 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
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) {
if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop); if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop);
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
} }
}, i * 30L); }, i * 30L);
} }
return;
} }
Messages.local.sendTranslation(p, "machines.wrong-item", true); Messages.local.sendTranslation(p, "machines.wrong-item", true);

View File

@ -26,8 +26,8 @@ public class OreCrusher extends MultiBlockMachine {
"ORE_CRUSHER", "ORE_CRUSHER",
new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.IRON_BARS), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.IRON_BARS)}, new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.IRON_BARS), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.IRON_BARS)},
new ItemStack[] { new ItemStack[] {
new ItemStack(Material.IRON_ORE), new CustomItem(SlimefunItems.IRON_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.IRON_ORE), new CustomItem(SlimefunItems.IRON_DUST, (boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1),
new ItemStack(Material.GOLD_ORE), new CustomItem(SlimefunItems.GOLD_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.GOLD_ORE), new CustomItem(SlimefunItems.GOLD_DUST, (boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1),
new ItemStack(Material.NETHERRACK, 16), SlimefunItems.SULFATE, new ItemStack(Material.NETHERRACK, 16), SlimefunItems.SULFATE,
SlimefunItems.SIFTED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.SIFTED_ORE, SlimefunItems.CRUSHED_ORE,
SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE,

View File

@ -15,7 +15,6 @@ import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
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.Chest; import org.bukkit.block.Chest;
@ -25,7 +24,6 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
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.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;
@ -46,7 +44,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
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.GPSNetwork; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
import me.mrCookieSlime.Slimefun.GPS.NetworkStatus;
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.Lists.SlimefunItems;
@ -73,7 +70,6 @@ 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.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;
@ -135,12 +131,14 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPum
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodFabricator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodFabricator;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Freezer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Freezer;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.GPSTransmitter;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.HeatedPressureChamber; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.HeatedPressureChamber;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.NetherDrill; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.NetherDrill;
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.XPCollector;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.BioGenerator;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CoalGenerator; 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.CombustionGenerator;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.LavaGenerator; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.LavaGenerator;
@ -157,7 +155,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChambe
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.BlockPlaceHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
@ -361,7 +358,7 @@ public final class SlimefunSetup {
new GoldPan(Categories.TOOLS, SlimefunItems.GOLD_PAN, "GOLD_PAN", RecipeType.ENHANCED_CRAFTING_TABLE, new GoldPan(Categories.TOOLS, SlimefunItems.GOLD_PAN, "GOLD_PAN", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)}, new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)},
new ItemStack[] {new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE}, new ItemStack[] {new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE},
new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {47, 28, 15}) new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {40, 25, 35})
.register(true); .register(true);
new SlimefunItem(Categories.MISC, SlimefunItems.SIFTED_ORE, "SIFTED_ORE", RecipeType.GOLD_PAN, new SlimefunItem(Categories.MISC, SlimefunItems.SIFTED_ORE, "SIFTED_ORE", RecipeType.GOLD_PAN,
@ -466,11 +463,11 @@ public final class SlimefunSetup {
.register(true); .register(true);
new SlimefunItem(Categories.RESOURCES, SlimefunItems.IRON_DUST, "IRON_DUST", RecipeType.ORE_CRUSHER, new SlimefunItem(Categories.RESOURCES, SlimefunItems.IRON_DUST, "IRON_DUST", RecipeType.ORE_CRUSHER,
new ItemStack[] {new ItemStack(Material.IRON_ORE), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.IRON_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1)) new ItemStack[] {new ItemStack(Material.IRON_ORE), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.IRON_DUST, (boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1))
.register(true); .register(true);
new SlimefunItem(Categories.RESOURCES, SlimefunItems.GOLD_DUST, "GOLD_DUST", RecipeType.ORE_CRUSHER, new SlimefunItem(Categories.RESOURCES, SlimefunItems.GOLD_DUST, "GOLD_DUST", RecipeType.ORE_CRUSHER,
new ItemStack[] {new ItemStack(Material.GOLD_ORE), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.GOLD_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1)) new ItemStack[] {new ItemStack(Material.GOLD_ORE), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.GOLD_DUST, (boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1))
.register(true); .register(true);
new SlimefunItem(Categories.RESOURCES, SlimefunItems.COPPER_DUST, "COPPER_DUST", RecipeType.ORE_WASHER, new SlimefunItem(Categories.RESOURCES, SlimefunItems.COPPER_DUST, "COPPER_DUST", RecipeType.ORE_WASHER,
@ -1841,16 +1838,6 @@ public final class SlimefunSetup {
new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE, "ELECTRIC_FURNACE", RecipeType.ENHANCED_CRAFTING_TABLE, new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE, "ELECTRIC_FURNACE", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, new ItemStack(Material.FURNACE), 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.FURNACE), 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.FLINT_AND_STEEL);
}
@Override
public String getInventoryTitle() {
return "&bElectric Furnace";
}
@Override @Override
public int getEnergyConsumption() { public int getEnergyConsumption() {
return 2; return 2;
@ -1866,16 +1853,6 @@ public final class SlimefunSetup {
new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_2, "ELECTRIC_FURNACE_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_2, "ELECTRIC_FURNACE_2", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_FURNACE, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) { new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_FURNACE, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) {
@Override
public ItemStack getProgressBar() {
return new ItemStack(Material.FLINT_AND_STEEL);
}
@Override
public String getInventoryTitle() {
return "&bElectric Furnace";
}
@Override @Override
public int getEnergyConsumption() { public int getEnergyConsumption() {
return 3; return 3;
@ -1891,16 +1868,6 @@ public final class SlimefunSetup {
new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_3, "ELECTRIC_FURNACE_3", RecipeType.ENHANCED_CRAFTING_TABLE, new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_3, "ELECTRIC_FURNACE_3", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_FURNACE_2, SlimefunItems.STEEL_INGOT, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) { new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_FURNACE_2, SlimefunItems.STEEL_INGOT, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) {
@Override
public ItemStack getProgressBar() {
return new ItemStack(Material.FLINT_AND_STEEL);
}
@Override
public String getInventoryTitle() {
return "&bElectric Furnace";
}
@Override @Override
public int getEnergyConsumption() { public int getEnergyConsumption() {
return 5; return 5;
@ -1925,6 +1892,7 @@ public final class SlimefunSetup {
public int getSpeed() { public int getSpeed() {
return 1; return 1;
} }
}.registerChargeableBlock(true, 128); }.registerChargeableBlock(true, 128);
new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_2, "ELECTRIC_GOLD_PAN_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_2, "ELECTRIC_GOLD_PAN_2", RecipeType.ENHANCED_CRAFTING_TABLE,
@ -1939,6 +1907,7 @@ public final class SlimefunSetup {
public int getSpeed() { public int getSpeed() {
return 3; return 3;
} }
}.registerChargeableBlock(true, 128); }.registerChargeableBlock(true, 128);
new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_3, "ELECTRIC_GOLD_PAN_3", RecipeType.ENHANCED_CRAFTING_TABLE, new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_3, "ELECTRIC_GOLD_PAN_3", RecipeType.ENHANCED_CRAFTING_TABLE,
@ -1953,6 +1922,7 @@ public final class SlimefunSetup {
public int getSpeed() { public int getSpeed() {
return 10; return 10;
} }
}.registerChargeableBlock(true, 512); }.registerChargeableBlock(true, 512);
new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER, "ELECTRIC_DUST_WASHER", RecipeType.ENHANCED_CRAFTING_TABLE, new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER, "ELECTRIC_DUST_WASHER", RecipeType.ENHANCED_CRAFTING_TABLE,
@ -1967,6 +1937,7 @@ public final class SlimefunSetup {
public int getSpeed() { public int getSpeed() {
return 1; return 1;
} }
}.registerChargeableBlock(true, 128); }.registerChargeableBlock(true, 128);
new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_2, "ELECTRIC_DUST_WASHER_2", RecipeType.ENHANCED_CRAFTING_TABLE, new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_2, "ELECTRIC_DUST_WASHER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
@ -1981,6 +1952,7 @@ public final class SlimefunSetup {
public int getSpeed() { public int getSpeed() {
return 2; return 2;
} }
}.registerChargeableBlock(true, 128); }.registerChargeableBlock(true, 128);
new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_3, "ELECTRIC_DUST_WASHER_3", RecipeType.ENHANCED_CRAFTING_TABLE, new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_3, "ELECTRIC_DUST_WASHER_3", RecipeType.ENHANCED_CRAFTING_TABLE,
@ -1995,6 +1967,7 @@ public final class SlimefunSetup {
public int getSpeed() { public int getSpeed() {
return 10; return 10;
} }
}.registerChargeableBlock(true, 512); }.registerChargeableBlock(true, 512);
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,
@ -2171,62 +2144,9 @@ public final class SlimefunSetup {
}.registerUnrechargeableBlock(true, 256); }.registerUnrechargeableBlock(true, 256);
new AGenerator(Categories.ELECTRICITY, SlimefunItems.BIO_REACTOR, "BIO_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, new BioGenerator(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}) {
@Override
public void registerDefaultRecipes() {
registerFuel(new MachineFuel(2, new ItemStack(Material.ROTTEN_FLESH)));
registerFuel(new MachineFuel(2, new ItemStack(Material.SPIDER_EYE)));
registerFuel(new MachineFuel(2, new ItemStack(Material.BONE)));
registerFuel(new MachineFuel(3, new ItemStack(Material.APPLE)));
registerFuel(new MachineFuel(3, new ItemStack(Material.MELON)));
registerFuel(new MachineFuel(27, new ItemStack(Material.MELON)));
registerFuel(new MachineFuel(3, new ItemStack(Material.PUMPKIN)));
registerFuel(new MachineFuel(3, new ItemStack(Material.PUMPKIN_SEEDS)));
registerFuel(new MachineFuel(3, new ItemStack(Material.MELON_SEEDS)));
registerFuel(new MachineFuel(3, new ItemStack(Material.WHEAT)));
registerFuel(new MachineFuel(3, new ItemStack(Material.WHEAT_SEEDS)));
registerFuel(new MachineFuel(3, new ItemStack(Material.CARROT)));
registerFuel(new MachineFuel(3, new ItemStack(Material.POTATO)));
registerFuel(new MachineFuel(3, new ItemStack(Material.SUGAR_CANE)));
registerFuel(new MachineFuel(3, new ItemStack(Material.NETHER_WART)));
registerFuel(new MachineFuel(2, new ItemStack(Material.RED_MUSHROOM)));
registerFuel(new MachineFuel(2, new ItemStack(Material.BROWN_MUSHROOM)));
registerFuel(new MachineFuel(2, new ItemStack(Material.VINE)));
registerFuel(new MachineFuel(2, new ItemStack(Material.CACTUS)));
registerFuel(new MachineFuel(2, new ItemStack(Material.LILY_PAD)));
registerFuel(new MachineFuel(8, new ItemStack(Material.CHORUS_FRUIT)));
registerFuel(new MachineFuel(1, new ItemStack(Material.BAMBOO)));
registerFuel(new MachineFuel(1, new ItemStack(Material.KELP)));
registerFuel(new MachineFuel(2, new ItemStack(Material.DRIED_KELP)));
registerFuel(new MachineFuel(20, new ItemStack(Material.DRIED_KELP_BLOCK)));
registerFuel(new MachineFuel(1, new ItemStack(Material.SEAGRASS)));
registerFuel(new MachineFuel(2, new ItemStack(Material.SEA_PICKLE)));
// Leaves
for(Material m:Tag.LEAVES.getValues())
registerFuel(new MachineFuel(1, new ItemStack(m)));
// Saplings
for (Material m:Tag.SAPLINGS.getValues())
registerFuel(new MachineFuel(1, new ItemStack(m)));
// Small Flowers (formally just dandelions and poppies.
for(Material m:Tag.SMALL_FLOWERS.getValues())
registerFuel(new MachineFuel(1, new ItemStack(m)));
}
@Override
public ItemStack getProgressBar() {
return new ItemStack(Material.GOLDEN_HOE);
}
@Override
public String getInventoryTitle() {
return "&2Bio Reactor";
}
@Override @Override
public int getEnergyProduction() { public int getEnergyProduction() {
return 4; return 4;
@ -2304,147 +2224,66 @@ public final class SlimefunSetup {
new ItemStack[] {SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.TIN_DUST, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT}) new ItemStack[] {SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.TIN_DUST, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT})
.register(true); .register(true);
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_TRANSMITTER, "GPS_TRANSMITTER", RecipeType.ENHANCED_CRAFTING_TABLE, new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER, "GPS_TRANSMITTER", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT}) new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT}) {
.registerChargeableBlock(true, 16, new BlockTicker() {
@Override @Override
public void tick(Block b, SlimefunItem item, Config data) { public double getMultiplier(int y) {
int charge = ChargableBlock.getCharge(b); return y;
if (charge > 0) {
Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE);
ChargableBlock.setCharge(b.getLocation(), charge - 1);
}
else Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE);
} }
@Override @Override
public boolean isSynchronized() { public int getEnergyConsumption() {
return false; return 1;
} }
});
SlimefunItem.registerBlockHandler("GPS_TRANSMITTER", new SlimefunBlockHandler() { }
.registerChargeableBlock(true, 16);
new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_2, "GPS_TRANSMITTER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.CARBON, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER}) {
@Override @Override
public void onPlace(Player p, Block b, SlimefunItem item) { public double getMultiplier(int y) {
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); return y * 4.0 + 100;
} }
@Override @Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { public int getEnergyConsumption() {
Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); return 3;
return true;
} }
});
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_2, "GPS_TRANSMITTER_2", RecipeType.ENHANCED_CRAFTING_TABLE, }.registerChargeableBlock(true, 64);
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.CARBON, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER})
.registerChargeableBlock(true, 64, new BlockTicker() { new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_3, "GPS_TRANSMITTER_3", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CARBONADO, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2}) {
@Override @Override
public void tick(Block b, SlimefunItem item, Config data) { public double getMultiplier(int y) {
int charge = ChargableBlock.getCharge(b.getLocation()); return y * 16.0 + 500;
if (charge > 2) {
Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4.0 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE);
ChargableBlock.setCharge(b.getLocation(), charge - 3);
}
else {
Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4.0 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE);
}
} }
@Override @Override
public boolean isSynchronized() { public int getEnergyConsumption() {
return false; return 11;
} }
});
SlimefunItem.registerBlockHandler("GPS_TRANSMITTER_2", new SlimefunBlockHandler() { }.registerChargeableBlock(true, 256);
new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_4, "GPS_TRANSMITTER_4", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.NICKEL_INGOT, SlimefunItems.CARBONADO, SlimefunItems.NICKEL_INGOT, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3}) {
@Override @Override
public void onPlace(Player p, Block b, SlimefunItem item) { public double getMultiplier(int y) {
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); return y * 64.0 + 600;
} }
@Override @Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { public int getEnergyConsumption() {
Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 4.0 + 100, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE); return 46;
return true;
}
});
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_3, "GPS_TRANSMITTER_3", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CARBONADO, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2})
.registerChargeableBlock(true, 256, new BlockTicker() {
@Override
public void tick(Block b, SlimefunItem item, Config data) {
int charge = ChargableBlock.getCharge(b.getLocation());
if (charge > 10) {
Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16.0 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE);
ChargableBlock.setCharge(b.getLocation(), charge - 11);
}
else {
Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16.0 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE);
}
} }
@Override }.registerChargeableBlock(true, 1024);
public boolean isSynchronized() {
return false;
}
});
SlimefunItem.registerBlockHandler("GPS_TRANSMITTER_3", new SlimefunBlockHandler() {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString());
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 16.0 + 500, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE);
return true;
}
});
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_4, "GPS_TRANSMITTER_4", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.NICKEL_INGOT, SlimefunItems.CARBONADO, SlimefunItems.NICKEL_INGOT, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3})
.registerChargeableBlock(true, 1024, new BlockTicker() {
@Override
public void tick(Block b, SlimefunItem item, Config data) {
int charge = ChargableBlock.getCharge(b.getLocation());
if (charge > 45) {
Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64.0 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE);
ChargableBlock.setCharge(b.getLocation(), charge - 46);
}
else {
Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64.0 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE);
}
}
@Override
public boolean isSynchronized() {
return false;
}
});
SlimefunItem.registerBlockHandler("GPS_TRANSMITTER_4", new SlimefunBlockHandler() {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString());
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
Slimefun.getGPSNetwork().updateTransmitter(new Location(b.getWorld(), b.getX(), b.getY() * 64.0 + 800, b.getZ()), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.OFFLINE);
return true;
}
});
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_CONTROL_PANEL, "GPS_CONTROL_PANEL", RecipeType.ENHANCED_CRAFTING_TABLE, new SlimefunItem(Categories.GPS, SlimefunItems.GPS_CONTROL_PANEL, "GPS_CONTROL_PANEL", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COBALT_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.COBALT_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT}) new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COBALT_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.COBALT_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT})

View File

@ -13,8 +13,8 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.Research;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ItemState;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem.State;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.Messages;
@ -118,11 +118,11 @@ public final class Slimefun {
*/ */
public static boolean hasUnlocked(Player p, ItemStack item, boolean message) { public static boolean hasUnlocked(Player p, ItemStack item, boolean message) {
SlimefunItem sfItem = SlimefunItem.getByItem(item); SlimefunItem sfItem = SlimefunItem.getByItem(item);
State state = SlimefunItem.getState(item); ItemState state = SlimefunItem.getState(item);
if (sfItem == null) { if (sfItem == null) {
if (state != State.ENABLED) { if (state != ItemState.ENABLED) {
if (message && state != State.VANILLA) Messages.local.sendTranslation(p, "messages.disabled-item", true); if (message && state != ItemState.VANILLA) Messages.local.sendTranslation(p, "messages.disabled-item", true);
return false; return false;
} }
else return true; else return true;

View File

@ -97,12 +97,10 @@ public class BlockMenu extends DirtyChestMenu {
public void delete(Location l) { public void delete(Location l) {
File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi"); File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi");
if (file.exists()) { if (file.exists() && !file.delete()) {
if (!file.delete()) {
Slimefun.getLogger().log(Level.WARNING, "Could not delete File: " + file.getName()); Slimefun.getLogger().log(Level.WARNING, "Could not delete File: " + file.getName());
} }
} }
}
public BlockMenuPreset getPreset() { public BlockMenuPreset getPreset() {
return this.preset; return this.preset;

View File

@ -15,6 +15,7 @@ import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
@ -44,7 +45,11 @@ public class BowListener implements Listener {
private void handleGrapplingHook(Arrow arrow) { private void handleGrapplingHook(Arrow arrow) {
if (arrow != null && arrow.getShooter() instanceof Player && SlimefunPlugin.getUtilities().jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { if (arrow != null && arrow.getShooter() instanceof Player && SlimefunPlugin.getUtilities().jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) {
final Player p = (Player) arrow.getShooter(); final Player p = (Player) arrow.getShooter();
if (p.getGameMode() != GameMode.CREATIVE && SlimefunPlugin.getUtilities().jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK"));
if (p.getGameMode() != GameMode.CREATIVE && (boolean) SlimefunPlugin.getUtilities().jumpState.get(p.getUniqueId())) {
arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItems.GRAPPLING_HOOK);
}
if (p.getLocation().distance(arrow.getLocation()) < 3.0D) { if (p.getLocation().distance(arrow.getLocation()) < 3.0D) {
if (arrow.getLocation().getY() > p.getLocation().getY()) { if (arrow.getLocation().getY() > p.getLocation().getY()) {
p.setVelocity(new Vector(0.0D, 0.25D, 0.0D)); p.setVelocity(new Vector(0.0D, 0.25D, 0.0D));

View File

@ -113,7 +113,9 @@ public class TalismanListener implements Listener {
List<String> enchantments = new ArrayList<>(); List<String> enchantments = new ArrayList<>();
for (Enchantment en : Enchantment.values()) { for (Enchantment en : Enchantment.values()) {
for (int i = 1; i <= en.getMaxLevel(); i++) { for (int i = 1; i <= en.getMaxLevel(); i++) {
if ((Boolean) Slimefun.getItemValue("MAGICIAN_TALISMAN", "allow-enchantments." + en.getKey().getKey() + ".level." + i) && en.canEnchantItem(e.getItem())) enchantments.add(en.getKey().getKey() + '-' + i); if ((boolean) Slimefun.getItemValue("MAGICIAN_TALISMAN", "allow-enchantments." + en.getKey().getKey() + ".level." + i) && en.canEnchantItem(e.getItem())) {
enchantments.add(en.getKey().getKey() + '-' + i);
}
} }
} }
String enchant = enchantments.get(random.nextInt(enchantments.size())); String enchant = enchantments.get(random.nextInt(enchantments.size()));