Compare commits

...
Sign in to create a new pull request.

5 commits

Author SHA1 Message Date
94d1fde563
Merge remote-tracking branch 'upstream' 2025-01-25 00:29:02 -03:00
9e26b370dd
fix: whoops 2024-11-01 11:29:00 -03:00
85fe8525d8
fix: tweak spawner restrictions 2024-11-01 11:28:04 -03:00
70f7134de9
fix: restrict spawners, a lot
LOL! Whoops!
2024-09-29 18:19:03 -03:00
a58ef649cf
fix: highly experimental (and hacky!) patch for kick exploit 2024-09-29 12:46:02 -03:00
2 changed files with 15 additions and 58 deletions
src/main/java/pw/kaboom/extras/modules

View file

@ -3,15 +3,12 @@ package pw.kaboom.extras.modules.entity;
import java.util.concurrent.ThreadLocalRandom;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.CreatureSpawner;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.AreaEffectCloud;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.LightningStrike;
import org.bukkit.entity.Slime;
import org.bukkit.entity.TNTPrimed;
@ -23,13 +20,10 @@ import org.bukkit.event.block.TNTPrimeEvent;
import org.bukkit.event.entity.AreaEffectCloudApplyEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.event.entity.ExplosionPrimeEvent;
import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.event.entity.SpawnerSpawnEvent;
import org.bukkit.event.vehicle.VehicleCreateEvent;
import org.bukkit.event.weather.LightningStrikeEvent;
import com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent;
import com.destroystokyo.paper.event.entity.PreSpawnerSpawnEvent;
import org.bukkit.plugin.java.JavaPlugin;
import pw.kaboom.extras.Main;
@ -130,28 +124,6 @@ public final class EntitySpawn implements Listener {
}
}
private void limitSpawner(final CreatureSpawner spawner) {
if (EntityType.MINECART_MOB_SPAWNER.equals(spawner.getSpawnedType())) {
spawner.setSpawnedType(EntityType.MINECART);
}
if (spawner.getDelay() > 100) {
spawner.setMaxSpawnDelay(100);
spawner.setDelay(100);
spawner.update();
}
if (spawner.getSpawnCount() > 200) {
spawner.setSpawnCount(200);
spawner.update();
}
if (spawner.getSpawnRange() > 50) {
spawner.setSpawnRange(50);
spawner.update();
}
}
@EventHandler
void onAreaEffectCloudApply(final AreaEffectCloudApplyEvent event) {
limitAreaEffectCloudRadius(event.getEntity());
@ -185,15 +157,6 @@ public final class EntitySpawn implements Listener {
applyEntityChanges(entity);
}
@EventHandler
void onItemSpawn(final ItemSpawnEvent event) {
try {
event.getEntity().getItemStack().getItemMeta();
} catch (Exception exception) {
event.setCancelled(true);
}
}
@EventHandler
void onLightningStrike(final LightningStrikeEvent event) {
final LightningStrike lightning = event.getLightning();
@ -217,27 +180,6 @@ public final class EntitySpawn implements Listener {
}
}
@EventHandler
void onPreSpawnerSpawn(final PreSpawnerSpawnEvent event) {
try {
limitSpawner((CreatureSpawner) event.getSpawnerLocation().getBlock().getState());
} catch (Exception exception) {
event.setCancelled(true);
}
}
@EventHandler
void onSpawnerSpawn(final SpawnerSpawnEvent event) {
if (EntityType.FALLING_BLOCK.equals(event.getEntityType())) {
final FallingBlock block = (FallingBlock) event.getEntity();
if (block.getBlockData().getMaterial().equals(Material.SPAWNER)) {
event.setCancelled(true);
event.getSpawner().setSpawnedType(EntityType.FALLING_BLOCK);
}
}
}
@EventHandler
void onTNTPrime(final TNTPrimeEvent event) {
if (event.getBlock()

View file

@ -36,6 +36,19 @@ public final class ServerCommand implements Listener {
return false;
}
public static boolean checkValidUTF8(final String component) {
int len = component.length();
for (int i = 0; i < component.length(); i++) {
int c = component.charAt(i);
if (c == 0 || c >= 128) {
len += c >= 2048 ? 2 : 1;
}
}
return len <= 65535;
}
private static String checkSelectors(final String[] arr) {
final String[] args = Arrays.copyOfRange(arr, 1, arr.length);
final String str = String.join(" ", args);
@ -75,6 +88,8 @@ public final class ServerCommand implements Listener {
commandName = "/" + arr[1].toLowerCase();
}
if (!checkValidUTF8(command)) return "cancel";
try {
switch (commandName) {
case "/minecraft:execute", "/execute" -> {