mirror of
https://github.com/TotalFreedomMC/VulnerabilityPatcher.git
synced 2025-02-05 06:12:46 +00:00
Commit v1.7
Added new patches but also eased up on old patches for 1.16 that were causing problems.
This commit is contained in:
parent
058c89ecbb
commit
c325ec9374
12 changed files with 134 additions and 31 deletions
|
@ -2,12 +2,18 @@
|
|||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="4038a6e9-7d52-4dd0-91ef-d9a12aa1c1b2" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Beehives.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Skulls.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/Variables.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/Variables.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/VulnerabilityPatcher.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_13_2.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_13_2.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_14.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_14.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_15.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_15.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_16.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/modifiers/NBTModifier_1_16.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Disconnect_Items.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Patches.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/config.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/config.yml" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
|
|
@ -3,16 +3,11 @@ package me.cooljwb.vulnerabilitypatcher;
|
|||
import me.cooljwb.vulnerabilitypatcher.commands.CommandGetLag;
|
||||
import me.cooljwb.vulnerabilitypatcher.commands.CommandGetNBT;
|
||||
import me.cooljwb.vulnerabilitypatcher.commands.CommandVulnerabilityPatcher;
|
||||
import me.cooljwb.vulnerabilitypatcher.events.DisconnectionAid;
|
||||
import me.cooljwb.vulnerabilitypatcher.patches.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.potion.Potion;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
@ -144,6 +139,8 @@ public final class VulnerabilityPatcher extends JavaPlugin {
|
|||
case "Handswitch": listeners.add(new Handswitch()); break;
|
||||
case "Fireworks": listeners.add(new Fireworks()); break;
|
||||
case "Chests": listeners.add(new Chests()); break;
|
||||
case "Beehives": listeners.add(new Beehives()); break;
|
||||
case "Skulls": listeners.add(new Skulls()); break;
|
||||
} // Adds all events to the event register.
|
||||
}
|
||||
listeners.forEach(listener -> Bukkit.getPluginManager().registerEvents(listener, this)); // Register the events.
|
||||
|
|
|
@ -322,4 +322,22 @@ public class NBTModifier {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isDangerousSkull(ItemStack item) {
|
||||
switch(getVersion()) {
|
||||
case "1.13.2":
|
||||
nbt_1_13_2.isDangerousSkull(item);
|
||||
break;
|
||||
case "1.14":
|
||||
nbt_1_14.isDangerousSkull(item);
|
||||
break;
|
||||
case "1.15":
|
||||
nbt_1_15.isDangerousSkull(item);
|
||||
break;
|
||||
case "1.16":
|
||||
nbt_1_16.isDangerousSkull(item);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -275,7 +275,7 @@ public class NBTModifier_1_13_2 {
|
|||
}
|
||||
}
|
||||
|
||||
else if(item.toString().length() > 60000 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
else if(item.toString().length() > 262140 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
fired_countermeasure("isLargeNBTDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
@ -356,4 +356,14 @@ public class NBTModifier_1_13_2 {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
boolean isDangerousSkull(ItemStack item) {
|
||||
if(item != null && item.hasItemMeta()) {
|
||||
NBTTagCompound tag = CraftItemStack.asNMSCopy(item).getTag();
|
||||
|
||||
if (tag != null && tag.hasKey("SkullOwner") && tag.getString("SkullOwner").trim().equals("")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -294,7 +294,7 @@ public class NBTModifier_1_14 {
|
|||
}
|
||||
}
|
||||
|
||||
else if(item.toString().length() > 60000 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
else if(item.toString().length() > 262140 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
fired_countermeasure("isLargeNBTDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
@ -375,4 +375,14 @@ public class NBTModifier_1_14 {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
boolean isDangerousSkull(ItemStack item) {
|
||||
if(item != null && item.hasItemMeta()) {
|
||||
NBTTagCompound tag = CraftItemStack.asNMSCopy(item).getTag();
|
||||
|
||||
if (tag != null && tag.hasKey("SkullOwner") && tag.getString("SkullOwner").trim().equals("")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -296,7 +296,7 @@ public class NBTModifier_1_15 {
|
|||
}
|
||||
}
|
||||
|
||||
else if(item.toString().length() > 65535 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
else if(item.toString().length() > 262140 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
fired_countermeasure("isLargeNBTDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
@ -377,4 +377,15 @@ public class NBTModifier_1_15 {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isDangerousSkull(ItemStack item) {
|
||||
if(item != null && item.hasItemMeta()) {
|
||||
NBTTagCompound tag = CraftItemStack.asNMSCopy(item).getTag();
|
||||
|
||||
if (tag != null && tag.hasKey("SkullOwner") && tag.getString("SkullOwner").trim().equals("")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -297,10 +297,14 @@ public class NBTModifier_1_16 {
|
|||
}
|
||||
}
|
||||
|
||||
else if(item.toString().length() > 131070 || isMovementDisconnectItem(item) || isInvalidAttributeName(item)) {
|
||||
else if(item.toString().length() > 262140) {
|
||||
fired_countermeasure("isLargeNBTDisconnectItem");
|
||||
return true;
|
||||
}
|
||||
|
||||
else if(isMovementDisconnectItem(item) /*|| isInvalidAttributeName(item)*/) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -341,6 +345,11 @@ public class NBTModifier_1_16 {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does not have any use as this is patched in newer versions and only causes issues.
|
||||
*/
|
||||
@Deprecated
|
||||
private boolean isInvalidAttributeName(NBTTagCompound tag) {
|
||||
if(tag != null) {
|
||||
NBTTagList attrlist = tag.getList("AttributeModifiers", 10);
|
||||
|
@ -378,4 +387,15 @@ public class NBTModifier_1_16 {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isDangerousSkull(ItemStack item) {
|
||||
if(item != null && item.hasItemMeta()) {
|
||||
NBTTagCompound tag = CraftItemStack.asNMSCopy(item).getTag();
|
||||
|
||||
if (tag != null && tag.hasKey("SkullOwner") && tag.getString("SkullOwner").trim().equals("")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import org.bukkit.block.EntityBlockStorage;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
|
||||
public class Beehives extends Patches {
|
||||
@EventHandler
|
||||
public void onBlockPlace(BlockPlaceEvent event) {
|
||||
switch(getVersion()) {
|
||||
case "1.15":
|
||||
case "1.16":
|
||||
if (event.getBlockPlaced().getState() instanceof EntityBlockStorage) {
|
||||
clearItemMeta(event.getItemInHand()); // Remove all NBT traces from all entity block storages.
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,18 +3,15 @@ package me.cooljwb.vulnerabilitypatcher.patches;
|
|||
import me.cooljwb.vulnerabilitypatcher.SMG;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.*;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.block.CraftJukebox;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.block.data.CraftBlockData;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftItem;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.block.Jukebox;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockDispenseEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||
|
@ -23,15 +20,9 @@ import org.bukkit.event.inventory.InventoryClickEvent;
|
|||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.material.MaterialData;
|
||||
import org.bukkit.potion.Potion;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/*
|
||||
* Copyright 2019 CoolJWB
|
||||
*
|
||||
|
@ -100,7 +91,7 @@ public class Disconnect_Items extends Patches implements Listener {
|
|||
}
|
||||
}
|
||||
|
||||
if(itemSize.length() >= 65535) {
|
||||
if(itemSize.length() >= 262140) {
|
||||
event.setCancelled(true);
|
||||
clearItemMeta(container.getInventory().getContents());
|
||||
}
|
||||
|
@ -238,7 +229,7 @@ public class Disconnect_Items extends Patches implements Listener {
|
|||
inventoryString.append(itemToString(item));
|
||||
}
|
||||
|
||||
if(inventoryString.length() >= 65535) {
|
||||
if(inventoryString.length() >= 262140) {
|
||||
event.setCancelled(true);
|
||||
clearItemMeta(container.getInventory().getContents());
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import me.cooljwb.vulnerabilitypatcher.SMG;
|
||||
import me.cooljwb.vulnerabilitypatcher.VulnerabilityPatcher;
|
||||
import me.cooljwb.vulnerabilitypatcher.modifiers.NBTModifier;
|
||||
|
@ -11,8 +9,6 @@ import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
|||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeModifier;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -22,7 +18,6 @@ import org.bukkit.event.Listener;
|
|||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
@ -156,7 +151,7 @@ public class Patches extends NBTModifier implements Listener {
|
|||
double speedX = event.getTo().getX() - event.getFrom().getX();
|
||||
double speedY = event.getTo().getY() - event.getFrom().getY();
|
||||
double speedZ = event.getTo().getZ() - event.getFrom().getZ();
|
||||
double speed = speedX + speedY + speedZ;
|
||||
double speed = Math.abs(speedX) + Math.abs(speedY) + Math.abs(speedZ);
|
||||
|
||||
if(speed > 5 || speed < -5) {
|
||||
event.setCancelled(true);
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package me.cooljwb.vulnerabilitypatcher.patches;
|
||||
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class Skulls extends Patches implements Listener {
|
||||
@EventHandler
|
||||
public void onBlockPlace(BlockPlaceEvent event) {
|
||||
if(event.getBlockPlaced().getState() instanceof Container) {
|
||||
Container container = (Container) event.getBlockPlaced().getState();
|
||||
for(ItemStack item : container.getInventory()) {
|
||||
if(item != null) {
|
||||
if(isDangerousSkull(item)) {
|
||||
clearItemMeta(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
# VulnerabilityPatcher by CoolJWB.
|
||||
|
||||
# Patches: DeathPotions, DeathItems, CrashItems, Books, RougeEntity, Arrows, Riptide, FollowRange, DisconnectItems, EntityTag, Blocks, StructureBlocks, Chunks, ItemFrames.
|
||||
# Patches: DeathPotions, DeathItems, CrashItems, Books, RougeEntity, Arrows, Riptide, FollowRange, DisconnectItems,
|
||||
# EntityTag, Blocks, StructureBlocks, Chunks, ItemFrames, Handswitch, Fireworks, Chests, Beehives, Skulls.
|
||||
# All patches added in the list below will be activated on server startup.
|
||||
Patches:
|
||||
- DeathPotions # Potions that kill creative players
|
||||
|
@ -20,6 +21,8 @@ Patches:
|
|||
- Handswitch # Hand switcher hack that crashes clients and possibly the server
|
||||
- Fireworks # Lags the clients when too many effects
|
||||
- Chests # Disables chest drops fully to avoid large item drops
|
||||
- Beehives # Removes all NBT data from any EntityBlockStorage such as beehives
|
||||
- Skulls # Purges empty skull owner IDs
|
||||
|
||||
# All entities added below will be blocked to use in a spawn egg.
|
||||
BlockedEntityTags:
|
||||
|
|
Loading…
Reference in a new issue