diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f78c7f56..3f65d1a0 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -38,7 +38,7 @@ jobs: uses: actions/checkout@v3 - name: Setup Java JDK - uses: actions/setup-java@v3.6.0 + uses: actions/setup-java@v3.9.0 with: # The Java version to make available on the path. Takes a whole or semver Java version, or 1.x syntax (e.g. 1.8 => Java 8.x). Early access versions can be specified in the form of e.g. 14-ea, 14.0.0-ea, or 14.0.0-ea.28 java-version: 17 diff --git a/.github/workflows/java17-maven.yml b/.github/workflows/java17-maven.yml index acfd0653..d4f15b30 100644 --- a/.github/workflows/java17-maven.yml +++ b/.github/workflows/java17-maven.yml @@ -13,7 +13,7 @@ jobs: # Java 16 Builds - name: Set up JDK 17 - uses: actions/setup-java@v3.6.0 + uses: actions/setup-java@v3.9.0 with: java-version: 17 distribution: 'adopt' diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java index 9ebe649f..4436ac19 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java @@ -172,6 +172,11 @@ public class InteractBlocker extends FreedomService } case WRITTEN_BOOK: { + if (ConfigEntry.ALLOW_BOOKS.getBoolean()) + { + break; + } + player.getInventory().clear(player.getInventory().getHeldItemSlot()); player.sendMessage(ChatColor.GRAY + "Books are currently disabled."); event.setCancelled(true); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java index a5dfe67b..28b7c428 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java @@ -5,6 +5,7 @@ import java.util.List; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.Groups; +import net.coreprotect.CoreProtectAPI; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -22,7 +23,7 @@ import org.bukkit.entity.Player; public class Command_ro extends FreedomCommand { - public static int replaceBlocks(Location center, Material fromMaterial, Material toMaterial, int radius) + private int removeBlocks(Location center, Material material, int radius, String user) { int affected = 0; @@ -35,11 +36,17 @@ public class Command_ro extends FreedomCommand { Block block = centerBlock.getRelative(xOffset, yOffset, zOffset); BlockData data = block.getBlockData(); + CoreProtectAPI cpAPI = plugin.cpb.getCoreProtectAPI(); + if (block.getLocation().distanceSquared(center) < (radius * radius)) { - if (fromMaterial.equals(Material.WATER) && data instanceof Waterlogged) + if (material.equals(Material.WATER) && data instanceof Waterlogged waterloggedData) { - Waterlogged waterloggedData = (Waterlogged)data; + if (cpAPI != null) + { + cpAPI.logRemoval(user, block.getLocation(), material, data); + } + if (waterloggedData.isWaterlogged()) { waterloggedData.setWaterlogged(false); @@ -47,12 +54,18 @@ public class Command_ro extends FreedomCommand affected++; continue; } - block.setType(toMaterial); + + block.setType(Material.AIR); affected++; } - else if (block.getType().equals(fromMaterial)) + else if (block.getType().equals(material)) { - block.setType(toMaterial); + if (cpAPI != null) + { + cpAPI.logRemoval(user, block.getLocation(), material, data); + } + + block.setType(Material.AIR); affected++; } } @@ -155,7 +168,7 @@ public class Command_ro extends FreedomCommand for (final Material material : materials) { - affected += replaceBlocks(player.getLocation(), material, Material.AIR, radius); + affected += removeBlocks(player.getLocation(), material, radius, sender.getName()); } } } @@ -166,7 +179,7 @@ public class Command_ro extends FreedomCommand FUtil.adminAction(sender.getName(), "Removing all " + names + " within " + radius + " blocks of " + targetPlayer.getName(), false); for (Material material : materials) { - affected += replaceBlocks(targetPlayer.getLocation(), material, Material.AIR, radius); + affected += removeBlocks(targetPlayer.getLocation(), material, radius, sender.getName()); } } } diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java index e10a9430..308ce7a3 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java @@ -19,7 +19,7 @@ public class Command_toggle extends FreedomCommand private final List toggles = Arrays.asList( "waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk", "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]", - "explosives [radius]", "unsafeenchs", "bells", "armorstands", "masterblocks", "grindstones", + "explosives [radius]", "unsafeenchs", "bells", "armorstands", "masterblocks", "books", "grindstones", "jukeboxes", "spawners", "4chan", "beehives", "respawnanchors", "autotp", "autoclear", "minecarts", "mp44", "landmines", "tossmob", "gravity"); @@ -199,6 +199,12 @@ public class Command_toggle extends FreedomCommand break; } + case "books": + { + toggle("Books are", ConfigEntry.ALLOW_BOOKS); + break; + } + case "grindstones": { toggle("Grindstones are", ConfigEntry.ALLOW_GRINDSTONES); diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index 019d7843..aad8c8aa 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -34,6 +34,7 @@ public enum ConfigEntry AUTO_CLEAR(Boolean.class, "allow.auto_clear"), ALLOW_GRAVITY(Boolean.class, "allow.gravity"), ALLOW_MASTERBLOCKS(Boolean.class, "allow.masterblocks"), + ALLOW_BOOKS(Boolean.class, "allow.books"), // BLOCKED_CHATCODES(String.class, "blocked_chatcodes"), // diff --git a/commons/src/main/resources/config.yml b/commons/src/main/resources/config.yml index dea8a9f3..6631fedb 100644 --- a/commons/src/main/resources/config.yml +++ b/commons/src/main/resources/config.yml @@ -220,6 +220,7 @@ allow: auto_clear: false gravity: false masterblocks: false + books: true blocked_commands: #