Simplify PlayerUpdateTask

This commit is contained in:
fullwall 2023-01-01 18:15:10 +08:00
parent ac7401b266
commit b4280103c1
14 changed files with 179 additions and 483 deletions

View File

@ -657,10 +657,6 @@ public class NMS {
BRIDGE.sleep(entity, sleep);
}
public static boolean tick(Entity next) {
return BRIDGE.tick(next);
}
public static void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, SwimmingExaminer.isWaterMob(entity) ? 0.02F : 0.04F);
}

View File

@ -226,8 +226,6 @@ public interface NMSBridge {
public void sleep(Player entity, boolean sleep);
public boolean tick(Entity next);
public void trySwim(Entity entity);
public void trySwim(Entity entity, float power);

View File

@ -2,7 +2,6 @@ package net.citizensnpcs.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@ -19,30 +18,11 @@ public class PlayerUpdateTask extends BukkitRunnable {
@Override
public void cancel() {
super.cancel();
TICKERS.clear();
TICKERS_PENDING_ADD.clear();
TICKERS_PENDING_REMOVE.clear();
PLAYERS.clear();
}
@Override
public void run() {
for (int i = 0; i < TICKERS_PENDING_ADD.size(); i++) {
org.bukkit.entity.Entity ent = TICKERS_PENDING_ADD.get(i);
TICKERS.put(ent.getUniqueId(), ent);
}
for (int i = 0; i < TICKERS_PENDING_REMOVE.size(); i++) {
TICKERS.remove(TICKERS_PENDING_REMOVE.get(i).getUniqueId());
}
TICKERS_PENDING_ADD.clear();
TICKERS_PENDING_REMOVE.clear();
Iterator<org.bukkit.entity.Entity> itr = TICKERS.values().iterator();
while (itr.hasNext()) {
Entity entity = itr.next();
if (NMS.tick(entity)) {
itr.remove();
}
}
for (Entity entity : PLAYERS_PENDING_REMOVE) {
PLAYERS.remove(entity.getUniqueId());
}
@ -80,17 +60,6 @@ public class PlayerUpdateTask extends BukkitRunnable {
}
}
public static void addOrRemove(org.bukkit.entity.Entity entity, boolean remove) {
boolean contains = TICKERS.containsKey(entity.getUniqueId());
if (!remove) {
if (contains) {
TICKERS_PENDING_REMOVE.add(entity);
}
} else if (!contains) {
TICKERS_PENDING_ADD.add(entity);
}
}
public static void deregisterPlayer(org.bukkit.entity.Entity entity) {
PLAYERS_PENDING_ADD.remove(entity);
PLAYERS_PENDING_REMOVE.add(entity);
@ -104,7 +73,4 @@ public class PlayerUpdateTask extends BukkitRunnable {
private static Map<UUID, PlayerTick> PLAYERS = new HashMap<>();
private static List<Entity> PLAYERS_PENDING_ADD = new ArrayList<>();
private static List<Entity> PLAYERS_PENDING_REMOVE = new ArrayList<>();
private static Map<UUID, Entity> TICKERS = new HashMap<>();
private static List<Entity> TICKERS_PENDING_ADD = new ArrayList<>();
private static List<Entity> TICKERS_PENDING_REMOVE = new ArrayList<>();
}

View File

@ -177,7 +177,6 @@ import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.NMSBridge;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.PlayerUpdateTask;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_10_R1.AttributeInstance;
import net.minecraft.server.v1_10_R1.AxisAlignedBB;
@ -263,7 +262,6 @@ public class NMSImpl implements NMSBridge {
} else if (!handle.world.players.contains(handle)) {
handle.world.players.add(handle);
}
PlayerUpdateTask.addOrRemove(entity, remove);
}
@Override
@ -891,8 +889,43 @@ public class NMSImpl implements NMSBridge {
}
@Override
public Runnable playerTicker(Player entity) {
return ((EntityPlayer) getHandle(entity))::k_;
public Runnable playerTicker(Player next) {
return () -> {
EntityPlayer entity = (EntityPlayer) getHandle(next);
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
entity.k_();
if (!removeFromPlayerList) {
return;
}
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
entity.world.entityJoinedWorld(entity, true);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
if (entity.dead) {
entity.world.removeEntity(entity);
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add(entity);
}
} else {
entity.world.players.remove(entity);
}
}
};
}
@Override
@ -1263,43 +1296,6 @@ public class NMSImpl implements NMSBridge {
}
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.bB();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
entity.world.g(entity);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (entity.dead) {
entity.world.removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add((EntityHuman) entity);
}
return true;
} else {
entity.world.players.remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -194,7 +194,6 @@ import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.NMSBridge;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.PlayerUpdateTask;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_11_R1.AttributeInstance;
import net.minecraft.server.v1_11_R1.AxisAlignedBB;
@ -284,7 +283,6 @@ public class NMSImpl implements NMSBridge {
} else if (!handle.world.players.contains(handle)) {
handle.world.players.add(handle);
}
PlayerUpdateTask.addOrRemove(entity, remove);
}
@Override
@ -949,8 +947,43 @@ public class NMSImpl implements NMSBridge {
}
@Override
public Runnable playerTicker(Player entity) {
return ((EntityPlayer) getHandle(entity))::playerTick;
public Runnable playerTicker(Player next) {
return () -> {
EntityPlayer entity = (EntityPlayer) getHandle(next);
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
entity.playerTick();
if (!removeFromPlayerList) {
return;
}
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
entity.world.entityJoinedWorld(entity, true);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
if (entity.dead) {
entity.world.removeEntity(entity);
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add(entity);
}
} else {
entity.world.players.remove(entity);
}
}
};
}
@Override
@ -1330,43 +1363,6 @@ public class NMSImpl implements NMSBridge {
}
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.bB();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
entity.world.entityJoinedWorld(entity, true);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (entity.dead) {
entity.world.removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add((EntityHuman) entity);
}
return true;
} else {
entity.world.players.remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -197,7 +197,6 @@ import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.NMSBridge;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.PlayerUpdateTask;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_12_R1.AttributeInstance;
import net.minecraft.server.v1_12_R1.AxisAlignedBB;
@ -289,7 +288,6 @@ public class NMSImpl implements NMSBridge {
} else if (!handle.world.players.contains(handle)) {
handle.world.players.add(handle);
}
PlayerUpdateTask.addOrRemove(entity, remove);
}
@Override
@ -959,8 +957,43 @@ public class NMSImpl implements NMSBridge {
}
@Override
public Runnable playerTicker(Player entity) {
return ((EntityPlayer) getHandle(entity))::playerTick;
public Runnable playerTicker(Player next) {
return () -> {
EntityPlayer entity = (EntityPlayer) getHandle(next);
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
entity.playerTick();
if (!removeFromPlayerList) {
return;
}
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
entity.world.entityJoinedWorld(entity, true);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
if (entity.dead) {
entity.world.removeEntity(entity);
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add(entity);
}
} else {
entity.world.players.remove(entity);
}
}
};
}
@Override
@ -1340,43 +1373,6 @@ public class NMSImpl implements NMSBridge {
}
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.bJ();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
entity.world.entityJoinedWorld(entity, true);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (entity.dead) {
entity.world.removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add((EntityHuman) entity);
}
return true;
} else {
entity.world.players.remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -211,7 +211,6 @@ import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.NMSBridge;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.PlayerUpdateTask;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_13_R2.AttributeInstance;
import net.minecraft.server.v1_13_R2.AxisAlignedBB;
@ -309,7 +308,6 @@ public class NMSImpl implements NMSBridge {
} else if (!handle.world.players.contains(handle)) {
handle.world.players.add(handle);
}
PlayerUpdateTask.addOrRemove(entity, remove);
}
@Override
@ -995,8 +993,43 @@ public class NMSImpl implements NMSBridge {
}
@Override
public Runnable playerTicker(Player entity) {
return ((EntityPlayer) getHandle(entity))::playerTick;
public Runnable playerTicker(Player next) {
return () -> {
EntityPlayer entity = (EntityPlayer) getHandle(next);
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
entity.playerTick();
if (!removeFromPlayerList) {
return;
}
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
entity.world.entityJoinedWorld(entity, true);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
if (entity.dead) {
entity.world.removeEntity(entity);
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add(entity);
}
} else {
entity.world.players.remove(entity);
}
}
};
}
@Override
@ -1380,43 +1413,6 @@ public class NMSImpl implements NMSBridge {
}
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
entity.world.entityJoinedWorld(entity, true);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (entity.dead) {
entity.world.removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add((EntityHuman) entity);
}
return true;
} else {
entity.world.players.remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -237,8 +237,6 @@ import net.minecraft.server.v1_14_R1.ContainerAnvil;
import net.minecraft.server.v1_14_R1.Containers;
import net.minecraft.server.v1_14_R1.ControllerJump;
import net.minecraft.server.v1_14_R1.ControllerMove;
import net.minecraft.server.v1_14_R1.CrashReport;
import net.minecraft.server.v1_14_R1.CrashReportSystemDetails;
import net.minecraft.server.v1_14_R1.DamageSource;
import net.minecraft.server.v1_14_R1.DataWatcherObject;
import net.minecraft.server.v1_14_R1.EnchantmentManager;
@ -294,7 +292,6 @@ import net.minecraft.server.v1_14_R1.PathfinderGoalSelector;
import net.minecraft.server.v1_14_R1.PlayerChunkMap;
import net.minecraft.server.v1_14_R1.PlayerChunkMap.EntityTracker;
import net.minecraft.server.v1_14_R1.RegistryBlocks;
import net.minecraft.server.v1_14_R1.ReportedException;
import net.minecraft.server.v1_14_R1.ScoreboardTeam;
import net.minecraft.server.v1_14_R1.SoundEffect;
import net.minecraft.server.v1_14_R1.Vec3D;
@ -1388,44 +1385,6 @@ public class NMSImpl implements NMSBridge {
}
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
((WorldServer) entity.world).entityJoinedWorld(entity);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (entity.dead) {
((WorldServer) entity.world).removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.world.getPlayers().contains(entity)) {
List list = entity.world.getPlayers();
list.add(entity);
}
return true;
} else {
entity.world.getPlayers().remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -240,8 +240,6 @@ import net.minecraft.server.v1_15_R1.Containers;
import net.minecraft.server.v1_15_R1.ControllerJump;
import net.minecraft.server.v1_15_R1.ControllerMove;
import net.minecraft.server.v1_15_R1.ControllerMoveFlying;
import net.minecraft.server.v1_15_R1.CrashReport;
import net.minecraft.server.v1_15_R1.CrashReportSystemDetails;
import net.minecraft.server.v1_15_R1.DamageSource;
import net.minecraft.server.v1_15_R1.DataWatcherObject;
import net.minecraft.server.v1_15_R1.EnchantmentManager;
@ -299,7 +297,6 @@ import net.minecraft.server.v1_15_R1.PathfinderGoalSelector;
import net.minecraft.server.v1_15_R1.PlayerChunkMap;
import net.minecraft.server.v1_15_R1.PlayerChunkMap.EntityTracker;
import net.minecraft.server.v1_15_R1.RegistryBlocks;
import net.minecraft.server.v1_15_R1.ReportedException;
import net.minecraft.server.v1_15_R1.ScoreboardTeam;
import net.minecraft.server.v1_15_R1.SoundEffect;
import net.minecraft.server.v1_15_R1.Vec3D;
@ -1437,44 +1434,6 @@ public class NMSImpl implements NMSBridge {
}
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
((WorldServer) entity.world).entityJoinedWorld(entity);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (entity.dead) {
((WorldServer) entity.world).removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.world.getPlayers().contains(entity)) {
List list = entity.world.getPlayers();
list.add(entity);
}
return true;
} else {
entity.world.getPlayers().remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -247,8 +247,6 @@ import net.minecraft.server.v1_16_R3.Containers;
import net.minecraft.server.v1_16_R3.ControllerJump;
import net.minecraft.server.v1_16_R3.ControllerMove;
import net.minecraft.server.v1_16_R3.ControllerMoveFlying;
import net.minecraft.server.v1_16_R3.CrashReport;
import net.minecraft.server.v1_16_R3.CrashReportSystemDetails;
import net.minecraft.server.v1_16_R3.DamageSource;
import net.minecraft.server.v1_16_R3.DataWatcherObject;
import net.minecraft.server.v1_16_R3.EnchantmentManager;
@ -308,7 +306,6 @@ import net.minecraft.server.v1_16_R3.PathfinderGoalSelector;
import net.minecraft.server.v1_16_R3.PlayerChunkMap;
import net.minecraft.server.v1_16_R3.PlayerChunkMap.EntityTracker;
import net.minecraft.server.v1_16_R3.RegistryBlocks;
import net.minecraft.server.v1_16_R3.ReportedException;
import net.minecraft.server.v1_16_R3.ScoreboardTeam;
import net.minecraft.server.v1_16_R3.SoundEffect;
import net.minecraft.server.v1_16_R3.TagsFluid;
@ -1464,44 +1461,6 @@ public class NMSImpl implements NMSBridge {
}
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((entity1.dead) || (!entity1.w(entity))) {
entity.stopRiding();
}
} else {
if (!entity.dead) {
try {
((WorldServer) entity.world).entityJoinedWorld(entity);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (entity.dead) {
((WorldServer) entity.world).removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.world.getPlayers().contains(entity)) {
List list = entity.world.getPlayers();
list.add(entity);
}
return true;
} else {
entity.world.getPlayers().remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -233,9 +233,6 @@ import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.NMSBridge;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.Util;
import net.minecraft.CrashReport;
import net.minecraft.CrashReportCategory;
import net.minecraft.ReportedException;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Registry;
import net.minecraft.network.Connection;
@ -1454,43 +1451,6 @@ public class NMSImpl implements NMSBridge {
getHandle(player).setPose(sleeping ? Pose.SLEEPING : Pose.STANDING);
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((!entity1.isAlive()) || (!entity1.hasPassenger(entity))) {
entity.stopRiding();
}
} else {
if (entity.isAlive()) {
try {
((ServerLevel) entity.level).tickNonPassenger(entity);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Ticking player");
CrashReportCategory crashreportsystemdetails = crashreport.addCategory("Player being ticked");
entity.fillCrashReportCategory(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (!entity.isAlive()) {
((ServerLevel) entity.level).getChunkProvider().removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.level.players().contains(entity)) {
List list = entity.level.players();
list.add(entity);
}
return true;
} else {
entity.level.players().remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -234,9 +234,6 @@ import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.NMSBridge;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.Util;
import net.minecraft.CrashReport;
import net.minecraft.CrashReportCategory;
import net.minecraft.ReportedException;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Registry;
import net.minecraft.network.Connection;
@ -1462,43 +1459,6 @@ public class NMSImpl implements NMSBridge {
getHandle(player).setPose(sleeping ? Pose.SLEEPING : Pose.STANDING);
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((!entity1.isAlive()) || (!entity1.hasPassenger(entity))) {
entity.stopRiding();
}
} else {
if (entity.isAlive()) {
try {
((ServerLevel) entity.level).tickNonPassenger(entity);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Ticking player");
CrashReportCategory crashreportsystemdetails = crashreport.addCategory("Player being ticked");
entity.fillCrashReportCategory(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get(NPC.Metadata.REMOVE_FROM_PLAYERLIST,
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (!entity.isAlive()) {
((ServerLevel) entity.level).getChunkSource().removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.level.players().contains(entity)) {
List list = entity.level.players();
list.add(entity);
}
return true;
} else {
entity.level.players().remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -249,9 +249,6 @@ import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.NMSBridge;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.Util;
import net.minecraft.CrashReport;
import net.minecraft.CrashReportCategory;
import net.minecraft.ReportedException;
import net.minecraft.core.BlockPos;
import net.minecraft.core.PositionImpl;
import net.minecraft.core.registries.BuiltInRegistries;
@ -1592,43 +1589,6 @@ public class NMSImpl implements NMSBridge {
getHandle(player).setPose(sleeping ? Pose.SLEEPING : Pose.STANDING);
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
Entity entity1 = entity.getVehicle();
if (entity1 != null) {
if ((!entity1.isAlive()) || (!entity1.hasPassenger(entity))) {
entity.stopRiding();
}
} else {
if (entity.isAlive()) {
try {
((ServerLevel) entity.level).tickNonPassenger(entity);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Ticking player");
CrashReportCategory crashreportsystemdetails = crashreport.addCategory("Player being ticked");
entity.fillCrashReportCategory(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get(NPC.Metadata.REMOVE_FROM_PLAYERLIST,
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (!entity.isAlive()) {
((ServerLevel) entity.level).getChunkSource().removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.level.players().contains(entity)) {
List list = entity.level.players();
list.add(entity);
}
return true;
} else {
entity.level.players().remove(entity);
}
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);

View File

@ -162,7 +162,6 @@ import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.NMSBridge;
import net.citizensnpcs.util.PlayerAnimation;
import net.citizensnpcs.util.PlayerUpdateTask;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_8_R3.AttributeInstance;
import net.minecraft.server.v1_8_R3.AxisAlignedBB;
@ -238,7 +237,6 @@ public class NMSImpl implements NMSBridge {
} else if (!handle.world.players.contains(handle)) {
handle.world.players.add(handle);
}
PlayerUpdateTask.addOrRemove(entity, remove);
}
@Override
@ -832,8 +830,36 @@ public class NMSImpl implements NMSBridge {
}
@Override
public Runnable playerTicker(Player entity) {
return ((EntityPlayer) getHandle(entity))::l;
public Runnable playerTicker(Player next) {
return () -> {
EntityPlayer entity = (EntityPlayer) getHandle(next);
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
entity.l();
if (!removeFromPlayerList) {
return;
}
if (!entity.dead) {
try {
entity.world.g(entity);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
if (entity.dead) {
entity.world.removeEntity(entity);
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add(entity);
}
} else {
entity.world.players.remove(entity);
}
};
}
@Override
@ -1200,37 +1226,6 @@ public class NMSImpl implements NMSBridge {
}
}
@Override
public boolean tick(org.bukkit.entity.Entity next) {
Entity entity = NMSImpl.getHandle(next);
if (!entity.dead) {
try {
entity.world.g(entity);
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
entity.appendEntityCrashDetails(crashreportsystemdetails);
throw new ReportedException(crashreport);
}
}
boolean removeFromPlayerList = ((NPCHolder) entity).getNPC().data().get("removefromplayerlist",
Setting.REMOVE_PLAYERS_FROM_PLAYER_LIST.asBoolean());
if (entity.dead) {
entity.world.removeEntity(entity);
return true;
} else if (!removeFromPlayerList) {
if (!entity.world.players.contains(entity)) {
entity.world.players.add((EntityHuman) entity);
}
return true;
} else {
entity.world.players.remove(entity);
}
return false;
}
@Override
public void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F);