1.17.1
This commit removed the book limiter in SAH, the source of dupes on an old MC version, this is now patched by paper itself.
This commit is contained in:
1 parent
a425393d8a
commit
e4967f711d
2 files changed
+2
-78
No files matched your search
@@ -20,7 +20,7 @@
|
||||
<dependency>
|
||||
<groupId>io.papermc.paper</groupId>
|
||||
<artifactId>paper</artifactId>
|
||||
<version>1.17-R0.1-SNAPSHOT</version>
|
||||
<version>1.17.1-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -50,7 +50,7 @@
|
||||
<dependency>
|
||||
<groupId>com.comphenix.protocol</groupId>
|
||||
<artifactId>ProtocolLib</artifactId>
|
||||
<version>4.7.0-SNAPSHOT</version>
|
||||
<version>4.7.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -1,24 +1,10 @@
|
||||
package com.programmerdan.minecraft.simpleadminhacks.hacks;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketAdapter;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.destroystokyo.paper.PaperConfig;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Strings;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.SimpleAdminHacks;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.configs.GameFixesConfig;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.framework.SimpleHack;
|
||||
import com.programmerdan.minecraft.simpleadminhacks.framework.utilities.PacketManager;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.logging.Level;
|
||||
import net.minecraft.nbt.NBTBase;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.nbt.NBTTagString;
|
||||
import net.minecraft.network.protocol.game.PacketPlayInBEdit;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
@@ -59,7 +45,6 @@ import org.bukkit.inventory.InventoryHolder;
|
||||
public class GameFixes extends SimpleHack<GameFixesConfig> implements Listener {
|
||||
|
||||
public static final String NAME = "GameFixes";
|
||||
public static final String NULL_STRING = "\u0000";
|
||||
|
||||
private final PacketManager protocol = new PacketManager();
|
||||
|
||||
@@ -67,67 +52,6 @@ public class GameFixes extends SimpleHack<GameFixesConfig> implements Listener {
|
||||
super(plugin, config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
super.onEnable();
|
||||
this.plugin.registerListener(this);
|
||||
if (this.config.hardLimitBookPageSize()) {
|
||||
this.protocol.addAdapter(new PacketAdapter(this.plugin, PacketType.Play.Client.B_EDIT) {
|
||||
@Override
|
||||
public void onPacketReceiving(final PacketEvent event) {
|
||||
final PacketContainer packet = event.getPacket();
|
||||
final Player player = event.getPlayer();
|
||||
final String errorMessage = "DUPE ALERT! " + player.getName() + " sent an over sized book packet!";
|
||||
final int maxBookPageSize = PaperConfig.maxBookPageSize;
|
||||
final int maxBookPageLength = 256 * 4;
|
||||
// NMS ItemStack, not Bukkit
|
||||
final ItemStack item = ((PacketPlayInBEdit) packet.getHandle()).b();
|
||||
final String[] pages = getStringArray("pages", item.getTag());
|
||||
if (pages.length > maxBookPageSize) {
|
||||
plugin().warning(errorMessage);
|
||||
plugin().warning("- Too many pages! [" + pages.length + "/" + maxBookPageSize + "]");
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
for (final String page : pages) {
|
||||
final byte[] raw = page.getBytes(StandardCharsets.UTF_8);
|
||||
if (raw.length > maxBookPageLength) {
|
||||
plugin().warning(errorMessage);
|
||||
plugin().warning("- Page too long! [" + raw.length + "/" + maxBookPageLength + "]");
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public String[] getStringArray(String key, NBTTagCompound tag) {
|
||||
Preconditions.checkArgument(!Strings.isNullOrEmpty(key));
|
||||
if (tag == null) {
|
||||
return new String[0];
|
||||
}
|
||||
NBTTagList list = tag.getList(key, 8);
|
||||
String[] result = new String[list.size()];
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
NBTBase base = list.get(i);
|
||||
if (base.getTypeId() != 8) {
|
||||
result[i] = "";
|
||||
}
|
||||
else if (!(base instanceof NBTTagString)) {
|
||||
result[i] = "";
|
||||
}
|
||||
else {
|
||||
result[i] = base.asString();
|
||||
if (result[i].equals(NULL_STRING)) {
|
||||
result[i] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
this.protocol.removeAllAdapters();
|
||||
|
||||
Reference in new issue
Block a user