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

@ -12,6 +12,7 @@ import me.totalfreedom.totalfreedommod.blocking.BlockBlocker;
import me.totalfreedom.totalfreedommod.blocking.EditBlocker; import me.totalfreedom.totalfreedommod.blocking.EditBlocker;
import me.totalfreedom.totalfreedommod.blocking.EventBlocker; import me.totalfreedom.totalfreedommod.blocking.EventBlocker;
import me.totalfreedom.totalfreedommod.blocking.InteractBlocker; import me.totalfreedom.totalfreedommod.blocking.InteractBlocker;
import me.totalfreedom.totalfreedommod.blocking.InventoryBlocker;
import me.totalfreedom.totalfreedommod.blocking.MobBlocker; import me.totalfreedom.totalfreedommod.blocking.MobBlocker;
import me.totalfreedom.totalfreedommod.blocking.PVPBlocker; import me.totalfreedom.totalfreedommod.blocking.PVPBlocker;
import me.totalfreedom.totalfreedommod.blocking.PotionBlocker; import me.totalfreedom.totalfreedommod.blocking.PotionBlocker;
@ -87,6 +88,7 @@ public class TotalFreedomMod extends AeroPlugin<TotalFreedomMod>
public MobBlocker mb; public MobBlocker mb;
public InteractBlocker ib; public InteractBlocker ib;
public PotionBlocker pb; public PotionBlocker pb;
public InventoryBlocker inb;
public LoginProcess lp; public LoginProcess lp;
public AntiNuke nu; public AntiNuke nu;
public AntiSpam as; public AntiSpam as;
@ -194,6 +196,7 @@ public class TotalFreedomMod extends AeroPlugin<TotalFreedomMod>
mb = services.registerService(MobBlocker.class); mb = services.registerService(MobBlocker.class);
ib = services.registerService(InteractBlocker.class); ib = services.registerService(InteractBlocker.class);
pb = services.registerService(PotionBlocker.class); pb = services.registerService(PotionBlocker.class);
inb = services.registerService(InventoryBlocker.class);
lp = services.registerService(LoginProcess.class); lp = services.registerService(LoginProcess.class);
nu = services.registerService(AntiNuke.class); nu = services.registerService(AntiNuke.class);
as = services.registerService(AntiSpam.class); as = services.registerService(AntiSpam.class);

View File

@ -118,11 +118,13 @@ public class BlockBlocker extends FreedomService
break; break;
} }
case SPAWNER: case SPAWNER:
{
player.sendMessage(ChatColor.GRAY + "Spawners are disabled."); player.sendMessage(ChatColor.GRAY + "Spawners are disabled.");
player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1));
event.setCancelled(true); event.setCancelled(true);
break; 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;
}
}