Add /npc wither --charged

This commit is contained in:
fullwall 2015-11-16 21:36:00 +08:00
parent 997a14eb35
commit 35665695d1
3 changed files with 67 additions and 4 deletions

View File

@ -5,7 +5,6 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import net.citizensnpcs.npc.skin.SkinnableEntity;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.DyeColor;
@ -65,6 +64,7 @@ import net.citizensnpcs.npc.Template;
import net.citizensnpcs.npc.entity.nonliving.FallingBlockController.FallingBlockNPC;
import net.citizensnpcs.npc.entity.nonliving.ItemController.ItemNPC;
import net.citizensnpcs.npc.entity.nonliving.ItemFrameController.ItemFrameNPC;
import net.citizensnpcs.npc.skin.SkinnableEntity;
import net.citizensnpcs.trait.Age;
import net.citizensnpcs.trait.Anchors;
import net.citizensnpcs.trait.Controllable;
@ -83,6 +83,7 @@ import net.citizensnpcs.trait.SkinLayers;
import net.citizensnpcs.trait.SkinLayers.Layer;
import net.citizensnpcs.trait.SlimeSize;
import net.citizensnpcs.trait.VillagerProfession;
import net.citizensnpcs.trait.WitherTrait;
import net.citizensnpcs.trait.WolfModifiers;
import net.citizensnpcs.trait.ZombieModifier;
import net.citizensnpcs.util.Anchor;
@ -1333,7 +1334,8 @@ public class NPCCommands {
max = 5,
permission = "citizens.npc.skinlayers")
@Requirements(types = EntityType.PLAYER, selected = true, ownership = true)
public void skinLayers(final CommandContext args, final CommandSender sender, final NPC npc) throws CommandException {
public void skinLayers(final CommandContext args, final CommandSender sender, final NPC npc)
throws CommandException {
SkinLayers trait = npc.getTrait(SkinLayers.class);
if (args.hasValueFlag("cape")) {
trait.setVisible(Layer.CAPE, Boolean.valueOf(args.getFlag("cape")));
@ -1354,8 +1356,8 @@ public class NPCCommands {
trait.setVisible(Layer.LEFT_PANTS, hasPants);
trait.setVisible(Layer.RIGHT_PANTS, hasPants);
}
Messaging.sendTr(sender, Messages.SKIN_LAYERS_SET, npc.getName(),
trait.isVisible(Layer.CAPE), trait.isVisible(Layer.HAT), trait.isVisible(Layer.JACKET),
Messaging.sendTr(sender, Messages.SKIN_LAYERS_SET, npc.getName(), trait.isVisible(Layer.CAPE),
trait.isVisible(Layer.HAT), trait.isVisible(Layer.JACKET),
trait.isVisible(Layer.LEFT_SLEEVE) || trait.isVisible(Layer.RIGHT_SLEEVE),
trait.isVisible(Layer.LEFT_PANTS) || trait.isVisible(Layer.RIGHT_PANTS));
}
@ -1697,6 +1699,27 @@ public class NPCCommands {
Messaging.sendTr(sender, key, npc.getName());
}
@Command(
aliases = { "npc" },
usage = "wither (--charged [charged])",
desc = "Sets wither modifiers",
modifiers = { "wither" },
min = 1,
max = 1,
permission = "citizens.npc.wither")
@Requirements(selected = true, ownership = true, types = { EntityType.WITHER })
public void wither(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
WitherTrait trait = npc.getTrait(WitherTrait.class);
boolean hasArg = false;
if (args.hasValueFlag("charged")) {
trait.setCharged(Boolean.valueOf(args.getFlag("charged")));
hasArg = true;
}
if (!hasArg) {
throw new CommandException();
}
}
@Command(
aliases = { "npc" },
usage = "wolf (-s(itting) a(ngry) t(amed)) --collar [hex rgb color|name]",

View File

@ -39,6 +39,7 @@ import net.citizensnpcs.trait.SheepTrait;
import net.citizensnpcs.trait.SkinLayers;
import net.citizensnpcs.trait.SlimeSize;
import net.citizensnpcs.trait.VillagerProfession;
import net.citizensnpcs.trait.WitherTrait;
import net.citizensnpcs.trait.WolfModifiers;
import net.citizensnpcs.trait.WoolColor;
import net.citizensnpcs.trait.ZombieModifier;
@ -74,6 +75,7 @@ public class CitizensTraitFactory implements TraitFactory {
registerTrait(TraitInfo.create(Text.class).withName("text"));
registerTrait(TraitInfo.create(MobType.class).withName("type").asDefaultTrait());
registerTrait(TraitInfo.create(Waypoints.class).withName("waypoints"));
registerTrait(TraitInfo.create(WitherTrait.class).withName("withertrait"));
registerTrait(TraitInfo.create(WoolColor.class).withName("woolcolor"));
registerTrait(TraitInfo.create(WolfModifiers.class).withName("wolfmodifiers"));
registerTrait(TraitInfo.create(VillagerProfession.class).withName("profession"));

View File

@ -0,0 +1,38 @@
package net.citizensnpcs.trait;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftWither;
import org.bukkit.entity.Wither;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.minecraft.server.v1_8_R3.EntityWither;
public class WitherTrait extends Trait {
@Persist("charged")
private boolean charged = false;
public WitherTrait() {
super("withertrait");
}
public boolean isCharged() {
return charged;
}
@Override
public void onSpawn() {
}
@Override
public void run() {
if (npc.getEntity() instanceof Wither) {
Wither wither = (Wither) npc.getEntity();
EntityWither handle = ((CraftWither) wither).getHandle();
handle.r(charged ? 20 : 0);
}
}
public void setCharged(boolean charged) {
this.charged = charged;
}
}