Add /npc polarbear -r and restore target and goal selectors

master
fullwall 2020-12-17 13:13:23 +08:00
parent 040930bcde
commit fe7f6e373f
22 changed files with 323 additions and 35 deletions

View File

@ -0,0 +1,33 @@
package net.citizensnpcs.trait.versioned;
import org.bukkit.entity.PolarBear;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.util.NMS;
@TraitName("polarbeartrait")
public class PolarBearTrait extends Trait {
@Persist
private boolean rearing;
public PolarBearTrait() {
super("polarbeartrait");
}
public boolean isRearing() {
return rearing;
}
@Override
public void run() {
if (npc.isSpawned() && npc.getEntity() instanceof PolarBear) {
NMS.setPolarBearRearing(npc.getEntity(), rearing);
}
}
public void setRearing(boolean rearing) {
this.rearing = rearing;
}
}

View File

@ -38,7 +38,7 @@ public class Anchor {
if (object.getClass() != getClass())
return false;
Anchor op = (Anchor) object;
final Anchor op = (Anchor) object;
return new EqualsBuilder().append(name, op.name).isEquals();
}
@ -77,10 +77,10 @@ public class Anchor {
*/
public boolean load() {
try {
String[] parts = getUnloadedValue();
final String[] parts = getUnloadedValue();
this.location = new Location(Bukkit.getWorld(parts[0]), Double.valueOf(parts[1]), Double.valueOf(parts[2]),
Double.valueOf(parts[3]));
} catch (Exception e) {
} catch (final Exception e) {
// Still not able to be loaded
}
return location != null;
@ -95,7 +95,7 @@ public class Anchor {
@Override
public String toString() {
String[] parts = getUnloadedValue();
final String[] parts = getUnloadedValue();
return "Anchor{Name='" + name + "';World='" + parts[0] + "';Location='" + parts[1] + ',' + parts[2] + ','
+ parts[3] + "';}";
}

View File

@ -188,6 +188,8 @@ public class Messages {
public static final String LEASHABLE_STOPPED = "citizens.commands.npc.leashable.stopped";
public static final String LINEAR_WAYPOINT_EDITOR_ADDED_WAYPOINT = "citizens.editors.waypoints.linear.added-waypoint";
public static final String LINEAR_WAYPOINT_EDITOR_BEGIN = "citizens.editors.waypoints.linear.begin";
public static final String LINEAR_WAYPOINT_EDITOR_CYCLE_SET = "citizens.editors.waypoints.linear.cycle-set";
public static final String LINEAR_WAYPOINT_EDITOR_CYCLE_UNSET = "citizens.editors.waypoints.linear.cycle-unset";
public static final String LINEAR_WAYPOINT_EDITOR_END = "citizens.editors.waypoints.linear.end";
public static final String LINEAR_WAYPOINT_EDITOR_NOT_SHOWING_MARKERS = "citizens.editors.waypoints.linear.not-showing-markers";
public static final String LINEAR_WAYPOINT_EDITOR_RANGE_EXCEEDED = "citizens.editors.waypoints.linear.range-exceeded";
@ -268,6 +270,8 @@ public class Messages {
public static final String PATHFINDING_RANGE_SET = "citizens.commands.npc.pathfindingrange.set";
public static final String PHANTOM_STATE_SET = "citizens.commands.npc.phantom.phantom-set";
public static final String PLAYER_NOT_FOUND_FOR_SPAWN = "citizens.commands.npc.create.no-player-for-spawn";
public static final String POLAR_BEAR_REARING = "citizens.commands.npc.polarbear.rearing-set";
public static final String POLAR_BEAR_STOPPED_REARING = "citizens.commands.npc.polarbear.rearing-unset";
public static final String POSE_ADDED = "citizens.commands.npc.pose.added";
public static final String POSE_ALREADY_EXISTS = "citizens.commands.npc.pose.already-exists";
public static final String POSE_MISSING = "citizens.commands.npc.pose.missing";
@ -381,8 +385,6 @@ public class Messages {
public static final String WANDER_WAYPOINTS_REGION_EDITING_START = "citizens.editors.waypoints.wander.editing-regions";
public static final String WANDER_WAYPOINTS_REMOVED_REGION = "citizens.editors.waypoints.wander.removed-region";
public static final String WAYPOINT_ADDED = "citizens.commands.waypoints.add.waypoint-added";
public static final String LINEAR_WAYPOINT_EDITOR_CYCLE_SET = "citizens.editors.waypoints.linear.cycle-set";
public static final String LINEAR_WAYPOINT_EDITOR_CYCLE_UNSET = "citizens.editors.waypoints.linear.cycle-unset";
public static final String WAYPOINT_PROVIDER_SET = "citizens.waypoints.set-provider";
public static final String WAYPOINT_TELEPORTING_DISABLED = "citizens.commands.waypoints.disableteleporting.disabled";
public static final String WAYPOINT_TRIGGER_ADD_PROMPT = "citizens.editors.waypoints.triggers.add.prompt";

View File

@ -428,6 +428,10 @@ public class NMS {
BRIDGE.setPeekShulker(entity, peek);
}
public static void setPolarBearRearing(Entity entity, boolean rearing) {
BRIDGE.setPolarBearRearing(entity, rearing);
}
public static void setProfile(SkullMeta meta, GameProfile profile) {
BRIDGE.setProfile(meta, profile);
}

View File

@ -149,6 +149,8 @@ public interface NMSBridge {
public void setPeekShulker(Entity entity, int peek);
public void setPolarBearRearing(Entity entity, boolean rearing);
public void setProfile(SkullMeta meta, GameProfile profile);
public void setShouldJump(Entity entity);

View File

@ -161,6 +161,8 @@ citizens.commands.npc.pathopt.attack-range-set=[[{0}]]''s attack range set to [[
citizens.commands.npc.pathopt.use-new-finder=[[{0}]]''s use new finder set to [[{1}]].
citizens.commands.npc.playerlist.added=Added [[{0}]] to the player list.
citizens.commands.npc.playerlist.removed=Removed [[{0}]] from the player list.
citizens.commands.npc.polarbear.rearing-set=[[{0}]] is now rearing.
citizens.commands.npc.polarbear.rearing-unset=[[{0}]] is no longer rearing.
citizens.commands.npc.pose.added=Pose added.
citizens.commands.npc.pose.already-exists=The pose [[{0}]] already exists.
citizens.commands.npc.pose.invalid-name=Invalid pose name.

View File

@ -20,13 +20,13 @@ import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.util.Colorizer;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.Messages;
import net.citizensnpcs.util.Util;
public class Commands {
@Command(
aliases = { "npc" },
usage = "bossbar --color [color] --title [title] --visible [visible] --flags [flags]",
@ -59,6 +59,31 @@ public class Commands {
}
}
@Command(
aliases = { "npc" },
usage = "polarbear (-r)",
desc = "Sets polarbear modifiers.",
modifiers = { "polarbear" },
min = 1,
max = 1,
flags = "r",
permission = "citizens.npc.polarbear")
@Requirements(selected = true, ownership = true, types = { EntityType.POLAR_BEAR })
public void polarbear(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
PolarBearTrait trait = npc.getOrAddTrait(PolarBearTrait.class);
String output = "";
if (args.hasFlag('r')) {
trait.setRearing(!trait.isRearing());
output += Messaging
.tr(trait.isRearing() ? Messages.POLAR_BEAR_REARING : Messages.POLAR_BEAR_STOPPED_REARING);
}
if (!output.isEmpty()) {
Messaging.send(sender, output);
} else {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "shulker (--peek [peek] --color [color])",

View File

@ -145,6 +145,7 @@ import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.npc.skin.SkinnableEntity;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.Messages;
@ -595,6 +596,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(SnowmanTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PolarBearTrait.class));
commands.register(Commands.class);
}
@ -979,6 +981,11 @@ public class NMSImpl implements NMSBridge {
((EntityShulker) getHandle(shulker)).a((byte) peek);
}
@Override
public void setPolarBearRearing(org.bukkit.entity.Entity entity, boolean rearing) {
((EntityPolarBear) getHandle(entity)).p(rearing);
}
@Override
public void setProfile(SkullMeta meta, GameProfile profile) {
if (SKULL_PROFILE_FIELD == null) {

View File

@ -22,6 +22,7 @@ import net.citizensnpcs.api.util.Colorizer;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.Messages;
@ -91,6 +92,31 @@ public class Commands {
}
}
@Command(
aliases = { "npc" },
usage = "polarbear (-r)",
desc = "Sets polarbear modifiers.",
modifiers = { "polarbear" },
min = 1,
max = 1,
flags = "r",
permission = "citizens.npc.polarbear")
@Requirements(selected = true, ownership = true, types = { EntityType.POLAR_BEAR })
public void polarbear(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
PolarBearTrait trait = npc.getOrAddTrait(PolarBearTrait.class);
String output = "";
if (args.hasFlag('r')) {
trait.setRearing(!trait.isRearing());
output += Messaging
.tr(trait.isRearing() ? Messages.POLAR_BEAR_REARING : Messages.POLAR_BEAR_STOPPED_REARING);
}
if (!output.isEmpty()) {
Messaging.send(sender, output);
} else {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "shulker (--peek [peek] --color [color])",

View File

@ -160,6 +160,7 @@ import net.citizensnpcs.npc.ai.NPCHolder;
import net.citizensnpcs.npc.skin.SkinnableEntity;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.Messages;
@ -634,6 +635,7 @@ public class NMSImpl implements NMSBridge {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(LlamaTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PolarBearTrait.class));
manager.register(Commands.class);
}
@ -1036,6 +1038,11 @@ public class NMSImpl implements NMSBridge {
((EntityShulker) getHandle(shulker)).a((byte) peek);
}
@Override
public void setPolarBearRearing(org.bukkit.entity.Entity entity, boolean rearing) {
((EntityPolarBear) getHandle(entity)).p(rearing);
}
@Override
public void setProfile(SkullMeta meta, GameProfile profile) {
if (SKULL_PROFILE_FIELD == null) {

View File

@ -24,6 +24,7 @@ import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.Messages;
@ -120,6 +121,31 @@ public class Commands {
}
}
@Command(
aliases = { "npc" },
usage = "polarbear (-r)",
desc = "Sets polarbear modifiers.",
modifiers = { "polarbear" },
min = 1,
max = 1,
flags = "r",
permission = "citizens.npc.polarbear")
@Requirements(selected = true, ownership = true, types = { EntityType.POLAR_BEAR })
public void polarbear(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
PolarBearTrait trait = npc.getOrAddTrait(PolarBearTrait.class);
String output = "";
if (args.hasFlag('r')) {
trait.setRearing(!trait.isRearing());
output += Messaging
.tr(trait.isRearing() ? Messages.POLAR_BEAR_REARING : Messages.POLAR_BEAR_STOPPED_REARING);
}
if (!output.isEmpty()) {
Messaging.send(sender, output);
} else {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "shulker (--peek [peek] --color [color])",

View File

@ -163,6 +163,7 @@ import net.citizensnpcs.npc.skin.SkinnableEntity;
import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
import net.citizensnpcs.util.Messages;
@ -638,6 +639,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(PolarBearTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
manager.register(Commands.class);
}
@ -1044,6 +1046,11 @@ public class NMSImpl implements NMSBridge {
((EntityShulker) getHandle(shulker)).a((byte) peek);
}
@Override
public void setPolarBearRearing(org.bukkit.entity.Entity entity, boolean rearing) {
((EntityPolarBear) getHandle(entity)).p(rearing);
}
@Override
public void setProfile(SkullMeta meta, GameProfile profile) {
if (SKULL_PROFILE_FIELD == null) {

View File

@ -26,6 +26,7 @@ import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
@ -150,6 +151,31 @@ public class Commands {
}
}
@Command(
aliases = { "npc" },
usage = "polarbear (-r)",
desc = "Sets polarbear modifiers.",
modifiers = { "polarbear" },
min = 1,
max = 1,
flags = "r",
permission = "citizens.npc.polarbear")
@Requirements(selected = true, ownership = true, types = { EntityType.POLAR_BEAR })
public void polarbear(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
PolarBearTrait trait = npc.getOrAddTrait(PolarBearTrait.class);
String output = "";
if (args.hasFlag('r')) {
trait.setRearing(!trait.isRearing());
output += Messaging
.tr(trait.isRearing() ? Messages.POLAR_BEAR_REARING : Messages.POLAR_BEAR_STOPPED_REARING);
}
if (!output.isEmpty()) {
Messaging.send(sender, output);
} else {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "pufferfish (--state state)",
@ -205,6 +231,29 @@ public class Commands {
}
}
@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.getOrAddTrait(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();
}
}
@Command(
aliases = { "npc" },
usage = "tfish (--body color) (--pattern pattern) (--patterncolor color)",
@ -250,27 +299,4 @@ 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.getOrAddTrait(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

@ -175,6 +175,7 @@ import net.citizensnpcs.trait.versioned.BossBarTrait;
import net.citizensnpcs.trait.versioned.LlamaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
@ -663,6 +664,7 @@ public class NMSImpl implements NMSBridge {
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(PolarBearTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PufferFishTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(TropicalFishTrait.class));
manager.register(Commands.class);
@ -1080,6 +1082,11 @@ public class NMSImpl implements NMSBridge {
((EntityShulker) getHandle(shulker)).a((byte) peek);
}
@Override
public void setPolarBearRearing(org.bukkit.entity.Entity entity, boolean rearing) {
((EntityPolarBear) getHandle(entity)).s(rearing);
}
@Override
public void setProfile(SkullMeta meta, GameProfile profile) {
if (SKULL_PROFILE_FIELD == null) {

View File

@ -38,6 +38,7 @@ import net.citizensnpcs.trait.versioned.MushroomCowTrait;
import net.citizensnpcs.trait.versioned.PandaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
@ -320,6 +321,31 @@ public class Commands {
}
}
@Command(
aliases = { "npc" },
usage = "polarbear (-r)",
desc = "Sets polarbear modifiers.",
modifiers = { "polarbear" },
min = 1,
max = 1,
flags = "r",
permission = "citizens.npc.polarbear")
@Requirements(selected = true, ownership = true, types = { EntityType.POLAR_BEAR })
public void polarbear(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
PolarBearTrait trait = npc.getOrAddTrait(PolarBearTrait.class);
String output = "";
if (args.hasFlag('r')) {
trait.setRearing(!trait.isRearing());
output += Messaging
.tr(trait.isRearing() ? Messages.POLAR_BEAR_REARING : Messages.POLAR_BEAR_STOPPED_REARING);
}
if (!output.isEmpty()) {
Messaging.send(sender, output);
} else {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "pufferfish (--state state)",

View File

@ -188,6 +188,7 @@ import net.citizensnpcs.trait.versioned.MushroomCowTrait;
import net.citizensnpcs.trait.versioned.PandaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
@ -714,6 +715,7 @@ public class NMSImpl implements NMSBridge {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ParrotTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PandaTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PhantomTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PolarBearTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PufferFishTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
@ -1133,6 +1135,11 @@ public class NMSImpl implements NMSBridge {
((EntityShulker) getHandle(shulker)).a((byte) peek);
}
@Override
public void setPolarBearRearing(org.bukkit.entity.Entity entity, boolean rearing) {
((EntityPolarBear) getHandle(entity)).r(rearing);
}
@Override
public void setProfile(SkullMeta meta, GameProfile profile) {
if (SKULL_PROFILE_FIELD == null) {

View File

@ -39,6 +39,7 @@ import net.citizensnpcs.trait.versioned.MushroomCowTrait;
import net.citizensnpcs.trait.versioned.PandaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
@ -364,6 +365,31 @@ public class Commands {
}
}
@Command(
aliases = { "npc" },
usage = "polarbear (-r)",
desc = "Sets polarbear modifiers.",
modifiers = { "polarbear" },
min = 1,
max = 1,
flags = "r",
permission = "citizens.npc.polarbear")
@Requirements(selected = true, ownership = true, types = { EntityType.POLAR_BEAR })
public void polarbear(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
PolarBearTrait trait = npc.getOrAddTrait(PolarBearTrait.class);
String output = "";
if (args.hasFlag('r')) {
trait.setRearing(!trait.isRearing());
output += Messaging
.tr(trait.isRearing() ? Messages.POLAR_BEAR_REARING : Messages.POLAR_BEAR_STOPPED_REARING);
}
if (!output.isEmpty()) {
Messaging.send(sender, output);
} else {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "pufferfish (--state state)",

View File

@ -190,6 +190,7 @@ import net.citizensnpcs.trait.versioned.MushroomCowTrait;
import net.citizensnpcs.trait.versioned.PandaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
@ -232,6 +233,7 @@ import net.minecraft.server.v1_15_R1.EntityLiving;
import net.minecraft.server.v1_15_R1.EntityMinecartAbstract;
import net.minecraft.server.v1_15_R1.EntityPanda;
import net.minecraft.server.v1_15_R1.EntityPlayer;
import net.minecraft.server.v1_15_R1.EntityPolarBear;
import net.minecraft.server.v1_15_R1.EntityPose;
import net.minecraft.server.v1_15_R1.EntityPufferFish;
import net.minecraft.server.v1_15_R1.EntityRabbit;
@ -723,6 +725,7 @@ public class NMSImpl implements NMSBridge {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ParrotTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PandaTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PhantomTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PolarBearTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PufferFishTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
@ -1144,6 +1147,11 @@ public class NMSImpl implements NMSBridge {
((EntityShulker) getHandle(shulker)).a((byte) peek);
}
@Override
public void setPolarBearRearing(org.bukkit.entity.Entity entity, boolean rearing) {
((EntityPolarBear) getHandle(entity)).r(rearing);
}
@Override
public void setProfile(SkullMeta meta, GameProfile profile) {
if (SKULL_PROFILE_FIELD == null) {
@ -1429,11 +1437,12 @@ public class NMSImpl implements NMSBridge {
public static void clearGoals(NPC npc, PathfinderGoalSelector... goalSelectors) {
if (GOAL_SET_FIELD == null || goalSelectors == null)
return;
int i = 0;
for (PathfinderGoalSelector selector : goalSelectors) {
try {
Collection<?> list = (Collection<?>) GOAL_SET_FIELD.invoke(selector);
if (!list.isEmpty()) {
npc.data().set("goal-selector", Lists.newArrayList(list));
npc.data().set("selector" + i, Lists.newArrayList(list));
}
list.clear();
} catch (Exception e) {
@ -1441,6 +1450,7 @@ public class NMSImpl implements NMSBridge {
} catch (Throwable e) {
Messaging.logTr(Messages.ERROR_CLEARING_GOALS, e.getLocalizedMessage());
}
i++;
}
}
@ -1717,11 +1727,12 @@ public class NMSImpl implements NMSBridge {
public static void restoreGoals(NPC npc, PathfinderGoalSelector... goalSelectors) {
if (GOAL_SET_FIELD == null || goalSelectors == null)
return;
int i = 0;
for (PathfinderGoalSelector selector : goalSelectors) {
try {
Collection<Object> list = (Collection<Object>) GOAL_SET_FIELD.invoke(selector);
list.clear();
Collection<Object> old = npc.data().get("goal-selector");
Collection<Object> old = npc.data().get("selector" + i);
if (old != null) {
list.addAll(old);
}
@ -1730,6 +1741,7 @@ public class NMSImpl implements NMSBridge {
} catch (Throwable e) {
Messaging.logTr(Messages.ERROR_RESTORING_GOALS, e.getLocalizedMessage());
}
i++;
}
}

View File

@ -1,7 +1,6 @@
package net.citizensnpcs.nms.v1_16_R3.entity;
import org.bukkit.Bukkit;
import net.minecraft.server.v1_16_R3.EntityMinecartAbstract;
import org.bukkit.craftbukkit.v1_16_R3.CraftServer;
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPolarBear;
@ -19,6 +18,7 @@ import net.minecraft.server.v1_16_R3.DamageSource;
import net.minecraft.server.v1_16_R3.DataWatcherObject;
import net.minecraft.server.v1_16_R3.Entity;
import net.minecraft.server.v1_16_R3.EntityBoat;
import net.minecraft.server.v1_16_R3.EntityMinecartAbstract;
import net.minecraft.server.v1_16_R3.EntityPolarBear;
import net.minecraft.server.v1_16_R3.EntityTypes;
import net.minecraft.server.v1_16_R3.NBTTagCompound;

View File

@ -39,6 +39,7 @@ import net.citizensnpcs.trait.versioned.MushroomCowTrait;
import net.citizensnpcs.trait.versioned.PandaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
@ -364,6 +365,31 @@ public class Commands {
}
}
@Command(
aliases = { "npc" },
usage = "polarbear (-r)",
desc = "Sets polarbear modifiers.",
modifiers = { "polarbear" },
min = 1,
max = 1,
flags = "r",
permission = "citizens.npc.polarbear")
@Requirements(selected = true, ownership = true, types = { EntityType.POLAR_BEAR })
public void polarbear(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
PolarBearTrait trait = npc.getOrAddTrait(PolarBearTrait.class);
String output = "";
if (args.hasFlag('r')) {
trait.setRearing(!trait.isRearing());
output += Messaging
.tr(trait.isRearing() ? Messages.POLAR_BEAR_REARING : Messages.POLAR_BEAR_STOPPED_REARING);
}
if (!output.isEmpty()) {
Messaging.send(sender, output);
} else {
throw new CommandUsageException();
}
}
@Command(
aliases = { "npc" },
usage = "pufferfish (--state state)",

View File

@ -195,6 +195,7 @@ import net.citizensnpcs.trait.versioned.MushroomCowTrait;
import net.citizensnpcs.trait.versioned.PandaTrait;
import net.citizensnpcs.trait.versioned.ParrotTrait;
import net.citizensnpcs.trait.versioned.PhantomTrait;
import net.citizensnpcs.trait.versioned.PolarBearTrait;
import net.citizensnpcs.trait.versioned.PufferFishTrait;
import net.citizensnpcs.trait.versioned.ShulkerTrait;
import net.citizensnpcs.trait.versioned.SnowmanTrait;
@ -237,6 +238,7 @@ import net.minecraft.server.v1_16_R3.EntityLiving;
import net.minecraft.server.v1_16_R3.EntityMinecartAbstract;
import net.minecraft.server.v1_16_R3.EntityPanda;
import net.minecraft.server.v1_16_R3.EntityPlayer;
import net.minecraft.server.v1_16_R3.EntityPolarBear;
import net.minecraft.server.v1_16_R3.EntityPose;
import net.minecraft.server.v1_16_R3.EntityPufferFish;
import net.minecraft.server.v1_16_R3.EntityRabbit;
@ -730,6 +732,7 @@ public class NMSImpl implements NMSBridge {
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ParrotTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PandaTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PhantomTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PolarBearTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(PufferFishTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(ShulkerTrait.class));
CitizensAPI.getTraitFactory().registerTrait(TraitInfo.create(SnowmanTrait.class));
@ -1168,6 +1171,11 @@ public class NMSImpl implements NMSBridge {
((EntityShulker) getHandle(shulker)).a(peek);
}
@Override
public void setPolarBearRearing(org.bukkit.entity.Entity entity, boolean rearing) {
((EntityPolarBear) getHandle(entity)).t(rearing);
}
@Override
public void setProfile(SkullMeta meta, GameProfile profile) {
if (SKULL_PROFILE_FIELD == null) {
@ -1449,11 +1457,12 @@ public class NMSImpl implements NMSBridge {
public static void clearGoals(NPC npc, PathfinderGoalSelector... goalSelectors) {
if (GOAL_SET_FIELD == null || goalSelectors == null)
return;
int i = 0;
for (PathfinderGoalSelector selector : goalSelectors) {
try {
Collection<?> list = (Collection<?>) GOAL_SET_FIELD.invoke(selector);
if (!list.isEmpty()) {
npc.data().set("goal-selector", Lists.newArrayList(list));
npc.data().set("selector" + i, Lists.newArrayList(list));
}
list.clear();
} catch (Exception e) {
@ -1461,6 +1470,7 @@ public class NMSImpl implements NMSBridge {
} catch (Throwable e) {
Messaging.logTr(Messages.ERROR_CLEARING_GOALS, e.getLocalizedMessage());
}
i++;
}
}
@ -1681,12 +1691,13 @@ public class NMSImpl implements NMSBridge {
public static void restoreGoals(NPC npc, PathfinderGoalSelector... goalSelectors) {
if (GOAL_SET_FIELD == null || goalSelectors == null)
return;
int i = 0;
for (PathfinderGoalSelector selector : goalSelectors) {
try {
Collection<Object> list = (Collection<Object>) GOAL_SET_FIELD.invoke(selector);
list.clear();
Collection<Object> old = npc.data().get("goal-selector");
Collection<Object> old = npc.data().get("selector" + i);
if (old != null) {
list.addAll(old);
}
@ -1695,6 +1706,7 @@ public class NMSImpl implements NMSBridge {
} catch (Throwable e) {
Messaging.logTr(Messages.ERROR_RESTORING_GOALS, e.getLocalizedMessage());
}
i++;
}
}

View File

@ -905,6 +905,11 @@ public class NMSImpl implements NMSBridge {
throw new UnsupportedOperationException();
}
@Override
public void setPolarBearRearing(org.bukkit.entity.Entity entity, boolean rearing) {
throw new UnsupportedOperationException();
}
@Override
public void setProfile(SkullMeta meta, GameProfile profile) {
if (SKULL_PROFILE_FIELD == null) {