mirror of
https://github.com/Dreeam-qwq/Gale.git
synced 2025-12-23 00:39:22 +00:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@8fd3a67 [ci skip] Clean up book limits patch (#11297) PaperMC/Paper@dae906b Add getWorld method that uses adventure Key (#11199) PaperMC/Paper@ba1b016 Allow server administrators to disable book size checks (#10457) PaperMC/Paper@a8cb8e6 [ci skip] Fix JavaDocs for HeightMap#MOTION_BLOCKING_NO_LEAVES (#11291) PaperMC/Paper@e4b38b4 Fixup config parsing PaperMC/Paper@3271119 Fix SculkBloomEvent firing for block entity loading (#11306)
85 lines
5.1 KiB
Diff
85 lines
5.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martijn Muijsers <martijnmuijsers@live.nl>
|
|
Date: Mon, 26 Dec 2022 02:11:29 +0100
|
|
Subject: [PATCH] Make book writing configurable
|
|
|
|
License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
|
Gale - https://galemc.org
|
|
|
|
This patch is based on the following patch:
|
|
"Add option to disable books"
|
|
By: Kevin Raneri <kevin.raneri@gmail.com>
|
|
As part of: Pufferfish (https://github.com/pufferfish-gg/Pufferfish)
|
|
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
|
|
|
* Pufferfish description *
|
|
|
|
Books are commonly the target of duping-related exploits. If you
|
|
anticipate that your server will be an early target of duping attacks in
|
|
the event that new exploits are found, you may want to consider removing
|
|
the ability for non-privileged players to edit books. This patch allows
|
|
you to easily disable books, should you want to preemptively remove this
|
|
functionality before additional exploits are found.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index b13057c0792067cc6b0abdf0d64a9be2cc9389a4..6fad8731eb2aebefddbcc734bd29eb215423d85d 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -193,6 +193,8 @@ import net.minecraft.world.phys.Vec3;
|
|
import net.minecraft.world.phys.shapes.BooleanOp;
|
|
import net.minecraft.world.phys.shapes.Shapes;
|
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
|
+import org.bukkit.craftbukkit.util.permissions.CraftDefaultPermissions;
|
|
+import org.galemc.gale.configuration.GaleGlobalConfiguration;
|
|
import org.slf4j.Logger;
|
|
|
|
// CraftBukkit start
|
|
@@ -1157,6 +1159,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
|
|
|
@Override
|
|
public void handleEditBook(ServerboundEditBookPacket packet) {
|
|
+ // Gale start - Pufferfish - make book writing configurable
|
|
+ if (!(GaleGlobalConfiguration.get().gameplayMechanics.enableBookWriting || this.player.getBukkitEntity().hasPermission(CraftDefaultPermissions.writeBooks) || this.player.getBukkitEntity().hasPermission("pufferfish.usebooks"))) {
|
|
+ return;
|
|
+ }
|
|
+ // Gale end - Pufferfish - make book writing configurable
|
|
// Paper start - Book size limits
|
|
final io.papermc.paper.configuration.type.number.IntOr.Disabled pageMax = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax;
|
|
if (!this.cserver.isPrimaryThread() && pageMax.enabled()) {
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
|
|
index 0a808c5d242b2d9bea82d9d219227fbaf5741bf4..7d66126c1f5957c109a2426d53f5d0072886309b 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java
|
|
@@ -7,6 +7,8 @@ public final class CraftDefaultPermissions {
|
|
private static final String ROOT = "minecraft";
|
|
public static final String GALE_ROOT = "gale"; // Gale - set Gale permissions root
|
|
|
|
+ public static final String writeBooks = GALE_ROOT + ".writebooks"; // Gale - Pufferfish - make book writing configurable
|
|
+
|
|
private CraftDefaultPermissions() {}
|
|
|
|
public static void registerCorePermissions() {
|
|
@@ -19,6 +21,7 @@ public final class CraftDefaultPermissions {
|
|
DefaultPermissions.registerPermission(CraftDefaultPermissions.ROOT + ".debugstick.always", "Gives the user the ability to use the debug stick in all game modes", org.bukkit.permissions.PermissionDefault.FALSE/* , parent */); // Paper - should not have this parent, as it's not a "vanilla" utility
|
|
DefaultPermissions.registerPermission(CraftDefaultPermissions.ROOT + ".commandblock", "Gives the user the ability to use command blocks.", org.bukkit.permissions.PermissionDefault.OP, parent); // Paper
|
|
// Spigot end
|
|
+ DefaultPermissions.registerPermission(writeBooks, "Gives the user the ability to write books even when writing books is disabled in the Gale configuration", org.bukkit.permissions.PermissionDefault.OP); // Gale - Pufferfish - make book writing configurable
|
|
parent.recalculatePermissibles();
|
|
}
|
|
}
|
|
diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java
|
|
index d46f952e5e425eb90f8c435276bfc4542e85f6a7..d180ea6099d8fed3cf19f0f32bbfced7df57c9d7 100644
|
|
--- a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java
|
|
+++ b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java
|
|
@@ -35,4 +35,10 @@ public class GaleGlobalConfiguration extends ConfigurationPart {
|
|
|
|
}
|
|
|
|
+ public GameplayMechanics gameplayMechanics;
|
|
+ public class GameplayMechanics extends ConfigurationPart {
|
|
+
|
|
+ public boolean enableBookWriting = true; // Gale - Pufferfish - make book writing configurable
|
|
+
|
|
+ }
|
|
}
|