From 6cb30174adcbfaf9663333758cca2ebc94306a35 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 30 Jun 2019 04:45:50 -0400 Subject: [PATCH 1/8] =Finished converting character to subcommand --- .../characters/CommandCharacterEditBio.java | 38 ---------------- .../characters/CommandCharacterEditName.java | 38 ---------------- .../characters/CommandCharacterEditURL.java | 38 ---------------- .../characters/CommandCharacterMain.java | 14 +++--- .../characters/CommandCharacterSearch.java | 40 ----------------- ...acterCreate.java => SubCommandCreate.java} | 4 +- .../characters/SubCommandEditBio.java | 40 +++++++++++++++++ .../characters/SubCommandEditName.java | 40 +++++++++++++++++ .../characters/SubCommandEditURL.java | 40 +++++++++++++++++ src/commands/characters/SubCommandSearch.java | 43 +++++++++++++++++++ src/core/CommandManager.java | 10 +---- src/core/ObjectBuilderFactory.java | 3 -- 12 files changed, 174 insertions(+), 174 deletions(-) delete mode 100644 src/commands/characters/CommandCharacterEditBio.java delete mode 100644 src/commands/characters/CommandCharacterEditName.java delete mode 100644 src/commands/characters/CommandCharacterEditURL.java delete mode 100644 src/commands/characters/CommandCharacterSearch.java rename src/commands/characters/{CommandCharacterCreate.java => SubCommandCreate.java} (82%) create mode 100644 src/commands/characters/SubCommandEditBio.java create mode 100644 src/commands/characters/SubCommandEditName.java create mode 100644 src/commands/characters/SubCommandEditURL.java create mode 100644 src/commands/characters/SubCommandSearch.java diff --git a/src/commands/characters/CommandCharacterEditBio.java b/src/commands/characters/CommandCharacterEditBio.java deleted file mode 100644 index be786a0..0000000 --- a/src/commands/characters/CommandCharacterEditBio.java +++ /dev/null @@ -1,38 +0,0 @@ -package commands.characters; - -import core.CharacterManager; -import core.Command; -import core.LocStrings; -import dataStructures.*; - -public class CommandCharacterEditBio extends Command -{ - public CommandCharacterEditBio(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("CharacterEditBioInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - try - { - Long.parseLong(input.args.split(" ")[0]); - } - catch(Exception e) - { - res.send(LocStrings.stub("CharacterEditBioNotValid")); - return; - } - KittyCharacter character = CharacterManager.instance.searchCharacter(input.args.split(" ")[0]).get(0); - if(character.getOwner().equals(user)) - { - CharacterManager.instance.editBio(character, input.args.substring(input.args.indexOf(' '))); - res.send(LocStrings.stub("CharacterEditBioSuccess")); - } - else - { - res.send(LocStrings.stub("CharacterEditBioNotAuth")); - } - } -} \ No newline at end of file diff --git a/src/commands/characters/CommandCharacterEditName.java b/src/commands/characters/CommandCharacterEditName.java deleted file mode 100644 index e278774..0000000 --- a/src/commands/characters/CommandCharacterEditName.java +++ /dev/null @@ -1,38 +0,0 @@ -package commands.characters; - -import core.CharacterManager; -import core.Command; -import core.LocStrings; -import dataStructures.*; - -public class CommandCharacterEditName extends Command -{ - public CommandCharacterEditName(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("CharacterEditNameInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - try - { - Long.parseLong(input.args.split(" ")[0]); - } - catch(Exception e) - { - res.send(LocStrings.stub("CharacterEditNameNotValid")); - return; - } - KittyCharacter character = CharacterManager.instance.searchCharacter(input.args.split(" ")[0]).get(0); - if(character.getOwner().equals(user)) - { - CharacterManager.instance.editName(character, input.args.substring(input.args.indexOf(' '))); - res.send(LocStrings.stub("CharacterEditNameSuccess")); - } - else - { - res.send(LocStrings.stub("CharacterEditNameNotAuth")); - } - } -} \ No newline at end of file diff --git a/src/commands/characters/CommandCharacterEditURL.java b/src/commands/characters/CommandCharacterEditURL.java deleted file mode 100644 index 5d2b6c8..0000000 --- a/src/commands/characters/CommandCharacterEditURL.java +++ /dev/null @@ -1,38 +0,0 @@ -package commands.characters; - -import core.CharacterManager; -import core.Command; -import core.LocStrings; -import dataStructures.*; - -public class CommandCharacterEditURL extends Command -{ - public CommandCharacterEditURL(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("CharacterEditURLInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - try - { - Long.parseLong(input.args.split(" ")[0]); - } - catch(Exception e) - { - res.send(LocStrings.stub("CharacterEditURLNotValid")); - return; - } - KittyCharacter character = CharacterManager.instance.searchCharacter(input.args.split(" ")[0]).get(0); - if(character.getOwner().equals(user)) - { - CharacterManager.instance.editRefImage(character, input.args.substring(input.args.indexOf(' '))); - res.send(LocStrings.stub("CharacterEditURLSuccess")); - } - else - { - res.send(LocStrings.stub("CharacterEditURLNotAuth")); - } - } -} \ No newline at end of file diff --git a/src/commands/characters/CommandCharacterMain.java b/src/commands/characters/CommandCharacterMain.java index 6a4bdce..5301bbb 100644 --- a/src/commands/characters/CommandCharacterMain.java +++ b/src/commands/characters/CommandCharacterMain.java @@ -1,15 +1,10 @@ package commands.characters; +import commands.guildrole.*; import core.Command; import core.LocStrings; import core.SubCommandFramework; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; +import dataStructures.*; public class CommandCharacterMain extends Command { @@ -17,6 +12,11 @@ public class CommandCharacterMain extends Command public CommandCharacterMain(KittyRole level, KittyRating rating) { super(level, rating); + framework.addCommand("add", new SubCommandAdd(KittyRole.General, KittyRating.Safe)); + framework.addCommand("editbio", new SubCommandEditBio(KittyRole.General, KittyRating.Safe)); + framework.addCommand("editname", new SubCommandEditName(KittyRole.General, KittyRating.Safe)); + framework.addCommand("editurl", new SubCommandEditURL(KittyRole.General, KittyRating.Safe)); + framework.addCommand("search", new SubCommandSearch(KittyRole.General, KittyRating.Safe)); } @Override diff --git a/src/commands/characters/CommandCharacterSearch.java b/src/commands/characters/CommandCharacterSearch.java deleted file mode 100644 index 79d44c7..0000000 --- a/src/commands/characters/CommandCharacterSearch.java +++ /dev/null @@ -1,40 +0,0 @@ -package commands.characters; - -import java.util.ArrayList; - -import core.CharacterManager; -import core.Command; -import core.LocStrings; -import dataStructures.*; - -public class CommandCharacterSearch extends Command -{ - public CommandCharacterSearch(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("CharacterSearchInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - ArrayList characters = CharacterManager.instance.searchCharacter(input.args); - if(characters.size() < 1) - { - res.send(LocStrings.stub("CharacterSearchNoCharacterFound")); - return; - } - if(characters.size() > 1) - { - res.send(LocStrings.stub("CharacterSearchMultipleCharacterHeader")); - for(KittyCharacter character:characters) - { - res.send(String.format(LocStrings.stub("CharacterSearchMultipleCharacter"), character.getName(), character.getOwner().name, character.getUID())); - } - return; - } - else - { - res.send(String.format(LocStrings.stub("CharacterSearchOneCharacter"), characters.get(0).getOwner().name, characters.get(0).getName(), characters.get(0).getBio(), characters.get(0).getRefImage(), characters.get(0).getUID())); - } - } -} \ No newline at end of file diff --git a/src/commands/characters/CommandCharacterCreate.java b/src/commands/characters/SubCommandCreate.java similarity index 82% rename from src/commands/characters/CommandCharacterCreate.java rename to src/commands/characters/SubCommandCreate.java index 7ce5eba..605b4c5 100644 --- a/src/commands/characters/CommandCharacterCreate.java +++ b/src/commands/characters/SubCommandCreate.java @@ -6,9 +6,9 @@ import core.SubCommand; import core.SubCommandFormattable; import dataStructures.*; -public class CommandCharacterCreate extends SubCommand +public class SubCommandCreate extends SubCommand { - public CommandCharacterCreate(KittyRole level, KittyRating rating) { super(level, rating); } + public SubCommandCreate(KittyRole level, KittyRating rating) { super(level, rating); } @Override public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) diff --git a/src/commands/characters/SubCommandEditBio.java b/src/commands/characters/SubCommandEditBio.java new file mode 100644 index 0000000..8236a6d --- /dev/null +++ b/src/commands/characters/SubCommandEditBio.java @@ -0,0 +1,40 @@ +package commands.characters; + +import core.CharacterManager; +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyCharacter; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class SubCommandEditBio extends SubCommand +{ + public SubCommandEditBio(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + try + { + Long.parseLong(input.split(" ")[0]); + } + catch(Exception e) + { + return new SubCommandFormattable (LocStrings.stub("CharacterEditBioNotValid")); + } + KittyCharacter character = CharacterManager.instance.searchCharacter(input.split(" ")[0]).get(0); + if(character.getOwner().equals(user)) + { + CharacterManager.instance.editBio(character, input.substring(input.indexOf(' '))); + return new SubCommandFormattable (LocStrings.stub("CharacterEditBioSuccess")); + } + else + { + return new SubCommandFormattable (LocStrings.stub("CharacterEditBioNotAuth")); + } + } +} \ No newline at end of file diff --git a/src/commands/characters/SubCommandEditName.java b/src/commands/characters/SubCommandEditName.java new file mode 100644 index 0000000..56c9cef --- /dev/null +++ b/src/commands/characters/SubCommandEditName.java @@ -0,0 +1,40 @@ +package commands.characters; + +import core.CharacterManager; +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyCharacter; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class SubCommandEditName extends SubCommand +{ + public SubCommandEditName(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + try + { + Long.parseLong(input.split(" ")[0]); + } + catch(Exception e) + { + return new SubCommandFormattable (LocStrings.stub("CharacterEditNameNotValid")); + } + KittyCharacter character = CharacterManager.instance.searchCharacter(input.split(" ")[0]).get(0); + if(character.getOwner().equals(user)) + { + CharacterManager.instance.editName(character, input.substring(input.indexOf(' '))); + return new SubCommandFormattable (LocStrings.stub("CharacterEditNameSuccess")); + } + else + { + return new SubCommandFormattable (LocStrings.stub("CharacterEditNameNotAuth")); + } + } +} \ No newline at end of file diff --git a/src/commands/characters/SubCommandEditURL.java b/src/commands/characters/SubCommandEditURL.java new file mode 100644 index 0000000..411d3cc --- /dev/null +++ b/src/commands/characters/SubCommandEditURL.java @@ -0,0 +1,40 @@ +package commands.characters; + +import core.CharacterManager; +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyCharacter; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class SubCommandEditURL extends SubCommand +{ + public SubCommandEditURL(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + try + { + Long.parseLong(input.split(" ")[0]); + } + catch(Exception e) + { + return new SubCommandFormattable (LocStrings.stub("CharacterEditURLNotValid")); + } + KittyCharacter character = CharacterManager.instance.searchCharacter(input.split(" ")[0]).get(0); + if(character.getOwner().equals(user)) + { + CharacterManager.instance.editRefImage(character, input.substring(input.indexOf(' '))); + return new SubCommandFormattable (LocStrings.stub("CharacterEditURLSuccess")); + } + else + { + return new SubCommandFormattable (LocStrings.stub("CharacterEditURLNotAuth")); + } + } +} \ No newline at end of file diff --git a/src/commands/characters/SubCommandSearch.java b/src/commands/characters/SubCommandSearch.java new file mode 100644 index 0000000..74b72cd --- /dev/null +++ b/src/commands/characters/SubCommandSearch.java @@ -0,0 +1,43 @@ +package commands.characters; + +import java.util.ArrayList; + +import core.CharacterManager; +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyCharacter; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class SubCommandSearch extends SubCommand +{ + public SubCommandSearch(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + ArrayList characters = CharacterManager.instance.searchCharacter(input); + if(characters.size() < 1) + { + return new SubCommandFormattable (LocStrings.stub("CharacterSearchNoCharacterFound")); + } + String formatted = ""; + if(characters.size() > 1) + { + formatted += (LocStrings.stub("CharacterSearchMultipleCharacterHeader")); + for(KittyCharacter character:characters) + { + formatted += "\n" + (String.format(LocStrings.stub("CharacterSearchMultipleCharacter"), character.getName(), character.getOwner().name, character.getUID())); + } + return new SubCommandFormattable(formatted); + } + else + { + return new SubCommandFormattable (String.format(LocStrings.stub("CharacterSearchOneCharacter"), characters.get(0).getOwner().name, characters.get(0).getName(), characters.get(0).getBio(), characters.get(0).getRefImage(), characters.get(0).getUID())); + } + } +} \ No newline at end of file diff --git a/src/core/CommandManager.java b/src/core/CommandManager.java index 970100f..750531c 100644 --- a/src/core/CommandManager.java +++ b/src/core/CommandManager.java @@ -3,10 +3,7 @@ package core; import java.util.*; import java.util.Map.Entry; -import commands.characters.CommandCharacterEditBio; -import commands.characters.CommandCharacterEditName; -import commands.characters.CommandCharacterEditURL; -import commands.characters.CommandCharacterSearch; +import commands.characters.CommandCharacterMain; import commands.general.*; import commands.guildrole.CommandGuildRoleMain; import dataStructures.KittyChannel; @@ -111,14 +108,11 @@ public class CommandManager this.register(LocCommands.stub("crouton"), new CommandCrouton(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("benchmark, bench"), new CommandBenchmark(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("rafflejoin"), new CommandRaffleJoin(KittyRole.General, KittyRating.Safe)); - this.register(LocCommands.stub("searchcharacter"), new CommandCharacterSearch(KittyRole.General, KittyRating.Safe)); - this.register(LocCommands.stub("charactereditbio"), new CommandCharacterEditBio(KittyRole.General, KittyRating.Safe)); - this.register(LocCommands.stub("charactereditname"), new CommandCharacterEditName(KittyRole.General, KittyRating.Safe)); - this.register(LocCommands.stub("charactereditURL"), new CommandCharacterEditURL(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("leaderboard"), new CommandLeaderboard(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("color, colour"), new CommandColor(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("remind"), new CommandRemind(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("role"), new CommandGuildRoleMain(KittyRole.General, KittyRating.Safe)); + this.register(LocCommands.stub("character"), new CommandCharacterMain(KittyRole.General, KittyRating.Safe)); } // Allows the command manager to keep track of a command. Takes a pair (the un-localized and localzied commands) diff --git a/src/core/ObjectBuilderFactory.java b/src/core/ObjectBuilderFactory.java index d778739..db66cc3 100644 --- a/src/core/ObjectBuilderFactory.java +++ b/src/core/ObjectBuilderFactory.java @@ -7,9 +7,6 @@ import java.util.concurrent.Semaphore; import javax.security.auth.login.LoginException; -import commands.characters.*; -import commands.general.*; -import commands.guildrole.CommandGuildRoleMain; import core.lua.PluginManager; import dataStructures.*; import main.Main; From 2f2474fde86a3fffd35caefcf8780182c31e9de4 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 2 Jul 2019 01:57:02 -0400 Subject: [PATCH 2/8] =SubCommand Routine modifications --- assets/config.csv | 4 ++ .../characters/CommandCharacterMain.java | 3 - src/commands/general/CommandRaffleEnd.java | 32 ----------- src/commands/general/CommandRaffleJoin.java | 32 ----------- src/commands/general/CommandRaffleSpin.java | 32 ----------- src/commands/general/CommandRaffleStart.java | 43 --------------- src/commands/poll/CommandPollMain.java | 26 +++++++++ .../{general => poll}/CommandPollManage.java | 4 +- .../{general => poll}/CommandPollResults.java | 2 +- .../{general => poll}/CommandPollShow.java | 2 +- .../{general => poll}/CommandPollVote.java | 2 +- src/commands/raffle/CommandRaffleEnd.java | 28 ++++++++++ src/commands/raffle/CommandRaffleJoin.java | 24 ++++++++ src/commands/raffle/CommandRaffleMain.java | 24 ++++++++ src/commands/raffle/CommandRaffleSpin.java | 28 ++++++++++ src/commands/raffle/CommandRaffleStart.java | 35 ++++++++++++ src/core/CommandManager.java | 55 +++++++++++++++++-- src/core/SubCommand.java | 7 ++- src/core/SubCommandFramework.java | 15 ++++- 19 files changed, 239 insertions(+), 159 deletions(-) delete mode 100644 src/commands/general/CommandRaffleEnd.java delete mode 100644 src/commands/general/CommandRaffleJoin.java delete mode 100644 src/commands/general/CommandRaffleSpin.java delete mode 100644 src/commands/general/CommandRaffleStart.java create mode 100644 src/commands/poll/CommandPollMain.java rename src/commands/{general => poll}/CommandPollManage.java (93%) rename src/commands/{general => poll}/CommandPollResults.java (93%) rename src/commands/{general => poll}/CommandPollShow.java (92%) rename src/commands/{general => poll}/CommandPollVote.java (93%) create mode 100644 src/commands/raffle/CommandRaffleEnd.java create mode 100644 src/commands/raffle/CommandRaffleJoin.java create mode 100644 src/commands/raffle/CommandRaffleMain.java create mode 100644 src/commands/raffle/CommandRaffleSpin.java create mode 100644 src/commands/raffle/CommandRaffleStart.java diff --git a/assets/config.csv b/assets/config.csv index 1a3409e..231f522 100644 --- a/assets/config.csv +++ b/assets/config.csv @@ -8,6 +8,7 @@ "Localized Commands","buildHelp","" "Localized Commands","c++, g++, cplus, cpp","" "Localized Commands","catch","" +"Localized Commands","character","" "Localized Commands","charactercreate","" "Localized Commands","charactereditbio","" "Localized Commands","charactereditname","" @@ -39,6 +40,7 @@ "Localized Commands","perish, thenperish","" "Localized Commands","ping","" "Localized Commands","poll","" +"Localized Commands","raffle","" "Localized Commands","raffleend","" "Localized Commands","rafflejoin","" "Localized Commands","rafflespin","" @@ -263,6 +265,7 @@ "Command Enabler","buildhelp","1" "Command Enabler","c++, g++, cplus, cpp","1" "Command Enabler","catch","1" +"Command Enabler","character","1" "Command Enabler","charactercreate","1" "Command Enabler","charactereditbio","1" "Command Enabler","charactereditname","1" @@ -294,6 +297,7 @@ "Command Enabler","perish, thenperish","1" "Command Enabler","ping","1" "Command Enabler","poll","1" +"Command Enabler","raffle","1" "Command Enabler","raffleend","1" "Command Enabler","rafflejoin","1" "Command Enabler","rafflespin","1" diff --git a/src/commands/characters/CommandCharacterMain.java b/src/commands/characters/CommandCharacterMain.java index 5301bbb..64e5621 100644 --- a/src/commands/characters/CommandCharacterMain.java +++ b/src/commands/characters/CommandCharacterMain.java @@ -22,9 +22,6 @@ public class CommandCharacterMain extends Command @Override public String getHelpText() { return LocStrings.stub("CharacterInfo"); } - - - @Override public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) { diff --git a/src/commands/general/CommandRaffleEnd.java b/src/commands/general/CommandRaffleEnd.java deleted file mode 100644 index bc89124..0000000 --- a/src/commands/general/CommandRaffleEnd.java +++ /dev/null @@ -1,32 +0,0 @@ -package commands.general; - -import core.Command; -import core.LocStrings; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; - -public class CommandRaffleEnd extends Command -{ - public CommandRaffleEnd(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("RaffleEndInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - if(guild.endRaffle()) - { - res.send(LocStrings.stub("RaffleEndSuccess")); - } - else - { - res.send(LocStrings.stub("RaffleEndFailure")); - } - } -} \ No newline at end of file diff --git a/src/commands/general/CommandRaffleJoin.java b/src/commands/general/CommandRaffleJoin.java deleted file mode 100644 index 3003a8e..0000000 --- a/src/commands/general/CommandRaffleJoin.java +++ /dev/null @@ -1,32 +0,0 @@ -package commands.general; - -import core.Command; -import core.LocStrings; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; - -public class CommandRaffleJoin extends Command -{ - public CommandRaffleJoin(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("RaffleJoinInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - if(guild.joinRaffle(user)) - { - res.send(LocStrings.stub("RaffleJoinSuccess")); - } - else - { - res.send(LocStrings.stub("RaffleJoinFailure")); - } - } -} diff --git a/src/commands/general/CommandRaffleSpin.java b/src/commands/general/CommandRaffleSpin.java deleted file mode 100644 index ff6111d..0000000 --- a/src/commands/general/CommandRaffleSpin.java +++ /dev/null @@ -1,32 +0,0 @@ -package commands.general; - -import core.Command; -import core.LocStrings; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; - -public class CommandRaffleSpin extends Command -{ - public CommandRaffleSpin(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("RaffleSpinInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - try - { - res.send(String.format(LocStrings.stub("RaffleSpinSuccess"), guild.chooseRaffleWinner().name)); - } - catch(Exception e) - { - res.send(LocStrings.stub("RaffleSpinFailure")); - } - } -} \ No newline at end of file diff --git a/src/commands/general/CommandRaffleStart.java b/src/commands/general/CommandRaffleStart.java deleted file mode 100644 index 0c72142..0000000 --- a/src/commands/general/CommandRaffleStart.java +++ /dev/null @@ -1,43 +0,0 @@ -package commands.general; - -import core.Command; -import core.LocStrings; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; - -public class CommandRaffleStart extends Command -{ - public CommandRaffleStart(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("RaffleStartInfo"); } - - public int beanCost; - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - try - { - beanCost = Integer.parseInt(input.args); - } - catch(Exception e) - { - beanCost = 100; - } - - if(guild.startRaffle(beanCost)) - { - res.send(String.format(LocStrings.stub("RaffleStartSuccess"), beanCost)); - } - else - { - res.send(LocStrings.stub("RaffleStartFailure")); - } - } -} diff --git a/src/commands/poll/CommandPollMain.java b/src/commands/poll/CommandPollMain.java new file mode 100644 index 0000000..dd63503 --- /dev/null +++ b/src/commands/poll/CommandPollMain.java @@ -0,0 +1,26 @@ +package commands.poll; + +import core.Command; +import core.SubCommandFramework; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; + +public class CommandPollMain extends Command +{ + SubCommandFramework framework = new SubCommandFramework(); + public CommandPollMain(KittyRole level, KittyRating rating) + { + super(level, rating); + } + + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + framework.run(guild, channel, user, input.args).Call(res); + } +} diff --git a/src/commands/general/CommandPollManage.java b/src/commands/poll/CommandPollManage.java similarity index 93% rename from src/commands/general/CommandPollManage.java rename to src/commands/poll/CommandPollManage.java index a1ecd32..e8a0624 100644 --- a/src/commands/general/CommandPollManage.java +++ b/src/commands/poll/CommandPollManage.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.poll; import core.*; import dataStructures.KittyChannel; @@ -37,4 +37,4 @@ public class CommandPollManage extends Command break; } } -} +} \ No newline at end of file diff --git a/src/commands/general/CommandPollResults.java b/src/commands/poll/CommandPollResults.java similarity index 93% rename from src/commands/general/CommandPollResults.java rename to src/commands/poll/CommandPollResults.java index 016439b..f34145e 100644 --- a/src/commands/general/CommandPollResults.java +++ b/src/commands/poll/CommandPollResults.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.poll; import java.util.ArrayList; diff --git a/src/commands/general/CommandPollShow.java b/src/commands/poll/CommandPollShow.java similarity index 92% rename from src/commands/general/CommandPollShow.java rename to src/commands/poll/CommandPollShow.java index bb2d277..27a870e 100644 --- a/src/commands/general/CommandPollShow.java +++ b/src/commands/poll/CommandPollShow.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.poll; import core.*; import dataStructures.*; diff --git a/src/commands/general/CommandPollVote.java b/src/commands/poll/CommandPollVote.java similarity index 93% rename from src/commands/general/CommandPollVote.java rename to src/commands/poll/CommandPollVote.java index af37b14..5348523 100644 --- a/src/commands/general/CommandPollVote.java +++ b/src/commands/poll/CommandPollVote.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.poll; import core.*; import dataStructures.*; diff --git a/src/commands/raffle/CommandRaffleEnd.java b/src/commands/raffle/CommandRaffleEnd.java new file mode 100644 index 0000000..12a9eab --- /dev/null +++ b/src/commands/raffle/CommandRaffleEnd.java @@ -0,0 +1,28 @@ +package commands.raffle; + +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class CommandRaffleEnd extends SubCommand +{ + public CommandRaffleEnd(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + if(guild.endRaffle()) + { + return new SubCommandFormattable (LocStrings.stub("RaffleEndSuccess")); + } + else + { + return new SubCommandFormattable (LocStrings.stub("RaffleEndFailure")); + } + } +} \ No newline at end of file diff --git a/src/commands/raffle/CommandRaffleJoin.java b/src/commands/raffle/CommandRaffleJoin.java new file mode 100644 index 0000000..bd4b46f --- /dev/null +++ b/src/commands/raffle/CommandRaffleJoin.java @@ -0,0 +1,24 @@ +package commands.raffle; + +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.*; + +public class CommandRaffleJoin extends SubCommand +{ + public CommandRaffleJoin(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + if(guild.joinRaffle(user)) + { + return new SubCommandFormattable (LocStrings.stub("RaffleJoinSuccess")); + } + else + { + return new SubCommandFormattable (LocStrings.stub("RaffleJoinFailure")); + } + } +} diff --git a/src/commands/raffle/CommandRaffleMain.java b/src/commands/raffle/CommandRaffleMain.java new file mode 100644 index 0000000..0f14b05 --- /dev/null +++ b/src/commands/raffle/CommandRaffleMain.java @@ -0,0 +1,24 @@ +package commands.raffle; + +import core.Command; +import core.SubCommandFramework; +import dataStructures.*; + +public class CommandRaffleMain extends Command +{ + SubCommandFramework framework = new SubCommandFramework(); + public CommandRaffleMain(KittyRole level, KittyRating rating) + { + super(level, rating); + framework.addCommand("start", new CommandRaffleStart(KittyRole.Mod, KittyRating.Safe)); + framework.addCommand("spin", new CommandRaffleSpin(KittyRole.Mod, KittyRating.Safe)); + framework.addCommand("end", new CommandRaffleEnd(KittyRole.Mod, KittyRating.Safe)); + framework.addCommand("join", new CommandRaffleJoin(KittyRole.General, KittyRating.Safe)); + } + + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + framework.run(guild, channel, user, input.args).Call(res); + } +} \ No newline at end of file diff --git a/src/commands/raffle/CommandRaffleSpin.java b/src/commands/raffle/CommandRaffleSpin.java new file mode 100644 index 0000000..a4dcb0b --- /dev/null +++ b/src/commands/raffle/CommandRaffleSpin.java @@ -0,0 +1,28 @@ +package commands.raffle; + +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class CommandRaffleSpin extends SubCommand +{ + public CommandRaffleSpin(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + try + { + return new SubCommandFormattable (String.format(LocStrings.stub("RaffleSpinSuccess"), guild.chooseRaffleWinner().name)); + } + catch(Exception e) + { + return new SubCommandFormattable (LocStrings.stub("RaffleSpinFailure")); + } + } +} \ No newline at end of file diff --git a/src/commands/raffle/CommandRaffleStart.java b/src/commands/raffle/CommandRaffleStart.java new file mode 100644 index 0000000..789a622 --- /dev/null +++ b/src/commands/raffle/CommandRaffleStart.java @@ -0,0 +1,35 @@ +package commands.raffle; + +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.*; + +public class CommandRaffleStart extends SubCommand +{ + public CommandRaffleStart(KittyRole level, KittyRating rating) { super(level, rating); } + + public int beanCost; + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + try + { + beanCost = Integer.parseInt(input); + } + catch(Exception e) + { + beanCost = 100; + } + + if(guild.startRaffle(beanCost)) + { + return new SubCommandFormattable (String.format(LocStrings.stub("RaffleStartSuccess"), beanCost)); + } + else + { + return new SubCommandFormattable (LocStrings.stub("RaffleStartFailure")); + } + } +} diff --git a/src/core/CommandManager.java b/src/core/CommandManager.java index 750531c..f811e93 100644 --- a/src/core/CommandManager.java +++ b/src/core/CommandManager.java @@ -1,11 +1,57 @@ package core; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; import java.util.Map.Entry; import commands.characters.CommandCharacterMain; -import commands.general.*; +import commands.general.CommandBeansShow; +import commands.general.CommandBenchmark; +import commands.general.CommandBetBeans; +import commands.general.CommandBetHistory; +import commands.general.CommandBlurry; +import commands.general.CommandBoop; +import commands.general.CommandCatch; +import commands.general.CommandChangeIndicator; +import commands.general.CommandChoose; +import commands.general.CommandColiru; +import commands.general.CommandColor; +import commands.general.CommandCrouton; +import commands.general.CommandDBFlush; +import commands.general.CommandDBStats; +import commands.general.CommandDoWork; +import commands.general.CommandEightBall; +import commands.general.CommandFetch; +import commands.general.CommandGiveBeans; +import commands.general.CommandHelp; +import commands.general.CommandHelpBuilder; +import commands.general.CommandInfo; +import commands.general.CommandInvite; +import commands.general.CommandJDoodle; +import commands.general.CommandLeaderboard; +import commands.general.CommandMap; +import commands.general.CommandPerish; +import commands.general.CommandPing; +import commands.general.CommandRPEnd; +import commands.general.CommandRPG; +import commands.general.CommandRPStart; +import commands.general.CommandRating; +import commands.general.CommandRemind; +import commands.general.CommandRole; +import commands.general.CommandRoll; +import commands.general.CommandShutdown; +import commands.general.CommandStark; +import commands.general.CommandStats; +import commands.general.CommandTeey; +import commands.general.CommandTweet; +import commands.general.CommandWolfram; +import commands.general.CommandYeet; import commands.guildrole.CommandGuildRoleMain; +import commands.poll.CommandPollManage; +import commands.poll.CommandPollResults; +import commands.poll.CommandPollShow; +import commands.poll.CommandPollVote; +import commands.raffle.CommandRaffleMain; import dataStructures.KittyChannel; import dataStructures.KittyGuild; import dataStructures.KittyRating; @@ -73,9 +119,6 @@ public class CommandManager this.register(LocCommands.stub("poll"), new CommandPollManage(KittyRole.Mod, KittyRating.Safe)); this.register(LocCommands.stub("givebeans"), new CommandGiveBeans(KittyRole.Mod, KittyRating.Safe)); this.register(LocCommands.stub("rpg"), new CommandRPG(KittyRole.Mod, KittyRating.Safe)); - this.register(LocCommands.stub("rafflestart"), new CommandRaffleStart(KittyRole.Mod, KittyRating.Safe)); - this.register(LocCommands.stub("rafflespin"), new CommandRaffleSpin(KittyRole.Mod, KittyRating.Safe)); - this.register(LocCommands.stub("raffleend"), new CommandRaffleEnd(KittyRole.Mod, KittyRating.Safe)); // General this.register(LocCommands.stub("fetch"), new CommandFetch(KittyRole.General, KittyRating.Safe)); @@ -107,12 +150,12 @@ public class CommandManager this.register(LocCommands.stub("bethistory"), new CommandBetHistory(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("crouton"), new CommandCrouton(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("benchmark, bench"), new CommandBenchmark(KittyRole.General, KittyRating.Safe)); - this.register(LocCommands.stub("rafflejoin"), new CommandRaffleJoin(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("leaderboard"), new CommandLeaderboard(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("color, colour"), new CommandColor(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("remind"), new CommandRemind(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("role"), new CommandGuildRoleMain(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("character"), new CommandCharacterMain(KittyRole.General, KittyRating.Safe)); + this.register(LocCommands.stub("raffle"), new CommandRaffleMain(KittyRole.General, KittyRating.Safe)); } // Allows the command manager to keep track of a command. Takes a pair (the un-localized and localzied commands) diff --git a/src/core/SubCommand.java b/src/core/SubCommand.java index 2b0b81f..d8f7bef 100644 --- a/src/core/SubCommand.java +++ b/src/core/SubCommand.java @@ -23,6 +23,7 @@ public abstract class SubCommand private boolean CanCall(KittyGuild guild, KittyChannel channel, KittyUser user) { + System.out.println("TESTING CAN CALL"); if(guild.contentRating.getValue() < contentRating.getValue()) { Reject(user, "content rating"); @@ -42,12 +43,12 @@ public abstract class SubCommand // Called by the Command manager - this will run the command // if the issuing user has the permission to do so! - protected final void Invoke(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + protected final SubCommandFormattable Invoke(KittyGuild guild, KittyChannel channel, KittyUser user, String input) { if(!CanCall(guild, channel, user)) - return; + return null; - OnRun(guild, channel, user, input); + return OnRun(guild, channel, user, input); } public KittyRating Rating() diff --git a/src/core/SubCommandFramework.java b/src/core/SubCommandFramework.java index ee44eaf..e7090da 100644 --- a/src/core/SubCommandFramework.java +++ b/src/core/SubCommandFramework.java @@ -27,8 +27,17 @@ public class SubCommandFramework public SubCommandFormattable run(KittyGuild guild, KittyChannel channel, KittyUser user, String input) { - System.out.print(input); - SubCommandFormattable res = commands.get(input.split(" ")[0].toLowerCase()).OnRun(guild, channel, user, input.substring(input.indexOf(" "))); + System.out.println(input); + SubCommandFormattable res = null; + try + { + res = commands.get(input.split(" ")[0].toLowerCase()).OnRun(guild, channel, user, input.substring(input.indexOf(" "))); + } + catch(Exception e) + { + res = commands.get(input.split(" ")[0].toLowerCase()).OnRun(guild, channel, user, ""); + } + return res; } -} +} \ No newline at end of file From 47441e06ed1f15b27712566dde19235278ca5bbc Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 3 Jul 2019 01:40:10 -0400 Subject: [PATCH 3/8] =More SubCommand Routine Mods --- src/commands/poll/CommandPollManage.java | 40 ------------------- src/commands/poll/SubCommandAddOption.java | 22 ++++++++++ src/commands/poll/SubCommandEnd.java | 22 ++++++++++ src/commands/poll/SubCommandStart.java | 22 ++++++++++ src/commands/raffle/CommandRaffleMain.java | 8 ++-- ...mmandRaffleEnd.java => SubCommandEnd.java} | 4 +- ...andRaffleJoin.java => SubCommandJoin.java} | 4 +- ...andRaffleSpin.java => SubCommandSpin.java} | 4 +- ...dRaffleStart.java => SubCommandStart.java} | 4 +- src/core/SubCommand.java | 2 +- src/core/SubCommandFramework.java | 4 +- 11 files changed, 81 insertions(+), 55 deletions(-) delete mode 100644 src/commands/poll/CommandPollManage.java create mode 100644 src/commands/poll/SubCommandAddOption.java create mode 100644 src/commands/poll/SubCommandEnd.java create mode 100644 src/commands/poll/SubCommandStart.java rename src/commands/raffle/{CommandRaffleEnd.java => SubCommandEnd.java} (81%) rename src/commands/raffle/{CommandRaffleJoin.java => SubCommandJoin.java} (77%) rename src/commands/raffle/{CommandRaffleSpin.java => SubCommandSpin.java} (82%) rename src/commands/raffle/{CommandRaffleStart.java => SubCommandStart.java} (81%) diff --git a/src/commands/poll/CommandPollManage.java b/src/commands/poll/CommandPollManage.java deleted file mode 100644 index e8a0624..0000000 --- a/src/commands/poll/CommandPollManage.java +++ /dev/null @@ -1,40 +0,0 @@ -package commands.poll; - -import core.*; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; - -public class CommandPollManage extends Command -{ - public CommandPollManage(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("PollManageInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - switch(input.args.split(" ")[0].toLowerCase()) - { - case "start": - res.send(guild.startPoll(input.args.substring(input.args.indexOf(' ')).trim())); - break; - - case "choice": - res.send(guild.addChoiceToPoll(input.args.substring(input.args.indexOf(' ')).trim())); - break; - - case "stop": - res.send(guild.endPoll()); - break; - - default: - break; - } - } -} \ No newline at end of file diff --git a/src/commands/poll/SubCommandAddOption.java b/src/commands/poll/SubCommandAddOption.java new file mode 100644 index 0000000..7886194 --- /dev/null +++ b/src/commands/poll/SubCommandAddOption.java @@ -0,0 +1,22 @@ +package commands.poll; + +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class SubCommandAddOption extends SubCommand +{ + + public SubCommandAddOption(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + return new SubCommandFormattable (guild.addChoiceToPoll(input)); + } + +} \ No newline at end of file diff --git a/src/commands/poll/SubCommandEnd.java b/src/commands/poll/SubCommandEnd.java new file mode 100644 index 0000000..40c9d0c --- /dev/null +++ b/src/commands/poll/SubCommandEnd.java @@ -0,0 +1,22 @@ +package commands.poll; + +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class SubCommandEnd extends SubCommand +{ + + public SubCommandEnd(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + return new SubCommandFormattable (guild.endPoll()); + } + +} \ No newline at end of file diff --git a/src/commands/poll/SubCommandStart.java b/src/commands/poll/SubCommandStart.java new file mode 100644 index 0000000..8216fa3 --- /dev/null +++ b/src/commands/poll/SubCommandStart.java @@ -0,0 +1,22 @@ +package commands.poll; + +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class SubCommandStart extends SubCommand +{ + + public SubCommandStart(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + return new SubCommandFormattable (guild.startPoll(input)); + } + +} \ No newline at end of file diff --git a/src/commands/raffle/CommandRaffleMain.java b/src/commands/raffle/CommandRaffleMain.java index 0f14b05..4363297 100644 --- a/src/commands/raffle/CommandRaffleMain.java +++ b/src/commands/raffle/CommandRaffleMain.java @@ -10,10 +10,10 @@ public class CommandRaffleMain extends Command public CommandRaffleMain(KittyRole level, KittyRating rating) { super(level, rating); - framework.addCommand("start", new CommandRaffleStart(KittyRole.Mod, KittyRating.Safe)); - framework.addCommand("spin", new CommandRaffleSpin(KittyRole.Mod, KittyRating.Safe)); - framework.addCommand("end", new CommandRaffleEnd(KittyRole.Mod, KittyRating.Safe)); - framework.addCommand("join", new CommandRaffleJoin(KittyRole.General, KittyRating.Safe)); + framework.addCommand("start", new SubCommandStart(KittyRole.Mod, KittyRating.Safe)); + framework.addCommand("spin", new SubCommandSpin(KittyRole.Mod, KittyRating.Safe)); + framework.addCommand("end", new SubCommandEnd(KittyRole.Mod, KittyRating.Safe)); + framework.addCommand("join", new SubCommandJoin(KittyRole.General, KittyRating.Safe)); } @Override diff --git a/src/commands/raffle/CommandRaffleEnd.java b/src/commands/raffle/SubCommandEnd.java similarity index 81% rename from src/commands/raffle/CommandRaffleEnd.java rename to src/commands/raffle/SubCommandEnd.java index 12a9eab..f7df5b6 100644 --- a/src/commands/raffle/CommandRaffleEnd.java +++ b/src/commands/raffle/SubCommandEnd.java @@ -9,9 +9,9 @@ import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; -public class CommandRaffleEnd extends SubCommand +public class SubCommandEnd extends SubCommand { - public CommandRaffleEnd(KittyRole level, KittyRating rating) { super(level, rating); } + public SubCommandEnd(KittyRole level, KittyRating rating) { super(level, rating); } @Override public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) diff --git a/src/commands/raffle/CommandRaffleJoin.java b/src/commands/raffle/SubCommandJoin.java similarity index 77% rename from src/commands/raffle/CommandRaffleJoin.java rename to src/commands/raffle/SubCommandJoin.java index bd4b46f..98526e7 100644 --- a/src/commands/raffle/CommandRaffleJoin.java +++ b/src/commands/raffle/SubCommandJoin.java @@ -5,9 +5,9 @@ import core.SubCommand; import core.SubCommandFormattable; import dataStructures.*; -public class CommandRaffleJoin extends SubCommand +public class SubCommandJoin extends SubCommand { - public CommandRaffleJoin(KittyRole level, KittyRating rating) { super(level, rating); } + public SubCommandJoin(KittyRole level, KittyRating rating) { super(level, rating); } @Override public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) diff --git a/src/commands/raffle/CommandRaffleSpin.java b/src/commands/raffle/SubCommandSpin.java similarity index 82% rename from src/commands/raffle/CommandRaffleSpin.java rename to src/commands/raffle/SubCommandSpin.java index a4dcb0b..c2572de 100644 --- a/src/commands/raffle/CommandRaffleSpin.java +++ b/src/commands/raffle/SubCommandSpin.java @@ -9,9 +9,9 @@ import dataStructures.KittyRating; import dataStructures.KittyRole; import dataStructures.KittyUser; -public class CommandRaffleSpin extends SubCommand +public class SubCommandSpin extends SubCommand { - public CommandRaffleSpin(KittyRole level, KittyRating rating) { super(level, rating); } + public SubCommandSpin(KittyRole level, KittyRating rating) { super(level, rating); } @Override public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) diff --git a/src/commands/raffle/CommandRaffleStart.java b/src/commands/raffle/SubCommandStart.java similarity index 81% rename from src/commands/raffle/CommandRaffleStart.java rename to src/commands/raffle/SubCommandStart.java index 789a622..003f3d9 100644 --- a/src/commands/raffle/CommandRaffleStart.java +++ b/src/commands/raffle/SubCommandStart.java @@ -5,9 +5,9 @@ import core.SubCommand; import core.SubCommandFormattable; import dataStructures.*; -public class CommandRaffleStart extends SubCommand +public class SubCommandStart extends SubCommand { - public CommandRaffleStart(KittyRole level, KittyRating rating) { super(level, rating); } + public SubCommandStart(KittyRole level, KittyRating rating) { super(level, rating); } public int beanCost; diff --git a/src/core/SubCommand.java b/src/core/SubCommand.java index d8f7bef..ee04f16 100644 --- a/src/core/SubCommand.java +++ b/src/core/SubCommand.java @@ -46,7 +46,7 @@ public abstract class SubCommand protected final SubCommandFormattable Invoke(KittyGuild guild, KittyChannel channel, KittyUser user, String input) { if(!CanCall(guild, channel, user)) - return null; + return new SubCommandFormattable("Can't run that!"); return OnRun(guild, channel, user, input); } diff --git a/src/core/SubCommandFramework.java b/src/core/SubCommandFramework.java index e7090da..257e474 100644 --- a/src/core/SubCommandFramework.java +++ b/src/core/SubCommandFramework.java @@ -31,11 +31,11 @@ public class SubCommandFramework SubCommandFormattable res = null; try { - res = commands.get(input.split(" ")[0].toLowerCase()).OnRun(guild, channel, user, input.substring(input.indexOf(" "))); + res = commands.get(input.split(" ")[0].toLowerCase()).Invoke(guild, channel, user, input.substring(input.indexOf(" "))); } catch(Exception e) { - res = commands.get(input.split(" ")[0].toLowerCase()).OnRun(guild, channel, user, ""); + res = commands.get(input.split(" ")[0].toLowerCase()).Invoke(guild, channel, user, ""); } return res; From fbe9794026224fe108a45a09de62ad0565d1ebe5 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 3 Jul 2019 01:47:21 -0400 Subject: [PATCH 4/8] =SubCommand Routine Mods, Hopefully the last of it --- src/commands/poll/SubCommandResults.java | 33 +++++++++++++++++ src/commands/poll/SubCommandShow.java | 33 +++++++++++++++++ src/commands/poll/SubCommandVote.java | 47 ++++++++++++++++++++++++ src/core/CommandManager.java | 8 ---- 4 files changed, 113 insertions(+), 8 deletions(-) create mode 100644 src/commands/poll/SubCommandResults.java create mode 100644 src/commands/poll/SubCommandShow.java create mode 100644 src/commands/poll/SubCommandVote.java diff --git a/src/commands/poll/SubCommandResults.java b/src/commands/poll/SubCommandResults.java new file mode 100644 index 0000000..3c8fc3d --- /dev/null +++ b/src/commands/poll/SubCommandResults.java @@ -0,0 +1,33 @@ +package commands.poll; + +import java.util.ArrayList; + +import core.*; +import dataStructures.*; + +public class SubCommandResults extends SubCommand +{ + public SubCommandResults(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + String results = ""; + int totalVotes = 0; + ArrayList votes = guild.choices; + + for(int i = 0; i < votes.size(); i++) + { + totalVotes += votes.get(i).votes; + } + + results += "The poll was " + guild.poll + "\n"; + + for(int i = 0; i < votes.size(); i++) + { + results += String.format(LocStrings.stub("PollResultsResponse"), votes.get(i).votes, votes.get(i).choice, (int)(((double)votes.get(i).votes) / ((double)totalVotes) * 100)); + } + + return new SubCommandFormattable (results); + } +} diff --git a/src/commands/poll/SubCommandShow.java b/src/commands/poll/SubCommandShow.java new file mode 100644 index 0000000..eafb1a5 --- /dev/null +++ b/src/commands/poll/SubCommandShow.java @@ -0,0 +1,33 @@ +package commands.poll; + +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class SubCommandShow extends SubCommand +{ + public SubCommandShow(KittyRole level, KittyRating rating) { super(level, rating); } + + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + if(!guild.polling) + { + return new SubCommandFormattable (LocStrings.stub("PollShowNoPoll")); + } + String poll = String.format(LocStrings.stub("PollShowPoll"), guild.poll); + poll += LocStrings.stub("PollShowChoices"); + for(int i = 0; i < guild.choices.size(); i++) + { + poll += (i+1) + ": `" + guild.choices.get(i).choice + "`\n"; + } + + return new SubCommandFormattable (poll); + } +} diff --git a/src/commands/poll/SubCommandVote.java b/src/commands/poll/SubCommandVote.java new file mode 100644 index 0000000..400f50b --- /dev/null +++ b/src/commands/poll/SubCommandVote.java @@ -0,0 +1,47 @@ +package commands.poll; + +import core.LocStrings; +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyPoll; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; + +public class SubCommandVote extends SubCommand +{ + public SubCommandVote(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input) + { + if(guild.polling) + { + if(guild.hasVoted.contains(user.uniqueID)) + { + return new SubCommandFormattable (LocStrings.stub("PollVoteAlreadyVoted")); + } + try + { + int voteNum = Integer.parseInt(input)-1; + if(voteNum >= guild.choices.size() || voteNum < 0) + { + return new SubCommandFormattable (String.format(LocStrings.stub("PollVoteNotValidVote"), voteNum)); + } + + KittyPoll polled = guild.choices.get(voteNum); + polled.votes++; + guild.hasVoted.add(user.uniqueID); + return new SubCommandFormattable (LocStrings.stub("PollVoteSuccess") + " `" + polled.choice + "`!"); + } + catch (NumberFormatException e) + { + return new SubCommandFormattable (LocStrings.stub("PollVoteNotValidNumber")); + } + } + + return new SubCommandFormattable (LocStrings.stub("PollVoteNoPoll")); + } +} diff --git a/src/core/CommandManager.java b/src/core/CommandManager.java index f811e93..82b8fff 100644 --- a/src/core/CommandManager.java +++ b/src/core/CommandManager.java @@ -47,10 +47,6 @@ import commands.general.CommandTweet; import commands.general.CommandWolfram; import commands.general.CommandYeet; import commands.guildrole.CommandGuildRoleMain; -import commands.poll.CommandPollManage; -import commands.poll.CommandPollResults; -import commands.poll.CommandPollShow; -import commands.poll.CommandPollVote; import commands.raffle.CommandRaffleMain; import dataStructures.KittyChannel; import dataStructures.KittyGuild; @@ -116,7 +112,6 @@ public class CommandManager this.register(LocCommands.stub("indicator"), new CommandChangeIndicator(KittyRole.Admin, KittyRating.Safe)); // Mod - this.register(LocCommands.stub("poll"), new CommandPollManage(KittyRole.Mod, KittyRating.Safe)); this.register(LocCommands.stub("givebeans"), new CommandGiveBeans(KittyRole.Mod, KittyRating.Safe)); this.register(LocCommands.stub("rpg"), new CommandRPG(KittyRole.Mod, KittyRating.Safe)); @@ -131,9 +126,6 @@ public class CommandManager this.register(LocCommands.stub("choose"), new CommandChoose(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("help"), new CommandHelp(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("info, about"), new CommandInfo(KittyRole.General, KittyRating.Safe)); - this.register(LocCommands.stub("vote"), new CommandPollVote(KittyRole.General, KittyRating.Safe)); - this.register(LocCommands.stub("results"), new CommandPollResults(KittyRole.General, KittyRating.Safe)); - this.register(LocCommands.stub("showpoll"), new CommandPollShow(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("wolfram"), new CommandWolfram(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("c++, g++, cplus, cpp"), new CommandColiru(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("java, jdoodle"), new CommandJDoodle(KittyRole.General, KittyRating.Safe)); From 5c21806db1161b85b322fbcc8623eb8a06dec961 Mon Sep 17 00:00:00 2001 From: Matthew Cech Date: Tue, 2 Jul 2019 23:38:10 -0700 Subject: [PATCH 5/8] + Added lua hot reload functionality --- assets/config.csv | 2 ++ assets/plugins/forbiddenword.lua | 1 + src/core/lua/Plugin.java | 10 +++--- src/core/lua/PluginManager.java | 55 ++++++++++++++++++++++++++------ src/main/Main.java | 6 ++-- src/main/Superintendent.java | 5 ++- 6 files changed, 63 insertions(+), 16 deletions(-) diff --git a/assets/config.csv b/assets/config.csv index 1a3409e..4494448 100644 --- a/assets/config.csv +++ b/assets/config.csv @@ -8,6 +8,7 @@ "Localized Commands","buildHelp","" "Localized Commands","c++, g++, cplus, cpp","" "Localized Commands","catch","" +"Localized Commands","character","" "Localized Commands","charactercreate","" "Localized Commands","charactereditbio","" "Localized Commands","charactereditname","" @@ -263,6 +264,7 @@ "Command Enabler","buildhelp","1" "Command Enabler","c++, g++, cplus, cpp","1" "Command Enabler","catch","1" +"Command Enabler","character","1" "Command Enabler","charactercreate","1" "Command Enabler","charactereditbio","1" "Command Enabler","charactereditname","1" diff --git a/assets/plugins/forbiddenword.lua b/assets/plugins/forbiddenword.lua index d9417c3..b94064b 100644 --- a/assets/plugins/forbiddenword.lua +++ b/assets/plugins/forbiddenword.lua @@ -8,6 +8,7 @@ function plugin(message, user) hours = ((timedif / (60*60)) % 24); mins = ((timedif / (60)) % 60); secs = timedif % 60; + return "*GASP!!!* \n" .. user.name .. " said **THE** word! It's been " .. round(days) .. " days, " .. round(hours) .. " hours, " .. round(mins) .. " minutes, and " .. round(secs) .. " seconds since the last time!"; end diff --git a/src/core/lua/Plugin.java b/src/core/lua/Plugin.java index 640d2eb..5348c30 100644 --- a/src/core/lua/Plugin.java +++ b/src/core/lua/Plugin.java @@ -26,12 +26,14 @@ public class Plugin public Plugin(Path filepath) { this.filepath = filepath; - - - StringBuilder contentBuilder = new StringBuilder(); - + reRead(); + } + + public void reRead() + { try { + StringBuilder contentBuilder = new StringBuilder(); Stream stream = Files.lines(filepath, StandardCharsets.UTF_8); stream.forEach(str -> contentBuilder.append(str).append("\n")); stream.close(); diff --git a/src/core/lua/PluginManager.java b/src/core/lua/PluginManager.java index f77203c..e6e1570 100644 --- a/src/core/lua/PluginManager.java +++ b/src/core/lua/PluginManager.java @@ -1,33 +1,31 @@ package core.lua; -import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; -import java.util.stream.Stream; + import dataStructures.KittyUser; +import utils.GlobalLog; +import utils.LogFilter; +import utils.io.DirectoryMonitor; // Reads in, handles, and manipulates plugins. Plugins are loaded in the order they appear in the folder. public class PluginManager { // Variables - public final String pluginFolder; public ArrayList plugins; + public DirectoryMonitor directoryMonitor; // Constructor public PluginManager(String folder) { - this.pluginFolder = folder; + this.directoryMonitor = new DirectoryMonitor(folder); plugins = new ArrayList(); try { - try (Stream paths = Files.walk(Paths.get(this.pluginFolder))) - { - paths.filter(Files::isRegularFile).forEach((path)->{ addPlugin(path); }); - } + directoryMonitor.getCurrentFiles().forEach((file) -> addPlugin(file.path)); } catch(Exception e) { @@ -35,6 +33,43 @@ public class PluginManager } } + public void update() + { + directoryMonitor.update( + (addedFile) -> + { + addPlugin(addedFile.path); + + GlobalLog.log(LogFilter.Plugin, "Found new plugin at " + addedFile.path); + }, + (updatedFile) -> + { + for(Plugin plugin : plugins) + { + if(plugin.filepath.toString().equalsIgnoreCase(updatedFile.path.toString())) + { + plugin.reRead(); + break; + } + } + + GlobalLog.log(LogFilter.Plugin, "A plugin was updated " + updatedFile.path); + }, + (deletedFile) -> + { + for(int i = plugins.size() - 1; i >= 0; i--) + { + Plugin plugin = plugins.get(i); + + if(plugin.filepath.toString().equalsIgnoreCase(deletedFile.path.toString())) + plugins.remove(i); + } + + GlobalLog.log(LogFilter.Plugin, "Plugin deleted at " + deletedFile.path); + }); + } + + // Registers a plugin based on the path public void addPlugin(Path path) { plugins.add(new Plugin(path)); @@ -66,6 +101,8 @@ public class PluginManager public void printAll() { for(int i = 0; i < plugins.size(); ++i) + { PluginLog.log(plugins.get(i).contents.toString()); + } } } diff --git a/src/main/Main.java b/src/main/Main.java index a69aba9..06b562b 100644 --- a/src/main/Main.java +++ b/src/main/Main.java @@ -86,7 +86,8 @@ public class Main extends ListenerAdapter RPManager.instance.addLine(channel, user, input); // Run any pre-emptive upkeep we need to - Superintendent.perCommandUpkeepPre(); + if(!Superintendent.perCommandUpkeepPre(pluginManager)) + return; // Attempt to spin up a command. If the command doesn't exist. // Run plugins right before invoking the commands but after all other setup. @@ -111,6 +112,7 @@ public class Main extends ListenerAdapter } // Run any upkeep in post we need to - Superintendent.perCommandUpkeepPost(kittyCore, databaseManager); + if(!Superintendent.perCommandUpkeepPost(kittyCore, databaseManager)) + return; } } \ No newline at end of file diff --git a/src/main/Superintendent.java b/src/main/Superintendent.java index 1b49ecf..427b02f 100644 --- a/src/main/Superintendent.java +++ b/src/main/Superintendent.java @@ -6,6 +6,7 @@ import core.Config; import core.DatabaseManager; import core.RPManager; import core.Stats; +import core.lua.PluginManager; import dataStructures.KittyChannel; import dataStructures.KittyCore; import dataStructures.KittyGuild; @@ -71,11 +72,13 @@ public class Superintendent // Only called once per command. Good for lazily updating. // Happens just before the command / plugin runs. - public static boolean perCommandUpkeepPre() + public static boolean perCommandUpkeepPre(PluginManager pluginManager) { // Upkeep the config file monitoring Config.instance.upkeep(); + pluginManager.update(); + // Return if we succeeded or not. At this time, we always succeed. return true; } From 15f3ca059f09d601f2aa497d23d8319faff2ed7d Mon Sep 17 00:00:00 2001 From: Matthew Cech Date: Wed, 3 Jul 2019 00:14:46 -0700 Subject: [PATCH 6/8] = Escape characters now honored --- assets/config.csv | 4 ++-- src/core/ConfigCSV.java | 8 +++++--- src/core/ConfigItem.java | 4 +++- src/utils/StringUtils.java | 21 +++++---------------- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/assets/config.csv b/assets/config.csv index 4494448..4105517 100644 --- a/assets/config.csv +++ b/assets/config.csv @@ -81,7 +81,7 @@ "Localized Strings","BoopInfo","Kitty will react with a counter" "Localized Strings","BoopMultiple","%s booped several others - %s!" "Localized Strings","BoopPerson","%s booped %s!" -"Localized Strings","BoopStandard","Woah! %s booped me! That's %s total!" +"Localized Strings","BoopStandard","Woah! %s booped me! That's %s total! " "Localized Strings","CatchInfo","Play catch with yourself or with a friend with @!" "Localized Strings","ChangeIndicatorChanged","Indicator changed to `%s`" "Localized Strings","ChangeIndicatorError","Please specify a letter or symbol to use!" @@ -184,7 +184,7 @@ "Localized Strings","LeaderboardInfo","Shows you the 10 users with the most beans on the server" "Localized Strings","LeaderboardTitle","Server Leaderboard" "Localized Strings","MapHeight","" -"Localized Strings","MapInfo","Generates a map! You can pass additional information if you want with the flags `-s`. If one of the fields isn't provided, its default will be used. Note that adjusting the width and height impacts the map outcomes.nn**Defaults**nDefault Seed: Random,nDefault Width: 35(max %s),nDefault Height: 25(max %s)nn**Key**nLand: ~nMountain: â–²nBeach: " +"Localized Strings","MapInfo","Generates a map! You can pass additional information if you want with the flags `-s`. If one of the fields isn't provided, its default will be used. Note that adjusting the width and height impacts the map outcomes.nn**Defaults**nDefault Seed: Random,nDefault Width: 35(max %s),nDefault Height: 25(max %s)nn**Key**nLand: ~nMountain: \u25B2nBeach: " "Localized Strings","MapInvalid","Invalid arguments provided!" "Localized Strings","MapSeed","Seed" "Localized Strings","MapVersion","Using mapgen v0.1" diff --git a/src/core/ConfigCSV.java b/src/core/ConfigCSV.java index 7b644d0..f4280ff 100644 --- a/src/core/ConfigCSV.java +++ b/src/core/ConfigCSV.java @@ -14,8 +14,10 @@ import java.util.Vector; import com.opencsv.CSVReader; import com.opencsv.CSVReaderBuilder; import com.opencsv.CSVWriter; +import com.opencsv.RFC4180ParserBuilder; import utils.GlobalLog; +import utils.StringUtils; public class ConfigCSV { @@ -41,7 +43,7 @@ public class ConfigCSV return new CSVWriter(writer, CSVWriter.DEFAULT_SEPARATOR, CSVWriter.DEFAULT_QUOTE_CHARACTER, - '\\', + CSVWriter.DEFAULT_ESCAPE_CHARACTER, CSVWriter.DEFAULT_LINE_END); } @@ -60,7 +62,7 @@ public class ConfigCSV } Reader reader = Files.newBufferedReader(Paths.get(filepath)); - CSVReader csvReader = new CSVReaderBuilder(reader).withSkipLines(1).build(); + CSVReader csvReader = new CSVReaderBuilder(reader).withSkipLines(1).withCSVParser(new RFC4180ParserBuilder().build()).build(); fileContents.clear(); // Read contents. As for the line number, we not only start counting at 1, we also skip the header. @@ -74,7 +76,7 @@ public class ConfigCSV continue; } - ConfigItem parsedLine = new ConfigItem(record[0], record[1], record[2]); + ConfigItem parsedLine = new ConfigItem(StringUtils.unEscape(record[0]), StringUtils.unEscape(record[1]), StringUtils.unEscape(record[2])); fileContents.add(parsedLine); ++line; } diff --git a/src/core/ConfigItem.java b/src/core/ConfigItem.java index 5e73eb5..7f556d2 100644 --- a/src/core/ConfigItem.java +++ b/src/core/ConfigItem.java @@ -1,5 +1,7 @@ package core; +import utils.StringUtils; + // Everything in here must be a string type. This class does not // perform any parsing past naming columns, and just holds the raw data. public class ConfigItem @@ -30,7 +32,7 @@ public class ConfigItem public String[] getAll() { - return new String[] {type, key, value}; + return new String[] {StringUtils.reEscape(type), StringUtils.reEscape(key), StringUtils.reEscape(value) }; } public String toString() diff --git a/src/utils/StringUtils.java b/src/utils/StringUtils.java index 04c3dec..2da6f75 100644 --- a/src/utils/StringUtils.java +++ b/src/utils/StringUtils.java @@ -1,29 +1,18 @@ package utils; +import org.apache.commons.lang3.StringEscapeUtils; + +@SuppressWarnings("deprecation") public class StringUtils { public static String unEscape(String str) { - str = str.replaceAll("\\\\b", "\b"); - str = str.replaceAll("\\\\n", "\n"); - str = str.replaceAll("\\\\t", "\t"); - str = str.replaceAll("\\\\r", "\r"); - str = str.replaceAll("\\\\f", "\f"); - str = str.replaceAll("\\\\\"", "\""); - str = str.replaceAll("\\\\\\\\\\\\", "\\\\"); - - return str; + return StringEscapeUtils.unescapeJava(str); } public static String reEscape(String str) { - str = str.replaceAll("\\\b", "\\\\\\b"); - str = str.replaceAll("\\\n", "\\\\\\n"); - str = str.replaceAll("\\\t", "\\\\\\t"); - str = str.replaceAll("\\\r", "\\\\\\r"); - str = str.replaceAll("\\\f", "\\\\\\f"); - - return str; + return StringEscapeUtils.escapeJava(str); } // Finds first whitespace in the string From b0948303d1a728da3bc239b78a5fe17d6a8c05b7 Mon Sep 17 00:00:00 2001 From: Matthew Cech Date: Wed, 3 Jul 2019 00:18:01 -0700 Subject: [PATCH 7/8] = Correcting newline --- assets/config.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/config.csv b/assets/config.csv index 4105517..08c68af 100644 --- a/assets/config.csv +++ b/assets/config.csv @@ -184,7 +184,7 @@ "Localized Strings","LeaderboardInfo","Shows you the 10 users with the most beans on the server" "Localized Strings","LeaderboardTitle","Server Leaderboard" "Localized Strings","MapHeight","" -"Localized Strings","MapInfo","Generates a map! You can pass additional information if you want with the flags `-s`. If one of the fields isn't provided, its default will be used. Note that adjusting the width and height impacts the map outcomes.nn**Defaults**nDefault Seed: Random,nDefault Width: 35(max %s),nDefault Height: 25(max %s)nn**Key**nLand: ~nMountain: \u25B2nBeach: " +"Localized Strings","MapInfo","Generates a map! You can pass additional information if you want with the flags `-s`. If one of the fields isn't provided, its default will be used. Note that adjusting the width and height impacts the map outcomes.\n\n**Defaults**\nDefault Seed: Random,\nDefault Width: 35(max %s),\nDefault Height: 25(max %s)\n\n**Key**\nLand: ~\nMountain: \u25B2\nBeach: =\nTrees: \u00A5\nVolcano: #" "Localized Strings","MapInvalid","Invalid arguments provided!" "Localized Strings","MapSeed","Seed" "Localized Strings","MapVersion","Using mapgen v0.1" From 8daeedd1cef6bb203a9171c878dc51a0f33fb641 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 3 Jul 2019 03:28:32 -0400 Subject: [PATCH 8/8] =Bug Fixes on Poll --- assets/config.csv | 4 +- .../guildrole/CommandGuildRoleMain.java | 1 + src/commands/poll/CommandPollMain.java | 8 ++++ src/commands/poll/CommandPollResults.java | 36 -------------- src/commands/poll/CommandPollShow.java | 30 ------------ src/commands/poll/CommandPollVote.java | 47 ------------------- src/commands/poll/SubCommandResults.java | 2 +- src/commands/poll/SubCommandVote.java | 2 +- src/core/CommandManager.java | 3 ++ src/core/SubCommand.java | 3 +- src/core/SubCommandFramework.java | 1 - 11 files changed, 17 insertions(+), 120 deletions(-) delete mode 100644 src/commands/poll/CommandPollResults.java delete mode 100644 src/commands/poll/CommandPollShow.java delete mode 100644 src/commands/poll/CommandPollVote.java diff --git a/assets/config.csv b/assets/config.csv index 231f522..4847ae2 100644 --- a/assets/config.csv +++ b/assets/config.csv @@ -195,11 +195,11 @@ "Localized Strings","PingResponse","Pong!" "Localized Strings","PollManageInfo","'start' will start a new poll with the query of the line you put after, 'choice' will add a choice to the poll, 'stop' will end the poll" "Localized Strings","PollResultsInfo","Will show current results of a poll and percentages of votes per choice" -"Localized Strings","PollResultsResponse","%s people voted for %s `%s` with `%s%` !n" +"Localized Strings","PollResultsResponse","%s people voted for `%s` with `%s%%` " "Localized Strings","PollShowChoices","And the choices are:n" "Localized Strings","PollShowInfo","Will show the current poll running" "Localized Strings","PollShowNoPoll","There is no poll running!" -"Localized Strings","PollShowPoll","The current poll is `%s`n" +"Localized Strings","PollShowPoll","The current poll is `%s`" "Localized Strings","PollVoteAlreadyVoted","You already voted" "Localized Strings","PollVoteInfo","Vote in a poll with the choice number, won't work if no poll is running, you can't change your vote once you have cast it! Be careful!" "Localized Strings","PollVoteNoPoll","There is no poll running!" diff --git a/src/commands/guildrole/CommandGuildRoleMain.java b/src/commands/guildrole/CommandGuildRoleMain.java index 2c5807d..5b00142 100644 --- a/src/commands/guildrole/CommandGuildRoleMain.java +++ b/src/commands/guildrole/CommandGuildRoleMain.java @@ -19,6 +19,7 @@ public class CommandGuildRoleMain extends Command super(level, rating); framework.addCommand("add", new SubCommandAdd (KittyRole.General, KittyRating.Safe)); framework.addCommand("remove", new SubCommandRemove(KittyRole.General, KittyRating.Safe)); + framework.addCommand("list", new SubCommandList(KittyRole.General, KittyRating.Safe)); framework.addCommand("allowed", new SubCommandAllowed(KittyRole.Admin, KittyRating.Safe)); framework.addCommand("unallowed", new SubCommandNotAllowed(KittyRole.Admin, KittyRating.Safe)); } diff --git a/src/commands/poll/CommandPollMain.java b/src/commands/poll/CommandPollMain.java index dd63503..a7036fb 100644 --- a/src/commands/poll/CommandPollMain.java +++ b/src/commands/poll/CommandPollMain.java @@ -16,6 +16,14 @@ public class CommandPollMain extends Command public CommandPollMain(KittyRole level, KittyRating rating) { super(level, rating); + + framework.addCommand("start", new SubCommandStart(KittyRole.Mod, KittyRating.Safe)); + framework.addCommand("addoption", new SubCommandAddOption(KittyRole.Mod, KittyRating.Safe)); + framework.addCommand("end", new SubCommandEnd(KittyRole.Mod, KittyRating.Safe)); + + framework.addCommand("show", new SubCommandShow(KittyRole.General, KittyRating.Safe)); + framework.addCommand("results", new SubCommandResults(KittyRole.General, KittyRating.Safe)); + framework.addCommand("vote", new SubCommandVote(KittyRole.General, KittyRating.Safe)); } @Override diff --git a/src/commands/poll/CommandPollResults.java b/src/commands/poll/CommandPollResults.java deleted file mode 100644 index f34145e..0000000 --- a/src/commands/poll/CommandPollResults.java +++ /dev/null @@ -1,36 +0,0 @@ -package commands.poll; - -import java.util.ArrayList; - -import core.*; -import dataStructures.*; - -public class CommandPollResults extends Command -{ - public CommandPollResults(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("PollResultsInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - String results = ""; - int totalVotes = 0; - ArrayList votes = guild.choices; - - for(int i = 0; i < votes.size(); i++) - { - totalVotes += votes.get(i).votes; - } - - results += "The poll was " + guild.poll + "\n"; - - for(int i = 0; i < votes.size(); i++) - { - results += String.format(LocStrings.stub("PollResultsResponse"), votes.get(i).votes, votes.get(i).choice, (int)(((double)votes.get(i).votes) / ((double)totalVotes) * 100)); - } - - res.send(results); - } -} diff --git a/src/commands/poll/CommandPollShow.java b/src/commands/poll/CommandPollShow.java deleted file mode 100644 index 27a870e..0000000 --- a/src/commands/poll/CommandPollShow.java +++ /dev/null @@ -1,30 +0,0 @@ -package commands.poll; - -import core.*; -import dataStructures.*; - -public class CommandPollShow extends Command -{ - public CommandPollShow(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("PollShowInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - if(!guild.polling) - { - res.send(LocStrings.stub("PollShowNoPoll")); - return; - } - String poll = String.format(LocStrings.stub("PollShowPoll"), guild.poll); - poll += LocStrings.stub("PollShowChoices"); - for(int i = 0; i < guild.choices.size(); i++) - { - poll += (i+1) + ": `" + guild.choices.get(i).choice + "`\n"; - } - - res.send(poll); - } -} diff --git a/src/commands/poll/CommandPollVote.java b/src/commands/poll/CommandPollVote.java deleted file mode 100644 index 5348523..0000000 --- a/src/commands/poll/CommandPollVote.java +++ /dev/null @@ -1,47 +0,0 @@ -package commands.poll; - -import core.*; -import dataStructures.*; - -public class CommandPollVote extends Command -{ - public CommandPollVote(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("PollVoteInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - if(guild.polling) - { - if(guild.hasVoted.contains(user.uniqueID)) - { - res.send(LocStrings.stub("PollVoteAlreadyVoted")); - return; - } - try - { - int voteNum = Integer.parseInt(input.args)-1; - if(voteNum >= guild.choices.size() || voteNum < 0) - { - res.send(String.format(LocStrings.stub("PollVoteNotValidVote"), voteNum)); - return; - } - - KittyPoll polled = guild.choices.get(voteNum); - polled.votes++; - guild.hasVoted.add(user.uniqueID); - res.send(LocStrings.stub("PollVoteSuccess") + " `" + polled.choice + "`!"); - return; - } - catch (NumberFormatException e) - { - res.send(LocStrings.stub("PollVoteNotValidNumber")); - return; - } - } - - res.send(LocStrings.stub("PollVoteNoPoll")); - } -} diff --git a/src/commands/poll/SubCommandResults.java b/src/commands/poll/SubCommandResults.java index 3c8fc3d..d793251 100644 --- a/src/commands/poll/SubCommandResults.java +++ b/src/commands/poll/SubCommandResults.java @@ -25,7 +25,7 @@ public class SubCommandResults extends SubCommand for(int i = 0; i < votes.size(); i++) { - results += String.format(LocStrings.stub("PollResultsResponse"), votes.get(i).votes, votes.get(i).choice, (int)(((double)votes.get(i).votes) / ((double)totalVotes) * 100)); + results += String.format(LocStrings.stub("PollResultsResponse"), votes.get(i).votes, votes.get(i).choice, (int)(((double)votes.get(i).votes) / ((double)totalVotes) * 100)) + "\n"; } return new SubCommandFormattable (results); diff --git a/src/commands/poll/SubCommandVote.java b/src/commands/poll/SubCommandVote.java index 400f50b..b4c9252 100644 --- a/src/commands/poll/SubCommandVote.java +++ b/src/commands/poll/SubCommandVote.java @@ -25,7 +25,7 @@ public class SubCommandVote extends SubCommand } try { - int voteNum = Integer.parseInt(input)-1; + int voteNum = Integer.parseInt(input.substring(input.indexOf(" ")).trim())-1; if(voteNum >= guild.choices.size() || voteNum < 0) { return new SubCommandFormattable (String.format(LocStrings.stub("PollVoteNotValidVote"), voteNum)); diff --git a/src/core/CommandManager.java b/src/core/CommandManager.java index 82b8fff..a3c2703 100644 --- a/src/core/CommandManager.java +++ b/src/core/CommandManager.java @@ -47,6 +47,7 @@ import commands.general.CommandTweet; import commands.general.CommandWolfram; import commands.general.CommandYeet; import commands.guildrole.CommandGuildRoleMain; +import commands.poll.CommandPollMain; import commands.raffle.CommandRaffleMain; import dataStructures.KittyChannel; import dataStructures.KittyGuild; @@ -148,6 +149,8 @@ public class CommandManager this.register(LocCommands.stub("role"), new CommandGuildRoleMain(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("character"), new CommandCharacterMain(KittyRole.General, KittyRating.Safe)); this.register(LocCommands.stub("raffle"), new CommandRaffleMain(KittyRole.General, KittyRating.Safe)); + this.register(LocCommands.stub("poll"), new CommandPollMain(KittyRole.General, KittyRating.Safe)); + } // Allows the command manager to keep track of a command. Takes a pair (the un-localized and localzied commands) diff --git a/src/core/SubCommand.java b/src/core/SubCommand.java index ee04f16..6410ff8 100644 --- a/src/core/SubCommand.java +++ b/src/core/SubCommand.java @@ -23,7 +23,6 @@ public abstract class SubCommand private boolean CanCall(KittyGuild guild, KittyChannel channel, KittyUser user) { - System.out.println("TESTING CAN CALL"); if(guild.contentRating.getValue() < contentRating.getValue()) { Reject(user, "content rating"); @@ -46,7 +45,7 @@ public abstract class SubCommand protected final SubCommandFormattable Invoke(KittyGuild guild, KittyChannel channel, KittyUser user, String input) { if(!CanCall(guild, channel, user)) - return new SubCommandFormattable("Can't run that!"); + return null; return OnRun(guild, channel, user, input); } diff --git a/src/core/SubCommandFramework.java b/src/core/SubCommandFramework.java index 257e474..8af80f5 100644 --- a/src/core/SubCommandFramework.java +++ b/src/core/SubCommandFramework.java @@ -27,7 +27,6 @@ public class SubCommandFramework public SubCommandFormattable run(KittyGuild guild, KittyChannel channel, KittyUser user, String input) { - System.out.println(input); SubCommandFormattable res = null; try {