Skip to content

Commit

Permalink
Consolidate versioned trait commands
Browse files Browse the repository at this point in the history
  • Loading branch information
fullwall committed Jul 9, 2022
1 parent aaca317 commit 3fcf893
Show file tree
Hide file tree
Showing 41 changed files with 1,043 additions and 4,757 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
package net.citizensnpcs.trait.versioned;

import org.bukkit.command.CommandSender;
import org.bukkit.entity.Axolotl;
import org.bukkit.entity.EntityType;

import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Requirements;
import net.citizensnpcs.api.command.exception.CommandException;
import net.citizensnpcs.api.command.exception.CommandUsageException;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;

@TraitName("axolotltrait")
public class AxolotlTrait extends Trait {
Expand Down Expand Up @@ -43,4 +54,38 @@ public void setPlayingDead(boolean playingDead) {
public void setVariant(Axolotl.Variant variant) {
this.variant = variant;
}

@Command(
aliases = { "npc" },
usage = "axolotl (-d) (--variant variant)",
desc = "Sets axolotl modifiers",
modifiers = { "axolotl" },
min = 1,
max = 1,
flags = "d",
permission = "citizens.npc.axolotl")
@Requirements(selected = true, ownership = true, types = EntityType.AXOLOTL)
public static void axolotl(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
AxolotlTrait trait = npc.getOrAddTrait(AxolotlTrait.class);
String output = "";
if (args.hasValueFlag("variant")) {
Axolotl.Variant variant = Util.matchEnum(Axolotl.Variant.values(), args.getFlag("variant"));
if (variant == null) {
throw new CommandException(Messages.INVALID_AXOLOTL_VARIANT,
Util.listValuesPretty(Axolotl.Variant.values()));
}
trait.setVariant(variant);
output += ' ' + Messaging.tr(Messages.AXOLOTL_VARIANT_SET, args.getFlag("variant"));
}
if (args.hasFlag('d')) {
trait.setPlayingDead(!trait.isPlayingDead());
output += ' ' + (trait.isPlayingDead() ? Messaging.tr(Messages.AXOLOTL_PLAYING_DEAD, npc.getName())
: Messaging.tr(Messages.AXOLOTL_NOT_PLAYING_DEAD, npc.getName()));
}
if (!output.isEmpty()) {
Messaging.send(sender, output.trim());
} else {
throw new CommandUsageException();
}
}
}
48 changes: 48 additions & 0 deletions main/src/main/java/net/citizensnpcs/trait/versioned/BeeTrait.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
package net.citizensnpcs.trait.versioned;

import org.bukkit.command.CommandSender;
import org.bukkit.entity.Bee;
import org.bukkit.entity.EntityType;

import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Requirements;
import net.citizensnpcs.api.command.exception.CommandException;
import net.citizensnpcs.api.command.exception.CommandUsageException;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.util.Messages;

@TraitName("beetrait")
public class BeeTrait extends Trait {
Expand Down Expand Up @@ -48,4 +58,42 @@ public void setNectar(boolean nectar) {
public void setStung(boolean stung) {
this.stung = stung;
}

@Command(
aliases = { "npc" },
usage = "bee (-s/-n) --anger anger",
desc = "Sets bee modifiers",
modifiers = { "bee" },
min = 1,
max = 1,
flags = "sn",
permission = "citizens.npc.bee")
@Requirements(selected = true, ownership = true, types = EntityType.BEE)
public static void bee(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
BeeTrait trait = npc.getOrAddTrait(BeeTrait.class);
String output = "";
if (args.hasValueFlag("anger")) {
int anger = args.getFlagInteger("anger");
if (anger < 0) {
throw new CommandException(Messages.INVALID_BEE_ANGER);
}
trait.setAnger(anger);
output += ' ' + Messaging.tr(Messages.BEE_ANGER_SET, args.getFlag("anger"));
}
if (args.hasFlag('s')) {
trait.setStung(!trait.hasStung());
output += ' ' + (trait.hasStung() ? Messaging.tr(Messages.BEE_STUNG, npc.getName())
: Messaging.tr(Messages.BEE_NOT_STUNG, npc.getName()));
}
if (args.hasFlag('n')) {
trait.setNectar(!trait.hasNectar());
output += ' ' + (trait.hasNectar() ? Messaging.tr(Messages.BEE_HAS_NECTAR, npc.getName())
: Messaging.tr(Messages.BEE_NO_NECTAR, npc.getName()));
}
if (!output.isEmpty()) {
Messaging.send(sender, output.trim());
} else {
throw new CommandUsageException();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,28 @@
import org.bukkit.boss.BarFlag;
import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;

import com.google.common.base.Splitter;
import com.google.common.collect.Lists;

import net.citizensnpcs.Settings.Setting;
import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Requirements;
import net.citizensnpcs.api.command.exception.CommandException;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.api.util.Colorizer;
import net.citizensnpcs.api.util.Placeholders;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;

@TraitName("bossbar")
public class BossBarTrait extends Trait {
Expand Down Expand Up @@ -179,5 +188,48 @@ public void setVisible(boolean visible) {
this.visible = visible;
}

@Command(
aliases = { "npc" },
usage = "bossbar --style [style] --color [color] --title [title] --visible [visible] --flags [flags] --track [health | placeholder]",
desc = "Edit bossbar properties",
modifiers = { "bossbar" },
min = 1,
max = 1)
@Requirements(selected = true, ownership = true)
public static void bossbar(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
BossBarTrait trait = npc.getOrAddTrait(BossBarTrait.class);
if (args.hasValueFlag("style")) {
BarStyle style = Util.matchEnum(BarStyle.values(), args.getFlag("style"));
if (style != null) {
trait.setStyle(style);
}
}
if (args.hasValueFlag("color")) {
BarColor color = Util.matchEnum(BarColor.values(), args.getFlag("color"));
if (color != null) {
trait.setColor(color);
}
}
if (args.hasValueFlag("track")) {
trait.setTrackVariable(args.getFlag("track"));
}
if (args.hasValueFlag("title")) {
trait.setTitle(Colorizer.parseColors(args.getFlag("title")));
}
if (args.hasValueFlag("visible")) {
trait.setVisible(Boolean.parseBoolean(args.getFlag("visible")));
}
if (args.hasValueFlag("flags")) {
List<BarFlag> flags = Lists.newArrayList();
for (String s : Splitter.on(',').omitEmptyStrings().trimResults().split(args.getFlag("flags"))) {
BarFlag flag = Util.matchEnum(BarFlag.values(), s);
if (flag != null) {
flags.add(flag);
}
}
trait.setFlags(flags);
}
}

private static boolean SUPPORT_ATTRIBUTES = true;
}
60 changes: 60 additions & 0 deletions main/src/main/java/net/citizensnpcs/trait/versioned/CatTrait.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
package net.citizensnpcs.trait.versioned;

import org.bukkit.DyeColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Cat;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Ocelot.Type;

import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Requirements;
import net.citizensnpcs.api.command.exception.CommandException;
import net.citizensnpcs.api.command.exception.CommandUsageException;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;

@TraitName("cattrait")
public class CatTrait extends Trait {
Expand Down Expand Up @@ -73,4 +84,53 @@ public void setType(Type type2) {
break;
}
}

@Command(
aliases = { "npc" },
usage = "cat (-s/-n/-l) --type type --ccolor collar color",
desc = "Sets cat modifiers",
modifiers = { "cat" },
min = 1,
max = 1,
flags = "snl",
permission = "citizens.npc.cat")
@Requirements(selected = true, ownership = true, types = EntityType.CAT)
public static void cat(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
CatTrait trait = npc.getOrAddTrait(CatTrait.class);
String output = "";
if (args.hasValueFlag("type")) {
Cat.Type type = Util.matchEnum(Cat.Type.values(), args.getFlag("type"));
if (type == null) {
throw new CommandUsageException(Messages.INVALID_CAT_TYPE, Util.listValuesPretty(Cat.Type.values()));
}
trait.setType(type);
output += ' ' + Messaging.tr(Messages.CAT_TYPE_SET, args.getFlag("type"));
}
if (args.hasValueFlag("ccolor")) {
DyeColor color = Util.matchEnum(DyeColor.values(), args.getFlag("ccolor"));
if (color == null) {
throw new CommandUsageException(Messages.INVALID_CAT_COLLAR_COLOR,
Util.listValuesPretty(DyeColor.values()));
}
trait.setCollarColor(color);
output += ' ' + Messaging.tr(Messages.CAT_COLLAR_COLOR_SET, args.getFlag("ccolor"));
}
if (args.hasFlag('s')) {
trait.setSitting(true);
output += ' ' + Messaging.tr(Messages.CAT_STARTED_SITTING, npc.getName());
} else if (args.hasFlag('n')) {
trait.setSitting(false);
output += ' ' + Messaging.tr(Messages.CAT_STOPPED_SITTING, npc.getName());
}
if (args.hasFlag('l')) {
trait.setLyingDown(!trait.isLyingDown());
output += ' ' + Messaging.tr(trait.isLyingDown() ? Messages.CAT_STARTED_LYING : Messages.CAT_STOPPED_LYING,
npc.getName());
}
if (!output.isEmpty()) {
Messaging.send(sender, output.trim());
} else {
throw new CommandUsageException();
}
}
}
53 changes: 53 additions & 0 deletions main/src/main/java/net/citizensnpcs/trait/versioned/FoxTrait.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
package net.citizensnpcs.trait.versioned;

import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Fox;

import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Requirements;
import net.citizensnpcs.api.command.exception.CommandException;
import net.citizensnpcs.api.command.exception.CommandUsageException;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;

@TraitName("foxtrait")
public class FoxTrait extends Trait {
Expand Down Expand Up @@ -63,4 +74,46 @@ public void setSleeping(boolean sleeping) {
public void setType(Fox.Type type) {
this.type = type;
}

@Command(
aliases = { "npc" },
usage = "fox --type type --sleeping [true|false] --sitting [true|false] --crouching [true|false]",
desc = "Sets fox modifiers",
modifiers = { "fox" },
min = 1,
max = 1,
permission = "citizens.npc.fox")
@Requirements(selected = true, ownership = true, types = EntityType.FOX)
public static void fox(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
FoxTrait trait = npc.getOrAddTrait(FoxTrait.class);
String output = "";
if (args.hasValueFlag("type")) {
Fox.Type type = Util.matchEnum(Fox.Type.values(), args.getFlag("type"));
if (type == null) {
throw new CommandUsageException(Messages.INVALID_FOX_TYPE, Util.listValuesPretty(Fox.Type.values()));
}
trait.setType(type);
output += ' ' + Messaging.tr(Messages.FOX_TYPE_SET, args.getFlag("type"));
}
if (args.hasValueFlag("sleeping")) {
boolean sleeping = Boolean.parseBoolean(args.getFlag("sleeping"));
trait.setSleeping(sleeping);
output += ' ' + Messaging.tr(sleeping ? Messages.FOX_SLEEPING_SET : Messages.FOX_SLEEPING_UNSET);
}
if (args.hasValueFlag("sitting")) {
boolean sitting = Boolean.parseBoolean(args.getFlag("sitting"));
trait.setSitting(sitting);
output += ' ' + Messaging.tr(sitting ? Messages.FOX_SITTING_SET : Messages.FOX_SITTING_UNSET);
}
if (args.hasValueFlag("crouching")) {
boolean crouching = Boolean.parseBoolean(args.getFlag("crouching"));
trait.setCrouching(crouching);
output += ' ' + Messaging.tr(crouching ? Messages.FOX_CROUCHING_SET : Messages.FOX_CROUCHING_UNSET);
}
if (!output.isEmpty()) {
Messaging.send(sender, output.trim());
} else {
throw new CommandUsageException();
}
}
}
Loading

0 comments on commit 3fcf893

Please sign in to comment.