diff --git a/.gitignore b/.gitignore
index 8983379..7219eb8 100755
--- a/.gitignore
+++ b/.gitignore
@@ -220,8 +220,8 @@ pip-log.txt
TheButtonAutoFlair/out/artifacts/Autoflair/Autoflair.jar
#*.iml
*.name
-.idea/compiler.xml
-*.xml
+.idea
+dependency-reduced-pom.xml
TBMC/
/.apt_generated/
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index ba952b2..56dd862 100755
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -3,25 +3,60 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
+
diff --git a/.idea/libraries/Maven__com_google_code_findbugs_annotations_2_0_1.xml b/.idea/libraries/Maven__com_google_code_findbugs_annotations_2_0_1.xml
deleted file mode 100755
index a3d1316..0000000
--- a/.idea/libraries/Maven__com_google_code_findbugs_annotations_2_0_1.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_google_code_gson_gson_2_8_0.xml b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_0.xml
deleted file mode 100644
index 6e5d5b7..0000000
--- a/.idea/libraries/Maven__com_google_code_gson_gson_2_8_0.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_google_guava_guava_15_0.xml b/.idea/libraries/Maven__com_google_guava_guava_15_0.xml
deleted file mode 100755
index 8ae2de1..0000000
--- a/.idea/libraries/Maven__com_google_guava_guava_15_0.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_google_guava_guava_21_0.xml b/.idea/libraries/Maven__com_google_guava_guava_21_0.xml
deleted file mode 100644
index a923456..0000000
--- a/.idea/libraries/Maven__com_google_guava_guava_21_0.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml
deleted file mode 100755
index f3f3738..0000000
--- a/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__commons_io_commons_io_1_3_2.xml b/.idea/libraries/Maven__commons_io_commons_io_1_3_2.xml
deleted file mode 100755
index 7b5b3b7..0000000
--- a/.idea/libraries/Maven__commons_io_commons_io_1_3_2.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__commons_io_commons_io_2_6.xml b/.idea/libraries/Maven__commons_io_commons_io_2_6.xml
deleted file mode 100644
index d722698..0000000
--- a/.idea/libraries/Maven__commons_io_commons_io_2_6.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml b/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml
deleted file mode 100755
index 2ec8376..0000000
--- a/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_3_8_1.xml b/.idea/libraries/Maven__junit_junit_3_8_1.xml
deleted file mode 100755
index 71b2993..0000000
--- a/.idea/libraries/Maven__junit_junit_3_8_1.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_6_11.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_6_11.xml
deleted file mode 100755
index b956618..0000000
--- a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_6_11.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_6_11.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_6_11.xml
deleted file mode 100755
index dbbe456..0000000
--- a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_6_11.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_ess3_Essentials_2_13_1.xml b/.idea/libraries/Maven__net_ess3_Essentials_2_13_1.xml
deleted file mode 100644
index bbc5141..0000000
--- a/.idea/libraries/Maven__net_ess3_Essentials_2_13_1.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_md_5_bungeecord_chat_1_12_SNAPSHOT.xml b/.idea/libraries/Maven__net_md_5_bungeecord_chat_1_12_SNAPSHOT.xml
deleted file mode 100644
index a472890..0000000
--- a/.idea/libraries/Maven__net_md_5_bungeecord_chat_1_12_SNAPSHOT.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_bukkit_bukkit_1_13_1_R0_1_SNAPSHOT.xml b/.idea/libraries/Maven__org_bukkit_bukkit_1_13_1_R0_1_SNAPSHOT.xml
deleted file mode 100644
index 63108e8..0000000
--- a/.idea/libraries/Maven__org_bukkit_bukkit_1_13_1_R0_1_SNAPSHOT.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_20_0_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_20_0_GA.xml
deleted file mode 100755
index c21c9b0..0000000
--- a/.idea/libraries/Maven__org_javassist_javassist_3_20_0_GA.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mockito_mockito_core_2_7_20.xml b/.idea/libraries/Maven__org_mockito_mockito_core_2_7_20.xml
deleted file mode 100755
index db215ab..0000000
--- a/.idea/libraries/Maven__org_mockito_mockito_core_2_7_20.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_2_5.xml b/.idea/libraries/Maven__org_objenesis_objenesis_2_5.xml
deleted file mode 100755
index 57448b4..0000000
--- a/.idea/libraries/Maven__org_objenesis_objenesis_2_5.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_reflections_reflections_0_9_10.xml b/.idea/libraries/Maven__org_reflections_reflections_0_9_10.xml
deleted file mode 100755
index d92ca0d..0000000
--- a/.idea/libraries/Maven__org_reflections_reflections_0_9_10.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_spigotmc_spigot_api_1_12_2_R0_1_SNAPSHOT.xml b/.idea/libraries/Maven__org_spigotmc_spigot_api_1_12_2_R0_1_SNAPSHOT.xml
deleted file mode 100644
index b6f88ae..0000000
--- a/.idea/libraries/Maven__org_spigotmc_spigot_api_1_12_2_R0_1_SNAPSHOT.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_19.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_19.xml
deleted file mode 100644
index 33ccf19..0000000
--- a/.idea/libraries/Maven__org_yaml_snakeyaml_1_19.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 6db2058..1014481 100755
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -17,7 +17,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 0b24af5..c3d052f 100755
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -5,6 +5,7 @@
+
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index 808d9b0..7a60b95 100755
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,7 +9,7 @@ before_install: | # Wget BuildTools and run if cached folder not found
fi
language: java
jdk:
- - oraclejdk8
+ - oraclejdk11
sudo: true
deploy:
# deploy develop to the staging environment
diff --git a/BuildConfigUpdater/BuildConfigUpdater.iml b/BuildConfigUpdater/BuildConfigUpdater.iml
index 274b3de..04dfdc0 100644
--- a/BuildConfigUpdater/BuildConfigUpdater.iml
+++ b/BuildConfigUpdater/BuildConfigUpdater.iml
@@ -1,5 +1,10 @@
+
+
+
+
+
@@ -7,18 +12,20 @@
+
+
-
-
-
-
+
+
+
+
@@ -29,5 +36,6 @@
+
\ No newline at end of file
diff --git a/BuildConfigUpdater/pom.xml b/BuildConfigUpdater/pom.xml
index 01781fb..2fe01de 100644
--- a/BuildConfigUpdater/pom.xml
+++ b/BuildConfigUpdater/pom.xml
@@ -39,5 +39,4 @@
2.6
-
\ No newline at end of file
diff --git a/ButtonCore/pom.xml b/ButtonCore/pom.xml
index ed35499..93d96e3 100755
--- a/ButtonCore/pom.xml
+++ b/ButtonCore/pom.xml
@@ -2,11 +2,11 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.github.TBMCPlugins
- ButtonCore
+ com.github.TBMCPlugins.ButtonCore
+ CorePOMmaster-SNAPSHOT
+ ../CorePOM
- com.github.TBMCPlugins.ButtonCoreButtonCoreButtonCoreButtonCore
@@ -26,13 +26,6 @@
ButtonCore
-
- maven-compiler-plugin
-
- 1.8
- 1.8
-
- org.apache.maven.pluginsmaven-shade-plugin
@@ -68,6 +61,7 @@
src/main/resources
+ UTF-8
@@ -111,12 +105,16 @@
-->
ess-repo
- http://repo.ess3.net/content/repositories/essrel/
+ https://ci.ender.zone/plugin/repository/everything/Votifierhttps://dl.bintray.com/nuvotifier/maven/
+
+ Multiverse-Core
+ http://repo.onarandombox.com/content/repositories/multiverse/
+
@@ -131,18 +129,10 @@
1.12.2-R0.1-SNAPSHOTprovided
-
- commons-io
- commons-io
- 1.3.2
- provided
-
-
-
- com.github.TBMCPlugins.ButtonCore
+ com.github.TownyAdvancedTowny
- master-SNAPSHOT
+ 0.94.0.9provided
@@ -160,14 +150,7 @@
org.mockitomockito-core
- 2.7.20
-
-
-
- org.projectlombok
- lombok
- 1.16.16
- provided
+ 3.0.0com.github.TBMCPlugins.ButtonCore
@@ -177,8 +160,8 @@
net.ess3
- Essentials
- 2.13.1
+ EssentialsX
+ 2.17.1provided
@@ -187,6 +170,12 @@
2.3.4provided
+
+ com.onarandombox.multiversecore
+ Multiverse-Core
+ 4.0.1
+ provided
+ TBMCPlugins
@@ -209,4 +198,4 @@
scm:git:https://github.com/TBMCPlugins/mvn-repo.gitscm:git:https://github.com/TBMCPlugins/mvn-repo.git
-
\ No newline at end of file
+
diff --git a/ButtonCore/src/main/java/buttondevteam/core/ThorpeCommand.java b/ButtonCore/src/main/java/buttondevteam/core/ChromaCommand.java
similarity index 81%
rename from ButtonCore/src/main/java/buttondevteam/core/ThorpeCommand.java
rename to ButtonCore/src/main/java/buttondevteam/core/ChromaCommand.java
index 91f2d5c..f17dbf8 100644
--- a/ButtonCore/src/main/java/buttondevteam/core/ThorpeCommand.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/ChromaCommand.java
@@ -6,11 +6,11 @@ import buttondevteam.lib.chat.ICommand2MC;
import org.bukkit.command.CommandSender;
@CommandClass
-public class ThorpeCommand extends ICommand2MC {
+public class ChromaCommand extends ICommand2MC {
@Command2.Subcommand //TODO: Main permissions (groups) like 'mod'
public void reload(CommandSender sender) {
if (MainPlugin.Instance.tryReloadConfig())
- sender.sendMessage("§bConfig reloaded.");
+ sender.sendMessage("§bCore config reloaded.");
else
sender.sendMessage("§cFailed to reload config. Check console.");
}
diff --git a/ButtonCore/src/main/java/buttondevteam/core/ComponentManager.java b/ButtonCore/src/main/java/buttondevteam/core/ComponentManager.java
index c8a28b8..bbc3a01 100644
--- a/ButtonCore/src/main/java/buttondevteam/core/ComponentManager.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/ComponentManager.java
@@ -24,7 +24,7 @@ public final class ComponentManager {
Component.getComponents().values().stream().filter(c -> c.shouldBeEnabled().get()).forEach(c -> {
try {
Component.setComponentEnabled(c, true);
- } catch (Exception e) {
+ } catch (Exception | NoClassDefFoundError e) {
TBMCCoreAPI.SendException("Failed to enable one of the components: " + c.getClass().getSimpleName(), e);
}
});
diff --git a/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java b/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java
index 2f29b6e..d5b690b 100755
--- a/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java
@@ -6,6 +6,7 @@ import buttondevteam.core.component.channel.ChatRoom;
import buttondevteam.core.component.members.MemberComponent;
import buttondevteam.core.component.randomtp.RandomTPComponent;
import buttondevteam.core.component.restart.RestartComponent;
+import buttondevteam.core.component.spawn.SpawnComponent;
import buttondevteam.core.component.towny.TownyComponent;
import buttondevteam.core.component.updater.PluginUpdater;
import buttondevteam.core.component.updater.PluginUpdaterComponent;
@@ -89,14 +90,16 @@ public class MainPlugin extends ButtonPlugin {
Component.registerComponent(this, new ChannelComponent());
Component.registerComponent(this, new RandomTPComponent());
Component.registerComponent(this, new MemberComponent());
+ Component.registerComponent(this, new SpawnComponent());
if (Bukkit.getPluginManager().isPluginEnabled("Towny")) //It fails to load the component class otherwise
Component.registerComponent(this, new TownyComponent());
if (Bukkit.getPluginManager().isPluginEnabled("Votifier") && economy != null)
Component.registerComponent(this, new VotifierComponent(economy));
ComponentManager.enableComponents();
getCommand2MC().registerCommand(new ComponentCommand());
- getCommand2MC().registerCommand(new ThorpeCommand());
+ getCommand2MC().registerCommand(new ChromaCommand());
TBMCCoreAPI.RegisterEventsForExceptions(new PlayerListener(), this);
+ TBMCCoreAPI.RegisterEventsForExceptions(getCommand2MC(), this);
ChromaGamerBase.addConverter(commandSender -> Optional.ofNullable(commandSender instanceof ConsoleCommandSender || commandSender instanceof BlockCommandSender
? TBMCPlayer.getPlayer(new UUID(0, 0), TBMCPlayer.class) : null)); //Console & cmdblocks
ChromaGamerBase.addConverter(sender -> Optional.ofNullable(sender instanceof Player
diff --git a/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java b/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java
index 097b90a..d29a9e8 100755
--- a/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java
@@ -93,7 +93,7 @@ public class PlayerListener implements Listener {
String msg = MainPlugin.Instance.chatFormat().get()
.replace("{channel}", event.getChannel().DisplayName().get())
.replace("{origin}", event.getOrigin().substring(0, 1))
- .replace("{name}", ThorpeUtils.getDisplayName(event.getSender()))
+ .replace("{name}", ChromaUtils.getDisplayName(event.getSender()))
.replace("{message}", event.getMessage());
for (Player player : Bukkit.getOnlinePlayers())
if (event.shouldSendTo(player))
diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/members/MemberComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/members/MemberComponent.java
index 66ce1ed..5ea098a 100644
--- a/ButtonCore/src/main/java/buttondevteam/core/component/members/MemberComponent.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/component/members/MemberComponent.java
@@ -10,6 +10,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
+import java.util.AbstractMap;
import java.util.Date;
import static buttondevteam.core.MainPlugin.permission;
@@ -39,10 +40,17 @@ public class MemberComponent extends Component implements Listener {
return getConfig().getData("registeredForDays", 7);
}
+ private AbstractMap.SimpleEntry playtime;
+
@Override
protected void enable() {
registerListener(this);
registerCommand(new MemberCommand(this));
+ try {
+ playtime = new AbstractMap.SimpleEntry<>(Statistic.valueOf("PLAY_ONE_MINUTE"), 60); //1.14
+ } catch (IllegalArgumentException e) {
+ playtime = new AbstractMap.SimpleEntry<>(Statistic.valueOf("PLAY_ONE_TICK"), 20 * 3600); //1.12
+ }
}
@Override
@@ -53,7 +61,7 @@ public class MemberComponent extends Component implements Listener {
public void onPlayerJoin(PlayerJoinEvent event) {
if (permission != null && !permission.playerInGroup(event.getPlayer(), memberGroup().get())
&& (new Date(event.getPlayer().getFirstPlayed()).toInstant().plus(registeredForDays().get(), ChronoUnit.DAYS).isBefore(Instant.now())
- || event.getPlayer().getStatistic(Statistic.PLAY_ONE_TICK) > 20 * 3600 * playedHours().get())) {
+ || event.getPlayer().getStatistic(playtime.getKey()) > playtime.getValue() * playedHours().get())) {
if (permission.playerAddGroup(null, event.getPlayer(), memberGroup().get())) {
event.getPlayer().sendMessage("§bYou are a member now. YEEHAW");
MainPlugin.Instance.getLogger().info("Added " + event.getPlayer().getName() + " as a member.");
@@ -62,4 +70,5 @@ public class MemberComponent extends Component implements Listener {
}
}
}
+
}
diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/randomtp/RandomTP.java b/ButtonCore/src/main/java/buttondevteam/core/component/randomtp/RandomTP.java
index a0612db..755a32a 100644
--- a/ButtonCore/src/main/java/buttondevteam/core/component/randomtp/RandomTP.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/component/randomtp/RandomTP.java
@@ -53,11 +53,15 @@ public class RandomTP extends TBMCCommandBase
public void onEnable(Component component)
{
+ System.out.println("Adding command");
TBMCChatAPI.AddCommand(component, this);
+ System.out.println("Getting world");
world = Bukkit.getWorld("World");
+ System.out.println("Getting border");
border = world.getWorldBorder();
- newLocation();
+ System.out.println("Getting new location");
+ System.out.println("Success: "+newLocation()); //TODO: It takes 10-30 seconds to find a location (newLocation() was there)
}
/*================================================================================================*/
diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java
index 6b431bb..d0104a0 100644
--- a/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/component/restart/RestartComponent.java
@@ -19,7 +19,6 @@ import org.bukkit.event.player.PlayerQuitEvent;
public class RestartComponent extends Component implements Listener {
@Override
public void enable() {
- //TODO: Permissions for the commands
registerCommand(new ScheduledRestartCommand(this));
TBMCChatAPI.AddCommand(this, new PrimeRestartCommand(this));
registerListener(this);
diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/spawn/SpawnComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/spawn/SpawnComponent.java
new file mode 100644
index 0000000..12cc43b
--- /dev/null
+++ b/ButtonCore/src/main/java/buttondevteam/core/component/spawn/SpawnComponent.java
@@ -0,0 +1,120 @@
+package buttondevteam.core.component.spawn;
+
+import buttondevteam.core.MainPlugin;
+import buttondevteam.lib.architecture.Component;
+import buttondevteam.lib.architecture.ConfigData;
+import buttondevteam.lib.chat.Command2;
+import buttondevteam.lib.chat.CommandClass;
+import buttondevteam.lib.chat.ICommand2MC;
+import com.google.common.io.ByteArrayDataInput;
+import com.google.common.io.ByteArrayDataOutput;
+import com.google.common.io.ByteStreams;
+import com.onarandombox.MultiverseCore.MultiverseCore;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.messaging.PluginMessageListener;
+
+import java.io.*;
+
+public class SpawnComponent extends Component implements PluginMessageListener {
+ @Override
+ protected void enable() {
+ registerCommand(new SpawnCommand());
+ if (targetServer().get().length() == 0) {
+ spawnloc = MultiverseCore.getPlugin(MultiverseCore.class).getMVWorldManager().getFirstSpawnWorld()
+ .getSpawnLocation();
+ }
+
+ Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(getPlugin(), "BungeeCord");
+ Bukkit.getServer().getMessenger().registerIncomingPluginChannel(getPlugin(), "BungeeCord", this);
+ }
+
+ @Override
+ protected void disable() {
+ Bukkit.getServer().getMessenger().unregisterIncomingPluginChannel(getPlugin(), "BungeeCord");
+ Bukkit.getServer().getMessenger().unregisterOutgoingPluginChannel(getPlugin(), "BungeeCord");
+ }
+
+ @Override
+ public void onPluginMessageReceived(String channel, Player player, byte[] message) {
+ if (!channel.equals("BungeeCord")) {
+ return;
+ }
+ if (targetServer().get().length() != 0)
+ return;
+ ByteArrayDataInput in = ByteStreams.newDataInput(message);
+ String subchannel = in.readUTF();
+ if ("ChromaCore-Spawn".equals(subchannel)) {
+ // Use the code sample in the 'Response' sections below to read
+ // the data.
+ System.out.println("Heh nice");
+ short len = in.readShort();
+ byte[] msgbytes = new byte[len];
+ in.readFully(msgbytes);
+
+ try {
+ DataInputStream msgin = new DataInputStream(new ByteArrayInputStream(msgbytes));
+ String somedata = msgin.readUTF(); // Read the data in the same way you wrote it
+ if (!"SendToSpawn".equals(somedata)) {
+ System.out.println("somedata: " + somedata);
+ return;
+ }
+ player.teleport(spawnloc);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } else
+ System.out.println("Subchannel: " + subchannel);
+ }
+
+ /**
+ * Set to empty if this server is the target.
+ */
+ private ConfigData targetServer() {
+ return getConfig().getData("targetServer", "");
+ }
+
+ private Location spawnloc;
+
+ @CommandClass(helpText = {
+ "Spawn",
+ "Teleport to spawn."
+ })
+ public class SpawnCommand extends ICommand2MC {
+ @SuppressWarnings("UnstableApiUsage")
+ @Command2.Subcommand
+ public void def(Player player) {
+ if (targetServer().get().length() == 0) {
+ player.sendMessage("§bTeleporting to spawn.");
+ player.teleport(spawnloc);
+ return;
+ }
+ ByteArrayDataOutput out = ByteStreams.newDataOutput();
+ out.writeUTF("Connect");
+ out.writeUTF(targetServer().get());
+
+ player.sendPluginMessage(getPlugin(), "BungeeCord", out.toByteArray());
+
+ Bukkit.getScheduler().runTask(getPlugin(), () -> { //Delay it a bit
+ ByteArrayDataOutput outt = ByteStreams.newDataOutput();
+ outt.writeUTF("ForwardToPlayer"); // So BungeeCord knows to forward it
+ outt.writeUTF(player.getName());
+ outt.writeUTF("ChromaCore-Spawn"); // The channel name to check if this your data
+
+ ByteArrayOutputStream msgbytes = new ByteArrayOutputStream();
+ DataOutputStream msgout = new DataOutputStream(msgbytes);
+ try {
+ msgout.writeUTF("SendToSpawn"); // You can do anything you want with msgout
+ } catch (IOException exception) {
+ exception.printStackTrace();
+ }
+
+ outt.writeShort(msgbytes.toByteArray().length);
+ outt.write(msgbytes.toByteArray());
+
+ player.sendPluginMessage(getPlugin(), "BungeeCord", outt.toByteArray());
+ });
+ }
+ }
+}
diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/towny/TownyComponent.java b/ButtonCore/src/main/java/buttondevteam/core/component/towny/TownyComponent.java
index 42c857d..3d8966d 100644
--- a/ButtonCore/src/main/java/buttondevteam/core/component/towny/TownyComponent.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/component/towny/TownyComponent.java
@@ -5,10 +5,10 @@ import buttondevteam.core.MainPlugin;
import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.architecture.Component;
import com.palmergames.bukkit.towny.Towny;
+import com.palmergames.bukkit.towny.TownyUniverse;
import com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException;
import com.palmergames.bukkit.towny.exceptions.NotRegisteredException;
import com.palmergames.bukkit.towny.object.Resident;
-import com.palmergames.bukkit.towny.object.TownyUniverse;
import org.bukkit.Bukkit;
/**
@@ -41,7 +41,7 @@ public class TownyComponent extends Component {
TBMCCoreAPI.sendDebugMessage("Target resident name is already in use.");
} else
try {
- TownyUniverse.getDataSource().renamePlayer(resident, newName); //Fixed in Towny 0.91.1.2
+ tu.getDataSource().renamePlayer(resident, newName); //Fixed in Towny 0.91.1.2
} catch (AlreadyRegisteredException e) {
TBMCCoreAPI.SendException("Failed to rename resident, there's already one with this name.", e);
} catch (NotRegisteredException e) {
diff --git a/ButtonCore/src/main/java/buttondevteam/core/component/updater/PluginUpdater.java b/ButtonCore/src/main/java/buttondevteam/core/component/updater/PluginUpdater.java
index 64401fd..5454ea1 100755
--- a/ButtonCore/src/main/java/buttondevteam/core/component/updater/PluginUpdater.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/component/updater/PluginUpdater.java
@@ -5,16 +5,13 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
-import org.apache.commons.io.FileUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
-import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -66,7 +63,7 @@ public class PluginUpdater {
private static boolean updatePluginJitPack(CommandSender sender, String correctname,
String correctbranch) {
- URL url;
+ /*URL url;
File result = new File(updatedir, correctname + ".jar");
try {
url = new URL("https://jitpack.io/com/github/TBMCPlugins/"
@@ -93,8 +90,9 @@ public class PluginUpdater {
error(sender, "IO error while updating " + correctname + "\n" + e.getMessage());
} catch (Exception e) {
e.printStackTrace();
- error(sender, "Unknown error while updating " + correctname + ": " + e);
- }
+ error(sender, "Unknown error while updating " + correctname + ": " + e); - TODO: Either add Commons or don't use FileUtils
+ }*/
+ info(sender, "Plugin updating is currently not supported");
return false;
}
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/ThorpeUtils.java b/ButtonCore/src/main/java/buttondevteam/lib/ChromaUtils.java
similarity index 59%
rename from ButtonCore/src/main/java/buttondevteam/lib/ThorpeUtils.java
rename to ButtonCore/src/main/java/buttondevteam/lib/ChromaUtils.java
index d69983e..7fa3105 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/ThorpeUtils.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/ChromaUtils.java
@@ -1,10 +1,16 @@
package buttondevteam.lib;
+import buttondevteam.core.MainPlugin;
+import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.Event;
-public final class ThorpeUtils {
- private ThorpeUtils() {}
+import java.util.function.Supplier;
+
+public final class ChromaUtils {
+ private ChromaUtils() {}
public static String getDisplayName(CommandSender sender) {
if (sender instanceof IHaveFancyName)
@@ -51,4 +57,33 @@ public final class ThorpeUtils {
return number.doubleValue();
return number;
}
+
+ /**
+ * Calls the event always asynchronously. The return value is always false if async.
+ *
+ * @param event The event to call
+ * @return The event cancelled state or false if async.
+ */
+ public static boolean callEventAsync(T event) {
+ Supplier task = () -> {
+ Bukkit.getPluginManager().callEvent(event);
+ return event.isCancelled();
+ };
+ return doItAsync(task, false);
+ }
+
+ /**
+ * Does something always asynchronously. It will execute in the same thread if it's not the server thread.
+ *
+ * @param what What to do
+ * @param def Default if async
+ * @return The event cancelled state or false if async.
+ */
+ public static T doItAsync(Supplier what, T def) {
+ if (Bukkit.isPrimaryThread())
+ Bukkit.getScheduler().runTaskAsynchronously(MainPlugin.Instance, what::get);
+ else
+ return what.get();
+ return def;
+ }
}
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatEventBase.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatEventBase.java
index d30e12e..1ac02b6 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatEventBase.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatEventBase.java
@@ -3,7 +3,6 @@ package buttondevteam.lib;
import buttondevteam.core.component.channel.Channel;
import lombok.Getter;
import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Cancellable;
@@ -12,7 +11,6 @@ import org.bukkit.event.Event;
import javax.annotation.Nullable;
@Getter
-@RequiredArgsConstructor
public abstract class TBMCChatEventBase extends Event implements Cancellable {
private final Channel channel;
private @NonNull String message;
@@ -26,6 +24,15 @@ public abstract class TBMCChatEventBase extends Event implements Cancellable {
*/
private final String groupID;
+ @java.beans.ConstructorProperties({"channel", "message", "score", "groupID"})
+ public TBMCChatEventBase(Channel channel, String message, int score, String groupID) {
+ super(true);
+ this.channel = channel;
+ this.message = message;
+ this.score = score;
+ this.groupID = groupID;
+ }
+
/**
* Note: Errors are sent to the sender automatically
*/
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java
index 6ff3bda..9a512ee 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCChatPreprocessEvent.java
@@ -27,6 +27,7 @@ public class TBMCChatPreprocessEvent extends Event implements Cancellable {
private boolean cancelled;
public TBMCChatPreprocessEvent(CommandSender sender, Channel channel, String message) {
+ super(true);
this.sender = sender;
this.channel = channel;
this.message = message; // TODO: Message object with data?
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java
index a313fe0..7e8939b 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java
@@ -4,7 +4,6 @@ import buttondevteam.core.MainPlugin;
import buttondevteam.core.component.updater.PluginUpdater;
import buttondevteam.lib.player.ChromaGamerBase;
import buttondevteam.lib.potato.DebugPotato;
-import org.apache.commons.io.IOUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -15,10 +14,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
import java.util.Map.Entry;
public class TBMCCoreAPI {
@@ -63,7 +59,8 @@ public class TBMCCoreAPI {
InputStream in = con.getInputStream();
String encoding = con.getContentEncoding();
encoding = encoding == null ? "UTF-8" : encoding;
- String body = IOUtils.toString(in, encoding);
+ Scanner s = new Scanner(in).useDelimiter("\\A");
+ String body = s.hasNext() ? s.next() : "";
in.close();
return body;
}
@@ -82,36 +79,41 @@ public class TBMCCoreAPI {
}
public static void SendException(String sourcemsg, Throwable e, boolean debugPotato) {
- SendUnsentExceptions();
- TBMCExceptionEvent event = new TBMCExceptionEvent(sourcemsg, e);
- Bukkit.getPluginManager().callEvent(event);
- synchronized (exceptionsToSend) {
- if (!event.isHandled())
- exceptionsToSend.put(sourcemsg, e);
- }
- Bukkit.getLogger().warning(sourcemsg);
- e.printStackTrace();
- if (debugPotato) {
- List devsOnline = new ArrayList<>();
- for (Player player : Bukkit.getOnlinePlayers()) {
- if (coders.contains(player.getName())) {
- devsOnline.add(player);
- }
- }
- if (!devsOnline.isEmpty()) {
- DebugPotato potato = new DebugPotato()
- .setMessage(new String[]{ //
- "§b§o" + e.getClass().getSimpleName(), //
- "§c§o" + sourcemsg, //
- "§a§oFind a dev to fix this issue"})
- .setType(e instanceof IOException ? "Throwable Potato"
- : e instanceof ClassCastException ? "Squished Potato"
- : e instanceof NullPointerException ? "Plain Potato"
- : e instanceof StackOverflowError ? "Chips" : "Error Potato");
- for (Player dev : devsOnline) {
- potato.Send(dev);
+ try {
+ SendUnsentExceptions();
+ TBMCExceptionEvent event = new TBMCExceptionEvent(sourcemsg, e);
+ Bukkit.getPluginManager().callEvent(event);
+ synchronized (exceptionsToSend) {
+ if (!event.isHandled())
+ exceptionsToSend.put(sourcemsg, e);
+ }
+ Bukkit.getLogger().warning(sourcemsg);
+ e.printStackTrace();
+ if (debugPotato) {
+ List devsOnline = new ArrayList<>();
+ for (Player player : Bukkit.getOnlinePlayers()) {
+ if (coders.contains(player.getName())) {
+ devsOnline.add(player);
+ }
+ }
+ if (!devsOnline.isEmpty()) {
+ DebugPotato potato = new DebugPotato()
+ .setMessage(new String[]{ //
+ "§b§o" + e.getClass().getSimpleName(), //
+ "§c§o" + sourcemsg, //
+ "§a§oFind a dev to fix this issue"})
+ .setType(e instanceof IOException ? "Throwable Potato"
+ : e instanceof ClassCastException ? "Squished Potato"
+ : e instanceof NullPointerException ? "Plain Potato"
+ : e instanceof StackOverflowError ? "Chips" : "Error Potato");
+ for (Player dev : devsOnline) {
+ potato.Send(dev);
+ }
}
}
+ } catch (Exception ee) {
+ System.err.println("Failed to send exception!");
+ ee.printStackTrace();
}
}
@@ -125,6 +127,7 @@ public class TBMCCoreAPI {
}
}
+ private static EventExceptionCoreHandler eventExceptionCoreHandler;
/**
* Registers Bukkit events, handling the exceptions occurring in those events
*
@@ -132,7 +135,8 @@ public class TBMCCoreAPI {
* @param plugin The plugin which the listener belongs to
*/
public static void RegisterEventsForExceptions(Listener listener, Plugin plugin) {
- EventExceptionHandler.registerEvents(listener, plugin, new EventExceptionCoreHandler());
+ if (eventExceptionCoreHandler == null) eventExceptionCoreHandler = new EventExceptionCoreHandler();
+ EventExceptionHandler.registerEvents(listener, plugin, eventExceptionCoreHandler);
}
public static void RegisterUserClass(Class userclass) {
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCDebugMessageEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCDebugMessageEvent.java
index d2cbbdf..36154c2 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCDebugMessageEvent.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCDebugMessageEvent.java
@@ -1,5 +1,6 @@
package buttondevteam.lib;
+import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
@@ -9,6 +10,7 @@ public class TBMCDebugMessageEvent extends Event {
private boolean sent;
public TBMCDebugMessageEvent(String message) {
+ super(!Bukkit.isPrimaryThread());
this.message = message;
}
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCExceptionEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCExceptionEvent.java
index 90c4185..974a52f 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCExceptionEvent.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCExceptionEvent.java
@@ -1,37 +1,43 @@
-package buttondevteam.lib;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.bukkit.event.Event;
-import org.bukkit.event.HandlerList;
-
-/**
- *
- * This event gets called (ideally) each time an exception occurs in a TBMC plugin. To call it, use {@link TBMCCoreAPI#SendException(String, Throwable)}.
- *
+ * This event gets called (ideally) each time an exception occurs in a TBMC plugin. To call it, use {@link TBMCCoreAPI#SendException(String, Throwable)}.
+ *
+ *
+ * @author Norbi
+ *
+ */
+@Getter
+public class TBMCExceptionEvent extends Event {
+ private static final HandlerList handlers = new HandlerList();
+
+ private final String sourceMessage;
+ private final Throwable exception;
+ private boolean handled;
+
+ @java.beans.ConstructorProperties({"sourceMessage", "exception"})
+ public TBMCExceptionEvent(String sourceMessage, Throwable exception) {
+ super(!Bukkit.isPrimaryThread());
+ this.sourceMessage = sourceMessage;
+ this.exception = exception;
+ }
+
+ public void setHandled() {
+ handled = true;
+ }
+
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+}
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java
index c4e7ce1..d22f192 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ButtonPlugin.java
@@ -6,7 +6,6 @@ import buttondevteam.lib.chat.Command2MC;
import buttondevteam.lib.chat.TBMCChatAPI;
import lombok.AccessLevel;
import lombok.Getter;
-import lombok.experimental.var;
import org.bukkit.plugin.java.JavaPlugin;
import java.lang.annotation.ElementType;
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java
index b98466b..582102f 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java
@@ -8,7 +8,6 @@ import buttondevteam.lib.chat.TBMCChatAPI;
import buttondevteam.lib.chat.TBMCCommandBase;
import lombok.Getter;
import lombok.NonNull;
-import lombok.experimental.var;
import lombok.val;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.event.Listener;
@@ -131,10 +130,15 @@ public abstract class Component {
throw new UnregisteredComponentException(component);
if (component.enabled == enabled) return; //Don't do anything
if (component.enabled = enabled) {
+ //System.out.println("Updating config for "+component.getClassName());
updateConfig(component.getPlugin(), component);
+ //System.out.println("Enabling "+component.getClassName());
component.enable();
- if (ButtonPlugin.configGenAllowed(component))
+ if (ButtonPlugin.configGenAllowed(component)) {
+ //System.out.println("Pregenning config for "+component.getClassName());
IHaveConfig.pregenConfig(component, null);
+ }
+ //System.out.println("Done enabling "+component.getClassName());
} else {
component.disable();
component.plugin.saveConfig();
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ConfigData.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ConfigData.java
index b14f7c6..2d74f3e 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/ConfigData.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/ConfigData.java
@@ -1,7 +1,7 @@
package buttondevteam.lib.architecture;
import buttondevteam.core.MainPlugin;
-import buttondevteam.lib.ThorpeUtils;
+import buttondevteam.lib.ChromaUtils;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -101,7 +101,7 @@ public class ConfigData {
return hmm;
}
if (val instanceof Number && def != null)
- val = ThorpeUtils.convertNumber((Number) val,
+ val = ChromaUtils.convertNumber((Number) val,
(Class extends Number>) def.getClass());
if (val instanceof List && def != null && def.getClass().isArray())
val = ((List) val).toArray((T[]) Array.newInstance(def.getClass().getComponentType(), 0));
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/IHaveConfig.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/IHaveConfig.java
index b3d6fbd..2a73e16 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/IHaveConfig.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/IHaveConfig.java
@@ -166,7 +166,8 @@ public final class IHaveConfig {
}
}).filter(Objects::nonNull).collect(Collectors.toList());
} else {
- MainPlugin.Instance.getLogger().warning("Method " + m.getName() + " returns a config but its parameters are unknown: " + Arrays.toString(m.getParameterTypes()));
+ if (TBMCCoreAPI.IsTestServer())
+ MainPlugin.Instance.getLogger().warning("Method " + m.getName() + " returns a config but its parameters are unknown: " + Arrays.toString(m.getParameterTypes()));
continue;
}
for (val c : configList) {
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java
index 020bc84..562de54 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java
@@ -1,14 +1,13 @@
package buttondevteam.lib.chat;
import buttondevteam.core.MainPlugin;
+import buttondevteam.lib.ChromaUtils;
import buttondevteam.lib.TBMCCoreAPI;
-import buttondevteam.lib.ThorpeUtils;
import buttondevteam.lib.player.ChromaGamerBase;
import com.google.common.base.Defaults;
import com.google.common.primitives.Primitives;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
-import lombok.experimental.var;
import lombok.val;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -60,7 +59,7 @@ public abstract class Command2
String[] helpText() default {};
/**
- * The main permission which allows using this command (individual access can be still granted with "thorpe.command.X").
+ * The main permission which allows using this command (individual access can be still granted with "chroma.command.X").
* Used to be "tbmc.admin". The {@link #MOD_GROUP} is provided to use with this.
*/
String permGroup() default ""; //TODO
@@ -109,7 +108,7 @@ public abstract class Command2
public final String errormsg;
}
- private HashMap> subcommands = new HashMap<>();
+ protected HashMap> subcommands = new HashMap<>();
private HashMap, ParamConverter>> paramConverters = new HashMap<>();
private ArrayList commandHelp = new ArrayList<>(); //Mainly needed by Discord
@@ -126,91 +125,107 @@ public abstract class Command2
paramConverters.put(cl, new ParamConverter<>(converter, errormsg));
}
- public boolean handleCommand(TP sender, String commandline) throws Exception {
+ public boolean handleCommand(TP sender, String commandline) {
for (int i = commandline.length(); i != -1; i = commandline.lastIndexOf(' ', i - 1)) {
String subcommand = commandline.substring(0, i).toLowerCase();
SubcommandData sd = subcommands.get(subcommand); //O(1)
if (sd == null) continue;
- if (sd.method == null || sd.command == null) { //Main command not registered, but we have subcommands
- sender.sendMessage(sd.helpText);
- return true;
- }
- if (!hasPermission(sender, sd.command, sd.method)) {
- sender.sendMessage("§cYou don't have permission to use this command");
- return true;
- }
- val params = new ArrayList
*
- * @param plugin
- * The caller plugin
- * @param cmd
- * The command to add
+ * @param plugin The caller plugin
+ * @param cmd The command to add
*/
public static void AddCommand(JavaPlugin plugin, TBMCCommandBase cmd) {
try {
@@ -259,14 +247,14 @@ public class TBMCChatAPI {
/**
* Sends a chat message to Minecraft. Make sure that the channel is registered with {@link #RegisterChatChannel(Channel)}.
- * This will also send the error message to the sender, if they can't send the message.
+ * This will also send the error message to the sender, if they can't send the message.
*
- * @param cm The message to send
+ * @param cm The message to send
* @return The event cancelled state
*/
- public static boolean SendChatMessage(ChatMessage cm) {
- return SendChatMessage(cm, cm.getUser().channel().get());
- }
+ public static boolean SendChatMessage(ChatMessage cm) {
+ return SendChatMessage(cm, cm.getUser().channel().get());
+ }
/**
* Sends a chat message to Minecraft. Make sure that the channel is registered with {@link #RegisterChatChannel(Channel)}.
@@ -278,36 +266,36 @@ public class TBMCChatAPI {
*/
public static boolean SendChatMessage(ChatMessage cm, Channel channel) {
if (!Channel.getChannelList().contains(channel))
- throw new RuntimeException("Channel " + channel.DisplayName().get() + " not registered!");
+ throw new RuntimeException("Channel " + channel.DisplayName().get() + " not registered!");
if (!channel.Enabled().get()) {
cm.getSender().sendMessage("§cThe channel '" + channel.DisplayName().get() + "' is disabled!");
return true; //Cancel sending if channel is disabled
}
- val permcheck = cm.getPermCheck();
- RecipientTestResult rtr = getScoreOrSendError(channel, permcheck);
- int score = rtr.score;
- if (score == Channel.SCORE_SEND_NOPE || rtr.groupID == null)
- return true;
- TBMCChatPreprocessEvent eventPre = new TBMCChatPreprocessEvent(cm.getSender(), channel, cm.getMessage());
- Bukkit.getPluginManager().callEvent(eventPre);
- if (eventPre.isCancelled())
- return true;
- cm.setMessage(eventPre.getMessage());
- TBMCChatEvent event;
- event = new TBMCChatEvent(channel, cm, rtr);
- Bukkit.getPluginManager().callEvent(event);
- return event.isCancelled();
+ Supplier task = () -> {
+ val permcheck = cm.getPermCheck();
+ RecipientTestResult rtr = getScoreOrSendError(channel, permcheck);
+ int score = rtr.score;
+ if (score == Channel.SCORE_SEND_NOPE || rtr.groupID == null)
+ return true;
+ TBMCChatPreprocessEvent eventPre = new TBMCChatPreprocessEvent(cm.getSender(), channel, cm.getMessage());
+ Bukkit.getPluginManager().callEvent(eventPre);
+ if (eventPre.isCancelled())
+ return true;
+ cm.setMessage(eventPre.getMessage());
+ TBMCChatEvent event;
+ event = new TBMCChatEvent(channel, cm, rtr);
+ Bukkit.getPluginManager().callEvent(event);
+ return event.isCancelled();
+ };
+ return ChromaUtils.doItAsync(task, false); //Not cancelled if async
}
/**
* Sends a regular message to Minecraft. Make sure that the channel is registered with {@link #RegisterChatChannel(Channel)}.
- *
- * @param channel
- * The channel to send to
- * @param rtr
- * The score&group to use to find the group - use {@link RecipientTestResult#ALL} if the channel doesn't have scores
- * @param message
- * The message to send
+ *
+ * @param channel The channel to send to
+ * @param rtr The score&group to use to find the group - use {@link RecipientTestResult#ALL} if the channel doesn't have scores
+ * @param message The message to send
* @param exceptions Platforms where this message shouldn't be sent (same as {@link ChatMessage#getOrigin()}
* @return The event cancelled state
*/
@@ -319,8 +307,7 @@ public class TBMCChatAPI {
if (!Arrays.asList(exceptions).contains("Minecraft"))
Bukkit.getConsoleSender().sendMessage("[" + channel.DisplayName().get() + "] " + message);
TBMCSystemChatEvent event = new TBMCSystemChatEvent(channel, message, rtr.score, rtr.groupID, exceptions, target);
- Bukkit.getPluginManager().callEvent(event);
- return event.isCancelled();
+ return ChromaUtils.callEventAsync(event);
}
private static RecipientTestResult getScoreOrSendError(Channel channel, CommandSender sender) {
@@ -332,9 +319,8 @@ public class TBMCChatAPI {
/**
* Register a chat channel. See {@link Channel#Channel(String, Color, String, java.util.function.Function)} for details.
- *
- * @param channel
- * A new {@link Channel} to register
+ *
+ * @param channel A new {@link Channel} to register
*/
public static void RegisterChatChannel(Channel channel) {
Channel.RegisterChannel(channel);
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerGetInfoEvent.java b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerGetInfoEvent.java
index 5e63713..471a5f6 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerGetInfoEvent.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/player/TBMCPlayerGetInfoEvent.java
@@ -24,6 +24,7 @@ public class TBMCPlayerGetInfoEvent extends Event {
private final InfoTarget target;
TBMCPlayerGetInfoEvent(ChromaGamerBase player, InfoTarget target) {
+ super(true);
this.player = player;
infolines = new ArrayList<>();
this.target = target;
diff --git a/ButtonCore/src/main/resources/plugin.yml b/ButtonCore/src/main/resources/plugin.yml
index 29bfbb1..81c2ccf 100755
--- a/ButtonCore/src/main/resources/plugin.yml
+++ b/ButtonCore/src/main/resources/plugin.yml
@@ -1,4 +1,4 @@
-name: ThorpeCore
+name: ChromaCore
main: buttondevteam.core.MainPlugin
version: 1.0
author: TBMCPlugins
@@ -20,4 +20,5 @@ depend:
- Vault
softdepend:
- Towny
- - Votifier
\ No newline at end of file
+ - Votifier
+ - Multiverse-Core
\ No newline at end of file
diff --git a/ButtonCore/src/test/java/buttondevteam/core/PlayerDataTest.java b/ButtonCore/src/test/java/buttondevteam/core/PlayerDataTest.java
index 13433bf..1b9c808 100755
--- a/ButtonCore/src/test/java/buttondevteam/core/PlayerDataTest.java
+++ b/ButtonCore/src/test/java/buttondevteam/core/PlayerDataTest.java
@@ -6,9 +6,14 @@ import buttondevteam.lib.player.TBMCPlayerBase;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
-import org.apache.commons.io.FileUtils;
import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.UUID;
public class PlayerDataTest extends TestCase {
@@ -25,7 +30,30 @@ public class PlayerDataTest extends TestCase {
public void testConfig() throws Exception {
TestPrepare.PrepareServer();
- FileUtils.deleteDirectory(new File(ChromaGamerBase.TBMC_PLAYERS_DIR));
+ //FileUtils.deleteDirectory(new File(ChromaGamerBase.TBMC_PLAYERS_DIR));
+ File file = new File(ChromaGamerBase.TBMC_PLAYERS_DIR);
+ if (file.exists()) {
+ Files.walkFileTree(file.toPath(), new SimpleFileVisitor() {
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
+ throws IOException {
+ Files.delete(file);
+ return FileVisitResult.CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult postVisitDirectory(Path dir, IOException e)
+ throws IOException {
+ if (e == null) {
+ Files.delete(dir);
+ return FileVisitResult.CONTINUE;
+ } else {
+ // directory iteration failed
+ throw e;
+ }
+ }
+ });
+ }
UUID uuid = new UUID(0L, 0L);
try (TestPlayerClass p = TBMCPlayerBase.getPlayer(uuid, TestPlayerClass.class)) {
p.PlayerName().set("Test");
diff --git a/ButtonProcessor/ButtonProcessor.iml b/ButtonProcessor/ButtonProcessor.iml
index 35bfd14..a6bf3b9 100755
--- a/ButtonProcessor/ButtonProcessor.iml
+++ b/ButtonProcessor/ButtonProcessor.iml
@@ -1,6 +1,11 @@
+
+
+
+
+
@@ -8,6 +13,7 @@
+
@@ -20,5 +26,6 @@
+
\ No newline at end of file
diff --git a/ButtonProcessor/pom.xml b/ButtonProcessor/pom.xml
index 401e62c..35626d7 100755
--- a/ButtonProcessor/pom.xml
+++ b/ButtonProcessor/pom.xml
@@ -38,8 +38,6 @@
maven-compiler-plugin
- 1.8
- 1.8-proc:none
diff --git a/CorePOM/CorePOM.iml b/CorePOM/CorePOM.iml
new file mode 100644
index 0000000..0e07dc2
--- /dev/null
+++ b/CorePOM/CorePOM.iml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CorePOM/pom.xml b/CorePOM/pom.xml
new file mode 100755
index 0000000..024d7eb
--- /dev/null
+++ b/CorePOM/pom.xml
@@ -0,0 +1,108 @@
+
+ 4.0.0
+
+ com.github.TBMCPlugins.ButtonCore
+ CorePOM
+ pom
+ master-SNAPSHOT
+
+ 1.18.10
+
+ Core POM for Chroma
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 8
+
+
+ com.github.bsideup.jabel
+ jabel-javac-plugin
+ 0.2.0
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+ com.github.TBMCPlugins.ButtonCore
+ ButtonProcessor
+ master-SNAPSHOT
+
+
+
+ com.github.bsideup.jabel.JabelJavacProcessor
+ lombok.launch.AnnotationProcessorHider$AnnotationProcessor
+
+ buttondevteam.buttonproc.ButtonProcessor
+
+
+
+
+ maven-surefire-plugin
+
+ false
+
+
+
+
+
+
+
+
+
+ jitpack.io
+ https://jitpack.io/
+
+
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+
+
+
+ intellij-idea-only
+
+
+ idea.maven.embedder.version
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 13
+
+ --enable-preview
+
+
+
+
+
+
+
+
diff --git a/jitpack.yml b/jitpack.yml
deleted file mode 100755
index c7962cb..0000000
--- a/jitpack.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-jdk:
- - oraclejdk8
-#before_install:
-# - ./prepareEnvironment.sh
-install:
- - echo "Downloading Towny JAR..."
- - 'wget -O "Towny.jar" --header="Accept-Language: en-us,en;q=0.5" http://palmergames.com/file-repo/Towny%20Advanced/Development/0.94.0.3/Towny.jar'
- - mvn install:install-file -Dfile=Towny.jar -DgroupId=com.github.TBMCPlugins.ButtonCore -DartifactId=Towny -Dversion=master-SNAPSHOT -Dpackaging=jar
- - mvn clean install -DskipTests
-# - rm -r ~/.m2/repository/com/palmergames/Towny/
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 9529df4..935e426 100755
--- a/pom.xml
+++ b/pom.xml
@@ -1,49 +1,59 @@
-
- 4.0.0
-
- com.github.TBMCPlugins
- ButtonCore
- pom
- master-SNAPSHOT
- ButtonCore Parent
-
-
- ButtonCore
- ButtonProcessor
- BuildConfigUpdater
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.3
-
- 1.8
- 1.8
-
-
-
- maven-surefire-plugin
-
- false
-
-
-
-
-
-
-
-
- junit
- junit
- 3.8.1
- test
-
-
+
+ 4.0.0
+
+ com.github.TBMCPlugins
+ ButtonCore
+ pom
+ master-SNAPSHOT
+
+ 1.18.10
+
+ ButtonCore Parent
+
+
+ CorePOM
+ ButtonCore
+ ButtonProcessor
+ BuildConfigUpdater
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 8
+
+
+
+ maven-surefire-plugin
+
+ false
+
+
+
+
+
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
\ No newline at end of file