From ece72cd0e17f6ebabedf8a85cc311bc613314740 Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 8 Apr 2020 10:34:46 -0400 Subject: [PATCH 1/5] Run isTall after the material check. --- src/main/java/com/songoda/skyblock/listeners/Block.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/songoda/skyblock/listeners/Block.java b/src/main/java/com/songoda/skyblock/listeners/Block.java index 0efeab18..b74bb10a 100644 --- a/src/main/java/com/songoda/skyblock/listeners/Block.java +++ b/src/main/java/com/songoda/skyblock/listeners/Block.java @@ -140,7 +140,11 @@ public class Block implements Listener { if (event.isCancelled() || !configLoad.getBoolean("Island.Block.Level.Enable")) return; - if (CompatibleMaterial.getMaterial(block).isTall()) { + CompatibleMaterial material = CompatibleMaterial.getMaterial(block); + + if (material == null) return; + + if (material.isTall()) { final org.bukkit.block.Block belowBlock = block.getRelative(BlockFace.DOWN); @@ -150,8 +154,6 @@ public class Block implements Listener { } - CompatibleMaterial material = CompatibleMaterial.getMaterial(block); - if (block.getType() == CompatibleMaterial.SPAWNER.getBlockMaterial()) { CompatibleSpawners spawner = CompatibleSpawners.getSpawner(((CreatureSpawner) block.getState()).getSpawnedType()); From c82192ef46eb0e848257a35aac3ba326ca4b5ac7 Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 8 Apr 2020 11:19:27 -0400 Subject: [PATCH 2/5] Various fixed to the interact event. --- .../songoda/skyblock/listeners/Interact.java | 461 +++++++++--------- 1 file changed, 218 insertions(+), 243 deletions(-) diff --git a/src/main/java/com/songoda/skyblock/listeners/Interact.java b/src/main/java/com/songoda/skyblock/listeners/Interact.java index a6461120..fb85a7e9 100644 --- a/src/main/java/com/songoda/skyblock/listeners/Interact.java +++ b/src/main/java/com/songoda/skyblock/listeners/Interact.java @@ -1,9 +1,26 @@ package com.songoda.skyblock.listeners; -import java.io.File; - +import com.songoda.core.compatibility.CompatibleHand; import com.songoda.core.compatibility.CompatibleMaterial; import com.songoda.core.compatibility.CompatibleSound; +import com.songoda.core.utils.ItemUtils; +import com.songoda.skyblock.SkyBlock; +import com.songoda.skyblock.config.FileManager; +import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.island.IslandLevel; +import com.songoda.skyblock.island.IslandManager; +import com.songoda.skyblock.island.IslandWorld; +import com.songoda.skyblock.levelling.rework.IslandLevelManager; +import com.songoda.skyblock.limit.impl.BlockLimitation; +import com.songoda.skyblock.message.MessageManager; +import com.songoda.skyblock.sound.SoundManager; +import com.songoda.skyblock.stackable.Stackable; +import com.songoda.skyblock.stackable.StackableManager; +import com.songoda.skyblock.utils.NumberUtil; +import com.songoda.skyblock.utils.item.InventoryUtil; +import com.songoda.skyblock.utils.structure.StructureUtil; +import com.songoda.skyblock.utils.version.NMSUtil; +import com.songoda.skyblock.world.WorldManager; import org.apache.commons.lang.WordUtils; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -28,26 +45,11 @@ import org.bukkit.event.vehicle.VehicleDestroyEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; - -import com.songoda.skyblock.SkyBlock; -import com.songoda.skyblock.config.FileManager; -import com.songoda.skyblock.island.Island; -import com.songoda.skyblock.island.IslandLevel; -import com.songoda.skyblock.island.IslandManager; -import com.songoda.skyblock.island.IslandWorld; -import com.songoda.skyblock.levelling.rework.IslandLevelManager; -import com.songoda.skyblock.limit.impl.BlockLimitation; -import com.songoda.skyblock.message.MessageManager; -import com.songoda.skyblock.sound.SoundManager; -import com.songoda.skyblock.stackable.Stackable; -import com.songoda.skyblock.stackable.StackableManager; -import com.songoda.skyblock.utils.NumberUtil; -import com.songoda.skyblock.utils.item.InventoryUtil; -import com.songoda.skyblock.utils.structure.StructureUtil; -import com.songoda.skyblock.utils.version.NMSUtil; -import com.songoda.skyblock.world.WorldManager; import org.bukkit.permissions.PermissionAttachmentInfo; +import java.io.File; +import java.util.HashMap; + public class Interact implements Listener { private final SkyBlock skyblock; @@ -84,8 +86,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -94,8 +96,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -104,8 +106,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -114,8 +116,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -123,33 +125,34 @@ public class Interact implements Listener { } if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_AIR) { - if (event.getItem() != null && CompatibleMaterial.getMaterial(event.getItem().getType()) == CompatibleMaterial.EGG) { + if (event.getItem() != null && CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.EGG) { if (!skyblock.getIslandManager().hasPermission(player, "Projectile")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } } } - if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { + CompatibleMaterial material = block == null ? null : CompatibleMaterial.getMaterial(block.getType()); + if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { final CompatibleMaterial blockType = CompatibleMaterial.getBlockMaterial(event.getClickedBlock().getType()); final CompatibleMaterial heldType; final ItemStack item = event.getItem(); if (item != null && CompatibleMaterial.getMaterial(item.getType()) != CompatibleMaterial.AIR) { - heldType = CompatibleMaterial.getMaterial(event.getItem().getType()); + heldType = CompatibleMaterial.getMaterial(event.getItem()); } else { heldType = CompatibleMaterial.AIR; } if (stackableManager != null && stackableManager.isStackableMaterial(heldType) && blockType == heldType && !player.isSneaking() && islandManager - .hasPermission(player, block.getLocation(), "Place") - && (!skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Stackable.RequirePermission") - || player.hasPermission("fabledskyblock.stackable"))) { + .hasPermission(player, block.getLocation(), "Place") + && (!skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Stackable.RequirePermission") + || player.hasPermission("fabledskyblock.stackable"))) { if (NMSUtil.getVersionNumber() > 8) { if (event.getHand() == EquipmentSlot.OFF_HAND) { return; @@ -158,7 +161,7 @@ public class Interact implements Listener { if (levellingManager.isScanning(island)) { skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Command.Island.Level.Scanning.BlockPlacing.Message")); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Command.Island.Level.Scanning.BlockPlacing.Message")); event.setCancelled(true); return; } @@ -168,12 +171,10 @@ public class Interact implements Listener { long limit = limits.getBlockLimit(player, block); if (limits.isBlockLimitExceeded(block, limit)) { - CompatibleMaterial material = CompatibleMaterial.getBlockMaterial(block.getType()); - skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Limit.Block.Exceeded.Message") - .replace("%type", WordUtils.capitalizeFully(material.name().replace("_", " "))).replace("%limit", NumberUtil.formatNumber(limit))); - skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Limit.Block.Exceeded.Message") + .replace("%type", WordUtils.capitalizeFully(material.name().replace("_", " "))).replace("%limit", NumberUtil.formatNumber(limit))); + skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); event.setCancelled(true); return; @@ -188,13 +189,12 @@ public class Interact implements Listener { if (configLoad.getBoolean("Island.Stackable.Limit.Enable")) { // Add block to stackable - CompatibleMaterial material = CompatibleMaterial.getBlockMaterial(block.getType()); int maxStackSize = getStackLimit(player, material); if (stackable == null) { stackableManager.addStack(stackable = new Stackable(location, blockType, maxStackSize)); stackable.setSize(itemAmount + 1); - if(stackable.isMaxSize()){ + if (stackable.isMaxSize()) { stackable.setSize(stackable.getMaxSize()); event.setCancelled(true); return; @@ -202,7 +202,7 @@ public class Interact implements Listener { } else { stackable.setMaxSize(maxStackSize); stackable.setSize(stackable.getSize() + itemAmount); - if(stackable.isMaxSize()){ + if (stackable.isMaxSize()) { stackable.setSize(stackable.getMaxSize()); event.setCancelled(true); return; @@ -231,7 +231,6 @@ public class Interact implements Listener { long materialAmmount = 0; IslandLevel level = island.getLevel(); - CompatibleMaterial material = CompatibleMaterial.getBlockMaterial(block.getType()); if (material == null) { return; @@ -255,255 +254,230 @@ public class Interact implements Listener { return; } - if (event.getItem() != null && CompatibleMaterial.getMaterial(event.getItem().getType()) == CompatibleMaterial.BONE_MEAL && !islandManager.hasPermission(player, block.getLocation(), "Place")) { - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + if (event.getItem() != null && CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.BONE_MEAL && !islandManager.hasPermission(player, block.getLocation(), "Place")) { + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); event.setCancelled(true); return; } - if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.SWEET_BERRY_BUSH) { + if (material == CompatibleMaterial.SWEET_BERRY_BUSH) { if (!islandManager.hasPermission(player, block.getLocation(), "Destroy")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.ANVIL) { + } else if (material == CompatibleMaterial.ANVIL) { if (!islandManager.hasPermission(player, block.getLocation(), "Anvil")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.WHITE_BED || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.ORANGE_BED - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.MAGENTA_BED || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.LIGHT_BLUE_BED - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.YELLOW_BED || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.LIME_BED - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.PINK_BED || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.GRAY_BED - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.LIGHT_GRAY_BED || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.CYAN_BED - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.CYAN_BED || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.PURPLE_BED - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BLUE_BED || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BROWN_BED - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.GREEN_BED || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.RED_BED - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BLACK_BED + } else if (material == CompatibleMaterial.WHITE_BED || material == CompatibleMaterial.ORANGE_BED + || material == CompatibleMaterial.MAGENTA_BED || material == CompatibleMaterial.LIGHT_BLUE_BED + || material == CompatibleMaterial.YELLOW_BED || material == CompatibleMaterial.LIME_BED + || material == CompatibleMaterial.PINK_BED || material == CompatibleMaterial.GRAY_BED + || material == CompatibleMaterial.LIGHT_GRAY_BED || material == CompatibleMaterial.CYAN_BED + || material == CompatibleMaterial.CYAN_BED || material == CompatibleMaterial.PURPLE_BED + || material == CompatibleMaterial.BLUE_BED || material == CompatibleMaterial.BROWN_BED + || material == CompatibleMaterial.GREEN_BED || material == CompatibleMaterial.RED_BED + || material == CompatibleMaterial.BLACK_BED ) { if (!islandManager.hasPermission(player, block.getLocation(), "Bed")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BREWING_STAND) { + } else if (material == CompatibleMaterial.BREWING_STAND) { if (!islandManager.hasPermission(player, block.getLocation(), "Brewing")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.CHEST || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.TRAPPED_CHEST - || (NMSUtil.getVersionNumber() > 9 && (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.SHULKER_BOX - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BLACK_SHULKER_BOX || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BLUE_SHULKER_BOX - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BROWN_SHULKER_BOX || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.CYAN_SHULKER_BOX - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.GRAY_SHULKER_BOX || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.GREEN_SHULKER_BOX - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.LIGHT_BLUE_SHULKER_BOX || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.LIGHT_GRAY_SHULKER_BOX - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.LIME_SHULKER_BOX || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.MAGENTA_SHULKER_BOX - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.ORANGE_SHULKER_BOX || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.PINK_SHULKER_BOX - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.PURPLE_SHULKER_BOX || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.RED_SHULKER_BOX - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.WHITE_SHULKER_BOX || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.YELLOW_SHULKER_BOX))) { + } else if (material == CompatibleMaterial.CHEST || material == CompatibleMaterial.TRAPPED_CHEST + || (NMSUtil.getVersionNumber() > 9 && (material == CompatibleMaterial.SHULKER_BOX + || material == CompatibleMaterial.BLACK_SHULKER_BOX || material == CompatibleMaterial.BLUE_SHULKER_BOX + || material == CompatibleMaterial.BROWN_SHULKER_BOX || material == CompatibleMaterial.CYAN_SHULKER_BOX + || material == CompatibleMaterial.GRAY_SHULKER_BOX || material == CompatibleMaterial.GREEN_SHULKER_BOX + || material == CompatibleMaterial.LIGHT_BLUE_SHULKER_BOX || material == CompatibleMaterial.LIGHT_GRAY_SHULKER_BOX + || material == CompatibleMaterial.LIME_SHULKER_BOX || material == CompatibleMaterial.MAGENTA_SHULKER_BOX + || material == CompatibleMaterial.ORANGE_SHULKER_BOX || material == CompatibleMaterial.PINK_SHULKER_BOX + || material == CompatibleMaterial.PURPLE_SHULKER_BOX || material == CompatibleMaterial.RED_SHULKER_BOX + || material == CompatibleMaterial.WHITE_SHULKER_BOX || material == CompatibleMaterial.YELLOW_SHULKER_BOX))) { if (!islandManager.hasPermission(player, block.getLocation(), "Storage")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.CRAFTING_TABLE) { + } else if (material == CompatibleMaterial.CRAFTING_TABLE) { if (!islandManager.hasPermission(player, block.getLocation(), "Workbench")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BIRCH_DOOR || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.ACACIA_DOOR - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.DARK_OAK_DOOR || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.JUNGLE_DOOR - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.SPRUCE_DOOR || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.OAK_DOOR) { + } else if (material == CompatibleMaterial.BIRCH_DOOR || material == CompatibleMaterial.ACACIA_DOOR + || material == CompatibleMaterial.DARK_OAK_DOOR || material == CompatibleMaterial.JUNGLE_DOOR + || material == CompatibleMaterial.SPRUCE_DOOR || material == CompatibleMaterial.OAK_DOOR) { if (!islandManager.hasPermission(player, block.getLocation(), "Door")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.ENCHANTING_TABLE) { + } else if (material == CompatibleMaterial.ENCHANTING_TABLE) { if (!islandManager.hasPermission(player, block.getLocation(), "Enchant")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.FURNACE) { + } else if (material == CompatibleMaterial.FURNACE) { if (!islandManager.hasPermission(player, block.getLocation(), "Furnace")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.STONE_BUTTON || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.OAK_BUTTON || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.SPRUCE_BUTTON - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BIRCH_BUTTON|| CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.JUNGLE_BUTTON || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.ACACIA_BUTTON - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.DARK_OAK_BUTTON || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.LEVER) { + } else if (material == CompatibleMaterial.STONE_BUTTON || material == CompatibleMaterial.OAK_BUTTON || material == CompatibleMaterial.SPRUCE_BUTTON + || material == CompatibleMaterial.BIRCH_BUTTON || material == CompatibleMaterial.JUNGLE_BUTTON || material == CompatibleMaterial.ACACIA_BUTTON + || material == CompatibleMaterial.DARK_OAK_BUTTON || material == CompatibleMaterial.LEVER) { if (!islandManager.hasPermission(player, block.getLocation(), "LeverButton")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.JUKEBOX) { + } else if (material == CompatibleMaterial.JUKEBOX) { if (!islandManager.hasPermission(player, block.getLocation(), "Jukebox")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + + return; + } + } else if (material == CompatibleMaterial.OAK_TRAPDOOR || material == CompatibleMaterial.SPRUCE_TRAPDOOR + || material == CompatibleMaterial.BIRCH_TRAPDOOR || material == CompatibleMaterial.JUNGLE_TRAPDOOR + || material == CompatibleMaterial.ACACIA_TRAPDOOR || material == CompatibleMaterial.DARK_OAK_TRAPDOOR + || material == CompatibleMaterial.NOTE_BLOCK || material == CompatibleMaterial.HOPPER + || material == CompatibleMaterial.COMPARATOR || material == CompatibleMaterial.REPEATER) { + if (material == CompatibleMaterial.HOPPER && !islandManager.hasPermission(player, block.getLocation(), "Hopper")) { + event.setCancelled(true); + + messageManager.sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.OAK_TRAPDOOR || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.SPRUCE_TRAPDOOR - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BIRCH_TRAPDOOR || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.JUNGLE_TRAPDOOR - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.ACACIA_TRAPDOOR || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.DARK_OAK_TRAPDOOR - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.NOTE_BLOCK || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.HOPPER - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.COMPARATOR || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.REPEATER) { if (!islandManager.hasPermission(player, block.getLocation(), "Redstone")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.OAK_FENCE_GATE || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.ACACIA_FENCE_GATE || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BIRCH_FENCE_GATE - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.DARK_OAK_FENCE_GATE || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.JUNGLE_FENCE_GATE || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.SPRUCE_FENCE_GATE) { + } else if (material == CompatibleMaterial.OAK_FENCE_GATE || material == CompatibleMaterial.ACACIA_FENCE_GATE || material == CompatibleMaterial.BIRCH_FENCE_GATE + || material == CompatibleMaterial.DARK_OAK_FENCE_GATE || material == CompatibleMaterial.JUNGLE_FENCE_GATE || material == CompatibleMaterial.SPRUCE_FENCE_GATE) { if (!islandManager.hasPermission(player, block.getLocation(), "Gate")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if ((CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.DROPPER || (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.DISPENSER))) { + } else if ((material == CompatibleMaterial.DROPPER || (material == CompatibleMaterial.DISPENSER))) { if (!islandManager.hasPermission(player, block.getLocation(), "DropperDispenser")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.TNT) { + } else if (material == CompatibleMaterial.TNT) { if (!islandManager.hasPermission(player, block.getLocation(), "Destroy")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.CAKE) { + } else if (material == CompatibleMaterial.CAKE) { if (player.getFoodLevel() < 20 && !islandManager.hasPermission(player, block.getLocation(), "Cake")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.HOPPER) { - if (!islandManager.hasPermission(player, block.getLocation(), "Hopper")) { - event.setCancelled(true); - - messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); - - return; - } - } else if ((player.getGameMode() == GameMode.SURVIVAL) - && (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.OBSIDIAN) && (event.getItem() != null) && (CompatibleMaterial.getMaterial(event.getItem().getType()) != CompatibleMaterial.AIR) - && (CompatibleMaterial.getMaterial(event.getItem().getType()) == CompatibleMaterial.BUCKET)) { + } else if (player.getGameMode() == GameMode.SURVIVAL + && material == CompatibleMaterial.OBSIDIAN + && event.getItem() != null + && CompatibleMaterial.getMaterial(event.getItem()) != CompatibleMaterial.AIR + && CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.BUCKET) { if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Block.Obsidian.Enable") - && islandManager.hasPermission(player, block.getLocation(), "Bucket")) { - int NMSVersion = NMSUtil.getVersionNumber(); - boolean isInventoryFull = false; + && islandManager.hasPermission(player, block.getLocation(), "Bucket")) { - if (NMSVersion > 8) { - isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 5, 1, CompatibleMaterial.BUCKET.getBlockMaterial()); - } else { - isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 0, 1, CompatibleMaterial.BUCKET.getBlockMaterial()); - } - - soundManager.playSound(block.getLocation(), CompatibleSound.BLOCK_FIRE_EXTINGUISH.getSound(), 1.0F, 1.0F); - - InventoryUtil.removeItem(player.getInventory(), 1, false, CompatibleMaterial.BUCKET.getBlockMaterial()); + CompatibleSound.BLOCK_FIRE_EXTINGUISH.play(block.getWorld(), block.getLocation(), 1.0F, 1.0F); block.setType(CompatibleMaterial.AIR.getBlockMaterial()); - if (isInventoryFull) { - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(CompatibleMaterial.LAVA_BUCKET.getBlockMaterial())); - } else { - if (NMSVersion > 8) { - isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 5, 1, CompatibleMaterial.LAVA_BUCKET.getBlockMaterial()); - } else { - isInventoryFull = InventoryUtil.isInventoryFull(player.getInventory(), 0, 1, CompatibleMaterial.LAVA_BUCKET.getBlockMaterial()); - } - - if (isInventoryFull) { - player.getWorld().dropItemNaturally(player.getLocation(), new ItemStack(CompatibleMaterial.LAVA_BUCKET.getBlockMaterial())); - } else { - player.getInventory().addItem(new ItemStack(CompatibleMaterial.LAVA_BUCKET.getBlockMaterial())); - } - } + ItemUtils.takeActiveItem(player, CompatibleHand.getHand(event)); + HashMap overflow = player.getInventory().addItem(CompatibleMaterial.LAVA_BUCKET.getItem()); + for (ItemStack i : overflow.values()) + block.getWorld().dropItemNaturally(block.getLocation(), i); event.setCancelled(true); - return; } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.END_PORTAL_FRAME) { + } else if (material == CompatibleMaterial.END_PORTAL_FRAME) { if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Block.EndFrame.Enable") - && islandManager.hasPermission(player, block.getLocation(), "Destroy")) { - - if (NMSUtil.getVersionNumber() > 8 && event.getHand() == EquipmentSlot.OFF_HAND) { - return; - } + && islandManager.hasPermission(player, block.getLocation(), "Destroy")) { if (Bukkit.getPluginManager().isPluginEnabled("EpicAnchors")) { if (com.songoda.epicanchors.EpicAnchors.getInstance().getAnchorManager().getAnchor(block.getLocation()) != null) { @@ -512,11 +486,12 @@ public class Interact implements Listener { } } + if (CompatibleHand.getHand(event) == CompatibleHand.OFF_HAND) return; + ItemStack is = event.getPlayer().getItemInHand(); boolean hasEye = ((block.getData() >> 2) & 1) == 1; - if (is == null || CompatibleMaterial.getMaterial(is.getType()) == CompatibleMaterial.AIR) { - + if (CompatibleMaterial.getMaterial(is.getType()) == CompatibleMaterial.AIR) { int size = 1; if (stackableManager != null && stackableManager.isStacked(block.getLocation())) { @@ -556,7 +531,7 @@ public class Interact implements Listener { } } - soundManager.playSound(player, CompatibleSound.ENTITY_CHICKEN_EGG.getSound(), 10.0F, 10.0F); + CompatibleSound.ENTITY_CHICKEN_EGG.play(player, 10.0F, 10.0F); event.setCancelled(true); return; @@ -564,27 +539,27 @@ public class Interact implements Listener { } } - if ((event.getItem() != null) && (CompatibleMaterial.getMaterial(event.getItem().getType()) != CompatibleMaterial.AIR) && !event.isCancelled()) { - if (CompatibleMaterial.getMaterial(event.getItem().getType()) == CompatibleMaterial.BUCKET - || CompatibleMaterial.getMaterial(event.getItem().getType()) == CompatibleMaterial.WATER_BUCKET - || CompatibleMaterial.getMaterial(event.getItem().getType()) == CompatibleMaterial.LAVA_BUCKET) { + if ((event.getItem() != null) && (CompatibleMaterial.getMaterial(event.getItem()) != CompatibleMaterial.AIR) && !event.isCancelled()) { + if (CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.BUCKET + || CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.WATER_BUCKET + || CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.LAVA_BUCKET) { if (!islandManager.hasPermission(player, block.getLocation(), "Bucket")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); player.updateInventory(); } - } else if (CompatibleMaterial.getMaterial(event.getItem().getType()) == CompatibleMaterial.GLASS_BOTTLE) { - if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.WATER || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.CAULDRON) { + } else if (CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.GLASS_BOTTLE) { + if (material == CompatibleMaterial.WATER || material == CompatibleMaterial.CAULDRON) { if (!islandManager.hasPermission(player, block.getLocation(), "WaterCollection")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); player.updateInventory(); } @@ -594,18 +569,18 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); player.updateInventory(); } - } else if (CompatibleMaterial.getMaterial(event.getItem().getType()) == CompatibleMaterial.ARMOR_STAND || event.getItem().getType().name().contains("BOAT") || event.getItem().getType().name().contains("MINECART")) { + } else if (CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.ARMOR_STAND || event.getItem().getType().name().contains("BOAT") || event.getItem().getType().name().contains("MINECART")) { if (!islandManager.hasPermission(player, block.getLocation(), "EntityPlacement")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); player.updateInventory(); } @@ -618,37 +593,37 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } } } else if (event.getAction() == Action.PHYSICAL) { - if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.TURTLE_EGG) { + if (material == CompatibleMaterial.TURTLE_EGG) { event.setCancelled(true); - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.FARMLAND) { + } else if (material == CompatibleMaterial.FARMLAND) { if (!islandManager.hasPermission(player, block.getLocation(), "Crop")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.STONE_PRESSURE_PLATE || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.OAK_PRESSURE_PLATE - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.SPRUCE_PRESSURE_PLATE || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.BIRCH_PRESSURE_PLATE - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.JUNGLE_PRESSURE_PLATE || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.ACACIA_PRESSURE_PLATE - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.DARK_OAK_PRESSURE_PLATE - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.LIGHT_WEIGHTED_PRESSURE_PLATE - || CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.HEAVY_WEIGHTED_PRESSURE_PLATE) { + } else if (material == CompatibleMaterial.STONE_PRESSURE_PLATE || material == CompatibleMaterial.OAK_PRESSURE_PLATE + || material == CompatibleMaterial.SPRUCE_PRESSURE_PLATE || material == CompatibleMaterial.BIRCH_PRESSURE_PLATE + || material == CompatibleMaterial.JUNGLE_PRESSURE_PLATE || material == CompatibleMaterial.ACACIA_PRESSURE_PLATE + || material == CompatibleMaterial.DARK_OAK_PRESSURE_PLATE + || material == CompatibleMaterial.LIGHT_WEIGHTED_PRESSURE_PLATE + || material == CompatibleMaterial.HEAVY_WEIGHTED_PRESSURE_PLATE) { if (!islandManager.hasPermission(player, block.getLocation(), "PressurePlate")) { event.setCancelled(true); } - } else if (CompatibleMaterial.getMaterial(block.getType()) == CompatibleMaterial.TRIPWIRE) { + } else if (material == CompatibleMaterial.TRIPWIRE) { if (!islandManager.hasPermission(player, block.getLocation(), "Redstone")) { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } } } @@ -680,17 +655,17 @@ public class Interact implements Listener { ItemStack structureTool = StructureUtil.getTool(); if ((event.getItem().getType() == structureTool.getType()) && (event.getItem().hasItemMeta()) && (event.getItem().getItemMeta().getDisplayName() - .equals(structureTool.getItemMeta().getDisplayName()))) { + .equals(structureTool.getItemMeta().getDisplayName()))) { if (player.hasPermission("fabledskyblock.admin.structure.selection") || player.hasPermission("fabledskyblock.admin.structure.*") || player - .hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*")) { + .hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*")) { event.setCancelled(true); skyblock.getPlayerDataManager().getPlayerData(player).getArea().setPosition(1, event.getClickedBlock().getLocation()); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Structure.Tool.Position.Message") - .replace("%position", "1")); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Structure.Tool.Position.Message") + .replace("%position", "1")); soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_BUTTON_CLICK_ON.getSound(), 1.0F, 1.0F); } } @@ -698,17 +673,17 @@ public class Interact implements Listener { ItemStack structureTool = StructureUtil.getTool(); if ((event.getItem().getType() == structureTool.getType()) && (event.getItem().hasItemMeta()) && (event.getItem().getItemMeta().getDisplayName() - .equals(structureTool.getItemMeta().getDisplayName()))) { + .equals(structureTool.getItemMeta().getDisplayName()))) { if (player.hasPermission("fabledskyblock.admin.structure.selection") || player.hasPermission("fabledskyblock.admin.structure.*") || player - .hasPermission("fabledskyblock.admin.*") - || player.hasPermission("fabledskyblock.*")) { + .hasPermission("fabledskyblock.admin.*") + || player.hasPermission("fabledskyblock.*")) { event.setCancelled(true); skyblock.getPlayerDataManager().getPlayerData(player).getArea().setPosition(2, event.getClickedBlock().getLocation()); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Structure.Tool.Position.Message") - .replace("%position", "2")); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Structure.Tool.Position.Message") + .replace("%position", "2")); soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_BUTTON_CLICK_ON.getSound(), 1.0F, 1.0F); } } @@ -737,8 +712,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -754,8 +729,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -764,8 +739,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -775,8 +750,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -785,15 +760,15 @@ public class Interact implements Listener { if (!islandManager.hasPermission(player, entity.getLocation(), "EntityPlacement")) { event.setCancelled(true); skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } } else if (entity.getType().equals(EntityType.ITEM_FRAME)) { if (!skyblock.getIslandManager().hasPermission(player, entity.getLocation(), "Storage")) { event.setCancelled(true); skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } } else if (entity.getType() == EntityType.COW || entity.getType() == EntityType.MUSHROOM_COW) { if (CompatibleMaterial.getMaterial(is.getType()) == CompatibleMaterial.BUCKET) { @@ -801,8 +776,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -812,8 +787,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -822,8 +797,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -832,8 +807,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -842,8 +817,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); return; } @@ -896,7 +871,7 @@ public class Interact implements Listener { if (!(CompatibleMaterial.getMaterial(is.getType()) == CompatibleMaterial.COD || CompatibleMaterial.getMaterial(is.getType()) == CompatibleMaterial.SALMON || CompatibleMaterial.getMaterial(is.getType()) == CompatibleMaterial.TROPICAL_FISH - || CompatibleMaterial.getMaterial(is.getType()) == CompatibleMaterial.PUFFERFISH)) { + || CompatibleMaterial.getMaterial(is.getType()) == CompatibleMaterial.PUFFERFISH)) { return; } } else if (entity.getType() == EntityType.RABBIT) { @@ -933,8 +908,8 @@ public class Interact implements Listener { event.setCancelled(true); messageManager.sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } } } @@ -951,8 +926,8 @@ public class Interact implements Listener { event.setCancelled(true); skyblock.getMessageManager() - .sendMessage(player, skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + .sendMessage(player, skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } } @@ -968,8 +943,8 @@ public class Interact implements Listener { event.setCancelled(true); skyblock.getMessageManager() - .sendMessage(player, skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + .sendMessage(player, skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } } @@ -994,8 +969,8 @@ public class Interact implements Listener { event.setCancelled(true); skyblock.getMessageManager().sendMessage(player, - skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); - skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); } } From 7244a83002673e316e93801aa6f67ee23c68b0de Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 8 Apr 2020 11:23:09 -0400 Subject: [PATCH 3/5] Don't process AIR blocks in structures. --- .../skyblock/utils/world/block/BlockUtil.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/songoda/skyblock/utils/world/block/BlockUtil.java b/src/main/java/com/songoda/skyblock/utils/world/block/BlockUtil.java index 4a9b202b..7e9740fc 100644 --- a/src/main/java/com/songoda/skyblock/utils/world/block/BlockUtil.java +++ b/src/main/java/com/songoda/skyblock/utils/world/block/BlockUtil.java @@ -247,10 +247,12 @@ public final class BlockUtil extends BlockUtils { public static void convertBlockDataToBlock(Block block, BlockData blockData) { int NMSVersion = NMSUtil.getVersionNumber(); - String material = blockData.getMaterial(); - if (material == null) return; + String materialStr = blockData.getMaterial(); + if (materialStr == null) return; + Material material = Material.valueOf(materialStr); + if (material == Material.AIR) return; - setBlockFast(block.getWorld(), block.getX(), block.getY(), block.getZ(), Material.valueOf(material), blockData.getData()); + setBlockFast(block.getWorld(), block.getX(), block.getY(), block.getZ(), material, blockData.getData()); // TODO Create a class to support biome changes // block.setBiome(Biome.valueOf(blockData.getBiome().toUpperCase())); @@ -425,10 +427,10 @@ public final class BlockUtil extends BlockUtils { String[] flower = blockData.getFlower().split(":"); int materialData = Integer.parseInt(flower[1]); - material = flower[0].toUpperCase(); + materialStr = flower[0].toUpperCase(); - if (material != null) { - ItemStack is = new ItemStack(Material.getMaterial(material), 1, (byte) materialData); + if (materialStr != null) { + ItemStack is = new ItemStack(Material.getMaterial(materialStr), 1, (byte) materialData); World world = block.getWorld(); @@ -459,20 +461,20 @@ public final class BlockUtil extends BlockUtils { if (blockData.getFlower() != null && !blockData.getFlower().isEmpty()) { org.bukkit.material.FlowerPot flowerPot = (org.bukkit.material.FlowerPot) state.getData(); String[] flower = blockData.getFlower().split(":"); - material = null; + materialStr = null; if (blockData.getVersion() > 12) { if (NMSVersion > 12) { - material = flower[0].toUpperCase(); + materialStr = flower[0].toUpperCase(); } } else { if (NMSVersion < 13) { - material = flower[0].toUpperCase(); + materialStr = flower[0].toUpperCase(); } } - if (material != null) { - flowerPot.setContents(new MaterialData(Material.getMaterial(material), (byte) Integer.parseInt(flower[1]))); + if (materialStr != null) { + flowerPot.setContents(new MaterialData(Material.getMaterial(materialStr), (byte) Integer.parseInt(flower[1]))); } state.setData(flowerPot); @@ -480,7 +482,7 @@ public final class BlockUtil extends BlockUtils { } } - if (material.equals("DOUBLE_PLANT")) { + if (materialStr.equals("DOUBLE_PLANT")) { Block topBlock = block.getLocation().add(0.0D, 1.0D, 0.0D).getBlock(); Block bottomBlock = block.getLocation().subtract(0.0D, 1.0D, 0.0D).getBlock(); From 067cbd4da80305ab5142ab2ffa820043fdba9e71 Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 8 Apr 2020 12:28:42 -0400 Subject: [PATCH 4/5] Holograms now use either Holographic Displays, Holograms, or CMI. --- .../java/com/songoda/skyblock/SkyBlock.java | 3 + .../admin/RefreshHologramsCommand.java | 2 +- .../command/commands/admin/ReloadCommand.java | 2 +- .../commands/admin/RemoveHologramCommand.java | 5 +- .../commands/admin/SetHologramCommand.java | 6 +- .../songoda/skyblock/hologram/Hologram.java | 67 +--- .../skyblock/hologram/HologramManager.java | 290 +++++------------- .../skyblock/leaderboard/LeaderboardTask.java | 2 +- src/main/resources/language.yml | 4 +- src/main/resources/plugin.yml | 2 +- 10 files changed, 96 insertions(+), 287 deletions(-) diff --git a/src/main/java/com/songoda/skyblock/SkyBlock.java b/src/main/java/com/songoda/skyblock/SkyBlock.java index dd1aa9fe..78cc06db 100644 --- a/src/main/java/com/songoda/skyblock/SkyBlock.java +++ b/src/main/java/com/songoda/skyblock/SkyBlock.java @@ -100,6 +100,9 @@ public class SkyBlock extends SongodaPlugin { // Load Economy EconomyManager.load(); + // Load Holograms + com.songoda.core.hooks.HologramManager.load(this); + fileManager = new FileManager(this); localizationManager = new LocalizationManager(); worldManager = new WorldManager(this); diff --git a/src/main/java/com/songoda/skyblock/command/commands/admin/RefreshHologramsCommand.java b/src/main/java/com/songoda/skyblock/command/commands/admin/RefreshHologramsCommand.java index a15b2c0f..7b0854a6 100644 --- a/src/main/java/com/songoda/skyblock/command/commands/admin/RefreshHologramsCommand.java +++ b/src/main/java/com/songoda/skyblock/command/commands/admin/RefreshHologramsCommand.java @@ -41,7 +41,7 @@ public class RefreshHologramsCommand extends SubCommand { leaderboardManager.resetLeaderboard(); leaderboardManager.setupLeaderHeads(); - Bukkit.getScheduler().runTask(skyblock, () -> skyblock.getHologramManager().resetHologram()); + Bukkit.getScheduler().runTask(skyblock, () -> skyblock.getHologramManager().updateHologram()); }); messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.RefreshHolograms.Refreshed.Message")); diff --git a/src/main/java/com/songoda/skyblock/command/commands/admin/ReloadCommand.java b/src/main/java/com/songoda/skyblock/command/commands/admin/ReloadCommand.java index a917c2d0..8e53a582 100644 --- a/src/main/java/com/songoda/skyblock/command/commands/admin/ReloadCommand.java +++ b/src/main/java/com/songoda/skyblock/command/commands/admin/ReloadCommand.java @@ -93,7 +93,7 @@ public class ReloadCommand extends SubCommand { leaderboardManager.resetLeaderboard(); leaderboardManager.setupLeaderHeads(); - Bukkit.getScheduler().runTask(skyblock, () -> skyblock.getHologramManager().resetHologram()); + Bukkit.getScheduler().runTask(skyblock, () -> skyblock.getHologramManager().updateHologram()); }); limitHandler.reloadAll(); diff --git a/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveHologramCommand.java b/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveHologramCommand.java index f2225263..76740ee0 100644 --- a/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveHologramCommand.java +++ b/src/main/java/com/songoda/skyblock/command/commands/admin/RemoveHologramCommand.java @@ -76,9 +76,8 @@ public class RemoveHologramCommand extends SubCommand { HologramType hologramType1 = HologramType.valueOf(WordUtils.capitalize(args[0].toLowerCase())); Hologram hologram = hologramManager.getHologram(hologramType1); - if (hologram != null) { - hologramManager.removeHologram(hologram); - } + if (hologram != null) + hologram.remove(); }); messageManager.sendMessage(sender, configLoad.getString("Command.Island.Admin.RemoveHologram.Removed.Message").replace("%type", hologramType.name())); diff --git a/src/main/java/com/songoda/skyblock/command/commands/admin/SetHologramCommand.java b/src/main/java/com/songoda/skyblock/command/commands/admin/SetHologramCommand.java index c2b96ca6..2593afe1 100644 --- a/src/main/java/com/songoda/skyblock/command/commands/admin/SetHologramCommand.java +++ b/src/main/java/com/songoda/skyblock/command/commands/admin/SetHologramCommand.java @@ -9,7 +9,6 @@ import com.songoda.skyblock.hologram.HologramManager; import com.songoda.skyblock.hologram.HologramType; import com.songoda.skyblock.message.MessageManager; import com.songoda.skyblock.sound.SoundManager; - import org.apache.commons.lang.WordUtils; import org.bukkit.Bukkit; import org.bukkit.command.ConsoleCommandSender; @@ -55,9 +54,8 @@ public class SetHologramCommand extends SubCommand { .valueOf(WordUtils.capitalize(args[0].toLowerCase())); Hologram hologram = hologramManager.getHologram(hologramType1); - if (hologram != null) { - hologramManager.removeHologram(hologram); - } + if (hologram != null) + hologram.remove(); hologramManager.spawnHologram(hologramType1); }); diff --git a/src/main/java/com/songoda/skyblock/hologram/Hologram.java b/src/main/java/com/songoda/skyblock/hologram/Hologram.java index 2f4c1a76..051b6ff7 100644 --- a/src/main/java/com/songoda/skyblock/hologram/Hologram.java +++ b/src/main/java/com/songoda/skyblock/hologram/Hologram.java @@ -1,5 +1,6 @@ package com.songoda.skyblock.hologram; +import com.songoda.core.hooks.HologramManager; import com.songoda.skyblock.utils.version.NMSUtil; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -11,70 +12,30 @@ import java.util.List; public class Hologram { - private List holograms = new ArrayList<>(); - private HologramType type; private Location location; public Hologram(HologramType type, Location location, List lines) { this.type = type; this.location = location; - - for (String lineList : lines) { - addLine(lineList); - } - } - - public void addLine(String text) { - ArmorStand as = (ArmorStand) location.getWorld().spawnEntity( - location.clone().add(0.0D, getHeight() + getHeightIncrement(), 0.0D), EntityType.ARMOR_STAND); - int NMSVersion = NMSUtil.getVersionNumber(); - as.setVisible(false); - if (NMSVersion > 8) - as.setMarker(false); - as.setGravity(false); - as.setCustomName(ChatColor.translateAlternateColorCodes('&', text)); - as.setCustomNameVisible(true); - - holograms.add(as); - } - - public void setLine(int index, String text) { - if (index < holograms.size()) { - ArmorStand as = holograms.get(index); - - if (!as.isDead()) { - as.setCustomName(ChatColor.translateAlternateColorCodes('&', text)); - as.setCustomNameVisible(true); - } - } - } - - public void removeLine(int index) { - if (index < holograms.size()) { - ArmorStand as = holograms.get(index); - - if (!as.isDead()) { - as.remove(); - } - - holograms.remove(index); - } - } - - public double getHeight() { - return -2.0D + (holograms.size() * getHeightIncrement()); - } - - public double getHeightIncrement() { - return 0.35; + HologramManager.createHologram(location, lines); } public HologramType getType() { return type; } - public List getHolograms() { - return holograms; + + public Location getLocation() { + return location; + } + + public void remove() { + HologramManager.removeHologram(location); + } + + public void update(List lines) { + HologramManager.updateHologram(location, lines); + } } diff --git a/src/main/java/com/songoda/skyblock/hologram/HologramManager.java b/src/main/java/com/songoda/skyblock/hologram/HologramManager.java index af625219..e7de74b8 100644 --- a/src/main/java/com/songoda/skyblock/hologram/HologramManager.java +++ b/src/main/java/com/songoda/skyblock/hologram/HologramManager.java @@ -1,5 +1,6 @@ package com.songoda.skyblock.hologram; +import com.songoda.core.utils.TextUtils; import com.songoda.skyblock.SkyBlock; import com.songoda.skyblock.config.FileManager; import com.songoda.skyblock.config.FileManager.Config; @@ -9,21 +10,14 @@ import com.songoda.skyblock.leaderboard.LeaderboardManager; import com.songoda.skyblock.message.MessageManager; import com.songoda.skyblock.utils.NumberUtil; import com.songoda.skyblock.utils.player.OfflinePlayer; -import com.songoda.skyblock.utils.world.LocationUtil; import com.songoda.skyblock.visit.Visit; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Location; -import org.bukkit.World; import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import java.io.File; import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; import java.util.List; public class HologramManager { @@ -37,8 +31,6 @@ public class HologramManager { FileManager fileManager = skyblock.getFileManager(); Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> { - removeWorldHolograms(); - for (HologramType hologramTypeList : HologramType.values()) { if (hologramTypeList == HologramType.Votes) { if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) @@ -61,143 +53,89 @@ public class HologramManager { } public void spawnHologram(HologramType type) { - LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - MessageManager messageManager = skyblock.getMessageManager(); FileManager fileManager = skyblock.getFileManager(); Config locationsConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); FileConfiguration locationsConfigLoad = locationsConfig.getFileConfiguration(); + + if (locationsConfigLoad.getString("Location.Hologram.Leaderboard." + type) != null) + spawnHologram(type, skyblock.getFileManager().getLocation(locationsConfig, + "Location.Hologram.Leaderboard." + type, true), getHologramLines(type)); + } + + private List getHologramLines(HologramType type) { + FileManager fileManager = skyblock.getFileManager(); + LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); + MessageManager messageManager = skyblock.getMessageManager(); + FileConfiguration languageConfigLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) .getFileConfiguration(); - if (locationsConfigLoad.getString("Location.Hologram.Leaderboard." + type) != null) { - List hologramLines = new ArrayList<>(); - Leaderboard.Type leaderboardType = null; + List hologramLines = new ArrayList<>(); + Leaderboard.Type leaderboardType = null; - switch (type) { - case Level: - leaderboardType = Leaderboard.Type.Level; - break; - case Bank: - leaderboardType = Leaderboard.Type.Bank; - break; - case Votes: - leaderboardType = Leaderboard.Type.Votes; - break; - } - - hologramLines.add(messageManager.replaceMessage(null, - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Header"))); - - for (int i = 0; i < 10; i++) { - Leaderboard leaderboard = leaderboardManager.getLeaderboardFromPosition(leaderboardType, i); - - if (leaderboard == null) { - hologramLines.add(messageManager.replaceMessage(null, - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Unclaimed") - .replace("%position", "" + (i + 1)))); - } else { - Visit visit = leaderboard.getVisit(); - - Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); - String islandOwnerName; - - if (targetPlayer == null) { - islandOwnerName = new OfflinePlayer(visit.getOwnerUUID()).getName(); - } else { - islandOwnerName = targetPlayer.getName(); - } - - if (type == HologramType.Level) { - IslandLevel level = visit.getLevel(); - hologramLines.add(ChatColor.translateAlternateColorCodes('&', - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) - .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints())))); - } else if (type == HologramType.Bank) { - hologramLines.add(ChatColor.translateAlternateColorCodes('&', - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%balance", - "" + NumberUtil.formatNumberByDecimal(visit.getBankBalance())))); - } else if (type == HologramType.Votes) { - hologramLines.add(ChatColor.translateAlternateColorCodes('&', - languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%votes", - "" + NumberUtil.formatNumberByDecimal(visit.getVoters().size())))); - } - } - } - - String hologramFooter = languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Footer"); - - if (!hologramFooter.isEmpty()) { - hologramLines.add(messageManager.replaceMessage(null, hologramFooter)); - } - - Collections.reverse(hologramLines); - - spawnHologram(type, skyblock.getFileManager().getLocation(locationsConfig, - "Location.Hologram.Leaderboard." + type, true), hologramLines); + switch (type) { + case Level: + leaderboardType = Leaderboard.Type.Level; + break; + case Bank: + leaderboardType = Leaderboard.Type.Bank; + break; + case Votes: + leaderboardType = Leaderboard.Type.Votes; + break; } - } - public void removeHologram(Hologram hologram) { - if (hologramStorage.contains(hologram)) { - List holograms = hologram.getHolograms(); + hologramLines.add(TextUtils.formatText( + languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Header"))); - for (Iterator it = holograms.iterator(); it.hasNext(); ) { - it.next().remove(); + for (int i = 0; i < 10; i++) { + Leaderboard leaderboard = leaderboardManager.getLeaderboardFromPosition(leaderboardType, i); + + if (leaderboard == null) continue; + + Visit visit = leaderboard.getVisit(); + + Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); + String islandOwnerName = targetPlayer == null + ? new OfflinePlayer(visit.getOwnerUUID()).getName() : targetPlayer.getName(); + + if (type == HologramType.Level) { + IslandLevel level = visit.getLevel(); + hologramLines.add(TextUtils.formatText( + languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") + .replace("%position", "" + (i + 1)) + .replace("%player", islandOwnerName) + .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) + .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints())))); + } else if (type == HologramType.Bank) { + hologramLines.add(TextUtils.formatText( + languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") + .replace("%position", "" + (i + 1)) + .replace("%player", islandOwnerName) + .replace("%balance", + "" + NumberUtil.formatNumberByDecimal(visit.getBankBalance())))); + } else if (type == HologramType.Votes) { + hologramLines.add(TextUtils.formatText( + languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed") + .replace("%position", "" + (i + 1)) + .replace("%player", islandOwnerName) + .replace("%votes", + "" + NumberUtil.formatNumberByDecimal(visit.getVoters().size())))); } - - hologramStorage.remove(hologram); } + + String hologramFooter = languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Footer"); + + if (!hologramFooter.isEmpty()) + hologramLines.add(TextUtils.formatText(hologramFooter)); + + return hologramLines; } public void removeHolograms() { for (Hologram hologramList : hologramStorage) { - List holograms = hologramList.getHolograms(); - - for (Iterator it = holograms.iterator(); it.hasNext(); ) { - it.next().remove(); - } - } - } - - public void removeWorldHolograms() { - FileManager fileManager = skyblock.getFileManager(); - - List locations = new ArrayList<>(); - - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "locations.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); - - for (HologramType hologramTypeList : HologramType.values()) { - if (configLoad.getString("Location.Hologram.Leaderboard." + hologramTypeList.name()) != null) { - locations.add(fileManager.getLocation(config, - "Location.Hologram.Leaderboard." + hologramTypeList.name(), true)); - } - } - - for (World worldList : Bukkit.getWorlds()) { - List entities = worldList.getEntities(); - - for (Iterator it = entities.iterator(); it.hasNext(); ) { - Entity entity = it.next(); - - if (entity instanceof ArmorStand) { - for (Location locationList : locations) { - if (LocationUtil.isLocationAtLocationRadius(entity.getLocation(), locationList, 1)) { - entity.remove(); - } - } - } - } + hologramList.remove(); } } @@ -211,99 +149,9 @@ public class HologramManager { return null; } - public boolean hasHologram(HologramType type) { + public void updateHologram() { for (Hologram hologramList : hologramStorage) { - if (hologramList.getType() == type) { - return true; - } - } - - return false; - } - - public void resetHologram() { - LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - MessageManager messageManager = skyblock.getMessageManager(); - FileManager fileManager = skyblock.getFileManager(); - - FileConfiguration configLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")) - .getFileConfiguration(); - - for (HologramType hologramTypeList : HologramType.values()) { - if (hologramTypeList == HologramType.Votes) { - if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Visitor.Vote")) { - continue; - } - } - - Hologram hologram; - - if (hasHologram(hologramTypeList)) { - hologram = getHologram(hologramTypeList); - } else { - continue; - } - - Leaderboard.Type leaderboardType = null; - - switch (hologramTypeList) { - case Level: - leaderboardType = Leaderboard.Type.Level; - break; - case Bank: - leaderboardType = Leaderboard.Type.Bank; - break; - case Votes: - leaderboardType = Leaderboard.Type.Votes; - break; - } - - for (int i = 0; i < 10; i++) { - Leaderboard leaderboard = leaderboardManager.getLeaderboardFromPosition(leaderboardType, i); - int hologramLine = 10 - i; - - if (leaderboard == null) { - hologram.setLine(hologramLine, messageManager.replaceMessage(null, - configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Unclaimed") - .replace("%position", "" + (i + 1)))); - } else { - Visit visit = leaderboard.getVisit(); - - Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); - String islandOwnerName; - - if (targetPlayer == null) { - islandOwnerName = new OfflinePlayer(visit.getOwnerUUID()).getName(); - } else { - islandOwnerName = targetPlayer.getName(); - } - - if (hologramTypeList == HologramType.Level) { - IslandLevel level = visit.getLevel(); - hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%level", NumberUtil.formatNumberByDecimal(level.getLevel())) - .replace("%points", NumberUtil.formatNumberByDecimal(level.getPoints())))); - } else if (hologramTypeList == HologramType.Bank) { - hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%balance", - "" + NumberUtil.formatNumberByDecimal(visit.getBankBalance())))); - } else if (hologramTypeList == HologramType.Votes) { - hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', - configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed") - .replace("%position", "" + (i + 1)) - .replace("%player", islandOwnerName) - .replace("%votes", - "" + NumberUtil.formatNumberByDecimal(visit.getVoters().size())))); - } - } - } + hologramList.update(getHologramLines(hologramList.getType())); } } } diff --git a/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardTask.java b/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardTask.java index 0fdc117f..fade015c 100644 --- a/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardTask.java +++ b/src/main/java/com/songoda/skyblock/leaderboard/LeaderboardTask.java @@ -18,6 +18,6 @@ public class LeaderboardTask extends BukkitRunnable { leaderboardManager.resetLeaderboard(); leaderboardManager.setupLeaderHeads(); - skyblock.getHologramManager().resetHologram(); + skyblock.getHologramManager().updateHologram(); } } diff --git a/src/main/resources/language.yml b/src/main/resources/language.yml index 39fbf0f9..66feccbd 100644 --- a/src/main/resources/language.yml +++ b/src/main/resources/language.yml @@ -295,7 +295,7 @@ Command: Set: Message: '&bSkyBlock &8| &aInfo&8: &eThe ''&b%type&e'' hologram has been set to your location.' Invalid: - Message: '&bSkyBlock &8| &cError&8: &eInvalid: /island admin sethologram ' + Message: '&bSkyBlock &8| &cError&8: &eInvalid: /island admin sethologram ' Info: Message: '&f&oSets the location of a hologram.' Settings: @@ -316,7 +316,7 @@ Command: Message: '&f&oManage generators for cobblestone generators.' RemoveHologram: Invalid: - Message: '&bSkyBlock &8| &cError&8: &eInvalid: /island admin removehologram ' + Message: '&bSkyBlock &8| &cError&8: &eInvalid: /island admin removehologram ' Set: Message: '&bSkyBlock &8| &cError&8: &eA location for that hologram has not been set.' Info: diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c50f8a86..e299881c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,7 +4,7 @@ version: maven-version-number api-version: 1.13 description: A unique SkyBlock plugin author: Songoda -softdepend: [PlaceholderAPI, MVdWPlaceholderAPI, Vault, Reserve, LeaderHeads, EpicSpawners, WildStacker, UltimateStacker, WorldEdit] +softdepend: [HolographicDisplays, Holograms, CMI, PlaceholderAPI, MVdWPlaceholderAPI, Vault, Reserve, LeaderHeads, EpicSpawners, WildStacker, UltimateStacker, WorldEdit] loadbefore: [Multiverse-Core] commands: island: From 62ee9c834c342412129e17adef78b8793bcdf49b Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 8 Apr 2020 12:29:38 -0400 Subject: [PATCH 5/5] version 2.2.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 19e88ad4..4e130a71 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.songoda skyblock - 2.2.4 + 2.2.5 clean install FabledSkyblock-${project.version}