From 3f035ad38f9eb64e10bafdec8b1982c876528db9 Mon Sep 17 00:00:00 2001 From: fullwall Date: Sun, 27 May 2018 19:59:56 +0800 Subject: [PATCH] Clear old advancement data --- .../nms/v1_12_R1/entity/EntityHumanNPC.java | 6 ++-- .../util/EmptyAdvancementDataPlayer.java | 30 +++++++++---------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java index 4e5bd3d1e..b17fdfd50 100644 --- a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java +++ b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java @@ -4,7 +4,6 @@ import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.net.Socket; -import java.util.Collections; import java.util.List; import java.util.Map; @@ -48,7 +47,6 @@ import net.minecraft.server.v1_12_R1.AttributeInstance; import net.minecraft.server.v1_12_R1.BlockPosition; import net.minecraft.server.v1_12_R1.ChatComponentText; -import net.minecraft.server.v1_12_R1.Criterion; import net.minecraft.server.v1_12_R1.DamageSource; import net.minecraft.server.v1_12_R1.Entity; import net.minecraft.server.v1_12_R1.EntityHuman; @@ -322,6 +320,8 @@ private void initialise(MinecraftServer minecraftServer) { navigation = new PlayerNavigation(this, world); NMS.setStepHeight(getBukkitEntity(), 1); // the default (0) breaks step climbing setSkinFlags((byte) 0xFF); + + EmptyAdvancementDataPlayer.clear(this.getAdvancementData()); try { ADVANCEMENT_DATA_PLAYER.set(this, new EmptyAdvancementDataPlayer(minecraftServer, CitizensAPI.getDataFolder().getParentFile(), this)); @@ -539,8 +539,6 @@ public void setSkinPersistent(String skinName, String signature, String data) { } private static Field ADVANCEMENT_DATA_PLAYER = NMS.getField(EntityPlayer.class, "bY"); - private static final String[][] EMPTY_PROGRESS = new String[0][0]; - private static final Map EMPTY_PROGRESS_MAP = Collections.emptyMap(); private static final float EPSILON = 0.005F; private static final Location LOADED_LOCATION = new Location(null, 0, 0, 0); static { diff --git a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/EmptyAdvancementDataPlayer.java b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/EmptyAdvancementDataPlayer.java index 31712feb5..214c0dfd5 100644 --- a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/EmptyAdvancementDataPlayer.java +++ b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/EmptyAdvancementDataPlayer.java @@ -17,10 +17,6 @@ public EmptyAdvancementDataPlayer(MinecraftServer minecraftserver, File file, En this.b(); } - @Override - public void a() { - } - @Override public void a(Advancement advancement) { } @@ -31,17 +27,7 @@ public void a(EntityPlayer entityplayer) { @Override public void b() { - this.a(); - this.data.clear(); - try { - ((Set) G.get(this)).clear(); - ((Set) H.get(this)).clear(); - ((Set) I.get(this)).clear(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } + clear(this); } @Override @@ -67,6 +53,20 @@ public boolean revokeCritera(Advancement advancement, String s) { return false; } + public static void clear(AdvancementDataPlayer data) { + data.a(); + data.data.clear(); + try { + ((Set) G.get(data)).clear(); + ((Set) H.get(data)).clear(); + ((Set) I.get(data)).clear(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + private static final Field G = NMS.getField(AdvancementDataPlayer.class, "g"); private static final Field H = NMS.getField(AdvancementDataPlayer.class, "h"); private static final Field I = NMS.getField(AdvancementDataPlayer.class, "i");