Skip to content

Commit

Permalink
Add SKELETON_START_SWING_ARM and SKELETON_STOP_SWING_ARM animations
Browse files Browse the repository at this point in the history
Requires at least 1.9.2
  • Loading branch information
Morphan1 committed Oct 4, 2016
1 parent 58a41a8 commit 0f178ea
Show file tree
Hide file tree
Showing 12 changed files with 160 additions and 17 deletions.
@@ -1,5 +1,6 @@
package net.aufdemrand.denizen.nms;

import net.aufdemrand.denizen.nms.abstracts.AnimationHelper;
import net.aufdemrand.denizen.nms.abstracts.BiomeNMS;
import net.aufdemrand.denizen.nms.abstracts.BlockLight;
import net.aufdemrand.denizen.nms.abstracts.ParticleHelper;
Expand Down Expand Up @@ -81,6 +82,8 @@ public static JavaPlugin getJavaPlugin() {

public abstract double[] getRecentTps();

public abstract AnimationHelper getAnimationHelper();

public abstract BlockHelper getBlockHelper();

public abstract ChunkHelper getChunkHelper();
Expand Down
@@ -0,0 +1,23 @@
package net.aufdemrand.denizen.nms.abstracts;

import net.aufdemrand.denizen.nms.interfaces.EntityAnimation;

import java.util.HashMap;
import java.util.Map;

public abstract class AnimationHelper {

private final Map<String, EntityAnimation> entityAnimations = new HashMap<String, EntityAnimation>();

protected void register(String name, EntityAnimation animation) {
entityAnimations.put(name.toUpperCase(), animation);
}

public boolean hasEntityAnimation(String name) {
return entityAnimations.containsKey(name.toUpperCase());
}

public EntityAnimation getEntityAnimation(String name) {
return entityAnimations.get(name.toUpperCase());
}
}
@@ -0,0 +1,8 @@
package net.aufdemrand.denizen.nms.interfaces;

import org.bukkit.entity.Entity;

public interface EntityAnimation {

void play(Entity entity);
}
2 changes: 1 addition & 1 deletion plugin/pom.xml
Expand Up @@ -112,7 +112,6 @@

<build>
<defaultGoal>clean package install</defaultGoal>
<directory>../target</directory>
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
<resource>
Expand Down Expand Up @@ -174,6 +173,7 @@
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<configuration>
<outputDirectory>../target</outputDirectory>
<archive>
<manifest>
<addClasspath>true</addClasspath>
Expand Down
Expand Up @@ -211,7 +211,8 @@ public void registerCoreMembers() {
//
// All entities also have available Bukkit's entity effect list, which includes:
// DEATH, FIREWORK_EXPLODE, HURT, IRON_GOLEM_ROSE, SHEEP_EAT, VILLAGER_ANGRY, VILLAGER_HAPPY
// VILLAGER_HEART, WITCH_MAGIC, WOLF_HEARTS, WOLF_SHAKE, WOLF_SMOKE, ZOMBIE_TRANSFORM
// VILLAGER_HEART, WITCH_MAGIC, WOLF_HEARTS, WOLF_SHAKE, WOLF_SMOKE, ZOMBIE_TRANSFORM,
// SKELETON_START_SWING_ARM, SKELETON_STOP_SWING_ARM
//
// Note that the above list only applies where logical, EG 'WOLF_' animations only apply to wolves.
//
Expand Down
@@ -1,5 +1,8 @@
package net.aufdemrand.denizen.scripts.commands.entity;

import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.nms.abstracts.AnimationHelper;
import net.aufdemrand.denizen.nms.interfaces.EntityAnimation;
import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizencore.exceptions.CommandExecutionException;
Expand All @@ -19,6 +22,8 @@ public class AnimateCommand extends AbstractCommand {
@Override
public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException {

AnimationHelper animationHelper = NMSHandler.getInstance().getAnimationHelper();

for (aH.Argument arg : aH.interpret(scriptEntry.getArguments())) {

if (!scriptEntry.hasObject("entities")
Expand All @@ -28,14 +33,18 @@ public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException
}

if (!scriptEntry.hasObject("animation") &&
!scriptEntry.hasObject("effect")) {
!scriptEntry.hasObject("effect") &&
!scriptEntry.hasObject("nms_animation")) {

if (arg.matchesEnum(PlayerAnimation.values())) {
scriptEntry.addObject("animation", PlayerAnimation.valueOf(arg.getValue().toUpperCase()));
}
else if (arg.matchesEnum(EntityEffect.values())) {
scriptEntry.addObject("effect", EntityEffect.valueOf(arg.getValue().toUpperCase()));
}
else if (animationHelper.hasEntityAnimation(arg.getValue())) {
scriptEntry.addObject("nms_animation", arg.getValue());
}
}
}

Expand All @@ -45,7 +54,7 @@ else if (arg.matchesEnum(EntityEffect.values())) {
throw new InvalidArgumentsException("Must specify entity/entities!");
}

if (!scriptEntry.hasObject("effect") && !scriptEntry.hasObject("animation")) {
if (!scriptEntry.hasObject("effect") && !scriptEntry.hasObject("animation") && !scriptEntry.hasObject("nms_animation")) {
throw new InvalidArgumentsException("Must specify a valid animation!");
}
}
Expand All @@ -60,11 +69,14 @@ public void execute(final ScriptEntry scriptEntry) throws CommandExecutionExcept
(PlayerAnimation) scriptEntry.getObject("animation") : null;
EntityEffect effect = scriptEntry.hasObject("effect") ?
(EntityEffect) scriptEntry.getObject("effect") : null;
String nmsAnimation = scriptEntry.hasObject("nms_animation") ?
(String) scriptEntry.getObject("nms_animation") : null;

// Report to dB
dB.report(scriptEntry, getName(), (animation != null ?
aH.debugObj("animation", animation.name()) :
aH.debugObj("effect", effect.name())) +
aH.debugObj("animation", animation.name()) : effect != null ?
aH.debugObj("effect", effect.name()) :
aH.debugObj("animation", nmsAnimation)) +
aH.debugObj("entities", entities.toString()));

// Go through all the entities and animate them
Expand All @@ -78,10 +90,13 @@ public void execute(final ScriptEntry scriptEntry) throws CommandExecutionExcept

animation.play(player);
}
else {
else if (effect != null) {
entity.getBukkitEntity().playEffect(effect);
}

else {
EntityAnimation entityAnimation = NMSHandler.getInstance().getAnimationHelper().getEntityAnimation(nmsAnimation);
entityAnimation.play(entity.getBukkitEntity());
}
}
catch (Exception e) {
dB.echoError(scriptEntry.getResidingQueue(), "Error playing that animation!");
Expand Down
Expand Up @@ -3,6 +3,7 @@
import com.google.common.collect.Iterables;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import net.aufdemrand.denizen.nms.abstracts.AnimationHelper;
import net.aufdemrand.denizen.nms.abstracts.BiomeNMS;
import net.aufdemrand.denizen.nms.abstracts.BlockLight;
import net.aufdemrand.denizen.nms.abstracts.ParticleHelper;
Expand All @@ -25,22 +26,15 @@
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Biome;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar;
import org.bukkit.craftbukkit.v1_10_R1.CraftServer;
import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;

public class Handler_v1_10_R1 extends NMSHandler {

private final AnimationHelper animationHelper = new AnimationHelper_v1_10_R1();
private final BlockHelper blockHelper = new BlockHelper_v1_10_R1();
private final ChunkHelper chunkHelper = new ChunkHelper_v1_10_R1();
private final CustomEntityHelper customEntityHelper = new CustomEntityHelper_v1_10_R1();
Expand All @@ -65,6 +59,11 @@ public double[] getRecentTps() {
return ((CraftServer) Bukkit.getServer()).getServer().recentTps;
}

@Override
public AnimationHelper getAnimationHelper() {
return animationHelper;
}

@Override
public BlockHelper getBlockHelper() {
return blockHelper;
Expand Down
@@ -0,0 +1,29 @@
package net.aufdemrand.denizen.nms.helpers;

import net.aufdemrand.denizen.nms.abstracts.AnimationHelper;
import net.aufdemrand.denizen.nms.interfaces.EntityAnimation;
import org.bukkit.craftbukkit.v1_10_R1.entity.CraftSkeleton;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;

public class AnimationHelper_v1_10_R1 extends AnimationHelper {

public AnimationHelper_v1_10_R1() {
register("SKELETON_START_SWING_ARM", new EntityAnimation() {
@Override
public void play(Entity entity) {
if (entity.getType() == EntityType.SKELETON) {
((CraftSkeleton) entity).getHandle().a(true);
}
}
});
register("SKELETON_STOP_SWING_ARM", new EntityAnimation() {
@Override
public void play(Entity entity) {
if (entity.getType() == EntityType.SKELETON) {
((CraftSkeleton) entity).getHandle().a(false);
}
}
});
}
}
Expand Up @@ -3,14 +3,14 @@
import com.google.common.collect.Iterables;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import net.aufdemrand.denizen.nms.abstracts.AnimationHelper;
import net.aufdemrand.denizen.nms.abstracts.BiomeNMS;
import net.aufdemrand.denizen.nms.abstracts.BlockLight;
import net.aufdemrand.denizen.nms.abstracts.ParticleHelper;
import net.aufdemrand.denizen.nms.abstracts.ProfileEditor;
import net.aufdemrand.denizen.nms.abstracts.Sidebar;
import net.aufdemrand.denizen.nms.helpers.*;
import net.aufdemrand.denizen.nms.impl.BiomeNMS_v1_8_R3;
import net.aufdemrand.denizen.nms.impl.BossBar_v1_8_R3;
import net.aufdemrand.denizen.nms.impl.ProfileEditor_v1_8_R3;
import net.aufdemrand.denizen.nms.impl.Sidebar_v1_8_R3;
import net.aufdemrand.denizen.nms.impl.blocks.BlockLight_v1_8_R3;
Expand All @@ -34,6 +34,7 @@

public class Handler_v1_8_R3 extends NMSHandler {

private final AnimationHelper animationHelper = new AnimationHelper_v1_8_R3();
private final BlockHelper blockHelper = new BlockHelper_v1_8_R3();
private final ChunkHelper chunkHelper = new ChunkHelper_v1_8_R3();
private final CustomEntityHelper customEntityHelper = new CustomEntityHelper_v1_8_R3();
Expand All @@ -58,6 +59,11 @@ public double[] getRecentTps() {
return ((CraftServer) Bukkit.getServer()).getServer().recentTps;
}

@Override
public AnimationHelper getAnimationHelper() {
return animationHelper;
}

@Override
public BlockHelper getBlockHelper() {
return blockHelper;
Expand Down
@@ -0,0 +1,23 @@
package net.aufdemrand.denizen.nms.helpers;

import net.aufdemrand.denizen.nms.abstracts.AnimationHelper;
import net.aufdemrand.denizen.nms.interfaces.EntityAnimation;
import org.bukkit.entity.Entity;

public class AnimationHelper_v1_8_R3 extends AnimationHelper {

public AnimationHelper_v1_8_R3() {
register("SKELETON_START_SWING_ARM", new EntityAnimation() {
@Override
public void play(Entity entity) {
// Not available in 1.8
}
});
register("SKELETON_STOP_SWING_ARM", new EntityAnimation() {
@Override
public void play(Entity entity) {
// Not available in 1.8
}
});
}
}
Expand Up @@ -3,6 +3,7 @@
import com.google.common.collect.Iterables;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import net.aufdemrand.denizen.nms.abstracts.AnimationHelper;
import net.aufdemrand.denizen.nms.abstracts.BiomeNMS;
import net.aufdemrand.denizen.nms.abstracts.BlockLight;
import net.aufdemrand.denizen.nms.abstracts.ParticleHelper;
Expand Down Expand Up @@ -33,6 +34,7 @@

public class Handler_v1_9_R2 extends NMSHandler {

private final AnimationHelper animationHelper = new AnimationHelper_v1_9_R2();
private final BlockHelper blockHelper = new BlockHelper_v1_9_R2();
private final ChunkHelper chunkHelper = new ChunkHelper_v1_9_R2();
private final CustomEntityHelper customEntityHelper = new CustomEntityHelper_v1_9_R2();
Expand All @@ -57,6 +59,11 @@ public double[] getRecentTps() {
return ((CraftServer) Bukkit.getServer()).getServer().recentTps;
}

@Override
public AnimationHelper getAnimationHelper() {
return animationHelper;
}

@Override
public BlockHelper getBlockHelper() {
return blockHelper;
Expand Down
@@ -0,0 +1,29 @@
package net.aufdemrand.denizen.nms.helpers;

import net.aufdemrand.denizen.nms.abstracts.AnimationHelper;
import net.aufdemrand.denizen.nms.interfaces.EntityAnimation;
import org.bukkit.craftbukkit.v1_9_R2.entity.CraftSkeleton;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;

public class AnimationHelper_v1_9_R2 extends AnimationHelper {

public AnimationHelper_v1_9_R2() {
register("SKELETON_START_SWING_ARM", new EntityAnimation() {
@Override
public void play(Entity entity) {
if (entity.getType() == EntityType.SKELETON) {
((CraftSkeleton) entity).getHandle().a(true);
}
}
});
register("SKELETON_STOP_SWING_ARM", new EntityAnimation() {
@Override
public void play(Entity entity) {
if (entity.getType() == EntityType.SKELETON) {
((CraftSkeleton) entity).getHandle().a(false);
}
}
});
}
}

0 comments on commit 0f178ea

Please sign in to comment.