From feee6a0ebefd07ebc3528245fa009c919018b2aa Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sun, 18 Aug 2019 18:20:50 +0200 Subject: [PATCH] MemberComponent fix, better error handling --- .../java/buttondevteam/core/ComponentManager.java | 2 +- .../core/component/members/MemberComponent.java | 11 ++++++++++- .../src/main/java/buttondevteam/lib/TBMCCoreAPI.java | 4 +++- 3 files changed, 14 insertions(+), 3 deletions(-) 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/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/lib/TBMCCoreAPI.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java index 35a33b7..7e8939b 100755 --- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java @@ -127,6 +127,7 @@ public class TBMCCoreAPI { } } + private static EventExceptionCoreHandler eventExceptionCoreHandler; /** * Registers Bukkit events, handling the exceptions occurring in those events * @@ -134,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) {