mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-12-29 12:37:37 +01:00
add /npc controllable -y | -n
This commit is contained in:
parent
4b6191b705
commit
5c4af2f4b9
@ -203,12 +203,12 @@ public class NPCCommands {
|
|||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
aliases = { "npc" },
|
aliases = { "npc" },
|
||||||
usage = "controllable|control -f",
|
usage = "controllable|control (-m,-y,-n)",
|
||||||
desc = "Toggles whether the NPC can be ridden and controlled",
|
desc = "Toggles whether the NPC can be ridden and controlled",
|
||||||
modifiers = { "controllable", "control" },
|
modifiers = { "controllable", "control" },
|
||||||
min = 1,
|
min = 1,
|
||||||
max = 1,
|
max = 1,
|
||||||
flags = "m")
|
flags = "myn")
|
||||||
public void controllable(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
public void controllable(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
||||||
if ((npc.isSpawned() && !sender.hasPermission("citizens.npc.controllable."
|
if ((npc.isSpawned() && !sender.hasPermission("citizens.npc.controllable."
|
||||||
+ npc.getBukkitEntity().getType().toString().toLowerCase()))
|
+ npc.getBukkitEntity().getType().toString().toLowerCase()))
|
||||||
@ -219,6 +219,11 @@ public class NPCCommands {
|
|||||||
}
|
}
|
||||||
Controllable trait = npc.getTrait(Controllable.class);
|
Controllable trait = npc.getTrait(Controllable.class);
|
||||||
boolean enabled = trait.toggle();
|
boolean enabled = trait.toggle();
|
||||||
|
if (args.hasFlag('y')) {
|
||||||
|
enabled = trait.setEnabled(true);
|
||||||
|
} else if (args.hasFlag('n')) {
|
||||||
|
enabled = trait.setEnabled(false);
|
||||||
|
}
|
||||||
String key = enabled ? Messages.CONTROLLABLE_SET : Messages.CONTROLLABLE_REMOVED;
|
String key = enabled ? Messages.CONTROLLABLE_SET : Messages.CONTROLLABLE_REMOVED;
|
||||||
Messaging.sendTr(sender, key, npc.getName());
|
Messaging.sendTr(sender, key, npc.getName());
|
||||||
if (enabled && args.hasFlag('m') && sender instanceof Player) {
|
if (enabled && args.hasFlag('m') && sender instanceof Player) {
|
||||||
|
@ -168,8 +168,14 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
|
|||||||
public void save(DataKey key) {
|
public void save(DataKey key) {
|
||||||
if (explicitType == null) {
|
if (explicitType == null) {
|
||||||
key.removeKey("explicittype");
|
key.removeKey("explicittype");
|
||||||
} else
|
} else {
|
||||||
key.setString("explicittype", explicitType.name());
|
key.setString("explicittype", explicitType.name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setEnabled(boolean enabled) {
|
||||||
|
this.enabled = enabled;
|
||||||
|
return enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setMountedYaw(EntityLiving handle) {
|
private void setMountedYaw(EntityLiving handle) {
|
||||||
@ -220,40 +226,6 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LookAirController implements MovementController {
|
|
||||||
boolean paused = false;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void leftClick(PlayerInteractEvent event) {
|
|
||||||
paused = !paused;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void rightClick(PlayerInteractEvent event) {
|
|
||||||
paused = !paused;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void rightClickEntity(NPCRightClickEvent event) {
|
|
||||||
enterOrLeaveVehicle(event.getClicker());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run(Player rider) {
|
|
||||||
if (paused) {
|
|
||||||
getHandle().motY = 0.001;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Vector dir = rider.getEyeLocation().getDirection();
|
|
||||||
dir.multiply(npc.getNavigator().getDefaultParameters().speedModifier());
|
|
||||||
EntityLiving handle = getHandle();
|
|
||||||
handle.motX = dir.getX();
|
|
||||||
handle.motY = dir.getY();
|
|
||||||
handle.motZ = dir.getZ();
|
|
||||||
setMountedYaw(handle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class GroundController implements MovementController {
|
public class GroundController implements MovementController {
|
||||||
private int jumpTicks = 0;
|
private int jumpTicks = 0;
|
||||||
private double speed = 0.07D;
|
private double speed = 0.07D;
|
||||||
@ -298,6 +270,40 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
|
|||||||
private static final float JUMP_VELOCITY = 0.6F;
|
private static final float JUMP_VELOCITY = 0.6F;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class LookAirController implements MovementController {
|
||||||
|
boolean paused = false;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void leftClick(PlayerInteractEvent event) {
|
||||||
|
paused = !paused;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void rightClick(PlayerInteractEvent event) {
|
||||||
|
paused = !paused;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void rightClickEntity(NPCRightClickEvent event) {
|
||||||
|
enterOrLeaveVehicle(event.getClicker());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(Player rider) {
|
||||||
|
if (paused) {
|
||||||
|
getHandle().motY = 0.001;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Vector dir = rider.getEyeLocation().getDirection();
|
||||||
|
dir.multiply(npc.getNavigator().getDefaultParameters().speedModifier());
|
||||||
|
EntityLiving handle = getHandle();
|
||||||
|
handle.motX = dir.getX();
|
||||||
|
handle.motY = dir.getY();
|
||||||
|
handle.motZ = dir.getZ();
|
||||||
|
setMountedYaw(handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static interface MovementController {
|
public static interface MovementController {
|
||||||
void leftClick(PlayerInteractEvent event);
|
void leftClick(PlayerInteractEvent event);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user