mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-12-27 19:47:51 +01:00
Add new player update task for players not on the playerlist
This commit is contained in:
parent
a320832c4d
commit
8e85dde59b
@ -58,6 +58,7 @@ import net.citizensnpcs.npc.profile.ProfileFetcher;
|
|||||||
import net.citizensnpcs.npc.skin.Skin;
|
import net.citizensnpcs.npc.skin.Skin;
|
||||||
import net.citizensnpcs.util.Messages;
|
import net.citizensnpcs.util.Messages;
|
||||||
import net.citizensnpcs.util.NMS;
|
import net.citizensnpcs.util.NMS;
|
||||||
|
import net.citizensnpcs.util.PlayerUpdateTask;
|
||||||
import net.citizensnpcs.util.StringHelper;
|
import net.citizensnpcs.util.StringHelper;
|
||||||
import net.citizensnpcs.util.Util;
|
import net.citizensnpcs.util.Util;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
@ -297,6 +298,7 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
|
|||||||
startMetrics();
|
startMetrics();
|
||||||
scheduleSaveTask(Setting.SAVE_TASK_DELAY.asInt());
|
scheduleSaveTask(Setting.SAVE_TASK_DELAY.asInt());
|
||||||
Bukkit.getPluginManager().callEvent(new CitizensEnableEvent());
|
Bukkit.getPluginManager().callEvent(new CitizensEnableEvent());
|
||||||
|
new PlayerUpdateTask().runTaskTimer(Citizens.this, 0, 1);
|
||||||
}
|
}
|
||||||
}, 1) == -1) {
|
}, 1) == -1) {
|
||||||
Messaging.severeTr(Messages.LOAD_TASK_NOT_SCHEDULED);
|
Messaging.severeTr(Messages.LOAD_TASK_NOT_SCHEDULED);
|
||||||
|
@ -101,6 +101,7 @@ public class NMS {
|
|||||||
} else if (!handle.world.players.contains(handle)) {
|
} else if (!handle.world.players.contains(handle)) {
|
||||||
handle.world.players.add(handle);
|
handle.world.players.add(handle);
|
||||||
}
|
}
|
||||||
|
PlayerUpdateTask.addOrRemove(entity, remove);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean addToWorld(org.bukkit.World world, org.bukkit.entity.Entity entity,
|
public static boolean addToWorld(org.bukkit.World world, org.bukkit.entity.Entity entity,
|
||||||
|
60
src/main/java/net/citizensnpcs/util/PlayerUpdateTask.java
Normal file
60
src/main/java/net/citizensnpcs/util/PlayerUpdateTask.java
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
package net.citizensnpcs.util;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import net.minecraft.server.v1_9_R1.CrashReport;
|
||||||
|
import net.minecraft.server.v1_9_R1.CrashReportSystemDetails;
|
||||||
|
import net.minecraft.server.v1_9_R1.Entity;
|
||||||
|
import net.minecraft.server.v1_9_R1.ReportedException;
|
||||||
|
|
||||||
|
public class PlayerUpdateTask extends BukkitRunnable {
|
||||||
|
@Override
|
||||||
|
public void cancel() {
|
||||||
|
super.cancel();
|
||||||
|
TICKERS.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Iterator<org.bukkit.entity.Entity> itr = TICKERS.iterator();
|
||||||
|
while (itr.hasNext()) {
|
||||||
|
Entity entity = NMS.getHandle(itr.next());
|
||||||
|
Entity entity1 = entity.by();
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (entity.dead) {
|
||||||
|
entity.world.removeEntity(entity);
|
||||||
|
itr.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addOrRemove(org.bukkit.entity.Entity entity, boolean remove) {
|
||||||
|
if (remove) {
|
||||||
|
TICKERS.remove(entity);
|
||||||
|
} else {
|
||||||
|
TICKERS.add(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<org.bukkit.entity.Entity> TICKERS = new ArrayList<org.bukkit.entity.Entity>();
|
||||||
|
}
|
@ -3,7 +3,6 @@ package net.citizensnpcs.util.nms;
|
|||||||
import net.citizensnpcs.npc.entity.EntityHumanNPC;
|
import net.citizensnpcs.npc.entity.EntityHumanNPC;
|
||||||
import net.minecraft.server.v1_9_R1.EntityInsentient;
|
import net.minecraft.server.v1_9_R1.EntityInsentient;
|
||||||
import net.minecraft.server.v1_9_R1.IBlockAccess;
|
import net.minecraft.server.v1_9_R1.IBlockAccess;
|
||||||
import net.minecraft.server.v1_9_R1.IntHashMap;
|
|
||||||
import net.minecraft.server.v1_9_R1.MathHelper;
|
import net.minecraft.server.v1_9_R1.MathHelper;
|
||||||
import net.minecraft.server.v1_9_R1.PathPoint;
|
import net.minecraft.server.v1_9_R1.PathPoint;
|
||||||
import net.minecraft.server.v1_9_R1.PathType;
|
import net.minecraft.server.v1_9_R1.PathType;
|
||||||
@ -12,7 +11,6 @@ import net.minecraft.server.v1_9_R1.PathfinderAbstract;
|
|||||||
public abstract class PlayerPathfinderAbstract extends PathfinderAbstract {
|
public abstract class PlayerPathfinderAbstract extends PathfinderAbstract {
|
||||||
protected IBlockAccess a;
|
protected IBlockAccess a;
|
||||||
protected EntityHumanNPC b;
|
protected EntityHumanNPC b;
|
||||||
protected final IntHashMap<PathPoint> c = new IntHashMap();
|
|
||||||
protected int d;
|
protected int d;
|
||||||
protected int e;
|
protected int e;
|
||||||
protected int f;
|
protected int f;
|
||||||
@ -20,13 +18,16 @@ public abstract class PlayerPathfinderAbstract extends PathfinderAbstract {
|
|||||||
protected boolean h;
|
protected boolean h;
|
||||||
protected boolean i;
|
protected boolean i;
|
||||||
|
|
||||||
|
@Override
|
||||||
public void a() {
|
public void a() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void a(boolean paramBoolean) {
|
public void a(boolean paramBoolean) {
|
||||||
this.g = paramBoolean;
|
this.g = paramBoolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public abstract PathPoint a(double paramDouble1, double paramDouble2, double paramDouble3);
|
public abstract PathPoint a(double paramDouble1, double paramDouble2, double paramDouble3);
|
||||||
|
|
||||||
public void a(IBlockAccess paramIBlockAccess, EntityHumanNPC paramEntityInsentient) {
|
public void a(IBlockAccess paramIBlockAccess, EntityHumanNPC paramEntityInsentient) {
|
||||||
@ -43,10 +44,12 @@ public abstract class PlayerPathfinderAbstract extends PathfinderAbstract {
|
|||||||
EntityHumanNPC paramEntityInsentient, int paramInt4, int paramInt5, int paramInt6, boolean paramBoolean1,
|
EntityHumanNPC paramEntityInsentient, int paramInt4, int paramInt5, int paramInt6, boolean paramBoolean1,
|
||||||
boolean paramBoolean2);
|
boolean paramBoolean2);
|
||||||
|
|
||||||
|
@Override
|
||||||
public abstract PathType a(IBlockAccess paramIBlockAccess, int paramInt1, int paramInt2, int paramInt3,
|
public abstract PathType a(IBlockAccess paramIBlockAccess, int paramInt1, int paramInt2, int paramInt3,
|
||||||
EntityInsentient paramEntityInsentient, int paramInt4, int paramInt5, int paramInt6, boolean paramBoolean1,
|
EntityInsentient paramEntityInsentient, int paramInt4, int paramInt5, int paramInt6, boolean paramBoolean1,
|
||||||
boolean paramBoolean2);
|
boolean paramBoolean2);
|
||||||
|
|
||||||
|
@Override
|
||||||
protected PathPoint a(int paramInt1, int paramInt2, int paramInt3) {
|
protected PathPoint a(int paramInt1, int paramInt2, int paramInt3) {
|
||||||
int j = PathPoint.b(paramInt1, paramInt2, paramInt3);
|
int j = PathPoint.b(paramInt1, paramInt2, paramInt3);
|
||||||
PathPoint localPathPoint = this.c.get(j);
|
PathPoint localPathPoint = this.c.get(j);
|
||||||
@ -57,27 +60,34 @@ public abstract class PlayerPathfinderAbstract extends PathfinderAbstract {
|
|||||||
return localPathPoint;
|
return localPathPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public abstract int a(PathPoint[] paramArrayOfPathPoint, PathPoint paramPathPoint1, PathPoint paramPathPoint2,
|
public abstract int a(PathPoint[] paramArrayOfPathPoint, PathPoint paramPathPoint1, PathPoint paramPathPoint2,
|
||||||
float paramFloat);
|
float paramFloat);
|
||||||
|
|
||||||
|
@Override
|
||||||
public abstract PathPoint b();
|
public abstract PathPoint b();
|
||||||
|
|
||||||
|
@Override
|
||||||
public void b(boolean paramBoolean) {
|
public void b(boolean paramBoolean) {
|
||||||
this.h = paramBoolean;
|
this.h = paramBoolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean c() {
|
public boolean c() {
|
||||||
return this.g;
|
return this.g;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void c(boolean paramBoolean) {
|
public void c(boolean paramBoolean) {
|
||||||
this.i = paramBoolean;
|
this.i = paramBoolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean d() {
|
public boolean d() {
|
||||||
return this.h;
|
return this.h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean e() {
|
public boolean e() {
|
||||||
return this.i;
|
return this.i;
|
||||||
}
|
}
|
||||||
|
@ -341,7 +341,7 @@ public class PlayerPathfinderNormal extends PlayerPathfinderAbstract {
|
|||||||
localObject1 = new BlockPosition(this.b);
|
localObject1 = new BlockPosition(this.b);
|
||||||
Object localObject2 = a(this.b, localObject1.getX(), i, localObject1.getZ());
|
Object localObject2 = a(this.b, localObject1.getX(), i, localObject1.getZ());
|
||||||
if (this.b.a((PathType) localObject2) < 0.0F) {
|
if (this.b.a((PathType) localObject2) < 0.0F) {
|
||||||
HashSet<BlockPosition> localHashSet = new HashSet();
|
HashSet<BlockPosition> localHashSet = new HashSet<BlockPosition>();
|
||||||
localHashSet.add(new BlockPosition(this.b.getBoundingBox().a, i, this.b.getBoundingBox().c));
|
localHashSet.add(new BlockPosition(this.b.getBoundingBox().a, i, this.b.getBoundingBox().c));
|
||||||
localHashSet.add(new BlockPosition(this.b.getBoundingBox().a, i, this.b.getBoundingBox().f));
|
localHashSet.add(new BlockPosition(this.b.getBoundingBox().a, i, this.b.getBoundingBox().f));
|
||||||
localHashSet.add(new BlockPosition(this.b.getBoundingBox().d, i, this.b.getBoundingBox().c));
|
localHashSet.add(new BlockPosition(this.b.getBoundingBox().d, i, this.b.getBoundingBox().c));
|
||||||
|
Loading…
Reference in New Issue
Block a user