3
0
Mirror von https://github.com/Moulberry/AxiomPaperPlugin.git synchronisiert 2024-11-09 01:50:05 +01:00

Implement whitelist-world-regex and blacklist-world-regex config options

Dieser Commit ist enthalten in:
Moulberry 2023-11-07 13:23:17 +08:00
Ursprung a76aaba3d0
Commit eb1a1cd9cd
7 geänderte Dateien mit 39 neuen und 19 gelöschten Zeilen

Datei anzeigen

@ -2,6 +2,7 @@ package com.moulberry.axiom;
import com.moulberry.axiom.buffer.CompressedBlockEntity;
import com.moulberry.axiom.event.AxiomCreateWorldPropertiesEvent;
import com.moulberry.axiom.event.AxiomModifyWorldEvent;
import com.moulberry.axiom.packet.*;
import com.moulberry.axiom.world_properties.server.ServerWorldPropertiesRegistry;
import com.moulberry.axiom.world_properties.server.ServerWorldProperty;
@ -175,6 +176,22 @@ public class AxiomPaper extends JavaPlugin implements Listener {
}
}
public boolean canModifyWorld(Player player, World world) {
String whitelist = this.configuration.getString("whitelist-world-regex");
if (whitelist != null && !world.getName().matches(whitelist)) {
return false;
}
String blacklist = this.configuration.getString("blacklist-world-regex");
if (blacklist != null && world.getName().matches(blacklist)) {
return false;
}
AxiomModifyWorldEvent modifyWorldEvent = new AxiomModifyWorldEvent(player, world);
Bukkit.getPluginManager().callEvent(modifyWorldEvent);
return !modifyWorldEvent.isCancelled();
}
@EventHandler
public void onFailMove(PlayerFailMoveEvent event) {
if (event.getPlayer().hasPermission("axiom.*")) {

Datei anzeigen

@ -1,5 +1,6 @@
package com.moulberry.axiom.event;
import com.moulberry.axiom.AxiomPaper;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;

Datei anzeigen

@ -51,10 +51,7 @@ public class RequestChunkDataPacketListener implements PluginMessageListener {
return;
}
// Call AxiomModifyWorldEvent event
AxiomModifyWorldEvent modifyWorldEvent = new AxiomModifyWorldEvent(bukkitPlayer, bukkitPlayer.getWorld());
Bukkit.getPluginManager().callEvent(modifyWorldEvent);
if (modifyWorldEvent.isCancelled()) {
if (!this.plugin.canModifyWorld(bukkitPlayer, bukkitPlayer.getWorld())) {
sendEmptyResponse(player, id);
return;
}

Datei anzeigen

@ -96,10 +96,9 @@ public class SetBlockBufferPacketListener {
return;
}
// Call AxiomModifyWorldEvent event
AxiomModifyWorldEvent modifyWorldEvent = new AxiomModifyWorldEvent(player.getBukkitEntity(), world.getWorld());
Bukkit.getPluginManager().callEvent(modifyWorldEvent);
if (modifyWorldEvent.isCancelled()) return;
if (!this.plugin.canModifyWorld(player.getBukkitEntity(), world.getWorld())) {
return;
}
// Allowed, apply buffer
BlockPos.MutableBlockPos blockPos = new BlockPos.MutableBlockPos();
@ -257,10 +256,9 @@ public class SetBlockBufferPacketListener {
return;
}
// Call AxiomModifyWorldEvent event
AxiomModifyWorldEvent modifyWorldEvent = new AxiomModifyWorldEvent(player.getBukkitEntity(), world.getWorld());
Bukkit.getPluginManager().callEvent(modifyWorldEvent);
if (modifyWorldEvent.isCancelled()) return;
if (!this.plugin.canModifyWorld(player.getBukkitEntity(), world.getWorld())) {
return;
}
Set<LevelChunk> changedChunks = new HashSet<>();

Datei anzeigen

@ -65,10 +65,9 @@ public class SetBlockPacketListener implements PluginMessageListener {
return;
}
// Check if player is allowed to modify this world
AxiomModifyWorldEvent modifyWorldEvent = new AxiomModifyWorldEvent(bukkitPlayer, bukkitPlayer.getWorld());
Bukkit.getPluginManager().callEvent(modifyWorldEvent);
if (modifyWorldEvent.isCancelled()) return;
if (!this.plugin.canModifyWorld(bukkitPlayer, bukkitPlayer.getWorld())) {
return;
}
// Read packet
FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(Unpooled.wrappedBuffer(message));

Datei anzeigen

@ -40,9 +40,9 @@ public class SetTimePacketListener implements PluginMessageListener {
if (!level.dimension().equals(key)) return;
// Call modify world
AxiomModifyWorldEvent modifyWorldEvent = new AxiomModifyWorldEvent(player, player.getWorld());
Bukkit.getPluginManager().callEvent(modifyWorldEvent);
if (modifyWorldEvent.isCancelled()) return;
if (!this.plugin.canModifyWorld(player, player.getWorld())) {
return;
}
// Call time change event
AxiomTimeChangeEvent timeChangeEvent = new AxiomTimeChangeEvent(player, time, freezeTime);

Datei anzeigen

@ -20,6 +20,14 @@ unsupported-axiom-version: "kick"
# Maximum packet size. Must not be less than 32767
max-block-buffer-packet-size: 0x100000
# Regex for whitelisting worlds
# The world can only be modified if the regex matches the world's name
whitelist-world-regex: null
# Regex for blacklisting worlds
# If the regex matches the world's name, the world can't be modified
blacklist-world-regex: null
# Toggles for individual packet handlers. May break certain features
packet-handlers:
hello: true