From 17eb698e289f43e75919deca0c6d783c61d4c3e6 Mon Sep 17 00:00:00 2001 From: mibby Date: Sat, 27 Aug 2016 19:58:45 -0700 Subject: [PATCH 1/3] Move sign-update() to break listener This fixes an infinite loop crash where the sign update calls the piston event and the update again and again. Also signs can't even be pushed by pistons... --- .../Acrobot/ChestShop/Listeners/Block/Break/SignBreak.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/Acrobot/ChestShop/Listeners/Block/Break/SignBreak.java b/src/main/java/com/Acrobot/ChestShop/Listeners/Block/Break/SignBreak.java index 905bcda..70754f8 100644 --- a/src/main/java/com/Acrobot/ChestShop/Listeners/Block/Break/SignBreak.java +++ b/src/main/java/com/Acrobot/ChestShop/Listeners/Block/Break/SignBreak.java @@ -63,6 +63,9 @@ public class SignBreak implements Listener { public static void onSignBreak(BlockBreakEvent event) { if (!canBlockBeBroken(event.getBlock(), event.getPlayer())) { event.setCancelled(true); + if (isSign(event.getBlock())) { + event.getBlock().getState().update(); + } } } @@ -118,7 +121,6 @@ public class SignBreak implements Listener { boolean canBeBroken = true; for (Sign sign : attachedSigns) { - sign.update(); if (!canBeBroken || !ChestShopSign.isValid(sign)) { continue; From 8c7594be51bc6053a30a111e8ac3c15acd280bce Mon Sep 17 00:00:00 2001 From: mibby Date: Sat, 27 Aug 2016 20:09:09 -0700 Subject: [PATCH 2/3] Revert PlayerKick Behavior Partial revert of 'Do not let people with already used usernames connect to the server' commit. See comments here https://github.com/Acrobot/ChestShop-3/commit/b0369d8e69c9035c29756756a3794c5277001882#commitcomment-14185778 and here. https://github.com/Acrobot/ChestShop-3/commit/c169df2265ef5aa679e47bd4f1acbd64f40cb19e#commitcomment-12846919 I personally believe ChestShops should not dictate whether a player is allowed to connect to the server or not. I personally have had issues with ChestShops kicking legitimate players from the server in online mode. --- .../ChestShop/Listeners/Player/PlayerConnect.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/main/java/com/Acrobot/ChestShop/Listeners/Player/PlayerConnect.java b/src/main/java/com/Acrobot/ChestShop/Listeners/Player/PlayerConnect.java index 56233f1..ec18498 100644 --- a/src/main/java/com/Acrobot/ChestShop/Listeners/Player/PlayerConnect.java +++ b/src/main/java/com/Acrobot/ChestShop/Listeners/Player/PlayerConnect.java @@ -27,18 +27,6 @@ public class PlayerConnect implements Listener { String playerName = NameUtil.stripUsername(playerDTO.getName()); UUID uuid = NameManager.getUUID(playerName); - if (uuid != null && !playerDTO.getUniqueId().equals(uuid)) { - Bukkit.getScheduler().runTask(ChestShop.getPlugin(), new Runnable() { - @Override - public void run() { - Bukkit.getPlayer(playerDTO.getUniqueId()).kickPlayer("[ChestShop]" + - "Unfortunately, this username was already used by " + - "another player."); - - } - }); - } - NameManager.storeUsername(playerDTO); } }); From 58258c858fcba249fca6f52cea784f583e7c0de0 Mon Sep 17 00:00:00 2001 From: mibby Date: Sat, 27 Aug 2016 20:20:46 -0700 Subject: [PATCH 3/3] Re-add database suppression. Re-add database suppression for SQLite driver start-up log warnings. https://dev.bukkit.org/bukkit-plugins/chestshop/tickets/1059-warning-you-seem-to-not-be-using-the-xerial-sqlite/ https://dev.bukkit.org/bukkit-plugins/chestshop/tickets/1086-error-com-acrobot-chest-shop-ormlite-db-sqlite-database/ --- .../java/com/Acrobot/ChestShop/ChestShop.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main/java/com/Acrobot/ChestShop/ChestShop.java b/src/main/java/com/Acrobot/ChestShop/ChestShop.java index 05147a7..a2b1ce5 100644 --- a/src/main/java/com/Acrobot/ChestShop/ChestShop.java +++ b/src/main/java/com/Acrobot/ChestShop/ChestShop.java @@ -38,6 +38,15 @@ import com.Acrobot.ChestShop.Signs.RestrictedSign; import com.Acrobot.ChestShop.UUIDs.NameManager; import com.Acrobot.ChestShop.Updater.Updater; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.LoggerConfig; +import org.apache.logging.log4j.core.filter.AbstractFilter; +import org.apache.logging.log4j.message.Message; + import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.configuration.file.YamlConfiguration; @@ -82,6 +91,7 @@ public class ChestShop extends JavaPlugin { Configuration.pairFileAndClass(loadFile("config.yml"), Properties.class); Configuration.pairFileAndClass(loadFile("local.yml"), Messages.class); + turnOffDatabaseLogging(); handleMigrations(); itemDatabase = new ItemDatabase(); @@ -115,6 +125,46 @@ public class ChestShop extends JavaPlugin { startUpdater(); } + private void turnOffDatabaseLogging() { + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + org.apache.logging.log4j.core.config.Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(""); + + loggerConfig.addFilter(new AbstractFilter() { + @Override + public Result filter(org.apache.logging.log4j.core.Logger logger, Level level, Marker marker, String msg, Object... params) { + return filter(logger.getName(), level); + } + + @Override + public Result filter(org.apache.logging.log4j.core.Logger logger, Level level, Marker marker, Object msg, Throwable t) { + return filter(logger.getName(), level); + } + + @Override + public Result filter(org.apache.logging.log4j.core.Logger logger, Level level, Marker marker, Message msg, Throwable t) { + return filter(logger.getName(), level); + } + + @Override + public Result filter(LogEvent event) { + return filter(event.getLoggerName(), event.getLevel()); + } + + private Result filter(String classname, Level level) { + if (level.isAtLeastAsSpecificAs(Level.ERROR) && !classname.contains("SqliteDatabaseType")) { + return Result.NEUTRAL; + } + + if (classname.contains("SqliteDatabaseType") || classname.contains("TableUtils")) { + return Result.DENY; + } else { + return Result.NEUTRAL; + } + } + }); + } + private void handleMigrations() { File versionFile = loadFile("version"); YamlConfiguration previousVersion = YamlConfiguration.loadConfiguration(versionFile);