From 123950c141e8a233d6ef47cbecf6aa8bd2f48e5c Mon Sep 17 00:00:00 2001 From: SamB440 Date: Sun, 16 Feb 2020 21:05:22 +0000 Subject: [PATCH] Reload config on reload command, add inner pane, fix pages error, add mask config --- .../islandearth/rpgregions/RPGRegions.java | 26 ++++++++++++-- .../commands/RPGRegionsCommand.java | 1 + .../rpgregions/gui/DiscoveryGUI.java | 35 ++++++++++++++++--- 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java b/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java index 333c161..e81217a 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java @@ -31,6 +31,7 @@ import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionEffect; import java.io.IOException; +import java.util.Arrays; public final class RPGRegions extends JavaPlugin implements RPGRegionsAPI, LanguagyPluginHook { @@ -86,6 +87,7 @@ public final class RPGRegions extends JavaPlugin implements RPGRegionsAPI, Langu } private void createConfig() { + // TODO move this logic to another class - it's getting too long! FileConfiguration config = this.getConfig(); String header; String eol = System.getProperty("line.separator"); @@ -127,17 +129,35 @@ public final class RPGRegions extends JavaPlugin implements RPGRegionsAPI, Langu config.addDefault("settings.server.gui.exit.show", true); config.addDefault("settings.server.gui.pane.posX", 1); config.addDefault("settings.server.gui.pane.posY", 1); - config.addDefault("settings.server.gui.pane.length", 9); - config.addDefault("settings.server.gui.pane.height", 5); + config.addDefault("settings.server.gui.pane.length", 7); + config.addDefault("settings.server.gui.pane.height", 4); config.addDefault("settings.server.gui.outlinePane.posX", 0); config.addDefault("settings.server.gui.outlinePane.posY", 0); config.addDefault("settings.server.gui.outlinePane.length", 9); - config.addDefault("settings.server.gui.outlinePane.height", 5); + config.addDefault("settings.server.gui.outlinePane.height", 6); config.addDefault("settings.server.gui.outlinePane.show", true); + config.addDefault("settings.server.gui.outlinePane.mask", Arrays.asList( + "111111111", + "100000001", + "100000001", + "100000001", + "100000001", + "111111111")); + config.addDefault("settings.server.gui.innerPane.posX", 1); + config.addDefault("settings.server.gui.innerPane.posY", 1); + config.addDefault("settings.server.gui.innerPane.length", 7); + config.addDefault("settings.server.gui.innerPane.height", 4); + config.addDefault("settings.server.gui.innerPane.show", true); + config.addDefault("settings.server.gui.innerPane.mask", Arrays.asList( + "1111111", + "1111111", + "1111111", + "1111111")); config.addDefault("settings.server.gui.forward.forward", XMaterial.ARROW.parseMaterial().toString()); config.addDefault("settings.server.gui.back.back", XMaterial.ARROW.parseMaterial().toString()); config.addDefault("settings.server.gui.exit.exit", XMaterial.BARRIER.parseMaterial().toString()); config.addDefault("settings.server.gui.outlinePane.outlinePane", XMaterial.GRAY_STAINED_GLASS_PANE.parseMaterial().toString()); + config.addDefault("settings.server.gui.innerPane.innerPane", XMaterial.WHITE_STAINED_GLASS_PANE.parseMaterial().toString()); config.options().copyDefaults(true); saveConfig(); } diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java b/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java index 4e2ee75..e0e4f28 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java @@ -157,6 +157,7 @@ public class RPGRegionsCommand extends BaseCommand { } } + plugin.reloadConfig(); long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; sender.sendMessage(ChatColor.GREEN + "Done! (" + totalTime + "ms)"); diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/gui/DiscoveryGUI.java b/rpgregions/src/main/java/net/islandearth/rpgregions/gui/DiscoveryGUI.java index 823f05c..6af9c67 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/gui/DiscoveryGUI.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/gui/DiscoveryGUI.java @@ -5,6 +5,7 @@ import com.github.stefvanschie.inventoryframework.GuiItem; import com.github.stefvanschie.inventoryframework.pane.OutlinePane; import com.github.stefvanschie.inventoryframework.pane.PaginatedPane; import com.github.stefvanschie.inventoryframework.pane.StaticPane; +import com.github.stefvanschie.inventoryframework.pane.util.Mask; import io.papermc.lib.PaperLib; import net.islandearth.rpgregions.RPGRegions; import net.islandearth.rpgregions.managers.data.region.ConfiguredRegion; @@ -26,6 +27,7 @@ public class DiscoveryGUI extends RPGRegionsGUI { public DiscoveryGUI(RPGRegions plugin, Player player) { super(plugin, player); this.gui = new Gui(plugin, 6, Translations.REGIONS.get(player)); + // I wish there was a cleaner way to do this :( int backX = plugin.getConfig().getInt("settings.server.gui.back.posX"); int backY = plugin.getConfig().getInt("settings.server.gui.back.posY"); int backL = plugin.getConfig().getInt("settings.server.gui.back.length"); @@ -46,15 +48,40 @@ public class DiscoveryGUI extends RPGRegionsGUI { int oPaneY = plugin.getConfig().getInt("settings.server.gui.outlinePane.posY"); int oPaneL = plugin.getConfig().getInt("settings.server.gui.outlinePane.length"); int oPaneH = plugin.getConfig().getInt("settings.server.gui.outlinePane.height"); + int iPaneX = plugin.getConfig().getInt("settings.server.gui.innerPane.posX"); + int iPaneY = plugin.getConfig().getInt("settings.server.gui.innerPane.posY"); + int iPaneL = plugin.getConfig().getInt("settings.server.gui.innerPane.length"); + int iPaneH = plugin.getConfig().getInt("settings.server.gui.innerPane.height"); PaginatedPane pane = new PaginatedPane(paneX, paneY, paneL, paneH); OutlinePane oPane = new OutlinePane(oPaneX, oPaneY, oPaneL, oPaneH); + OutlinePane innerPane = new OutlinePane(iPaneX, iPaneY, iPaneL, iPaneH); StaticPane back = new StaticPane(backX, backY, backL, backH); StaticPane forward = new StaticPane(forwardX, forwardY, forwardL, forwardH); StaticPane exit = new StaticPane(exitX, exitY, exitL, exitH); + // Inner pane + if (plugin.getConfig().getBoolean("settings.server.gui.innerPane.show")) { + innerPane.setRepeat(true); + List mask = plugin.getConfig().getStringList("settings.server.gui.innerPane.mask"); + innerPane.applyMask(new Mask(mask.toArray(new String[]{}))); + innerPane.setOnClick(inventoryClickEvent -> { + inventoryClickEvent.setCancelled(true); + }); + + innerPane.addItem(new GuiItem(new ItemStackBuilder(XMaterial.valueOf( + plugin.getConfig().getString("settings.server.gui.innerPane.innerPane")).parseMaterial()) + .withName(" ") + .addFlags(ItemFlag.HIDE_ATTRIBUTES) + .build())); + + gui.addPane(innerPane); + } + // Outline pane if (plugin.getConfig().getBoolean("settings.server.gui.outlinePane.show")) { oPane.setRepeat(true); + List mask = plugin.getConfig().getStringList("settings.server.gui.outlinePane.mask"); + oPane.applyMask(new Mask(mask.toArray(new String[]{}))); oPane.setOnClick(inventoryClickEvent -> { inventoryClickEvent.setCancelled(true); }); @@ -75,7 +102,7 @@ public class DiscoveryGUI extends RPGRegionsGUI { .addFlags(ItemFlag.HIDE_ATTRIBUTES) .build(), event -> { event.setCancelled(true); - if (pane.getPages() == 0) return; + if (pane.getPages() == 0 || pane.getPages() == 1) return; pane.setPage(pane.getPage() - 1); @@ -90,7 +117,7 @@ public class DiscoveryGUI extends RPGRegionsGUI { .addFlags(ItemFlag.HIDE_ATTRIBUTES) .build(), event -> { event.setCancelled(true); - if (pane.getPages() == 0) return; + if (pane.getPages() == 0 || pane.getPages() == 1) return; pane.setPage(pane.getPage() + 1); @@ -167,9 +194,7 @@ public class DiscoveryGUI extends RPGRegionsGUI { event.setCancelled(true); })); } - - - + pane.populateWithGuiItems(items); gui.addPane(pane); });