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

Merge pull request #850 from SoSeDiK/tests

Updated methods for skull rotation & better water handling
This commit is contained in:
TheBusyBiscuit 2019-02-23 22:41:35 +01:00 committed by GitHub
commit e67f19b552
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 93 additions and 114 deletions

View File

@ -20,9 +20,10 @@ import org.bukkit.OfflinePlayer;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.Ageable;
import org.bukkit.block.data.Rotatable;
import org.bukkit.block.Dispenser;
import org.bukkit.block.Skull;
import org.bukkit.entity.Ageable;
import org.bukkit.entity.Animals;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Entity;
@ -100,7 +101,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
public abstract float getFuelEfficiency();
public abstract int getTier();
@SuppressWarnings("deprecation")
public ProgrammableAndroid(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, name, recipeType, recipe);
@ -218,12 +218,12 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
BlockStorage.addBlockInfo(b, "script", "START-TURN_LEFT-REPEAT");
BlockStorage.addBlockInfo(b, "index", "0");
BlockStorage.addBlockInfo(b, "fuel", "0");
BlockStorage.addBlockInfo(b, "rotation", "NORTH");
BlockStorage.addBlockInfo(b, "rotation", p.getFacing().toString());
BlockStorage.addBlockInfo(b, "paused", "true");
b.setType(Material.PLAYER_HEAD);
Skull skull = (Skull) b.getState();
skull.setRotation(BlockFace.NORTH);
skull.update(true, false);
Rotatable blockData = (Rotatable) b.getBlockData();
blockData.setRotation(p.getFacing());
b.setBlockData(blockData);
}
@Override
@ -252,7 +252,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
});
}
@SuppressWarnings("deprecation")
protected void tick(Block b) {
try {
if (!(b.getState() instanceof Skull)) {
@ -327,9 +326,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
int rotIndex = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) - 1;
if (rotIndex < 0) rotIndex = directions.size() - 1;
BlockFace dir = directions.get(rotIndex);
Skull skull = (Skull) b.getState();
skull.setRotation(dir);
skull.update(true, false);
Rotatable blockData = (Rotatable) b.getBlockData();
blockData.setRotation(dir);
b.setBlockData(blockData);
BlockStorage.addBlockInfo(b, "rotation", dir.toString());
break;
}
@ -337,9 +336,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
int rotIndex = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) + 1;
if (rotIndex == directions.size()) rotIndex = 0;
BlockFace dir = directions.get(rotIndex);
Skull skull = (Skull) b.getState();
skull.setRotation(dir);
skull.update(true, false);
Rotatable blockData = (Rotatable) b.getBlockData();
blockData.setRotation(dir);
b.setBlockData(blockData);
BlockStorage.addBlockInfo(b, "rotation", dir.toString());
break;
}
@ -652,7 +651,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
entities:
for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) {
if (n instanceof Monster) continue;
if (n instanceof Ageable && !((Ageable) n).isAdult()) continue;
if (n instanceof org.bukkit.entity.Ageable && !((org.bukkit.entity.Ageable) n).isAdult()) continue;
switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) {
case NORTH: {
if (n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.getLocation().getZ() < b.getZ()) {
@ -709,16 +708,14 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
}
}
@SuppressWarnings("deprecation")
private void move(Block b, BlockFace face, Block block) throws Exception {
if (block.getY() < 0 || block.getY() > block.getWorld().getMaxHeight()) return;
if (block.getType() == Material.AIR) {
block.setType(Material.PLAYER_HEAD);
Skull skull = (Skull) block.getState();
skull.setRotation(face);
skull.update(true, false);
Rotatable blockData = (Rotatable) block.getBlockData();
blockData.setRotation(face);
block.setBlockData(blockData);
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
b.setType(Material.AIR);
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
@ -752,7 +749,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
}
}
@SuppressWarnings("deprecation")
private void movedig(Block b, BlockFace face, Block block) {
Collection<ItemStack> drops = block.getDrops();
if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), block)) {
@ -763,14 +759,11 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
if (SlimefunItem.blockhandler.containsKey(item.getID())) {
if (SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) {
pushItems(b, BlockStorage.retrieve(block));
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
block.setType(Material.PLAYER_HEAD);
Skull skull = (Skull) block.getState();
skull.setRotation(face);
skull.update(true, false);
Rotatable blockData = (Rotatable) block.getBlockData();
blockData.setRotation(face);
block.setBlockData(blockData);
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
b.setType(Material.AIR);
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
@ -784,10 +777,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
pushItems(b, items);
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
block.setType(Material.PLAYER_HEAD);
Skull skull = (Skull) block.getState();
skull.setRotation(face);
skull.update(true, false);
Rotatable blockData = (Rotatable) block.getBlockData();
blockData.setRotation(face);
block.setBlockData(blockData);
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
b.setType(Material.AIR);
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
@ -807,7 +799,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
}
private boolean isFullGrown(Block block){
org.bukkit.block.data.Ageable ageable = ((org.bukkit.block.data.Ageable)block.getBlockData());
Ageable ageable = ((Ageable) block.getBlockData());
return ageable.getAge() >= ageable.getMaximumAge();
}
@ -819,7 +811,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
ItemStack drop = new ItemStack(Material.WHEAT, CSCoreLib.randomizer().nextInt(3) + 1);
if (fits(b, drop)) {
pushItems(b, drop);
org.bukkit.block.data.Ageable ageable = (org.bukkit.block.data.Ageable)block.getBlockData();
Ageable ageable = (Ageable) block.getBlockData();
ageable.setAge(0);
block.setBlockData(ageable);
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
@ -832,7 +824,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
ItemStack drop = new ItemStack(Material.POTATO, CSCoreLib.randomizer().nextInt(3) + 1);
if (fits(b, drop)) {
pushItems(b, drop);
org.bukkit.block.data.Ageable ageable = (org.bukkit.block.data.Ageable)block.getBlockData();
Ageable ageable = (Ageable) block.getBlockData();
ageable.setAge(0);
block.setBlockData(ageable);
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
@ -845,7 +837,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
ItemStack drop = new ItemStack(Material.CARROT, CSCoreLib.randomizer().nextInt(3) + 1);
if (fits(b, drop)) {
pushItems(b, drop);
org.bukkit.block.data.Ageable ageable = (org.bukkit.block.data.Ageable)block.getBlockData();
Ageable ageable = (Ageable) block.getBlockData();
ageable.setAge(0);
block.setBlockData(ageable);
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
@ -858,7 +850,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
ItemStack drop = new ItemStack(Material.BEETROOT, CSCoreLib.randomizer().nextInt(3) + 1);
if (fits(b, drop)) {
pushItems(b, drop);
org.bukkit.block.data.Ageable ageable = (org.bukkit.block.data.Ageable)block.getBlockData();
Ageable ageable = (Ageable) block.getBlockData();
ageable.setAge(0);
block.setBlockData(ageable);
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
@ -871,7 +863,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
ItemStack drop = new ItemStack(Material.COCOA_BEANS, CSCoreLib.randomizer().nextInt(3) + 1);
if (fits(b, drop)) {
pushItems(b, drop);
org.bukkit.block.data.Ageable ageable = (org.bukkit.block.data.Ageable)block.getBlockData();
Ageable ageable = (Ageable) block.getBlockData();
ageable.setAge(0);
block.setBlockData(ageable);
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
@ -884,7 +876,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
ItemStack drop = new ItemStack(Material.NETHER_WART, CSCoreLib.randomizer().nextInt(3) + 1);
if (fits(b, drop)) {
pushItems(b, drop);
org.bukkit.block.data.Ageable ageable = (org.bukkit.block.data.Ageable)block.getBlockData();
Ageable ageable = (Ageable) block.getBlockData();
ageable.setAge(0);
block.setBlockData(ageable);
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());

View File

@ -327,7 +327,7 @@ public class SlimefunItems {
/* Gems */
public static ItemStack SYNTHETIC_DIAMOND = new CustomItem(Material.DIAMOND, "&bSynthetic Diamond", 0);
public static ItemStack SYNTHETIC_EMERALD = new CustomItem(Material.EMERALD, "&bSynthetic Emerald", 0);
public static ItemStack SYNTHETIC_SAPPHIRE;
public static ItemStack SYNTHETIC_SAPPHIRE = null;
public static ItemStack CARBONADO = null;
public static ItemStack RAW_CARBONADO = null;
public static ItemStack URANIUM = null;

View File

@ -6,7 +6,6 @@ import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
import org.bukkit.Bukkit;
import org.bukkit.block.Block;
import org.bukkit.block.Furnace;
import org.bukkit.inventory.ItemStack;

View File

@ -6,6 +6,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
import org.bukkit.block.Block;
import org.bukkit.block.data.Waterlogged;
public class RainbowTicker extends BlockTicker {
@ -25,13 +26,19 @@ public class RainbowTicker extends BlockTicker {
@Override
public void tick(Block b, SlimefunItem item, Config data) {
if (MaterialHelper.isWool(b.getType())){
if (MaterialHelper.isWool(b.getType())) {
b.setType(MaterialHelper.WoolColours[meta], false);
}else if (MaterialHelper.isStainedGlass(b.getType())) {
} else if (MaterialHelper.isStainedGlass(b.getType())) {
b.setType(MaterialHelper.StainedGlassColours[meta], false);
}else if (MaterialHelper.isStainedGlassPane(b.getType())){
} else if (MaterialHelper.isStainedGlassPane(b.getType())){
boolean waterlogged = ((Waterlogged) b.getBlockData()).isWaterlogged();
b.setType(MaterialHelper.StainedGlassPaneColours[meta], true);
}else if (MaterialHelper.isTerracotta(b.getType())){
if (waterlogged) {
Waterlogged block = (Waterlogged) b.getBlockData();
block.setWaterlogged(true);
b.setBlockData(block);
}
} else if (MaterialHelper.isTerracotta(b.getType())){
b.setType(MaterialHelper.TerracottaColours[meta], false);
}
}

View File

@ -1,12 +1,10 @@
package me.mrCookieSlime.Slimefun.Setup;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;

View File

@ -8,7 +8,6 @@ import java.util.ArrayDeque;
import java.util.ArrayList;
import org.bukkit.Location;
import org.bukkit.Color;
import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.MC_1_13.ParticleEffect;
import me.mrCookieSlime.Slimefun.SlimefunStartup;

View File

@ -1,4 +1,3 @@
package me.mrCookieSlime.Slimefun.listeners;
import java.util.List;
@ -8,10 +7,10 @@ import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.BrewingStand;
import org.bukkit.block.Hopper;
import org.bukkit.block.Skull;
import org.bukkit.block.data.Rotatable;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.Player;
import org.bukkit.entity.Wither;
@ -66,11 +65,6 @@ public class ItemListener implements Listener {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
/**
* Listens to InventoryMoveItemEvent to handle IGNITION_CHAMBER.
* @param e InventoryMoveItemEvent
* @since 4.1.11
*/
@EventHandler
public void onIgnitionChamberItemMove(InventoryMoveItemEvent e) {
if (e.getInitiator().getHolder() instanceof Hopper) {
@ -80,7 +74,6 @@ public class ItemListener implements Listener {
}
}
@SuppressWarnings("deprecation")
@EventHandler
public void debug(PlayerInteractEvent e) {
if (e.getAction().equals(Action.PHYSICAL) || !e.getHand().equals(EquipmentSlot.HAND)) return;
@ -110,11 +103,11 @@ public class ItemListener implements Listener {
}
else if (BlockStorage.hasBlockInfo(e.getClickedBlock())) {
p.sendMessage(" ");
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&d" + e.getClickedBlock().getType() + ":" + e.getClickedBlock().getData() + " &e@ X: " + e.getClickedBlock().getX() + " Y: " + e.getClickedBlock().getY() + " Z: " + e.getClickedBlock().getZ()));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&d" + e.getClickedBlock().getType() + " &e@ X: " + e.getClickedBlock().getX() + " Y: " + e.getClickedBlock().getY() + " Z: " + e.getClickedBlock().getZ()));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dID: " + "&e" + BlockStorage.checkID(e.getClickedBlock())));
if (e.getClickedBlock().getState() instanceof Skull) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dSkull: " + "&2\u2714"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dRotation: &e" + ((Skull) e.getClickedBlock().getState()).getRotation().toString()));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dRotation: &e" + ((Rotatable) e.getClickedBlock().getBlockData()).getRotation().toString()));
}
if (BlockStorage.getStorage(e.getClickedBlock().getWorld()).hasInventory(e.getClickedBlock().getLocation())) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dInventory: " + "&2\u2714"));
@ -124,7 +117,7 @@ public class ItemListener implements Listener {
}
if (BlockStorage.check(e.getClickedBlock()).isTicking()) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&dTicking: " + "&2\u2714"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dAsync: &e" + (BlockStorage.check(e.getClickedBlock()).getTicker().isSynchronized() ? "&4\u2718": "&2\u2714")));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dAsync: &e" + (BlockStorage.check(e.getClickedBlock()).getBlockTicker().isSynchronized() ? "&4\u2718": "&2\u2714")));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTimings: &e" + SlimefunStartup.ticker.getTimings(e.getClickedBlock()) + "ms"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dTotal Timings: &e" + SlimefunStartup.ticker.getTimings(BlockStorage.checkID(e.getClickedBlock())) + "ms"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &dChunk Timings: &e" + SlimefunStartup.ticker.getTimings(e.getClickedBlock().getChunk()) + "ms"));
@ -158,8 +151,7 @@ public class ItemListener implements Listener {
}
}
@SuppressWarnings("deprecation")
@EventHandler(priority=EventPriority.NORMAL)
@EventHandler(priority = EventPriority.NORMAL)
public void onRightClick(ItemUseEvent e) {
if (e.getParentEvent() != null && !e.getParentEvent().getHand().equals(EquipmentSlot.HAND)) {
return;
@ -167,18 +159,17 @@ public class ItemListener implements Listener {
final Player p = e.getPlayer();
ItemStack item = e.getItem();
// water place under head bug fix
if (e != null && e.getPlayer() != null && e.getParentEvent().getAction() != null && e.getParentEvent().getAction() == Action.RIGHT_CLICK_BLOCK && e.getParentEvent().getBlockFace() != null && e.getPlayer().getInventory() != null && e.getPlayer().getInventory().getItemInMainHand() != null && e.getPlayer().getInventory().getItemInMainHand().getType() == Material.WATER_BUCKET) {
Location clicked = e.getClickedBlock().getLocation();
BlockFace f = e.getParentEvent().getBlockFace();
Location water = new Location(clicked.getWorld(), clicked.getX() + f.getModX(), clicked.getY() + f.getModY(), clicked.getZ() + f.getModZ());
if (e.getPlayer().getLocation().getWorld().getBlockAt(water) != null && e.getPlayer().getLocation().getWorld().getBlockAt(water).getType() == Material.PLAYER_HEAD) {
// Fix for placing water on player heads
if (e.getParentEvent().getAction() == Action.RIGHT_CLICK_BLOCK && item != null && item.getType() == Material.WATER_BUCKET) {
Location water = e.getClickedBlock().getRelative(e.getParentEvent().getBlockFace()).getLocation();
if ((p.getWorld().getBlockAt(water).getType() == Material.PLAYER_HEAD || p.getWorld().getBlockAt(water).getType() == Material.PLAYER_WALL_HEAD) && BlockStorage.hasBlockInfo(water)) {
e.setCancelled(true);
p.getWorld().getBlockAt(water).getState().update(true, false);
return;
}
}
if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(BookDesign.BOOK), true)) {
if (p.isSneaking()) SlimefunGuide.openSettings(p, item);
else SlimefunGuide.openGuide(p, true);
@ -192,7 +183,7 @@ public class ItemListener implements Listener {
else p.chat("/sf cheat");
}
else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getDeprecatedItem(true), true)) {
item = SlimefunGuide.getItem(true);
item = SlimefunGuide.getItem(BookDesign.BOOK);
p.getInventory().setItemInMainHand(item);
PlayerInventory.update(p);
@ -200,7 +191,7 @@ public class ItemListener implements Listener {
else SlimefunGuide.openGuide(p, true);
}
else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getDeprecatedItem(false), true)) {
item = SlimefunGuide.getItem(false);
item = SlimefunGuide.getItem(BookDesign.CHEST);
p.getInventory().setItemInMainHand(item);
PlayerInventory.update(p);
@ -210,13 +201,13 @@ public class ItemListener implements Listener {
else if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.DEBUG_FISH, true) || SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInOffHand(), SlimefunItems.DEBUG_FISH, true)) {
}
else if (Slimefun.hasUnlocked(p, item, true)) {
for (ItemHandler handler: SlimefunItem.getHandlers("ItemInteractionHandler")) {
for (ItemHandler handler : SlimefunItem.getHandlers("ItemInteractionHandler")) {
if (((ItemInteractionHandler) handler).onRightClick(e, p, item)) return;
}
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DURALUMIN_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.SOLDER_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.BILLON_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.STEEL_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.CARBONADO_MULTI_TOOL, false)) {
e.setCancelled(true);
ItemStack tool = null;
for (ItemStack mTool: new ItemStack[] {SlimefunItems.DURALUMIN_MULTI_TOOL, SlimefunItems.SOLDER_MULTI_TOOL, SlimefunItems.BILLON_MULTI_TOOL, SlimefunItems.STEEL_MULTI_TOOL, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, SlimefunItems.CARBONADO_MULTI_TOOL}) {
for (ItemStack mTool : new ItemStack[] {SlimefunItems.DURALUMIN_MULTI_TOOL, SlimefunItems.SOLDER_MULTI_TOOL, SlimefunItems.BILLON_MULTI_TOOL, SlimefunItems.STEEL_MULTI_TOOL, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, SlimefunItems.CARBONADO_MULTI_TOOL}) {
if (mTool.getItemMeta().getLore().get(0).equalsIgnoreCase(item.getItemMeta().getLore().get(0))) {
tool = mTool;
break;
@ -231,14 +222,14 @@ public class ItemListener implements Listener {
float charge = ItemEnergy.getStoredEnergy(item);
float cost = 0.3F;
if (charge >= cost) {
p.setItemInHand(ItemEnergy.chargeItem(item, -cost));
p.getEquipment().setItemInMainHand(ItemEnergy.chargeItem(item, -cost));
Bukkit.getPluginManager().callEvent(new ItemUseEvent(e.getParentEvent(), SlimefunItem.getByID((String) Slimefun.getItemValue(SlimefunItem.getByItem(tool).getID(), "mode." + modes.get(index) + ".item")).getItem(), e.getClickedBlock()));
}
}
else {
index++;
if (index == modes.size()) index = 0;
Messages.local.sendTranslation(p, "messages.mode-change", true, new Variable("%device%", "Multi Tool"), new Variable("%mode%", (String) Slimefun.getItemValue(SlimefunItem.getByItem(tool).getName(), "mode." + modes.get(index) + ".name")));
Messages.local.sendTranslation(p, "messages.mode-change", true, new Variable("%device%", "Multi Tool"), new Variable("%mode%", (String) Slimefun.getItemValue(SlimefunItem.getByItem(tool).getID(), "mode." + modes.get(index) + ".name")));
Variables.mode.put(p.getUniqueId(), index);
}
}
@ -308,8 +299,7 @@ public class ItemListener implements Listener {
else if (item.getType() == Material.POTION) {
SlimefunItem sfItem = SlimefunItem.getByItem(item);
if (sfItem != null && sfItem instanceof Juice) {
// Fix for 1.11 and 1.12 where Saturation potions are no longer working
// Fix for Saturation on potions is no longer working
for (PotionEffect effect : ((PotionMeta) item.getItemMeta()).getCustomEffects()) {
if (effect.getType().equals(PotionEffectType.SATURATION)) {
p.addPotionEffect(new PotionEffect(PotionEffectType.SATURATION, effect.getDuration(), effect.getAmplifier()));
@ -341,20 +331,14 @@ public class ItemListener implements Listener {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
if (m == 0) {
p.getInventory().setItemInMainHand(null);
}
else if (m == 1) {
p.getInventory().setItemInOffHand(null);
}
else if (m == 2) {
p.getInventory().removeItem(new ItemStack(Material.GLASS_BOTTLE, 1));
}
}
@Override
public void run() {
if (m == 0) p.getEquipment().setItemInMainHand(null);
else if (m == 1) p.getEquipment().setItemInOffHand(null);
else if (m == 2) p.getInventory().removeItem(new ItemStack(Material.GLASS_BOTTLE, 1));
}
}, 1L);
}, 1L);
}
}
}
@ -363,17 +347,17 @@ public class ItemListener implements Listener {
}
@EventHandler
public void onCraft(CraftItemEvent e) {
for (ItemStack item: e.getInventory().getContents()) {
if (SlimefunItem.getByItem(item) != null && !(SlimefunItem.getByItem(item).isReplacing())) {
e.setCancelled(true);
Messages.local.sendTranslation((Player) e.getWhoClicked(), "workbench.not-enhanced", true);
break;
}
}
}
public void onCraft(CraftItemEvent e) {
for (ItemStack item : e.getInventory().getContents()) {
if (SlimefunItem.getByItem(item) != null && !(SlimefunItem.getByItem(item).isReplacing())) {
e.setCancelled(true);
Messages.local.sendTranslation((Player) e.getWhoClicked(), "workbench.not-enhanced", true);
break;
}
}
}
@EventHandler(priority=EventPriority.LOWEST)
@EventHandler(priority = EventPriority.LOWEST)
public void onEntityChangeBlock(EntityChangeBlockEvent e) {
if (e.getEntity() instanceof FallingBlock) {
if (Variables.blocks.contains(e.getEntity().getUniqueId())) {
@ -385,28 +369,28 @@ public class ItemListener implements Listener {
SlimefunItem item = BlockStorage.check(e.getBlock());
if (item != null) {
if (item.getID().equals("WITHER_PROOF_OBSIDIAN")) e.setCancelled(true);
if (item.getID().equals("WITHER_PROOF_GLASS")) e.setCancelled(true);
else if (item.getID().equals("WITHER_PROOF_GLASS")) e.setCancelled(true);
}
}
}
@EventHandler
public void onAnvil(InventoryClickEvent e) {
if (e.getRawSlot() == 2 && e.getWhoClicked() instanceof Player && e.getInventory().getType() == InventoryType.ANVIL) {
public void onAnvil(InventoryClickEvent e) {
if (e.getRawSlot() == 2 && e.getWhoClicked() instanceof Player && e.getInventory().getType() == InventoryType.ANVIL) {
if (SlimefunManager.isItemSimiliar(e.getInventory().getContents()[0], SlimefunItems.ELYTRA, true)) return;
if (SlimefunItem.getByItem(e.getInventory().getContents()[0]) != null && !SlimefunItem.isDisabled(e.getInventory().getContents()[0])) {
e.setCancelled(true);
Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true);
}
}
}
if (SlimefunItem.getByItem(e.getInventory().getContents()[0]) != null && !SlimefunItem.isDisabled(e.getInventory().getContents()[0])) {
e.setCancelled(true);
Messages.local.sendTranslation((Player) e.getWhoClicked(), "anvil.not-working", true);
}
}
}
@EventHandler (ignoreCancelled = true)
public void onPreBrew(InventoryClickEvent e) {
Inventory inventory = e.getInventory();
if (inventory instanceof BrewerInventory && inventory.getHolder() instanceof BrewingStand) {
if(e.getRawSlot() < inventory.getSize()) e.setCancelled(SlimefunItem.getByItem(e.getCursor()) != null);
}
}
public void onPreBrew(InventoryClickEvent e) {
Inventory inventory = e.getInventory();
if (inventory instanceof BrewerInventory && inventory.getHolder() instanceof BrewingStand) {
if (e.getRawSlot() < inventory.getSize()) e.setCancelled(SlimefunItem.getByItem(e.getCursor()) != null);
}
}
}