patch jukebox exploit (#157)

he beat seth omg
This commit is contained in:
Super_
2019-11-25 23:08:13 -05:00
committed by Robinson Gallego
parent 07e0b4e2c8
commit 9f22115b30
3 changed files with 68 additions and 0 deletions

View File

@ -118,10 +118,12 @@ public class BlockBlocker extends FreedomService
break;
}
case SPAWNER:
{
player.sendMessage(ChatColor.GRAY + "Spawners are disabled.");
player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1));
event.setCancelled(true);
break;
}
}
}

View File

@ -0,0 +1,63 @@
package me.totalfreedom.totalfreedommod.blocking;
import me.totalfreedom.totalfreedommod.FreedomService;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import net.minecraft.server.v1_14_R1.NBTTagCompound;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
public class InventoryBlocker extends FreedomService
{
public InventoryBlocker(TotalFreedomMod plugin)
{
super(plugin);
}
private BukkitTask inventoryChecker;
@Override
protected void onStart()
{
inventoryChecker = new BukkitRunnable()
{
@Override
public void run()
{
for (Player player : Bukkit.getOnlinePlayers())
{
Inventory inv = player.getInventory();
for (int i = 0; i < inv.getSize(); i++)
{
ItemStack item = inv.getItem(i);
if (item == null)
continue;
if (!item.hasItemMeta())
continue;
if (item.getType() == Material.JUKEBOX)
{
if (!CraftItemStack.asNMSCopy(item).hasTag())
continue;
net.minecraft.server.v1_14_R1.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
NBTTagCompound compound = nmsItem.getTag();
compound.set("BlockEntityTag", null);
inv.setItem(i, new ItemStack(CraftItemStack.asBukkitCopy(nmsItem)));
}
}
}
}
}.runTaskTimer(plugin, 0L, 1);
}
@Override
protected void onStop()
{
inventoryChecker.cancel();
inventoryChecker = null;
}
}