From a7967e9b1ef7816f1082e0f7191a063844cf45e6 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Tue, 27 Aug 2019 20:10:12 +0200 Subject: [PATCH 1/3] Do not require WorldEdit for CuboidRegion --- .../java/de/diddiz/LogBlock/QueryParams.java | 8 +--- .../LogBlock/listeners/ToolListener.java | 2 +- .../{worldedit => util}/CuboidRegion.java | 36 +--------------- .../de/diddiz/worldedit/WorldEditHelper.java | 43 ++++++++++++++++++- 4 files changed, 45 insertions(+), 44 deletions(-) rename src/main/java/de/diddiz/{worldedit => util}/CuboidRegion.java (51%) diff --git a/src/main/java/de/diddiz/LogBlock/QueryParams.java b/src/main/java/de/diddiz/LogBlock/QueryParams.java index 4af9a46..5c1c46a 100644 --- a/src/main/java/de/diddiz/LogBlock/QueryParams.java +++ b/src/main/java/de/diddiz/LogBlock/QueryParams.java @@ -2,8 +2,8 @@ package de.diddiz.LogBlock; import de.diddiz.LogBlock.config.Config; import de.diddiz.util.BukkitUtils; +import de.diddiz.util.CuboidRegion; import de.diddiz.util.Utils; -import de.diddiz.worldedit.CuboidRegion; import de.diddiz.worldedit.WorldEditHelper; import org.bukkit.Location; @@ -792,11 +792,7 @@ public final class QueryParams implements Cloneable { if (player == null) { throw new IllegalArgumentException("You have to be a player to use selection"); } - if (WorldEditHelper.hasWorldEdit()) { - setSelection(CuboidRegion.fromPlayerSelection(player)); - } else { - throw new IllegalArgumentException("WorldEdit not found!"); - } + setSelection(WorldEditHelper.getSelectedRegion(player)); } else if (param.equals("time") || param.equals("since")) { since = values.length > 0 ? parseTimeSpec(values) : defaultTime; if (since == -1) { diff --git a/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java b/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java index 342eb39..df889d7 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java @@ -2,7 +2,7 @@ package de.diddiz.LogBlock.listeners; import de.diddiz.LogBlock.*; import de.diddiz.util.BukkitUtils; -import de.diddiz.worldedit.CuboidRegion; +import de.diddiz.util.CuboidRegion; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.block.Block; diff --git a/src/main/java/de/diddiz/worldedit/CuboidRegion.java b/src/main/java/de/diddiz/util/CuboidRegion.java similarity index 51% rename from src/main/java/de/diddiz/worldedit/CuboidRegion.java rename to src/main/java/de/diddiz/util/CuboidRegion.java index 15dc1cc..a704609 100644 --- a/src/main/java/de/diddiz/worldedit/CuboidRegion.java +++ b/src/main/java/de/diddiz/util/CuboidRegion.java @@ -1,16 +1,7 @@ -package de.diddiz.worldedit; - -import com.sk89q.worldedit.IncompleteRegionException; -import com.sk89q.worldedit.LocalSession; -import com.sk89q.worldedit.bukkit.BukkitAdapter; -import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldedit.regions.Region; +package de.diddiz.util; import org.bukkit.Location; import org.bukkit.World; -import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; import org.bukkit.util.BlockVector; public class CuboidRegion implements Cloneable { @@ -29,31 +20,6 @@ public class CuboidRegion implements Cloneable { this.max.setZ(Math.max(first.getBlockZ(), second.getBlockZ())); } - public static CuboidRegion fromPlayerSelection(Player player) { - Plugin worldEditPlugin = player.getServer().getPluginManager().getPlugin("WorldEdit"); - LocalSession session = ((WorldEditPlugin) worldEditPlugin).getSession(player); - World world = player.getWorld(); - com.sk89q.worldedit.world.World weWorld = BukkitAdapter.adapt(world); - if (!weWorld.equals(session.getSelectionWorld())) { - throw new IllegalArgumentException("No selection defined"); - } - Region selection; - try { - selection = session.getSelection(weWorld); - } catch (IncompleteRegionException e) { - throw new IllegalArgumentException("No selection defined"); - } - if (selection == null) { - throw new IllegalArgumentException("No selection defined"); - } - if (!(selection instanceof com.sk89q.worldedit.regions.CuboidRegion)) { - throw new IllegalArgumentException("You have to define a cuboid selection"); - } - BlockVector3 min = selection.getMinimumPoint(); - BlockVector3 max = selection.getMaximumPoint(); - return new CuboidRegion(world, new BlockVector(min.getBlockX(), min.getBlockY(), min.getBlockZ()), new BlockVector(max.getBlockX(), max.getBlockY(), max.getBlockZ())); - } - public static CuboidRegion fromCorners(World world, Location first, Location second) { return new CuboidRegion(world, new BlockVector(first.getBlockX(), first.getBlockY(), first.getBlockZ()), new BlockVector(second.getBlockX(), second.getBlockY(), second.getBlockZ())); } diff --git a/src/main/java/de/diddiz/worldedit/WorldEditHelper.java b/src/main/java/de/diddiz/worldedit/WorldEditHelper.java index 2df370d..b3cf56f 100644 --- a/src/main/java/de/diddiz/worldedit/WorldEditHelper.java +++ b/src/main/java/de/diddiz/worldedit/WorldEditHelper.java @@ -11,10 +11,12 @@ import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; - +import org.bukkit.util.BlockVector; import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.DoubleTag; import com.sk89q.jnbt.FloatTag; @@ -24,11 +26,15 @@ import com.sk89q.jnbt.NBTOutputStream; import com.sk89q.jnbt.NamedTag; import com.sk89q.jnbt.ShortTag; import com.sk89q.jnbt.Tag; +import com.sk89q.worldedit.IncompleteRegionException; +import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.WorldEditPlugin; import com.sk89q.worldedit.entity.BaseEntity; - +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.regions.Region; import de.diddiz.LogBlock.LogBlock; +import de.diddiz.util.CuboidRegion; public class WorldEditHelper { private static boolean checkedForWorldEdit; @@ -58,9 +64,19 @@ public class WorldEditHelper { } public static Entity restoreEntity(Location location, EntityType type, byte[] serialized) { + if (!hasWorldEdit()) { + return null; + } return Internal.restoreEntity(location, type, serialized); } + public static CuboidRegion getSelectedRegion(Player player) throws IllegalArgumentException { + if (!hasWorldEdit()) { + throw new IllegalArgumentException("WorldEdit not found!"); + } + return Internal.getSelectedRegion(player); + } + private static class Internal { private static WorldEditPlugin worldEdit; private static Method getBukkitImplAdapter; @@ -133,5 +149,28 @@ public class WorldEditHelper { return null; } + public static CuboidRegion getSelectedRegion(Player player) throws IllegalArgumentException { + LocalSession session = worldEdit.getSession(player); + World world = player.getWorld(); + com.sk89q.worldedit.world.World weWorld = BukkitAdapter.adapt(world); + if (!weWorld.equals(session.getSelectionWorld())) { + throw new IllegalArgumentException("No selection defined"); + } + Region selection; + try { + selection = session.getSelection(weWorld); + } catch (IncompleteRegionException e) { + throw new IllegalArgumentException("No selection defined"); + } + if (selection == null) { + throw new IllegalArgumentException("No selection defined"); + } + if (!(selection instanceof com.sk89q.worldedit.regions.CuboidRegion)) { + throw new IllegalArgumentException("You have to define a cuboid selection"); + } + BlockVector3 min = selection.getMinimumPoint(); + BlockVector3 max = selection.getMaximumPoint(); + return new CuboidRegion(world, new BlockVector(min.getBlockX(), min.getBlockY(), min.getBlockZ()), new BlockVector(max.getBlockX(), max.getBlockY(), max.getBlockZ())); + } } } From cd38ac986685f7af6085a6163083d13618c61578 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Tue, 27 Aug 2019 22:30:37 +0200 Subject: [PATCH 2/3] Remove unused methods --- src/main/java/de/diddiz/util/UUIDFetcher.java | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/src/main/java/de/diddiz/util/UUIDFetcher.java b/src/main/java/de/diddiz/util/UUIDFetcher.java index 54a86fb..1368dc3 100644 --- a/src/main/java/de/diddiz/util/UUIDFetcher.java +++ b/src/main/java/de/diddiz/util/UUIDFetcher.java @@ -8,7 +8,6 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; -import java.nio.ByteBuffer; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -31,7 +30,7 @@ public class UUIDFetcher { JSONObject jsonProfile = (JSONObject) profile; String id = (String) jsonProfile.get("id"); String name = (String) jsonProfile.get("name"); - UUID uuid = UUIDFetcher.getUUID(id); + UUID uuid = getUUID(id); uuidMap.put(name, uuid); } return uuidMap; @@ -58,22 +57,4 @@ public class UUIDFetcher { private static UUID getUUID(String id) { return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" + id.substring(20, 32)); } - - public static byte[] toBytes(UUID uuid) { - ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]); - byteBuffer.putLong(uuid.getMostSignificantBits()); - byteBuffer.putLong(uuid.getLeastSignificantBits()); - return byteBuffer.array(); - } - - public static UUID fromBytes(byte[] array) { - if (array.length != 16) { - throw new IllegalArgumentException("Illegal byte array length: " + array.length); - } - ByteBuffer byteBuffer = ByteBuffer.wrap(array); - long mostSignificant = byteBuffer.getLong(); - long leastSignificant = byteBuffer.getLong(); - return new UUID(mostSignificant, leastSignificant); - } - } From 921df872d14df240bb6252b0f0b81039963cd210 Mon Sep 17 00:00:00 2001 From: TheMolkaPL Date: Fri, 27 Sep 2019 02:17:54 +0200 Subject: [PATCH 3/3] Expose useSSL flag to config --- src/main/java/de/diddiz/LogBlock/LogBlock.java | 2 +- src/main/java/de/diddiz/LogBlock/config/Config.java | 3 +++ src/main/java/de/diddiz/util/MySQLConnectionPool.java | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/diddiz/LogBlock/LogBlock.java b/src/main/java/de/diddiz/LogBlock/LogBlock.java index 09185ef..91acee3 100644 --- a/src/main/java/de/diddiz/LogBlock/LogBlock.java +++ b/src/main/java/de/diddiz/LogBlock/LogBlock.java @@ -72,7 +72,7 @@ public class LogBlock extends JavaPlugin { } try { getLogger().info("Connecting to " + user + "@" + url + "..."); - pool = new MySQLConnectionPool(url, user, password, mysqlRequireSSL); + pool = new MySQLConnectionPool(url, user, password, mysqlUseSSL, mysqlRequireSSL); final Connection conn = getConnection(true); if (conn == null) { noDb = true; diff --git a/src/main/java/de/diddiz/LogBlock/config/Config.java b/src/main/java/de/diddiz/LogBlock/config/Config.java index e91a906..103f349 100644 --- a/src/main/java/de/diddiz/LogBlock/config/Config.java +++ b/src/main/java/de/diddiz/LogBlock/config/Config.java @@ -25,6 +25,7 @@ public class Config { private static LoggingEnabledMapping superWorldConfig; private static Map worldConfigs; public static String url, user, password; + public static boolean mysqlUseSSL; public static boolean mysqlRequireSSL; public static int delayBetweenRuns, forceToProcessAtLeast, timePerRun; public static boolean fireCustomEvents; @@ -82,6 +83,7 @@ public class Config { def.put("mysql.database", "minecraft"); def.put("mysql.user", "username"); def.put("mysql.password", "pass"); + def.put("mysql.useSSL", true); def.put("mysql.requireSSL", false); def.put("consumer.delayBetweenRuns", 2); def.put("consumer.forceToProcessAtLeast", 200); @@ -167,6 +169,7 @@ public class Config { url = "jdbc:mysql://" + config.getString("mysql.host") + ":" + config.getInt("mysql.port") + "/" + getStringIncludingInts(config, "mysql.database"); user = getStringIncludingInts(config, "mysql.user"); password = getStringIncludingInts(config, "mysql.password"); + mysqlUseSSL = config.getBoolean("mysql.useSSL", true); mysqlRequireSSL = config.getBoolean("mysql.requireSSL", false); delayBetweenRuns = config.getInt("consumer.delayBetweenRuns", 2); forceToProcessAtLeast = config.getInt("consumer.forceToProcessAtLeast", 0); diff --git a/src/main/java/de/diddiz/util/MySQLConnectionPool.java b/src/main/java/de/diddiz/util/MySQLConnectionPool.java index 1b3d871..b064d70 100644 --- a/src/main/java/de/diddiz/util/MySQLConnectionPool.java +++ b/src/main/java/de/diddiz/util/MySQLConnectionPool.java @@ -11,7 +11,7 @@ public class MySQLConnectionPool implements Closeable { private final HikariDataSource ds; - public MySQLConnectionPool(String url, String user, String password, boolean requireSSL) { + public MySQLConnectionPool(String url, String user, String password, boolean useSSL, boolean requireSSL) { this.ds = new HikariDataSource(); ds.setJdbcUrl(url); ds.setUsername(user); @@ -30,7 +30,7 @@ public class MySQLConnectionPool implements Closeable { ds.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); ds.addDataSourceProperty("useServerPrepStmts", "true"); - ds.addDataSourceProperty("useSSL", "true"); + ds.addDataSourceProperty("useSSL", Boolean.toString(useSSL)); ds.addDataSourceProperty("requireSSL", Boolean.toString(requireSSL)); ds.addDataSourceProperty("verifyServerCertificate", "false"); }