mirror of
https://github.com/kaboomserver/extras.git
synced 2024-11-24 00:18:10 -05:00
Don't remove player entities
This commit is contained in:
parent
03b66ccb2c
commit
00e7494dce
5 changed files with 99 additions and 31 deletions
|
@ -8,6 +8,7 @@ import java.util.UUID;
|
||||||
|
|
||||||
import javax.net.ssl.HttpsURLConnection;
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class EntitySpawn implements Listener {
|
||||||
|
|
||||||
private boolean checkEntityLimits(EntityType entityType, Chunk chunk, World world, boolean isAddToWorldEvent) {
|
private boolean checkEntityLimits(EntityType entityType, Chunk chunk, World world, boolean isAddToWorldEvent) {
|
||||||
final int chunkEntityCount = chunk.getEntities().length;
|
final int chunkEntityCount = chunk.getEntities().length;
|
||||||
final int chunkEntityCountLimit = 50;
|
final int chunkEntityCountLimit = 30;
|
||||||
|
|
||||||
final int worldDragonCount = world.getEntitiesByClass(EnderDragon.class).size();
|
final int worldDragonCount = world.getEntitiesByClass(EnderDragon.class).size();
|
||||||
final int worldDragonCountLimit = 24;
|
final int worldDragonCountLimit = 24;
|
||||||
|
@ -214,7 +214,8 @@ public class EntitySpawn implements Listener {
|
||||||
final EntityType entityType = entity.getType();
|
final EntityType entityType = entity.getType();
|
||||||
final boolean isAddToWorldEvent = true;
|
final boolean isAddToWorldEvent = true;
|
||||||
|
|
||||||
if (checkEntityLimits(entityType, chunk, world, isAddToWorldEvent)) {
|
if (checkEntityLimits(entityType, chunk, world, isAddToWorldEvent)
|
||||||
|
&& entity.getType() != EntityType.PLAYER) {
|
||||||
entity.remove();
|
entity.remove();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
package pw.kaboom.extras.modules.player;
|
package pw.kaboom.extras.modules.player;
|
||||||
|
|
||||||
|
import com.destroystokyo.paper.profile.PlayerProfile;
|
||||||
|
import com.destroystokyo.paper.profile.ProfileProperty;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
@ -8,19 +12,27 @@ import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
import org.bukkit.event.player.*;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
|
||||||
import org.bukkit.event.player.PlayerKickEvent;
|
|
||||||
import org.bukkit.event.player.PlayerLoginEvent;
|
|
||||||
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import pw.kaboom.extras.Main;
|
import pw.kaboom.extras.Main;
|
||||||
import pw.kaboom.extras.helpers.SkinDownloader;
|
import pw.kaboom.extras.helpers.SkinDownloader;
|
||||||
|
|
||||||
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
|
||||||
public final class PlayerConnection implements Listener {
|
public final class PlayerConnection implements Listener {
|
||||||
|
private PlayerProfile profile;
|
||||||
|
private String texture;
|
||||||
|
private String signature;
|
||||||
|
|
||||||
/*public static boolean isIllegalItem(ItemStack item) {
|
/*public static boolean isIllegalItem(ItemStack item) {
|
||||||
//try {
|
//try {
|
||||||
if (item != null &&
|
if (item != null &&
|
||||||
|
@ -45,6 +57,15 @@ public final class PlayerConnection implements Listener {
|
||||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "A player with that username is already logged in");
|
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "A player with that username is already logged in");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
profile = event.getPlayerProfile();
|
||||||
|
profile.clearProperties();
|
||||||
|
|
||||||
|
fetchSkinData(event.getName());
|
||||||
|
profile.setProperty(new ProfileProperty("textures", texture, signature));
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,6 +78,13 @@ public final class PlayerConnection implements Listener {
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerCommandSend(final PlayerCommandSendEvent event) {
|
||||||
|
if (event.getPlayer().isOnline()) {
|
||||||
|
event.getCommands().clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
void onPlayerJoin(final PlayerJoinEvent event) {
|
void onPlayerJoin(final PlayerJoinEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
|
@ -93,8 +121,6 @@ public final class PlayerConnection implements Listener {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Player player = event.getPlayer();
|
|
||||||
|
|
||||||
if (!JavaPlugin.getPlugin(Main.class).getConfig().getBoolean("enableJoinRestrictions")) {
|
if (!JavaPlugin.getPlugin(Main.class).getConfig().getBoolean("enableJoinRestrictions")) {
|
||||||
event.allow();
|
event.allow();
|
||||||
}
|
}
|
||||||
|
@ -104,16 +130,18 @@ public final class PlayerConnection implements Listener {
|
||||||
event.allow();
|
event.allow();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (JavaPlugin.getPlugin(Main.class).getConfig().getBoolean("opOnJoin")) {
|
final Player player = event.getPlayer();
|
||||||
player.setOp(true);
|
|
||||||
|
try {
|
||||||
|
player.setPlayerProfile(profile);
|
||||||
|
profile = null;
|
||||||
|
} catch (Exception ignored) {
|
||||||
}
|
}
|
||||||
|
|
||||||
final String name = player.getName();
|
if (JavaPlugin.getPlugin(Main.class).getConfig().getBoolean("opOnJoin")
|
||||||
final boolean shouldChangeUsername = false;
|
&& !player.isOp()) {
|
||||||
final boolean shouldSendMessage = false;
|
player.setOp(true);
|
||||||
|
}
|
||||||
SkinDownloader skinDownloader = new SkinDownloader();
|
|
||||||
skinDownloader.applySkin(player, name, shouldChangeUsername, shouldSendMessage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
@ -140,4 +168,19 @@ public final class PlayerConnection implements Listener {
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void fetchSkinData(final String playerName) throws IOException {
|
||||||
|
final URL skinUrl = new URL("https://api.ashcon.app/mojang/v2/user/" + playerName);
|
||||||
|
HttpsURLConnection skinConnection = (HttpsURLConnection) skinUrl.openConnection();
|
||||||
|
skinConnection.setConnectTimeout(0);
|
||||||
|
|
||||||
|
InputStreamReader skinStream = new InputStreamReader(skinConnection.getInputStream());
|
||||||
|
final JsonObject responseJson = new JsonParser().parse(skinStream).getAsJsonObject();
|
||||||
|
final JsonObject rawSkin = responseJson.getAsJsonObject("textures").getAsJsonObject("raw");
|
||||||
|
texture = rawSkin.get("value").getAsString();
|
||||||
|
signature = rawSkin.get("signature").getAsString();
|
||||||
|
|
||||||
|
skinStream.close();
|
||||||
|
skinConnection.disconnect();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import org.bukkit.block.BlockFace;
|
||||||
|
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.ExperienceOrb;
|
import org.bukkit.entity.ExperienceOrb;
|
||||||
|
import org.bukkit.entity.HumanEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
@ -19,6 +20,8 @@ import org.bukkit.event.Listener;
|
||||||
|
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
import org.bukkit.event.entity.EntityRegainHealthEvent;
|
||||||
|
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
@ -34,6 +37,24 @@ public final class PlayerDamage implements Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onEntityRegainHealth(final EntityRegainHealthEvent event) {
|
||||||
|
if (event.getAmount() < 0) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onFoodLevelChange(final FoodLevelChangeEvent event) {
|
||||||
|
final HumanEntity player = event.getEntity();
|
||||||
|
|
||||||
|
if (player.getMaxHealth() <= 0) {
|
||||||
|
player.setMaxHealth(Double.POSITIVE_INFINITY);
|
||||||
|
player.setHealth(20);
|
||||||
|
player.setMaxHealth(20);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
void onPlayerDeath(final PlayerDeathEvent event) {
|
void onPlayerDeath(final PlayerDeathEvent event) {
|
||||||
final Player player = event.getEntity();
|
final Player player = event.getEntity();
|
||||||
|
@ -43,20 +64,20 @@ public final class PlayerDamage implements Listener {
|
||||||
onlinePlayer.sendMessage(event.getDeathMessage());
|
onlinePlayer.sendMessage(event.getDeathMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getKeepInventory()) {
|
|
||||||
player.getInventory().clear();
|
|
||||||
|
|
||||||
for (ItemStack item : event.getDrops()) {
|
|
||||||
player.getWorld().dropItemNaturally(player.getLocation(), item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.getDroppedExp() > 0) {
|
|
||||||
ExperienceOrb xp = player.getWorld().spawn(player.getLocation(), ExperienceOrb.class);
|
|
||||||
xp.setExperience(event.getDroppedExp());
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if (!event.getKeepInventory()) {
|
||||||
|
player.getInventory().clear();
|
||||||
|
|
||||||
|
for (ItemStack item : event.getDrops()) {
|
||||||
|
player.getWorld().dropItemNaturally(player.getLocation(), item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getDroppedExp() > 0) {
|
||||||
|
ExperienceOrb xp = player.getWorld().spawn(player.getLocation(), ExperienceOrb.class);
|
||||||
|
xp.setExperience(event.getDroppedExp());
|
||||||
|
}
|
||||||
|
|
||||||
maxHealth.setBaseValue(20);
|
maxHealth.setBaseValue(20);
|
||||||
player.setHealth(20);
|
player.setHealth(20);
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,10 @@ public final class ServerCommand implements Listener {
|
||||||
|| "fill".equalsIgnoreCase(arr[i + 1])
|
|| "fill".equalsIgnoreCase(arr[i + 1])
|
||||||
|| "particle".equalsIgnoreCase(arr[i + 1])
|
|| "particle".equalsIgnoreCase(arr[i + 1])
|
||||||
|| "save-off".equalsIgnoreCase(arr[i + 1])
|
|| "save-off".equalsIgnoreCase(arr[i + 1])
|
||||||
|
|| "say".equalsIgnoreCase(arr[i + 1])
|
||||||
|| "spreadplayers".equalsIgnoreCase(arr[i + 1])
|
|| "spreadplayers".equalsIgnoreCase(arr[i + 1])
|
||||||
|| "stop".equalsIgnoreCase(arr[i + 1])) {
|
|| "stop".equalsIgnoreCase(arr[i + 1])
|
||||||
|
|| "tellraw".equalsIgnoreCase(arr[i + 1])) {
|
||||||
Command.broadcastCommandMessage(sender, "Forbidden execute command detected");
|
Command.broadcastCommandMessage(sender, "Forbidden execute command detected");
|
||||||
return "cancel";
|
return "cancel";
|
||||||
} else if (i + 3 < arr.length
|
} else if (i + 3 < arr.length
|
||||||
|
|
Loading…
Reference in a new issue