Fix some bugs

This commit is contained in:
fullwall 2022-02-20 10:04:09 +08:00
parent b1b5704145
commit ecbab327ed
21 changed files with 68 additions and 29 deletions

View File

@ -9,7 +9,6 @@ import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@ -1759,11 +1758,10 @@ public class NPCCommands {
public void remove(final CommandContext args, final CommandSender sender, NPC npc) throws CommandException {
if (args.hasValueFlag("owner")) {
String owner = args.getFlag("owner");
Collection<NPC> npcs = Lists.newArrayList(CitizensAPI.getNPCRegistry());
for (NPC o : npcs) {
if (o.getOrAddTrait(Owner.class).isOwnedBy(owner)) {
history.add(sender, new RemoveNPCHistoryItem(o));
o.destroy(sender);
for (NPC rem : Lists.newArrayList(CitizensAPI.getNPCRegistry())) {
if (rem.getOrAddTrait(Owner.class).isOwnedBy(owner)) {
history.add(sender, new RemoveNPCHistoryItem(rem));
rem.destroy(sender);
}
}
Messaging.sendTr(sender, Messages.NPCS_REMOVED);
@ -1787,8 +1785,8 @@ public class NPCCommands {
throw new NoPermissionsException();
for (NPC rem : CitizensAPI.getNPCRegistry()) {
history.add(sender, new RemoveNPCHistoryItem(rem));
rem.destroy();
}
CitizensAPI.getNPCRegistry().deregisterAll();
Messaging.sendTr(sender, Messages.REMOVED_ALL_NPCS);
return;
} else {

View File

@ -10,9 +10,11 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_10_R1.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_10_R1.World;
public abstract class MobEntityController extends AbstractEntityController {
@ -40,6 +42,9 @@ public abstract class MobEntityController extends AbstractEntityController {
} catch (Throwable e) {
e.printStackTrace();
}
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -366,7 +366,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getControllerMove() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
}

View File

@ -10,9 +10,11 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_11_R1.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_11_R1.World;
public abstract class MobEntityController extends AbstractEntityController {
@ -40,6 +42,9 @@ public abstract class MobEntityController extends AbstractEntityController {
} catch (Throwable e) {
e.printStackTrace();
}
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -385,7 +385,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getControllerMove() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
}

View File

@ -10,9 +10,11 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_12_R1.World;
public abstract class MobEntityController extends AbstractEntityController {
@ -41,6 +43,9 @@ public abstract class MobEntityController extends AbstractEntityController {
} catch (Throwable e) {
e.printStackTrace();
}
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -389,7 +389,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getControllerMove() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
}

View File

@ -10,9 +10,11 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_13_R2.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_13_R2.World;
public abstract class MobEntityController extends AbstractEntityController {
@ -40,6 +42,9 @@ public abstract class MobEntityController extends AbstractEntityController {
} catch (Throwable e) {
e.printStackTrace();
}
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -411,7 +411,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getControllerMove() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
}

View File

@ -10,10 +10,12 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_14_R1.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
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.citizensnpcs.util.Util;
import net.minecraft.server.v1_14_R1.EntityTypes;
import net.minecraft.server.v1_14_R1.World;
@ -43,6 +45,9 @@ public abstract class MobEntityController extends AbstractEntityController {
} catch (Throwable e) {
e.printStackTrace();
}
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -454,7 +454,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getControllerMove() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
}

View File

@ -10,10 +10,12 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
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.citizensnpcs.util.Util;
import net.minecraft.server.v1_15_R1.EntityTypes;
import net.minecraft.server.v1_15_R1.World;
@ -43,6 +45,9 @@ public abstract class MobEntityController extends AbstractEntityController {
} catch (Throwable e) {
e.printStackTrace();
}
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -463,7 +463,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getControllerMove() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
}
@ -1182,7 +1182,7 @@ public class NMSImpl implements NMSBridge {
boolean old = (boolean) FLYING_MOVECONTROL_FLOAT_GETTER.invoke(mob.getControllerMove());
FLYING_MOVECONTROL_FLOAT_SETTER.invoke(mob.getControllerMove(), true);
npc.data().set("flying-nogravity-float", old);
} else {
} else if (npc.data().has("flying-nogravity-float")) {
FLYING_MOVECONTROL_FLOAT_SETTER.invoke(mob.getControllerMove(),
npc.data().get("flying-nogravity-float"));
npc.data().remove("flying-nogravity-float");

View File

@ -10,10 +10,12 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.nms.v1_16_R3.util.NMSImpl;
import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_16_R3.EntityTypes;
import net.minecraft.server.v1_16_R3.World;
@ -43,6 +45,9 @@ public abstract class MobEntityController extends AbstractEntityController {
} catch (Throwable e) {
e.printStackTrace();
}
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -469,7 +469,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getControllerMove() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
}
@ -1214,7 +1214,7 @@ public class NMSImpl implements NMSBridge {
boolean old = (boolean) FLYING_MOVECONTROL_FLOAT_GETTER.invoke(mob.getControllerMove());
FLYING_MOVECONTROL_FLOAT_SETTER.invoke(mob.getControllerMove(), true);
npc.data().set("flying-nogravity-float", old);
} else {
} else if (npc.data().has("flying-nogravity-float")) {
FLYING_MOVECONTROL_FLOAT_SETTER.invoke(mob.getControllerMove(),
npc.data().get("flying-nogravity-float"));
npc.data().remove("flying-nogravity-float");

View File

@ -9,9 +9,11 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_17_R1.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.nms.v1_17_R1.util.NMSImpl;
import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.util.Util;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.level.Level;
@ -37,6 +39,9 @@ public abstract class MobEntityController extends AbstractEntityController {
entity.setOnGround(true);
}
entity.setUUID(npc.getUniqueId());
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -481,7 +481,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
MoveControl controller = handle instanceof Mob ? ((Mob) handle).getMoveControl()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getMoveControl() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getMoveControl() : null;
return new Location(entity.getWorld(), controller.getWantedX(), controller.getWantedY(),
controller.getWantedZ());
}
@ -1210,7 +1210,7 @@ public class NMSImpl implements NMSBridge {
boolean old = (boolean) FLYING_MOVECONTROL_FLOAT_GETTER.invoke(mob.getMoveControl());
FLYING_MOVECONTROL_FLOAT_SETTER.invoke(mob.getMoveControl(), true);
npc.data().set("flying-nogravity-float", old);
} else {
} else if (npc.data().has("flying-nogravity-float")) {
FLYING_MOVECONTROL_FLOAT_SETTER.invoke(mob.getMoveControl(), npc.data().get("flying-nogravity-float"));
npc.data().remove("flying-nogravity-float");
}

View File

@ -9,9 +9,11 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_18_R1.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.nms.v1_18_R1.util.NMSImpl;
import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.util.Util;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.level.Level;
@ -38,15 +40,9 @@ public abstract class MobEntityController extends AbstractEntityController {
}
entity.setUUID(npc.getUniqueId());
/*String name = npc.getFullName().length() > 16 ? npc.getFullName().substring(0, 16) : npc.getFullName();
String teamName = Util.getTeamName(npc.getUniqueId());
if (npc.requiresNameHologram()) {
name = teamName;
}
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, name, teamName);
}*/
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -485,7 +485,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
MoveControl controller = handle instanceof Mob ? ((Mob) handle).getMoveControl()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getMoveControl() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getMoveControl() : null;
return new Location(entity.getWorld(), controller.getWantedX(), controller.getWantedY(),
controller.getWantedZ());
}
@ -1213,7 +1213,7 @@ public class NMSImpl implements NMSBridge {
boolean old = (boolean) FLYING_MOVECONTROL_FLOAT_GETTER.invoke(mob.getMoveControl());
FLYING_MOVECONTROL_FLOAT_SETTER.invoke(mob.getMoveControl(), true);
npc.data().set("flying-nogravity-float", old);
} else {
} else if (npc.data().has("flying-nogravity-float")) {
FLYING_MOVECONTROL_FLOAT_SETTER.invoke(mob.getMoveControl(), npc.data().get("flying-nogravity-float"));
npc.data().remove("flying-nogravity-float");
}

View File

@ -10,9 +10,11 @@ import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
import org.bukkit.entity.Entity;
import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.AbstractEntityController;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_8_R3.World;
public abstract class MobEntityController extends AbstractEntityController {
@ -40,6 +42,9 @@ public abstract class MobEntityController extends AbstractEntityController {
} catch (Throwable e) {
e.printStackTrace();
}
if (Setting.USE_SCOREBOARD_TEAMS.asBoolean()) {
Util.generateTeamFor(npc, npc.getUniqueId().toString(), Util.getTeamName(npc.getUniqueId()));
}
return entity.getBukkitEntity();
}

View File

@ -318,7 +318,7 @@ public class NMSImpl implements NMSBridge {
public Location getDestination(org.bukkit.entity.Entity entity) {
Entity handle = getHandle(entity);
ControllerMove controller = handle instanceof EntityInsentient ? ((EntityInsentient) handle).getControllerMove()
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) entity).getControllerMove() : null;
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getControllerMove() : null;
return new Location(entity.getWorld(), controller.d(), controller.e(), controller.f());
}