From 9537be4c7ae95c0f7fcfa8147b67e5ff50fcc006 Mon Sep 17 00:00:00 2001 From: sekwah Date: Tue, 23 Jan 2018 18:40:39 +0000 Subject: [PATCH 1/5] Made tab complete only show commands with permission --- .../core/commands/CommandWithSubCommands.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/com/sekwah/advancedportals/core/commands/CommandWithSubCommands.java b/src/com/sekwah/advancedportals/core/commands/CommandWithSubCommands.java index 43914a6..8986af1 100644 --- a/src/com/sekwah/advancedportals/core/commands/CommandWithSubCommands.java +++ b/src/com/sekwah/advancedportals/core/commands/CommandWithSubCommands.java @@ -110,7 +110,16 @@ public class CommandWithSubCommands implements CommandTemplate { } } else { - return this.subCommandRegistry.getSubCommands(); + List allowedCommands = new ArrayList<>(); + for (String subCommandName : this.subCommandRegistry.getSubCommands()) { + if (subCommandName.equalsIgnoreCase(args[0])) { + SubCommand subCommand = this.getSubCommand(subCommandName); + if(subCommand.hasPermission(sender)) { + allowedCommands.add(subCommandName); + } + } + } + return allowedCommands; } return null; } From 6206d7c7830a7a6e2c363d21b9a95ac892da7ca1 Mon Sep 17 00:00:00 2001 From: sekwah Date: Wed, 24 Jan 2018 10:05:46 +0000 Subject: [PATCH 2/5] Started working on portal data saving --- Resources/lang/en_GB.lang | 1 + .../core/AdvancedPortalsCore.java | 34 +++++++++++++---- .../advancedportals/core/CoreListeners.java | 11 ++++++ .../core/api/effect/TestEffect.java | 4 +- .../core/api/effect/WarpEffect.java | 4 +- .../core/api/events/WarpEvent.java | 2 - .../core/api/managers/DestinationManager.java | 15 ++++++++ .../core/api/managers/PortalManager.java | 38 ++++++++++++++----- .../{Portal.java => AdvancedPortal.java} | 2 +- .../subcommands/portal/ReloadSubCommand.java | 4 ++ .../portal/TransUpdateSubCommand.java | 2 +- .../core/data/PlayerLocation.java | 14 +++++++ .../advancedportals/core/util/Config.java | 2 +- .../core/util/DataStorage.java | 11 +++++- .../container/PlayerContainer.java | 6 +++ 15 files changed, 123 insertions(+), 27 deletions(-) rename src/com/sekwah/advancedportals/core/api/portal/{Portal.java => AdvancedPortal.java} (73%) create mode 100644 src/com/sekwah/advancedportals/core/data/PlayerLocation.java diff --git a/Resources/lang/en_GB.lang b/Resources/lang/en_GB.lang index a28e1b2..c22c5c7 100644 --- a/Resources/lang/en_GB.lang +++ b/Resources/lang/en_GB.lang @@ -31,6 +31,7 @@ command.help.invalidnum= Sorry but \u00A7e%1$s\u00A7c is not a valid page number command.reload.help=Reloads portal data command.reload.detailedhelp=Reloads all portal data from files in the data folder +command.reload.reloaded= All Advanced Portals data reloaded command.version.help=Returns the current version of the plugin diff --git a/src/com/sekwah/advancedportals/core/AdvancedPortalsCore.java b/src/com/sekwah/advancedportals/core/AdvancedPortalsCore.java index 09ffe28..eae4072 100644 --- a/src/com/sekwah/advancedportals/core/AdvancedPortalsCore.java +++ b/src/com/sekwah/advancedportals/core/AdvancedPortalsCore.java @@ -1,6 +1,8 @@ package com.sekwah.advancedportals.core; import com.sekwah.advancedportals.core.api.commands.SubCommand; +import com.sekwah.advancedportals.core.api.managers.DestinationManager; +import com.sekwah.advancedportals.core.api.managers.PortalManager; import com.sekwah.advancedportals.core.commands.CommandWithSubCommands; import com.sekwah.advancedportals.core.commands.subcommands.portal.ReloadSubCommand; import com.sekwah.advancedportals.core.commands.subcommands.portal.TransUpdateSubCommand; @@ -25,6 +27,9 @@ public class AdvancedPortalsCore { private CommandWithSubCommands portalCommand; private CommandWithSubCommands destiCommand; + private PortalManager portalManager; + private DestinationManager destiManager; + public static final String version = "1.0.0"; public static final String lastTranslationUpdate = "1.0.0"; @@ -33,7 +38,9 @@ public class AdvancedPortalsCore { this.infoLogger = infoLogger; this.instance = this; this.commandRegister = commandRegister; - this.coreListeners = new CoreListeners(); + this.coreListeners = new CoreListeners(this); + this.portalManager = new PortalManager(this); + this.destiManager = new DestinationManager(this); this.onEnable(); } @@ -50,6 +57,8 @@ public class AdvancedPortalsCore { this.registerPortalCommand(); this.registerDestinationCommand(); + this.portalManager.loadPortals(); + this.infoLogger.log(Lang.translate("logger.pluginenable")); } @@ -80,28 +89,39 @@ public class AdvancedPortalsCore { * Loads the portal config into the memory and saves from the memory to check in case certain things have changed * (basically if values are missing or whatever) */ - private void loadPortalConfig() { + public void loadPortalConfig() { this.config = this.dataStorage.loadJson(Config.class, "config.json"); this.dataStorage.storeJson(this.config, "config.json"); } + /** + * This cannot be called to disable the plugin, it just performs any saves or anything needed after if they are required + */ public void onDisable() { this.infoLogger.log(Lang.translate("logger.plugindisable")); } - private static AdvancedPortalsCore getInstance() { + public static AdvancedPortalsCore getInstance() { return instance; } - public static DataStorage getDataStorage() { - return instance.dataStorage; + public DataStorage getDataStorage() { + return this.dataStorage; } public static InfoLogger getInfoLogger() { return instance.infoLogger; } - public CoreListeners getCoreListeners() { - return this.coreListeners; + public static CoreListeners getCoreListeners() { + return instance.coreListeners; + } + + public static PortalManager getPortalManager() { + return instance.portalManager; + } + + public static DestinationManager getDestiManager() { + return instance.destiManager; } } diff --git a/src/com/sekwah/advancedportals/core/CoreListeners.java b/src/com/sekwah/advancedportals/core/CoreListeners.java index a40126b..b2fa6c5 100644 --- a/src/com/sekwah/advancedportals/core/CoreListeners.java +++ b/src/com/sekwah/advancedportals/core/CoreListeners.java @@ -1,10 +1,17 @@ package com.sekwah.advancedportals.core; +import com.sekwah.advancedportals.core.data.PlayerLocation; import com.sekwah.advancedportals.core.util.Lang; import com.sekwah.advancedportals.coreconnector.container.PlayerContainer; public class CoreListeners { + private final AdvancedPortalsCore portalsCore; + + public CoreListeners(AdvancedPortalsCore portalsCore) { + this.portalsCore = portalsCore; + } + public void playerJoin(PlayerContainer player) { if(player.isOp()) { if(!Lang.translate("translatedata.lastchange").equals(AdvancedPortalsCore.lastTranslationUpdate)) { @@ -16,4 +23,8 @@ public class CoreListeners { } } + public void playerMove(PlayerContainer player, PlayerLocation fromLoc, PlayerLocation toLoc) { + + } + } diff --git a/src/com/sekwah/advancedportals/core/api/effect/TestEffect.java b/src/com/sekwah/advancedportals/core/api/effect/TestEffect.java index d597664..ae3826f 100644 --- a/src/com/sekwah/advancedportals/core/api/effect/TestEffect.java +++ b/src/com/sekwah/advancedportals/core/api/effect/TestEffect.java @@ -1,6 +1,6 @@ package com.sekwah.advancedportals.core.api.effect; -import com.sekwah.advancedportals.core.api.portal.Portal; +import com.sekwah.advancedportals.core.api.portal.AdvancedPortal; import com.sekwah.advancedportals.core.data.PortalLocation; import com.sekwah.advancedportals.coreconnector.container.PlayerContainer; @@ -10,7 +10,7 @@ import com.sekwah.advancedportals.coreconnector.container.PlayerContainer; public class TestEffect implements WarpEffect { @Override - public void onWarp(PlayerContainer player, PortalLocation loc, Action action, Portal portal) { + public void onWarp(PlayerContainer player, PortalLocation loc, Action action, AdvancedPortal portal) { } diff --git a/src/com/sekwah/advancedportals/core/api/effect/WarpEffect.java b/src/com/sekwah/advancedportals/core/api/effect/WarpEffect.java index 2f3715c..7dc9989 100644 --- a/src/com/sekwah/advancedportals/core/api/effect/WarpEffect.java +++ b/src/com/sekwah/advancedportals/core/api/effect/WarpEffect.java @@ -1,6 +1,6 @@ package com.sekwah.advancedportals.core.api.effect; -import com.sekwah.advancedportals.core.api.portal.Portal; +import com.sekwah.advancedportals.core.api.portal.AdvancedPortal; import com.sekwah.advancedportals.core.data.PortalLocation; import com.sekwah.advancedportals.coreconnector.container.PlayerContainer; @@ -15,7 +15,7 @@ import com.sekwah.advancedportals.coreconnector.container.PlayerContainer; */ public interface WarpEffect { - void onWarp(PlayerContainer player, PortalLocation loc, Action action, Portal portal); + void onWarp(PlayerContainer player, PortalLocation loc, Action action, AdvancedPortal portal); Type getType(); diff --git a/src/com/sekwah/advancedportals/core/api/events/WarpEvent.java b/src/com/sekwah/advancedportals/core/api/events/WarpEvent.java index 29ea786..e72a2bb 100644 --- a/src/com/sekwah/advancedportals/core/api/events/WarpEvent.java +++ b/src/com/sekwah/advancedportals/core/api/events/WarpEvent.java @@ -1,7 +1,5 @@ package com.sekwah.advancedportals.core.api.events; -import com.sekwah.advancedportals.core.api.portal.Portal; - /** * Trigered whenever a player activates the warp after the tags are handled. * diff --git a/src/com/sekwah/advancedportals/core/api/managers/DestinationManager.java b/src/com/sekwah/advancedportals/core/api/managers/DestinationManager.java index c60339a..b59f415 100644 --- a/src/com/sekwah/advancedportals/core/api/managers/DestinationManager.java +++ b/src/com/sekwah/advancedportals/core/api/managers/DestinationManager.java @@ -1,7 +1,22 @@ package com.sekwah.advancedportals.core.api.managers; +import com.sekwah.advancedportals.core.AdvancedPortalsCore; +import com.sekwah.advancedportals.core.api.destination.Destination; + +import java.util.HashMap; + /** * @author sekwah41 */ public class DestinationManager { + + private final AdvancedPortalsCore portalsCore; + /** + * Contains all the data for the destinations + */ + private HashMap destiHashMap = new HashMap<>(); + + public DestinationManager(AdvancedPortalsCore portalsCore) { + this.portalsCore = portalsCore; + } } diff --git a/src/com/sekwah/advancedportals/core/api/managers/PortalManager.java b/src/com/sekwah/advancedportals/core/api/managers/PortalManager.java index 879975d..408d18d 100644 --- a/src/com/sekwah/advancedportals/core/api/managers/PortalManager.java +++ b/src/com/sekwah/advancedportals/core/api/managers/PortalManager.java @@ -1,9 +1,13 @@ package com.sekwah.advancedportals.core.api.managers; -import com.sekwah.advancedportals.core.api.portal.Portal; +import com.google.gson.reflect.TypeToken; +import com.sekwah.advancedportals.core.AdvancedPortalsCore; +import com.sekwah.advancedportals.core.api.portal.AdvancedPortal; import com.sekwah.advancedportals.coreconnector.container.PlayerContainer; +import java.lang.reflect.Type; import java.util.HashMap; +import java.util.Map; /** * When a player leaves the server any data stored on them is removed to free memory. @@ -17,7 +21,10 @@ public class PortalManager { */ private static final int COOLDOWN = 0; - private static PortalManager instance = new PortalManager(); + private static PortalManager instance; + + private final AdvancedPortalsCore portalsCore; + /** * Store data of when the player last entered the portal */ @@ -25,10 +32,16 @@ public class PortalManager { /** * Tracks what portal a player has selected */ - private HashMap selectedPortal = new HashMap(); + private HashMap selectedPortal = new HashMap(); - public PortalManager() { - this.loadPortals(); + /** + * Contains all the data for the portals + */ + private HashMap portalHashMap; + + public PortalManager(AdvancedPortalsCore portalsCore) { + this.instance = this; + this.portalsCore = portalsCore; } /** @@ -36,15 +49,20 @@ public class PortalManager { * * @param player */ - public static void playerLeave(PlayerContainer player) { - instance.lastAttempt.remove(player.getUUID()); - instance.selectedPortal.remove(player.getUUID()); + public void playerLeave(PlayerContainer player) { + this.lastAttempt.remove(player.getUUID()); + this.selectedPortal.remove(player.getUUID()); } /** * Load the default data into the portals. */ - private void loadPortals() { - + public void loadPortals() { + Type type = new TypeToken>(){}.getType(); + this.portalHashMap = this.portalsCore.getDataStorage().loadJson(type ,"portals.json"); + if(this.portalHashMap == null) { + this.portalHashMap = new HashMap<>(); + } + this.portalsCore.getDataStorage().storeJson(this.portalHashMap, "config.json"); } } diff --git a/src/com/sekwah/advancedportals/core/api/portal/Portal.java b/src/com/sekwah/advancedportals/core/api/portal/AdvancedPortal.java similarity index 73% rename from src/com/sekwah/advancedportals/core/api/portal/Portal.java rename to src/com/sekwah/advancedportals/core/api/portal/AdvancedPortal.java index 5919a91..c0a2d45 100644 --- a/src/com/sekwah/advancedportals/core/api/portal/Portal.java +++ b/src/com/sekwah/advancedportals/core/api/portal/AdvancedPortal.java @@ -3,5 +3,5 @@ package com.sekwah.advancedportals.core.api.portal; /** * @author sekwah41 */ -public class Portal { +public class AdvancedPortal { } diff --git a/src/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java b/src/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java index 9e61d5f..0ebefbc 100644 --- a/src/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java +++ b/src/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java @@ -2,6 +2,7 @@ package com.sekwah.advancedportals.core.commands.subcommands.portal; import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.api.commands.SubCommand; +import com.sekwah.advancedportals.core.api.portal.AdvancedPortal; import com.sekwah.advancedportals.core.util.Lang; import com.sekwah.advancedportals.coreconnector.container.CommandSenderContainer; @@ -10,6 +11,9 @@ import java.util.List; public class ReloadSubCommand implements SubCommand { @Override public void onCommand(CommandSenderContainer sender, String[] args) { + AdvancedPortalsCore.getInstance().loadPortalConfig(); + AdvancedPortalsCore.getPortalManager().loadPortals(); + sender.sendMessage(Lang.translateColor("messageprefix.positive") + Lang.translateColor("command.reload.reloaded")); } @Override diff --git a/src/com/sekwah/advancedportals/core/commands/subcommands/portal/TransUpdateSubCommand.java b/src/com/sekwah/advancedportals/core/commands/subcommands/portal/TransUpdateSubCommand.java index ba056db..f45f54b 100644 --- a/src/com/sekwah/advancedportals/core/commands/subcommands/portal/TransUpdateSubCommand.java +++ b/src/com/sekwah/advancedportals/core/commands/subcommands/portal/TransUpdateSubCommand.java @@ -10,7 +10,7 @@ import java.util.List; public class TransUpdateSubCommand implements SubCommand { @Override public void onCommand(CommandSenderContainer sender, String[] args) { - AdvancedPortalsCore.getDataStorage().copyDefaultFile("lang/en_GB.lang", true); + AdvancedPortalsCore.getInstance().getDataStorage().copyDefaultFile("lang/en_GB.lang", true); sender.sendMessage(Lang.translateColor("messageprefix.positive") + Lang.translateColor("translatedata.replaced")); } diff --git a/src/com/sekwah/advancedportals/core/data/PlayerLocation.java b/src/com/sekwah/advancedportals/core/data/PlayerLocation.java new file mode 100644 index 0000000..88ad306 --- /dev/null +++ b/src/com/sekwah/advancedportals/core/data/PlayerLocation.java @@ -0,0 +1,14 @@ +package com.sekwah.advancedportals.core.data; + +public class PlayerLocation { + + public final double posX; + public final double posY; + public final double posZ; + + public PlayerLocation(double posX, double posY, double posZ) { + this.posX = posX; + this.posY = posY; + this.posZ = posZ; + } +} diff --git a/src/com/sekwah/advancedportals/core/util/Config.java b/src/com/sekwah/advancedportals/core/util/Config.java index 30bd706..709dff8 100644 --- a/src/com/sekwah/advancedportals/core/util/Config.java +++ b/src/com/sekwah/advancedportals/core/util/Config.java @@ -7,7 +7,7 @@ public class Config { private boolean useOnlySpecialAxe; - private String axeMaterial = "IRON_AXE"; + private String selectorMaterial = "IRON_AXE"; private boolean portalProtection = true; diff --git a/src/com/sekwah/advancedportals/core/util/DataStorage.java b/src/com/sekwah/advancedportals/core/util/DataStorage.java index 9e685c5..ae3e20b 100644 --- a/src/com/sekwah/advancedportals/core/util/DataStorage.java +++ b/src/com/sekwah/advancedportals/core/util/DataStorage.java @@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder; import com.sekwah.advancedportals.core.AdvancedPortalsCore; import java.io.*; +import java.lang.reflect.Type; public class DataStorage { @@ -33,8 +34,16 @@ public class DataStorage { } } + public T loadJson(Type dataHolder, String location) { + InputStream jsonResource = this.loadResource(location); + if(jsonResource == null) { + return null; + } + BufferedReader bufReader = new BufferedReader(new InputStreamReader(jsonResource)); + T object = gson.fromJson(bufReader, dataHolder); + return object; + } public T loadJson(Class dataHolder, String location) { - // TODO get json and if file doesnt exist create default class if true InputStream jsonResource = this.loadResource(location); if(jsonResource == null) { try { diff --git a/src/com/sekwah/advancedportals/coreconnector/container/PlayerContainer.java b/src/com/sekwah/advancedportals/coreconnector/container/PlayerContainer.java index 7b9225d..0128e62 100644 --- a/src/com/sekwah/advancedportals/coreconnector/container/PlayerContainer.java +++ b/src/com/sekwah/advancedportals/coreconnector/container/PlayerContainer.java @@ -1,5 +1,7 @@ package com.sekwah.advancedportals.coreconnector.container; +import com.sekwah.advancedportals.core.data.PlayerLocation; + import java.util.UUID; /** @@ -17,4 +19,8 @@ public class PlayerContainer { public boolean isOp() { return false; } + + public PlayerLocation getLoc() { + return null; + } } From bb3084ccb6b288e69c32f6a8260c4a5c82013b3a Mon Sep 17 00:00:00 2001 From: sekwah41 Date: Wed, 24 Jan 2018 10:10:49 +0000 Subject: [PATCH 3/5] Create PULL_REQUEST_TEMPLATE.md --- PULL_REQUEST_TEMPLATE.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 PULL_REQUEST_TEMPLATE.md diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..1acf70b --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,12 @@ +Fixes: +- +- +- + + +Tweaks: +- +- +- + +Reason: (Leave this if it is obvious why from the tweak and/or fix notes) From c5ab7580afbb8e4173493013af8d6f49c5abcf88 Mon Sep 17 00:00:00 2001 From: sekwah41 Date: Wed, 24 Jan 2018 10:15:32 +0000 Subject: [PATCH 4/5] Create CONTRIBUTING.md --- CONTRIBUTING.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ec4ad4f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,5 @@ +# Contributing to Advanced Portals + +Just generally sick to the coding style and layout style you see in the current project, it will just speed up pull requests. Useful requests will still be accepted if the style is wrong though will take longer as they will need to be changed by me or another key programmer to the project (if there are more at the time of requesting) + +More info coming soon From f95713b855d32a1236fa69b17d52d755f1992cbf Mon Sep 17 00:00:00 2001 From: sekwah41 Date: Wed, 24 Jan 2018 10:16:30 +0000 Subject: [PATCH 5/5] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ec4ad4f..0d1f331 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,4 +2,6 @@ Just generally sick to the coding style and layout style you see in the current project, it will just speed up pull requests. Useful requests will still be accepted if the style is wrong though will take longer as they will need to be changed by me or another key programmer to the project (if there are more at the time of requesting) +Just make sure to fill out the pull request template properly. If one of the fields doesnt apply just remove it or put None as the only bullet point. + More info coming soon