mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2025-01-13 03:40:39 +01:00
Add /npc sheep
This commit is contained in:
parent
950013f4f5
commit
95993348bd
@ -48,6 +48,7 @@ import net.citizensnpcs.trait.Poses;
|
||||
import net.citizensnpcs.trait.Powered;
|
||||
import net.citizensnpcs.trait.RabbitType;
|
||||
import net.citizensnpcs.trait.RabbitType.RabbitTypes;
|
||||
import net.citizensnpcs.trait.SheepTrait;
|
||||
import net.citizensnpcs.trait.SlimeSize;
|
||||
import net.citizensnpcs.trait.VillagerProfession;
|
||||
import net.citizensnpcs.trait.WolfModifiers;
|
||||
@ -271,7 +272,7 @@ public class NPCCommands {
|
||||
}
|
||||
|
||||
CommandSenderCreateNPCEvent event = sender instanceof Player ? new PlayerCreateNPCEvent((Player) sender, copy)
|
||||
: new CommandSenderCreateNPCEvent(sender, copy);
|
||||
: new CommandSenderCreateNPCEvent(sender, copy);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
event.getNPC().destroy();
|
||||
@ -347,7 +348,7 @@ public class NPCCommands {
|
||||
spawnLoc = args.getSenderLocation();
|
||||
}
|
||||
CommandSenderCreateNPCEvent event = sender instanceof Player ? new PlayerCreateNPCEvent((Player) sender, npc)
|
||||
: new CommandSenderCreateNPCEvent(sender, npc);
|
||||
: new CommandSenderCreateNPCEvent(sender, npc);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
npc.destroy();
|
||||
@ -1024,7 +1025,7 @@ public class NPCCommands {
|
||||
@Requirements(selected = true, ownership = true, types = { EntityType.CREEPER })
|
||||
public void power(CommandContext args, CommandSender sender, NPC npc) {
|
||||
Messaging
|
||||
.sendTr(sender, npc.getTrait(Powered.class).toggle() ? Messages.POWERED_SET : Messages.POWERED_STOPPED);
|
||||
.sendTr(sender, npc.getTrait(Powered.class).toggle() ? Messages.POWERED_SET : Messages.POWERED_STOPPED);
|
||||
}
|
||||
|
||||
@Command(
|
||||
@ -1040,14 +1041,29 @@ public class NPCCommands {
|
||||
String profession = args.getString(1);
|
||||
Profession parsed = Util.matchEnum(Profession.values(), profession.toUpperCase());
|
||||
if (parsed == null) {
|
||||
throw new CommandException(Messages.INVALID_PROFESSION,args.getString(1),StringUtils.join(Profession.values(), ","));
|
||||
throw new CommandException(Messages.INVALID_PROFESSION, args.getString(1), StringUtils.join(
|
||||
Profession.values(), ","));
|
||||
}
|
||||
npc.getTrait(VillagerProfession.class).setProfession(parsed);
|
||||
Messaging.sendTr(sender, Messages.PROFESSION_SET, npc.getName(), profession);
|
||||
}
|
||||
|
||||
@Command(aliases = { "npc" }, usage = "rabbittype [type]", desc = "Set the Type of a Rabbit NPC", modifiers = {
|
||||
"rabbittype", "rbtype" }, min = 2, permission = "citizens.npc.rabbittype")
|
||||
@Requirements(selected = true, ownership = true, types = { EntityType.RABBIT })
|
||||
public void rabbitType(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
||||
RabbitTypes type;
|
||||
try {
|
||||
type = RabbitTypes.valueOf(args.getString(1).toUpperCase());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
throw new CommandException(Messages.INVALID_RABBIT_TYPE, StringUtils.join(RabbitTypes.values(), ","));
|
||||
}
|
||||
npc.getTrait(RabbitType.class).setType(type);
|
||||
Messaging.sendTr(sender, Messages.RABBIT_TYPE_SET, npc.getName(), type.name());
|
||||
}
|
||||
|
||||
@Command(aliases = { "npc" }, usage = "remove|rem (all|id|name)", desc = "Remove a NPC", modifiers = { "remove",
|
||||
"rem" }, min = 1, max = 2)
|
||||
"rem" }, min = 1, max = 2)
|
||||
@Requirements
|
||||
public void remove(final CommandContext args, final CommandSender sender, NPC npc) throws CommandException {
|
||||
if (args.argsLength() == 2) {
|
||||
@ -1085,25 +1101,6 @@ public class NPCCommands {
|
||||
Messaging.sendTr(sender, Messages.NPC_REMOVED, npc.getName());
|
||||
}
|
||||
|
||||
@Command(
|
||||
aliases = { "npc" },
|
||||
usage = "rabbittype [type]",
|
||||
desc = "Set the Type of a Rabbit NPC",
|
||||
modifiers = { "rabbittype","rbtype" },
|
||||
min = 2,
|
||||
permission = "citizens.npc.rabbittype")
|
||||
@Requirements(selected = true, ownership = true, types = { EntityType.RABBIT })
|
||||
public void rabbitType(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
||||
RabbitTypes type;
|
||||
try {
|
||||
type = RabbitTypes.valueOf(args.getString(1).toUpperCase());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
throw new CommandException(Messages.INVALID_RABBIT_TYPE,StringUtils.join(RabbitTypes.values(), ","));
|
||||
}
|
||||
npc.getTrait(RabbitType.class).setType(type);
|
||||
Messaging.sendTr(sender, Messages.RABBIT_TYPE_SET, npc.getName(), type.name());
|
||||
}
|
||||
|
||||
@Command(
|
||||
aliases = { "npc" },
|
||||
usage = "rename [name]",
|
||||
@ -1194,16 +1191,38 @@ public class NPCCommands {
|
||||
}
|
||||
}
|
||||
|
||||
@Command(
|
||||
aliases = { "npc" },
|
||||
usage = "sheep (--color [color]) (--sheared [sheared])",
|
||||
desc = "Sets sheep modifiers",
|
||||
modifiers = { "sheep" },
|
||||
min = 1,
|
||||
max = 1,
|
||||
permission = "citizens.npc.sheep")
|
||||
@Requirements(selected = true, ownership = true, types = { EntityType.SHEEP })
|
||||
public void sheep(CommandContext args, CommandSender sender, NPC npc) {
|
||||
SheepTrait trait = npc.getTrait(SheepTrait.class);
|
||||
if (args.hasValueFlag("sheared")) {
|
||||
trait.setSheared(Boolean.valueOf(args.getFlag("sheared")));
|
||||
}
|
||||
if (args.hasValueFlag("color")) {
|
||||
DyeColor color = Util.matchEnum(DyeColor.values(), args.getFlag("color"));
|
||||
if (color != null) {
|
||||
trait.setColor(color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Command(aliases = { "npc" }, usage = "skeletontype [type]", desc = "Sets the NPC's skeleton type", modifiers = {
|
||||
"skeletontype", "sktype" }, min = 2, max = 2, permission = "citizens.npc.skeletontype")
|
||||
@Requirements(selected = true, ownership = true, types = EntityType.SKELETON)
|
||||
public void skeletonType(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
||||
SkeletonType type;
|
||||
try {
|
||||
type = SkeletonType.valueOf(args.getString(1).toUpperCase());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
throw new CommandException(Messages.INVALID_SKELETON_TYPE,StringUtils.join(SkeletonType.values(), ","));
|
||||
}
|
||||
SkeletonType type;
|
||||
try {
|
||||
type = SkeletonType.valueOf(args.getString(1).toUpperCase());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
throw new CommandException(Messages.INVALID_SKELETON_TYPE, StringUtils.join(SkeletonType.values(), ","));
|
||||
}
|
||||
npc.getTrait(NPCSkeletonType.class).setType(type);
|
||||
Messaging.sendTr(sender, Messages.SKELETON_TYPE_SET, npc.getName(), type);
|
||||
}
|
||||
@ -1586,18 +1605,19 @@ public class NPCCommands {
|
||||
try {
|
||||
color = DyeColor.valueOf(unparsed.toUpperCase().replace(' ', '_'));
|
||||
} catch (IllegalArgumentException e) {
|
||||
try {
|
||||
int rgb = Integer.parseInt(unparsed.replace("#", ""), 16);
|
||||
color = DyeColor.getByColor(org.bukkit.Color.fromRGB(rgb));
|
||||
} catch (NumberFormatException ex) {
|
||||
throw new CommandException(Messages.COLLAR_COLOUR_NOT_RECOGNISED,unparsed);
|
||||
}
|
||||
try {
|
||||
int rgb = Integer.parseInt(unparsed.replace("#", ""), 16);
|
||||
color = DyeColor.getByColor(org.bukkit.Color.fromRGB(rgb));
|
||||
} catch (NumberFormatException ex) {
|
||||
throw new CommandException(Messages.COLLAR_COLOUR_NOT_RECOGNISED, unparsed);
|
||||
}
|
||||
}
|
||||
if (color == null)
|
||||
throw new CommandException(Messages.COLLAR_COLOUR_NOT_SUPPORTED,unparsed);
|
||||
throw new CommandException(Messages.COLLAR_COLOUR_NOT_SUPPORTED, unparsed);
|
||||
trait.setCollarColor(color);
|
||||
}
|
||||
Messaging.sendTr(sender, Messages.WOLF_TRAIT_UPDATED, npc.getName(), args.hasFlag('a'), args.hasFlag('s'), args.hasFlag('t'),trait.getCollarColor().name());
|
||||
Messaging.sendTr(sender, Messages.WOLF_TRAIT_UPDATED, npc.getName(), args.hasFlag('a'), args.hasFlag('s'),
|
||||
args.hasFlag('t'), trait.getCollarColor().name());
|
||||
}
|
||||
|
||||
@Command(
|
||||
|
@ -2,7 +2,7 @@ package net.citizensnpcs.editor;
|
||||
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import net.citizensnpcs.api.util.Messaging;
|
||||
import net.citizensnpcs.trait.Sheared;
|
||||
import net.citizensnpcs.trait.SheepTrait;
|
||||
import net.citizensnpcs.trait.WoolColor;
|
||||
import net.citizensnpcs.util.Messages;
|
||||
|
||||
@ -19,7 +19,7 @@ public class SheepEquipper implements Equipper {
|
||||
ItemStack hand = equipper.getItemInHand();
|
||||
Sheep sheep = (Sheep) toEquip.getEntity();
|
||||
if (hand.getType() == Material.SHEARS) {
|
||||
Messaging.sendTr(equipper, toEquip.getTrait(Sheared.class).toggle() ? Messages.SHEARED_SET
|
||||
Messaging.sendTr(equipper, toEquip.getTrait(SheepTrait.class).toggleSheared() ? Messages.SHEARED_SET
|
||||
: Messages.SHEARED_STOPPED, toEquip.getName());
|
||||
} else if (hand.getType() == Material.INK_SACK) {
|
||||
Dye dye = (Dye) hand.getData();
|
||||
|
@ -30,7 +30,7 @@ import net.citizensnpcs.trait.Poses;
|
||||
import net.citizensnpcs.trait.Powered;
|
||||
import net.citizensnpcs.trait.RabbitType;
|
||||
import net.citizensnpcs.trait.Saddle;
|
||||
import net.citizensnpcs.trait.Sheared;
|
||||
import net.citizensnpcs.trait.SheepTrait;
|
||||
import net.citizensnpcs.trait.SlimeSize;
|
||||
import net.citizensnpcs.trait.VillagerProfession;
|
||||
import net.citizensnpcs.trait.WolfModifiers;
|
||||
@ -64,7 +64,7 @@ public class CitizensTraitFactory implements TraitFactory {
|
||||
registerTrait(TraitInfo.create(Powered.class).withName("powered"));
|
||||
registerTrait(TraitInfo.create(RabbitType.class).withName("rabbittype"));
|
||||
registerTrait(TraitInfo.create(Saddle.class).withName("saddle"));
|
||||
registerTrait(TraitInfo.create(Sheared.class).withName("sheared"));
|
||||
registerTrait(TraitInfo.create(SheepTrait.class).withName("sheeptrait"));
|
||||
registerTrait(TraitInfo.create(NPCSkeletonType.class).withName("skeletontype"));
|
||||
registerTrait(TraitInfo.create(SlimeSize.class).withName("slimesize"));
|
||||
registerTrait(TraitInfo.create(Spawned.class).withName("spawned"));
|
||||
|
@ -1,43 +0,0 @@
|
||||
package net.citizensnpcs.trait;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.persistence.Persist;
|
||||
import net.citizensnpcs.api.trait.Trait;
|
||||
|
||||
import org.bukkit.entity.Sheep;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerShearEntityEvent;
|
||||
|
||||
public class Sheared extends Trait implements Toggleable {
|
||||
@Persist("")
|
||||
private boolean sheared;
|
||||
|
||||
public Sheared() {
|
||||
super("sheared");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerShearEntityEvent(PlayerShearEntityEvent event) {
|
||||
if (npc.equals(CitizensAPI.getNPCRegistry().getNPC(event.getEntity())))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSpawn() {
|
||||
if (npc.getEntity() instanceof Sheep)
|
||||
((Sheep) npc.getEntity()).setSheared(sheared);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean toggle() {
|
||||
sheared = !sheared;
|
||||
if (npc.getEntity() instanceof Sheep)
|
||||
((Sheep) npc.getEntity()).setSheared(sheared);
|
||||
return sheared;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Sheared{" + sheared + "}";
|
||||
}
|
||||
}
|
53
src/main/java/net/citizensnpcs/trait/SheepTrait.java
Normal file
53
src/main/java/net/citizensnpcs/trait/SheepTrait.java
Normal file
@ -0,0 +1,53 @@
|
||||
package net.citizensnpcs.trait;
|
||||
|
||||
import net.citizensnpcs.api.CitizensAPI;
|
||||
import net.citizensnpcs.api.persistence.Persist;
|
||||
import net.citizensnpcs.api.trait.Trait;
|
||||
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.entity.Sheep;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerShearEntityEvent;
|
||||
|
||||
public class SheepTrait extends Trait {
|
||||
@Persist("color")
|
||||
private DyeColor color;
|
||||
@Persist("sheared")
|
||||
private boolean sheared;
|
||||
|
||||
public SheepTrait() {
|
||||
super("sheeptrait");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerShearEntityEvent(PlayerShearEntityEvent event) {
|
||||
if (npc != null && npc.equals(CitizensAPI.getNPCRegistry().getNPC(event.getEntity()))) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSpawn() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (npc.getEntity() instanceof Sheep) {
|
||||
Sheep sheep = (Sheep) npc.getEntity();
|
||||
sheep.setSheared(sheared);
|
||||
sheep.setColor(color);
|
||||
}
|
||||
}
|
||||
|
||||
public void setColor(DyeColor color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public void setSheared(boolean sheared) {
|
||||
this.sheared = sheared;
|
||||
}
|
||||
|
||||
public boolean toggleSheared() {
|
||||
return sheared = !sheared;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user