Add /npc snowman

This commit is contained in:
fullwall 2020-02-25 14:12:06 +08:00
parent a8676cd739
commit ad69b483db
16 changed files with 193 additions and 1 deletions

View File

@ -0,0 +1,31 @@
package net.citizensnpcs.trait.versioned;
import org.bukkit.DyeColor;
import org.bukkit.entity.Shulker;
import org.bukkit.entity.Snowman;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.util.NMS;
@TraitName("snowmantrait")
public class SnowmanTrait extends Trait {
@Persist("derp")
private boolean derp;
public SnowmanTrait() {
super("snowmantrait");
}
@Override
public void run() {
if (npc.getEntity() instanceof Snowman) {
((Snowman) npc.getEntity()).setDerp(derp);
}
}
public boolean toggleDerp() {
return this.derp = !this.derp;
}
}

View File

@ -370,4 +370,6 @@ public class Messages {
public static final String ZOMBIE_VILLAGER_PROFESSION_SET = "citizens.commands.npc.zombiemod.villager-profession-set";
public static final String ZOMBIE_VILLAGER_SET = "citizens.commands.npc.zombiemod.villager-set";
public static final String ZOMBIE_VILLAGER_UNSET = "citizens.commands.npc.zombiemod.villager-unset";
public static final String SNOWMAN_DERP_SET = "citizens.commands.npc.snowman.derp-set";
public static final String SNOWMAN_DERP_STOPPED = "citizens.commands.npc.snowman.derp-stopped";
}

View File

@ -183,6 +183,8 @@ citizens.commands.npc.sound.set=[[{0}]]''s sounds are now: ambient - [[{1}]] hur
citizens.commands.npc.sound.info=[[{0}]]''s sounds are: ambient - [[{1}]] hurt - [[{2}]] and death - [[{3}]].<br><br>Valid sounds are {4}.
citizens.commands.npc.skeletontype.set={0}''s skeleton type set to [[{1}]].
citizens.commands.npc.skeletontype.invalid-type=Invalid skeleton type. Try one of the following: [[{0}]].
citizens.commands.npc.snowman.derp-set=[[{0}]] is now in derp mode.
citizens.commands.npc.snowman.derp-stopped=[[{0}]] is no longer in derp mode.
citizens.commands.npc.spawn.already-spawned=[[{0}]] is already spawned at another location. Use ''/npc tphere'' to teleport the NPC to your location.
citizens.commands.npc.spawn.missing-npc-id=No NPC with the ID {0} exists.
citizens.commands.npc.spawn.no-location=No stored location available - command must be used ingame.

View File

@ -21,6 +21,7 @@ import net.citizensnpcs.api.util.Colorizer;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;
@ -90,4 +91,27 @@ public class Commands {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "snowman (-d[erp])",
desc = "Sets snowman modifiers.",
modifiers = { "snowman" },
min = 1,
max = 1,
flags = "d",
permission = "citizens.npc.snowman")
@Requirements(selected = true, ownership = true, types = { EntityType.SNOWMAN })
public void snowman(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
SnowmanTrait trait = npc.getTrait(SnowmanTrait.class);
boolean hasArg = false;
if (args.hasFlag('d')) {
boolean isDerp = trait.toggleDerp();
Messaging.sendTr(sender, isDerp ? Messages.SNOWMAN_DERP_SET : Messages.SNOWMAN_DERP_STOPPED, npc.getName());
hasArg = true;
}
if (!hasArg) {
throw new CommandUsageException();
}
}
}

View File

