mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Reduced technical debt + Fixes #1095
This commit is contained in:
parent
9293808357
commit
c7040d09be
@ -44,9 +44,7 @@ public final class TeleportationSequence {
|
||||
}
|
||||
|
||||
private static boolean isValid(Player p, Location source) {
|
||||
if (p == null) return false;
|
||||
if (p.getLocation().distance(source) > 1.4) return false;
|
||||
return true;
|
||||
return p != null && p.getLocation().distanceSquared(source) < 2.0;
|
||||
}
|
||||
|
||||
private static void cancel(UUID uuid, Player p) {
|
||||
|
@ -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
|
||||
}
|
@ -36,7 +36,7 @@ public class SlimefunItem {
|
||||
|
||||
private String id;
|
||||
private String hash;
|
||||
private State state;
|
||||
private ItemState state;
|
||||
private ItemStack item;
|
||||
private Category category;
|
||||
private ItemStack[] recipe;
|
||||
@ -58,28 +58,6 @@ public class SlimefunItem {
|
||||
private Object[] values = 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) {
|
||||
this.item = item;
|
||||
this.category = category;
|
||||
@ -149,7 +127,7 @@ public class SlimefunItem {
|
||||
@Deprecated
|
||||
public String getHash() { return hash; }
|
||||
|
||||
public State getState() { return state; }
|
||||
public ItemState getState() { return state; }
|
||||
public ItemStack getItem() { return item; }
|
||||
public Category getCategory() { return category; }
|
||||
public ItemStack[] getRecipe() { return recipe; }
|
||||
@ -193,7 +171,7 @@ public class SlimefunItem {
|
||||
public EnergyTicker getEnergyTicker() { return energyTicker; }
|
||||
public String[] listKeys() { return keys; }
|
||||
public Object[] listValues() { return values; }
|
||||
public boolean isDisabled() { return state != State.ENABLED; }
|
||||
public boolean isDisabled() { return state != ItemState.ENABLED; }
|
||||
|
||||
public void register() {
|
||||
register(false);
|
||||
@ -229,14 +207,14 @@ public class SlimefunItem {
|
||||
}
|
||||
|
||||
if (this.ticking && !SlimefunPlugin.getCfg().getBoolean("URID.enable-tickers")) {
|
||||
this.state = State.DISABLED;
|
||||
this.state = ItemState.DISABLED;
|
||||
return;
|
||||
}
|
||||
|
||||
if (SlimefunPlugin.getItemCfg().getBoolean(id + ".enabled")) {
|
||||
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.hidden = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".hide-in-guide");
|
||||
@ -260,8 +238,12 @@ public class SlimefunItem {
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this instanceof VanillaItem) this.state = State.VANILLA;
|
||||
else this.state = State.DISABLED;
|
||||
if (this instanceof VanillaItem) {
|
||||
this.state = ItemState.VANILLA;
|
||||
}
|
||||
else {
|
||||
this.state = ItemState.DISABLED;
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
if (i.isItem(item)) {
|
||||
return i.getState();
|
||||
}
|
||||
}
|
||||
return State.ENABLED;
|
||||
return ItemState.ENABLED;
|
||||
}
|
||||
|
||||
public static boolean isDisabled(ItemStack item) {
|
||||
|
@ -27,14 +27,12 @@ public class PickaxeOfTheSeeker extends SimpleSlimefunItem<ItemInteractionHandle
|
||||
for (int x = -4; x <= 4; x++) {
|
||||
for (int y = -4; y <= 4; y++) {
|
||||
for (int z = -4; z <= 4; z++) {
|
||||
if (p.getLocation().getBlock().getRelative(x, y, z).getType().toString().endsWith("_ORE")) {
|
||||
if (closest == null || p.getLocation().distance(closest.getLocation()) < p.getLocation().distance(p.getLocation().getBlock().getRelative(x, y, z).getLocation())) {
|
||||
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())) {
|
||||
closest = p.getLocation().getBlock().getRelative(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (closest == null) {
|
||||
Messages.local.sendTranslation(p, "miner.no-ores", true);
|
||||
|
@ -57,9 +57,8 @@ public class StormStaff extends SimpleSlimefunItem<ItemInteractionHandler> {
|
||||
ItemMeta sfItemMeta = sfItem.getItemMeta();
|
||||
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.
|
||||
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) {
|
||||
// Get a target block with max. 30 blocks of distance
|
||||
Location loc = p.getTargetBlock(null, 30).getLocation();
|
||||
@ -106,7 +105,6 @@ public class StormStaff extends SimpleSlimefunItem<ItemInteractionHandler> {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
@ -55,15 +55,13 @@ public class SwordOfBeheading extends SimpleSlimefunItem<EntityKillHandler> {
|
||||
e.getDrops().add(new ItemStack(Material.CREEPER_HEAD));
|
||||
}
|
||||
}
|
||||
else if (e.getEntity() instanceof Player) {
|
||||
if (random.nextInt(100) < chancePlayer) {
|
||||
else if (e.getEntity() instanceof Player && 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;
|
||||
}
|
||||
|
@ -44,8 +44,8 @@ public class ChargingBench extends AContainer {
|
||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
||||
float rest = ItemEnergy.addStoredEnergy(stack, getEnergyConsumption() / 2F);
|
||||
if (rest > 0F) {
|
||||
if (fits(b, new ItemStack[] {stack})) {
|
||||
pushItems(b, new ItemStack[] {stack});
|
||||
if (fits(b, stack)) {
|
||||
pushItems(b, stack);
|
||||
BlockStorage.getInventory(b).replaceExistingItem(slot, null);
|
||||
}
|
||||
else {
|
||||
@ -56,8 +56,8 @@ public class ChargingBench extends AContainer {
|
||||
BlockStorage.getInventory(b).replaceExistingItem(slot, stack);
|
||||
}
|
||||
}
|
||||
else if (fits(b, new ItemStack[] {stack})) {
|
||||
pushItems(b, new ItemStack[] {stack});
|
||||
else if (fits(b, stack)) {
|
||||
pushItems(b, stack);
|
||||
BlockStorage.getInventory(b).replaceExistingItem(slot, null);
|
||||
}
|
||||
else {
|
||||
|
@ -40,4 +40,14 @@ public abstract class ElectricFurnace extends AContainer {
|
||||
return "ELECTRIC_FURNACE";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getProgressBar() {
|
||||
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryTitle() {
|
||||
return "&bElectric Furnace";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
@ -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";
|
||||
}
|
||||
|
||||
}
|
@ -22,6 +22,10 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
|
||||
|
||||
private Random random = new Random();
|
||||
|
||||
private int chanceSiftedOre;
|
||||
private int chanceFlint;
|
||||
private int chanceClay;
|
||||
|
||||
public AutomatedPanningMachine() {
|
||||
super(
|
||||
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
|
||||
public void onInteract(Player p, Block b) {
|
||||
final ItemStack input = p.getInventory().getItemInMainHand();
|
||||
ItemStack output = null;
|
||||
|
||||
if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) output = SlimefunItems.SIFTED_ORE;
|
||||
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) output = new ItemStack(Material.CLAY_BALL);
|
||||
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) output = new ItemStack(Material.FLINT);
|
||||
if (random.nextInt(100) < chanceSiftedOre) output = SlimefunItems.SIFTED_ORE;
|
||||
else if (random.nextInt(100) < chanceClay) output = new ItemStack(Material.CLAY_BALL);
|
||||
else if (random.nextInt(100) < chanceFlint) output = new ItemStack(Material.FLINT);
|
||||
|
||||
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);
|
||||
|
||||
for (int i = 1; i < 7; i++) {
|
||||
@ -56,12 +69,17 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
|
||||
|
||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||
b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL);
|
||||
|
||||
if (j == 6) {
|
||||
if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop);
|
||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
||||
}
|
||||
|
||||
}, i * 30L);
|
||||
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Messages.local.sendTranslation(p, "machines.wrong-item", true);
|
||||
|
@ -26,8 +26,8 @@ public class OreCrusher extends MultiBlockMachine {
|
||||
"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[] {
|
||||
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.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.NETHERRACK, 16), SlimefunItems.SULFATE,
|
||||
SlimefunItems.SIFTED_ORE, SlimefunItems.CRUSHED_ORE,
|
||||
SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE,
|
||||
|
@ -15,7 +15,6 @@ import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.Tag;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.Chest;
|
||||
@ -25,7 +24,6 @@ import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||
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.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
||||
import me.mrCookieSlime.Slimefun.GPS.NetworkStatus;
|
||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
@ -73,7 +70,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter;
|
||||
@ -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.FoodFabricator;
|
||||
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.NetherDrill;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.OilPump;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Refinery;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.WitherAssembler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.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.CombustionGenerator;
|
||||
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.TableSaw;
|
||||
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.ItemConsumptionHandler;
|
||||
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 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 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);
|
||||
|
||||
new SlimefunItem(Categories.MISC, SlimefunItems.SIFTED_ORE, "SIFTED_ORE", RecipeType.GOLD_PAN,
|
||||
@ -466,11 +463,11 @@ public final class SlimefunSetup {
|
||||
.register(true);
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
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 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
|
||||
public int getEnergyConsumption() {
|
||||
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 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
|
||||
public int getEnergyConsumption() {
|
||||
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 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
|
||||
public int getEnergyConsumption() {
|
||||
return 5;
|
||||
@ -1925,6 +1892,7 @@ public final class SlimefunSetup {
|
||||
public int getSpeed() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
}.registerChargeableBlock(true, 128);
|
||||
|
||||
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() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
}.registerChargeableBlock(true, 128);
|
||||
|
||||
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() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
}.registerChargeableBlock(true, 512);
|
||||
|
||||
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() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
}.registerChargeableBlock(true, 128);
|
||||
|
||||
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() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
}.registerChargeableBlock(true, 128);
|
||||
|
||||
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() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
}.registerChargeableBlock(true, 512);
|
||||
|
||||
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);
|
||||
|
||||
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}) {
|
||||
|
||||
@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
|
||||
public int getEnergyProduction() {
|
||||
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})
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(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})
|
||||
.registerChargeableBlock(true, 16, new BlockTicker() {
|
||||
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}) {
|
||||
|
||||
@Override
|
||||
public void tick(Block b, SlimefunItem item, Config data) {
|
||||
int charge = ChargableBlock.getCharge(b);
|
||||
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);
|
||||
public double getMultiplier(int y) {
|
||||
return y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return false;
|
||||
public int getEnergyConsumption() {
|
||||
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
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString());
|
||||
public double getMultiplier(int y) {
|
||||
return y * 4.0 + 100;
|
||||
}
|
||||
|
||||
@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 int getEnergyConsumption() {
|
||||
return 3;
|
||||
}
|
||||
});
|
||||
|
||||
new SlimefunItem(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})
|
||||
.registerChargeableBlock(true, 64, new BlockTicker() {
|
||||
}.registerChargeableBlock(true, 64);
|
||||
|
||||
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
|
||||
public void tick(Block b, SlimefunItem item, Config data) {
|
||||
int charge = ChargableBlock.getCharge(b.getLocation());
|
||||
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);
|
||||
}
|
||||
public double getMultiplier(int y) {
|
||||
return y * 16.0 + 500;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSynchronized() {
|
||||
return false;
|
||||
public int getEnergyConsumption() {
|
||||
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
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString());
|
||||
public double getMultiplier(int y) {
|
||||
return y * 64.0 + 600;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||
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 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);
|
||||
}
|
||||
public int getEnergyConsumption() {
|
||||
return 46;
|
||||
}
|
||||
|
||||
@Override
|
||||
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;
|
||||
}
|
||||
});
|
||||
}.registerChargeableBlock(true, 1024);
|
||||
|
||||
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})
|
||||
|
@ -13,8 +13,8 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
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.State;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
|
||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||
|
||||
@ -118,11 +118,11 @@ public final class Slimefun {
|
||||
*/
|
||||
public static boolean hasUnlocked(Player p, ItemStack item, boolean message) {
|
||||
SlimefunItem sfItem = SlimefunItem.getByItem(item);
|
||||
State state = SlimefunItem.getState(item);
|
||||
ItemState state = SlimefunItem.getState(item);
|
||||
|
||||
if (sfItem == null) {
|
||||
if (state != State.ENABLED) {
|
||||
if (message && state != State.VANILLA) Messages.local.sendTranslation(p, "messages.disabled-item", true);
|
||||
if (state != ItemState.ENABLED) {
|
||||
if (message && state != ItemState.VANILLA) Messages.local.sendTranslation(p, "messages.disabled-item", true);
|
||||
return false;
|
||||
}
|
||||
else return true;
|
||||
|
@ -97,12 +97,10 @@ public class BlockMenu extends DirtyChestMenu {
|
||||
public void delete(Location l) {
|
||||
File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi");
|
||||
|
||||
if (file.exists()) {
|
||||
if (!file.delete()) {
|
||||
if (file.exists() && !file.delete()) {
|
||||
Slimefun.getLogger().log(Level.WARNING, "Could not delete File: " + file.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public BlockMenuPreset getPreset() {
|
||||
return this.preset;
|
||||
|
@ -15,6 +15,7 @@ import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||
@ -44,7 +45,11 @@ public class BowListener implements Listener {
|
||||
private void handleGrapplingHook(Arrow arrow) {
|
||||
if (arrow != null && arrow.getShooter() instanceof Player && SlimefunPlugin.getUtilities().jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) {
|
||||
final Player p = (Player) arrow.getShooter();
|
||||
if (p.getGameMode() != GameMode.CREATIVE && 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 (arrow.getLocation().getY() > p.getLocation().getY()) {
|
||||
p.setVelocity(new Vector(0.0D, 0.25D, 0.0D));
|
||||
|
@ -113,7 +113,9 @@ public class TalismanListener implements Listener {
|
||||
List<String> enchantments = new ArrayList<>();
|
||||
for (Enchantment en : Enchantment.values()) {
|
||||
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()));
|
||||
|
Loading…
Reference in New Issue
Block a user