diff --git a/src/main/java/me/metallicgoat/tweaksaddon/MBedwarsTweaksAddon.java b/src/main/java/me/metallicgoat/tweaksaddon/MBedwarsTweaksAddon.java index 6895aa0..62effae 100644 --- a/src/main/java/me/metallicgoat/tweaksaddon/MBedwarsTweaksAddon.java +++ b/src/main/java/me/metallicgoat/tweaksaddon/MBedwarsTweaksAddon.java @@ -79,7 +79,6 @@ public void registerEvents() { manager.registerEvents(new HeightCap(), plugin); manager.registerEvents(new LockTeamChest(), plugin); manager.registerEvents(new PermanentEffects(), plugin); - manager.registerEvents(new PersonalChests(), plugin); manager.registerEvents(new PlaceBlocksOnBed(), plugin); manager.registerEvents(new PlayerLimitBypass(), plugin); manager.registerEvents(new RemoveInvisOnDamage(), plugin); diff --git a/src/main/java/me/metallicgoat/tweaksaddon/config/ConfigLoader.java b/src/main/java/me/metallicgoat/tweaksaddon/config/ConfigLoader.java index 5da6608..ee8676c 100644 --- a/src/main/java/me/metallicgoat/tweaksaddon/config/ConfigLoader.java +++ b/src/main/java/me/metallicgoat/tweaksaddon/config/ConfigLoader.java @@ -1,7 +1,9 @@ package me.metallicgoat.tweaksaddon.config; import de.marcely.bedwars.api.arena.Team; +import de.marcely.bedwars.api.configuration.ConfigurationAPI; import de.marcely.bedwars.api.event.ConfigsLoadEvent; +import de.marcely.bedwars.tools.Helper; import me.metallicgoat.tweaksaddon.MBedwarsTweaksPlugin; import me.metallicgoat.tweaksaddon.config.ConfigManager.FileType; import me.metallicgoat.tweaksaddon.gentiers.GenTierLevel; @@ -9,6 +11,7 @@ import me.metallicgoat.tweaksaddon.utils.Console; import me.metallicgoat.tweaksaddon.utils.Util; import net.md_5.bungee.api.ChatColor; +import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -57,6 +60,8 @@ public static void loadTweaksConfigs(MBedwarsTweaksPlugin plugin) { applyCustomTeamColors(); + overrideMBedwarsConfigs(); + final long end = System.currentTimeMillis(); Console.printInfo("Configs loaded in " + (end - start) + "ms."); @@ -109,4 +114,27 @@ private static void applyCustomTeamColors() { for (Entry entry : MainConfig.custom_team_colors.entrySet()) entry.getKey().setBungeeChatColor(entry.getValue()); } + + private static void overrideMBedwarsConfigs() { + // APPLY OUR OVERRIDES + if (MainConfig.personal_ender_chests_enabled) { + try { + final boolean teamchestEnabled = (boolean) ConfigurationAPI.get().getValue("teamchest-enabled"); + final Material teamchestBlock = (Material) ConfigurationAPI.get().getValue("teamchest-block"); + + if (teamchestEnabled && teamchestBlock == Helper.get().getMaterialByName("ENDER_CHEST")) { + ConfigurationAPI.get().setValue("teamchest-enabled", false); + Console.printWarn( + "WARNING: You have \"personal-ender-chests-enabled\" enabled. This setting will be removed in the future, as it is already possible in MBedwars." , + "Open your MBedwars config.yml, and either set \"teamchest-enabled\" to false, or set \"teamchest-block\" to CHEST.", + "Currently, we are using the MBedwars configuration api to override these values for you." + ); + } + + } catch (Exception e) { + Console.printWarn("Failed to apply personal ender chests. Try updating MBedwars, or disabling \"personal-ender-chests-enabled\""); + e.printStackTrace(); + } + } + } } diff --git a/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java b/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java index 0f9103e..b14719b 100644 --- a/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java +++ b/src/main/java/me/metallicgoat/tweaksaddon/config/MainConfig.java @@ -317,14 +317,6 @@ public class MainConfig { @Config public static double lock_team_chest_range = 8; @Config public static String lock_team_chest_fail_open = "&cYou cannot open this chest until {team} &chas been eliminated."; - @Config( - description = { - "Personal Ender Chests. Overrides MBedwars Team Ender Chests" - } - ) - public static boolean personal_ender_chests_enabled = false; - @Config public static String personal_ender_chests_name = "Ender Chest"; - // MISCELLANEOUS @SectionTitle(title = "MISCELLANEOUS") @@ -489,6 +481,15 @@ public class MainConfig { // ===== UNSUPPORTED @SectionTitle(title = "UNSUPPORTED") + @Config( + description = { + "THIS WILL BE REMOVED IN THE FUTURE - USE MBedwars ENDER CHESTS", + "Personal Ender Chests. Overrides MBedwars Team Ender Chests", + "This config now simply enables the setting in MBedwars by modifying the config value" + } + ) + public static boolean personal_ender_chests_enabled = false; + @Config( description = { "Add a height cap for specific MBedwars arenas", diff --git a/src/main/java/me/metallicgoat/tweaksaddon/tweaks/misc/PersonalChests.java b/src/main/java/me/metallicgoat/tweaksaddon/tweaks/misc/PersonalChests.java deleted file mode 100644 index 0d5d24c..0000000 --- a/src/main/java/me/metallicgoat/tweaksaddon/tweaks/misc/PersonalChests.java +++ /dev/null @@ -1,111 +0,0 @@ -package me.metallicgoat.tweaksaddon.tweaks.misc; - -import de.marcely.bedwars.api.BedwarsAPI; -import de.marcely.bedwars.api.arena.Arena; -import de.marcely.bedwars.api.arena.ArenaStatus; -import de.marcely.bedwars.api.arena.Team; -import de.marcely.bedwars.api.event.arena.ArenaDeleteEvent; -import de.marcely.bedwars.api.event.arena.ArenaStatusChangeEvent; -import de.marcely.bedwars.api.event.arena.RoundStartEvent; -import de.marcely.bedwars.api.message.Message; -import java.util.ArrayList; -import java.util.IdentityHashMap; -import java.util.List; -import java.util.Map; -import me.metallicgoat.tweaksaddon.config.MainConfig; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; -import org.bukkit.event.inventory.InventoryCloseEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.inventory.Inventory; - -public class PersonalChests implements Listener { - - private static final Map> inventoryArenaHashMap = new IdentityHashMap<>(); - private static final Map openChests = new IdentityHashMap<>(); - - @EventHandler - public void onRoundStart(RoundStartEvent event) { - if (!MainConfig.personal_ender_chests_enabled) - return; - - final Arena arena = event.getArena(); - final List inventories = new ArrayList<>(); - - for (Player player : arena.getPlayers()) { - final Team team = arena.getPlayerTeam(player); - final String teamName = team != null ? ChatColor.stripColor(team.getDisplayName()) : ""; - final String teamColor = team != null ? String.valueOf(team.getBungeeChatColor()) : ""; - final String chestName = Message.build(MainConfig.personal_ender_chests_name) - .placeholder("team-name", teamName) - .placeholder("team-color", teamColor) - .done(); - - inventories.add(Bukkit.createInventory(player, 27, chestName)); - } - - inventoryArenaHashMap.put(arena, inventories); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onArenaStatusChangeEvent(ArenaStatusChangeEvent event) { - if (event.getOldStatus() == ArenaStatus.RUNNING) - removeArena(event.getArena()); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onArenaDeleteEvent(ArenaDeleteEvent event) { - removeArena(event.getArena()); - } - - private void removeArena(Arena arena) { - inventoryArenaHashMap.remove(arena); - } - - @EventHandler(priority = EventPriority.HIGH) - public void onChestOpen(PlayerInteractEvent event) { - if (!MainConfig.personal_ender_chests_enabled) - return; - - final Player player = event.getPlayer(); - final Arena arena = BedwarsAPI.getGameAPI().getArenaByPlayer(player); - final Block block = event.getClickedBlock(); - - // Check if player is opening chest in an arena - if (arena == null || block == null || - block.getType() != Material.ENDER_CHEST || - arena.getStatus() != ArenaStatus.RUNNING || - event.getAction() != Action.RIGHT_CLICK_BLOCK) - return; - - final List inventories = inventoryArenaHashMap.get(arena); - - if (inventories == null) - return; - - for (Inventory inventory : inventories) { - if (inventory.getHolder() == player) { - BedwarsAPI.getNMSHelper().simulateChestOpening(block); - player.openInventory(inventory); - openChests.put(player, block); - break; - } - } - } - - @EventHandler - public void onInventoryClose(InventoryCloseEvent e) { - final Player player = (Player) e.getPlayer(); - final Block openBlock = openChests.remove(player); - - if (openBlock != null) - BedwarsAPI.getNMSHelper().simulateChestClosing(openBlock); - } -}