@ -145,6 +145,7 @@ import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.npc.skin.SkinnableEntity;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.BoundingBox;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
@ -542,6 +543,7 @@ public class NMSImpl implements NMSBridge {
public void load(CommandManager commands) {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(BossBarTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
commands.register(Commands.class);
}

View File

@ -23,6 +23,7 @@ import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;
@ -122,4 +123,27 @@ public class Commands {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "snowman (-d[erp])",
desc = "Sets snowman modifiers.",
modifiers = { "snowman" },
min = 1,
max = 1,
flags = "d",
permission = "citizens.npc.snowman")
@Requirements(selected = true, ownership = true, types = { EntityType.SNOWMAN })
public void snowman(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
SnowmanTrait trait = npc.getTrait(SnowmanTrait.class);
boolean hasArg = false;
if (args.hasFlag('d')) {
boolean isDerp = trait.toggleDerp();
Messaging.sendTr(sender, isDerp ? Messages.SNOWMAN_DERP_SET : Messages.SNOWMAN_DERP_STOPPED, npc.getName());
hasArg = true;
}
if (!hasArg) {
throw new CommandUsageException();
}
}
}

View File

@ -162,6 +162,7 @@ import net.citizensnpcs.npc.skin.SkinnableEntity;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.BoundingBox;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
@ -583,6 +584,7 @@ public class NMSImpl implements NMSBridge {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(BossBarTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(LlamaTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
manager.register(Commands.class);
}

View File

@ -25,6 +25,7 @@ import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;
@ -151,4 +152,27 @@ public class Commands {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "snowman (-d[erp])",
desc = "Sets snowman modifiers.",
modifiers = { "snowman" },
min = 1,
max = 1,
flags = "d",
permission = "citizens.npc.snowman")
@Requirements(selected = true, ownership = true, types = { EntityType.SNOWMAN })
public void snowman(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
SnowmanTrait trait = npc.getTrait(SnowmanTrait.class);
boolean hasArg = false;
if (args.hasFlag('d')) {
boolean isDerp = trait.toggleDerp();
Messaging.sendTr(sender, isDerp ? Messages.SNOWMAN_DERP_SET : Messages.SNOWMAN_DERP_STOPPED, npc.getName());
hasArg = true;
}
if (!hasArg) {
throw new CommandUsageException();
}
}
}

View File

@ -164,6 +164,7 @@ import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.BoundingBox;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
@ -587,6 +588,7 @@ public class NMSImpl implements NMSBridge {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ParrotTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(BossBarTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
manager.register(Commands.class);
}

View File

@ -28,6 +28,7 @@ import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.trait.versioned.TropicalFishTrait;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;
@ -249,4 +250,27 @@ public class Commands {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "snowman (-d[erp])",
desc = "Sets snowman modifiers.",
modifiers = { "snowman" },
min = 1,
max = 1,
flags = "d",
permission = "citizens.npc.snowman")
@Requirements(selected = true, ownership = true, types = { EntityType.SNOWMAN })
public void snowman(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
SnowmanTrait trait = npc.getTrait(SnowmanTrait.class);
boolean hasArg = false;
if (args.hasFlag('d')) {
boolean isDerp = trait.toggleDerp();
Messaging.sendTr(sender, isDerp ? Messages.SNOWMAN_DERP_SET : Messages.SNOWMAN_DERP_STOPPED, npc.getName());
hasArg = true;
}
if (!hasArg) {
throw new CommandUsageException();
}
}
}

View File

@ -176,6 +176,7 @@ import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.trait.versioned.TropicalFishTrait;
import net.citizensnpcs.util.BoundingBox;
import net.citizensnpcs.util.Messages;
@ -609,6 +610,7 @@ public class NMSImpl implements NMSBridge {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ParrotTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(BossBarTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PhantomTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PufferFishTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(TropicalFishTrait.class));

View File

@ -40,6 +40,7 @@ import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.trait.versioned.TropicalFishTrait;
import net.citizensnpcs.trait.versioned.VillagerTrait;
import net.citizensnpcs.util.Messages;
@ -463,4 +464,27 @@ public class Commands {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "snowman (-d[erp])",
desc = "Sets snowman modifiers.",
modifiers = { "snowman" },
min = 1,
max = 1,
flags = "d",
permission = "citizens.npc.snowman")
@Requirements(selected = true, ownership = true, types = { EntityType.SNOWMAN })
public void snowman(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
SnowmanTrait trait = npc.getTrait(SnowmanTrait.class);
boolean hasArg = false;
if (args.hasFlag('d')) {
boolean isDerp = trait.toggleDerp();
Messaging.sendTr(sender, isDerp ? Messages.SNOWMAN_DERP_SET : Messages.SNOWMAN_DERP_STOPPED, npc.getName());
hasArg = true;
}
if (!hasArg) {
throw new CommandUsageException();
}
}
}

View File

@ -190,6 +190,7 @@ import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.trait.versioned.TropicalFishTrait;
import net.citizensnpcs.trait.versioned.VillagerTrait;
import net.citizensnpcs.util.BoundingBox;
@ -665,6 +666,7 @@ public class NMSImpl implements NMSBridge {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PhantomTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PufferFishTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(TropicalFishTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(VillagerTrait.class));
manager.register(Commands.class);

View File

@ -104,8 +104,9 @@ public class BlazeController extends MobEntityController {
return;
}
if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0) {
if (!npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true))
if (!npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true)) {
super.h(x, y, z);
}
return;
}
Vector vector = new Vector(x, y, z);

View File

@ -41,6 +41,7 @@ import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.trait.versioned.TropicalFishTrait;
import net.citizensnpcs.trait.versioned.VillagerTrait;
import net.citizensnpcs.util.Messages;
@ -507,4 +508,27 @@ public class Commands {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "snowman (-d[erp])",
desc = "Sets snowman modifiers.",
modifiers = { "snowman" },
min = 1,
max = 1,
flags = "d",
permission = "citizens.npc.snowman")
@Requirements(selected = true, ownership = true, types = { EntityType.SNOWMAN })
public void snowman(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
SnowmanTrait trait = npc.getTrait(SnowmanTrait.class);
boolean hasArg = false;
if (args.hasFlag('d')) {
boolean isDerp = trait.toggleDerp();
Messaging.sendTr(sender, isDerp ? Messages.SNOWMAN_DERP_SET : Messages.SNOWMAN_DERP_STOPPED, npc.getName());
hasArg = true;
}
if (!hasArg) {
throw new CommandUsageException();
}
}
}

View File

@ -192,6 +192,7 @@ import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.trait.versioned.TropicalFishTrait;
import net.citizensnpcs.trait.versioned.VillagerTrait;
import net.citizensnpcs.util.BoundingBox;
@ -669,6 +670,7 @@ public class NMSImpl implements NMSBridge {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PhantomTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PufferFishTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(TropicalFishTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(VillagerTrait.class));
manager.register(Commands.class);