mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-09-27 22:58:41 +02:00
Make mob entity uuids the same as their NPC uuid
This commit is contained in:
parent
8cdda471b9
commit
a944c3ca9c
@ -312,7 +312,7 @@ public class NPCCommands {
|
||||
|
||||
@Command(
|
||||
aliases = { "npc" },
|
||||
usage = "command|cmd (add [command] | remove [id] | permissions [permissions] | sequential | random) (-l[eft]/-r[ight]) (-p[layer] -o[p]), --cooldown [seconds] --delay [ticks] --permissions [perms] --n [max # of uses]",
|
||||
usage = "command|cmd (add [command] | remove [id] | permissions [permissions] | sequential | random | cost) (-l[eft]/-r[ight]) (-p[layer] -o[p]), --cooldown [seconds] --delay [ticks] --permissions [perms] --n [max # of uses]",
|
||||
desc = "Controls commands which will be run when clicking on an NPC",
|
||||
help = Messages.NPC_COMMAND_HELP,
|
||||
modifiers = { "command", "cmd" },
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.citizensnpcs.nms.v1_10_R1.entity;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.Map;
|
||||
|
||||
@ -12,6 +13,7 @@ import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.npc.AbstractEntityController;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.minecraft.server.v1_10_R1.World;
|
||||
|
||||
public abstract class MobEntityController extends AbstractEntityController {
|
||||
@ -31,9 +33,14 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
// entity.onGround isn't updated right away - we approximate here so
|
||||
// that things like pathfinding still work *immediately* after spawn.
|
||||
org.bukkit.Material beneath = at.getBlock().getRelative(BlockFace.DOWN).getType();
|
||||
if (beneath.isBlock()) {
|
||||
if (beneath.isSolid()) {
|
||||
entity.onGround = true;
|
||||
}
|
||||
try {
|
||||
UUID_FIELD.invoke(entity, npc.getUniqueId());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return entity.getBukkitEntity();
|
||||
}
|
||||
|
||||
@ -58,4 +65,7 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
}
|
||||
|
||||
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = Maps.newHashMap();
|
||||
|
||||
private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_10_R1.Entity.class,
|
||||
"uniqueID");
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package net.citizensnpcs.nms.v1_11_R1.entity;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.Map;
|
||||
|
||||
@ -12,6 +13,7 @@ import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.npc.AbstractEntityController;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.minecraft.server.v1_11_R1.World;
|
||||
|
||||
public abstract class MobEntityController extends AbstractEntityController {
|
||||
@ -31,9 +33,14 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
// entity.onGround isn't updated right away - we approximate here so
|
||||
// that things like pathfinding still work *immediately* after spawn.
|
||||
org.bukkit.Material beneath = at.getBlock().getRelative(BlockFace.DOWN).getType();
|
||||
if (beneath.isBlock()) {
|
||||
if (beneath.isSolid()) {
|
||||
entity.onGround = true;
|
||||
}
|
||||
try {
|
||||
UUID_FIELD.invoke(entity, npc.getUniqueId());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return entity.getBukkitEntity();
|
||||
}
|
||||
|
||||
@ -58,4 +65,7 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
}
|
||||
|
||||
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = Maps.newHashMap();
|
||||
|
||||
private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_11_R1.Entity.class,
|
||||
"uniqueID");
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package net.citizensnpcs.nms.v1_12_R1.entity;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.Map;
|
||||
|
||||
@ -12,6 +13,7 @@ import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.npc.AbstractEntityController;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.minecraft.server.v1_12_R1.World;
|
||||
|
||||
public abstract class MobEntityController extends AbstractEntityController {
|
||||
@ -31,9 +33,15 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
// entity.onGround isn't updated right away - we approximate here so
|
||||
// that things like pathfinding still work *immediately* after spawn.
|
||||
org.bukkit.Material beneath = at.getBlock().getRelative(BlockFace.DOWN).getType();
|
||||
if (beneath.isBlock()) {
|
||||
if (beneath.isSolid()) {
|
||||
entity.onGround = true;
|
||||
}
|
||||
|
||||
try {
|
||||
UUID_FIELD.invoke(entity, npc.getUniqueId());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return entity.getBukkitEntity();
|
||||
}
|
||||
|
||||
@ -58,4 +66,6 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
}
|
||||
|
||||
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = Maps.newHashMap();
|
||||
private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_12_R1.Entity.class,
|
||||
"uniqueID");
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package net.citizensnpcs.nms.v1_13_R2.entity;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.Map;
|
||||
|
||||
@ -12,6 +13,7 @@ import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.npc.AbstractEntityController;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.minecraft.server.v1_13_R2.World;
|
||||
|
||||
public abstract class MobEntityController extends AbstractEntityController {
|
||||
@ -31,9 +33,14 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
// entity.onGround isn't updated right away - we approximate here so
|
||||
// that things like pathfinding still work *immediately* after spawn.
|
||||
org.bukkit.Material beneath = at.getBlock().getRelative(BlockFace.DOWN).getType();
|
||||
if (beneath.isBlock()) {
|
||||
if (beneath.isSolid()) {
|
||||
entity.onGround = true;
|
||||
}
|
||||
try {
|
||||
UUID_FIELD.invoke(entity, npc.getUniqueId());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return entity.getBukkitEntity();
|
||||
}
|
||||
|
||||
@ -58,4 +65,7 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
}
|
||||
|
||||
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = Maps.newHashMap();
|
||||
|
||||
private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_13_R2.Entity.class,
|
||||
"uniqueID");
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package net.citizensnpcs.nms.v1_14_R1.entity;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.Map;
|
||||
|
||||
@ -13,6 +14,7 @@ import com.google.common.collect.Maps;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.nms.v1_14_R1.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.AbstractEntityController;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.minecraft.server.v1_14_R1.EntityTypes;
|
||||
import net.minecraft.server.v1_14_R1.World;
|
||||
|
||||
@ -36,9 +38,14 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
// entity.onGround isn't updated right away - we approximate here so
|
||||
// that things like pathfinding still work *immediately* after spawn.
|
||||
org.bukkit.Material beneath = at.getBlock().getRelative(BlockFace.DOWN).getType();
|
||||
if (beneath.isBlock()) {
|
||||
if (beneath.isSolid()) {
|
||||
entity.onGround = true;
|
||||
}
|
||||
try {
|
||||
UUID_FIELD.invoke(entity, npc.getUniqueId());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return entity.getBukkitEntity();
|
||||
}
|
||||
|
||||
@ -63,4 +70,7 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
}
|
||||
|
||||
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = Maps.newHashMap();
|
||||
|
||||
private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_14_R1.Entity.class,
|
||||
"uniqueID");
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package net.citizensnpcs.nms.v1_15_R1.entity;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.Map;
|
||||
|
||||
@ -13,6 +14,7 @@ import com.google.common.collect.Maps;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.nms.v1_15_R1.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.AbstractEntityController;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.minecraft.server.v1_15_R1.EntityTypes;
|
||||
import net.minecraft.server.v1_15_R1.World;
|
||||
|
||||
@ -36,9 +38,14 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
// entity.onGround isn't updated right away - we approximate here so
|
||||
// that things like pathfinding still work *immediately* after spawn.
|
||||
org.bukkit.Material beneath = at.getBlock().getRelative(BlockFace.DOWN).getType();
|
||||
if (beneath.isBlock()) {
|
||||
if (beneath.isSolid()) {
|
||||
entity.onGround = true;
|
||||
}
|
||||
try {
|
||||
UUID_FIELD.invoke(entity, npc.getUniqueId());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return entity.getBukkitEntity();
|
||||
}
|
||||
|
||||
@ -63,4 +70,7 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
}
|
||||
|
||||
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = Maps.newHashMap();
|
||||
|
||||
private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_15_R1.Entity.class,
|
||||
"uniqueID");
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package net.citizensnpcs.nms.v1_16_R2.entity;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.Map;
|
||||
|
||||
@ -13,6 +14,7 @@ import com.google.common.collect.Maps;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.nms.v1_16_R2.util.NMSImpl;
|
||||
import net.citizensnpcs.npc.AbstractEntityController;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.minecraft.server.v1_16_R2.EntityTypes;
|
||||
import net.minecraft.server.v1_16_R2.World;
|
||||
|
||||
@ -36,9 +38,14 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
// entity.onGround isn't updated right away - we approximate here so
|
||||
// that things like pathfinding still work *immediately* after spawn.
|
||||
org.bukkit.Material beneath = at.getBlock().getRelative(BlockFace.DOWN).getType();
|
||||
if (beneath.isBlock()) {
|
||||
if (beneath.isSolid()) {
|
||||
entity.setOnGround(true);
|
||||
}
|
||||
try {
|
||||
UUID_FIELD.invoke(entity, npc.getUniqueId());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return entity.getBukkitEntity();
|
||||
}
|
||||
|
||||
@ -63,4 +70,7 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
}
|
||||
|
||||
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = Maps.newHashMap();
|
||||
|
||||
private static final MethodHandle UUID_FIELD = NMS.getSetter(net.minecraft.server.v1_16_R2.Entity.class,
|
||||
"uniqueID");
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package net.citizensnpcs.nms.v1_8_R3.entity;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.Location;
|
||||
@ -12,6 +13,7 @@ import com.google.common.collect.Maps;
|
||||
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.npc.AbstractEntityController;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.minecraft.server.v1_8_R3.World;
|
||||
|
||||
public abstract class MobEntityController extends AbstractEntityController {
|
||||
@ -31,9 +33,14 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
// entity.onGround isn't updated right away - we approximate here so
|
||||
// that things like pathfinding still work *immediately* after spawn.
|
||||
org.bukkit.Material beneath = at.getBlock().getRelative(BlockFace.DOWN).getType();
|
||||
if (beneath.isBlock()) {
|
||||
if (beneath.isSolid()) {
|
||||
entity.onGround = true;
|
||||
}
|
||||
try {
|
||||
UUID_FIELD.set(entity, npc.getUniqueId());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return entity.getBukkitEntity();
|
||||
}
|
||||
|
||||
@ -58,4 +65,5 @@ public abstract class MobEntityController extends AbstractEntityController {
|
||||
}
|
||||
|
||||
private static final Map<Class<?>, Constructor<?>> CONSTRUCTOR_CACHE = Maps.newHashMap();
|
||||
private static final Field UUID_FIELD = NMS.getField(net.minecraft.server.v1_8_R3.Entity.class, "uniqueID");
|
||||
}
|
Loading…
Reference in New Issue
Block a user