From 17687a3056a449c0f71032004f83291d6a0a1aeb Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Fri, 14 Aug 2020 23:31:51 -0400 Subject: [PATCH] 1.0.3 --- CHANGELOG.md | 3 + FILE_FORMAT.md | 6 +- gradle.properties | 2 +- .../com/thebrokenrail/gestus/emote/Emote.java | 27 ++----- .../gestus/emote/EmoteFrame.java | 27 ++----- .../gestus/emote/EmoteLayer.java | 14 ++-- .../thebrokenrail/gestus/emote/EmotePart.java | 39 +++++++-- .../gestus/entity/FakePlayerEntity.java | 14 +++- .../data/gestus/emotes/builtin/aim.emote | 2 +- .../data/gestus/emotes/builtin/eat.emote | 10 +-- .../data/gestus/emotes/builtin/hit.emote | 18 ++--- .../data/gestus/emotes/builtin/shield.emote | 2 +- .../data/gestus/emotes/builtin/still.emote | 2 +- .../data/gestus/emotes/builtin/trident.emote | 2 +- .../data/gestus/emotes/custom/wave.emote | 80 +++++++++---------- 15 files changed, 129 insertions(+), 119 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a19d63..efa3eee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +**1.0.3** +* Remove ``main_arm`` And ``off_arm`` + **1.0.2** * Add Eating Animation diff --git a/FILE_FORMAT.md b/FILE_FORMAT.md index d1b7b9a..2b7825e 100644 --- a/FILE_FORMAT.md +++ b/FILE_FORMAT.md @@ -5,6 +5,7 @@ - In ideal conditions emotes run at 20FPS - All frames are made up of part rotations separated by spaces - Parts can only be specified once in a frame +- If a line is ``maintain``, it will copy the previous frame ## Part Rotation Format ``` @@ -16,7 +17,4 @@ - ``right_leg`` - ``left_arm`` - ``right_arm`` -- ``main_arm`` -- ``off_arm`` -- ``body`` -- ``left_arm``/``right_arm`` is not compatible with ``main_arm``/``off_arm`` \ No newline at end of file +- ``body`` \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 98daf9b..f2a41aa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ org.gradle.jvmargs = -Xmx1G fabric_loader_version = 0.9.0+build.204 # Mod Properties - mod_version = 1.0.2 + mod_version = 1.0.3 maven_group = com.thebrokenrail # Dependencies diff --git a/src/main/java/com/thebrokenrail/gestus/emote/Emote.java b/src/main/java/com/thebrokenrail/gestus/emote/Emote.java index a9b8791..1b8015f 100644 --- a/src/main/java/com/thebrokenrail/gestus/emote/Emote.java +++ b/src/main/java/com/thebrokenrail/gestus/emote/Emote.java @@ -11,16 +11,6 @@ import java.util.Map; public class Emote { public final EmoteFrame[] frames; - private static int getArmMode(EmotePart part) { - if (part == EmotePart.LEFT_ARM || part == EmotePart.RIGHT_ARM) { - return 1; - } else if (part == EmotePart.MAIN_ARM || part == EmotePart.OFF_ARM) { - return 2; - } else { - return 0; - } - } - public Emote(String[] lines) throws EmoteSyntaxException { List list = new ArrayList<>(); @@ -29,11 +19,13 @@ public class Emote { for (int lineNum = 0; lineNum < lines.length; lineNum++) { String line = lines[lineNum].trim(); - if (line.equals("maintain") && list.size() > 0) { - list.add(list.get(list.size() - 1)); + if (line.equals("maintain")) { + if (list.size() > 0) { + list.add(list.get(list.size() - 1)); + } else { + throw new EmoteSyntaxException(lineNum, "No Previous Frame"); + } } else if (!line.startsWith("#")) { - int armMode = 0; - Map map = new HashMap<>(); String[] lineParts = line.split(" "); @@ -55,13 +47,6 @@ public class Emote { throw new EmoteSyntaxException(lineNum, "Invalid Emote Part: " + linePart); } else if (map.containsKey(selectedPart)) { throw new EmoteSyntaxException(lineNum, "Duplicate Emote Part: " + linePart); - } else if (armMode == 0) { - armMode = getArmMode(selectedPart); - } else if (armMode > 0) { - int newMode = getArmMode(selectedPart); - if (newMode != 0 && newMode != armMode) { - throw new EmoteSyntaxException(lineNum, "Conflicting Arm Modes"); - } } try { diff --git a/src/main/java/com/thebrokenrail/gestus/emote/EmoteFrame.java b/src/main/java/com/thebrokenrail/gestus/emote/EmoteFrame.java index 66c234b..72d4452 100644 --- a/src/main/java/com/thebrokenrail/gestus/emote/EmoteFrame.java +++ b/src/main/java/com/thebrokenrail/gestus/emote/EmoteFrame.java @@ -6,32 +6,19 @@ import java.util.HashMap; import java.util.Map; public class EmoteFrame { - public final Map rightHanded; - public final Map leftHanded; + public final Map normal; + public final Map mirrored; public EmoteFrame(Map data) { - rightHanded = resolve(data, false); - leftHanded = resolve(data, true); + normal = data; + mirrored = mirror(data); } - private static Map resolve(Map data, boolean leftHanded) { + private static Map mirror(Map data) { Map result = new HashMap<>(); for (Map.Entry entry : data.entrySet()) { - if (entry.getKey() == EmotePart.MAIN_ARM) { - if (leftHanded) { - result.put(EmotePart.LEFT_ARM, new EulerAngle(entry.getValue().getPitch(), -entry.getValue().getYaw(), -entry.getValue().getRoll())); - } else { - result.put(EmotePart.RIGHT_ARM, entry.getValue()); - } - } else if (entry.getKey() == EmotePart.OFF_ARM) { - if (leftHanded) { - result.put(EmotePart.RIGHT_ARM, new EulerAngle(entry.getValue().getPitch(), -entry.getValue().getYaw(), -entry.getValue().getRoll())); - } else { - result.put(EmotePart.LEFT_ARM, entry.getValue()); - } - } else { - result.put(entry.getKey(), entry.getValue()); - } + EmotePart newPart = entry.getKey().mirror(); + result.put(newPart, new EulerAngle(entry.getValue().getPitch(), -entry.getValue().getYaw(), -entry.getValue().getRoll())); } return result; } diff --git a/src/main/java/com/thebrokenrail/gestus/emote/EmoteLayer.java b/src/main/java/com/thebrokenrail/gestus/emote/EmoteLayer.java index caf05a4..68ea5b9 100644 --- a/src/main/java/com/thebrokenrail/gestus/emote/EmoteLayer.java +++ b/src/main/java/com/thebrokenrail/gestus/emote/EmoteLayer.java @@ -12,7 +12,7 @@ public class EmoteLayer { private Identifier current; private final boolean loop; - private boolean leftHanded = false; + private boolean mirrored = false; public EmoteLayer(Identifier start, boolean loop) { current = start; @@ -23,10 +23,10 @@ public class EmoteLayer { return current; } - public void play(Identifier current, boolean leftHanded) { - if (!Objects.equals(this.current, current) || this.leftHanded != leftHanded) { + public void play(Identifier current, boolean mirrored) { + if (!Objects.equals(this.current, current) || this.mirrored != mirrored) { this.current = current; - this.leftHanded = leftHanded; + this.mirrored = mirrored; frame = 0; } } @@ -35,8 +35,8 @@ public class EmoteLayer { return current != null; } - public boolean isLeftHanded() { - return leftHanded; + public boolean isMirrored() { + return mirrored; } public Map next() { @@ -53,7 +53,7 @@ public class EmoteLayer { current = null; } } - return leftHanded ? result.leftHanded : result.rightHanded; + return mirrored ? result.mirrored : result.normal; } } frame = 0; diff --git a/src/main/java/com/thebrokenrail/gestus/emote/EmotePart.java b/src/main/java/com/thebrokenrail/gestus/emote/EmotePart.java index 79af54a..5cc9478 100644 --- a/src/main/java/com/thebrokenrail/gestus/emote/EmotePart.java +++ b/src/main/java/com/thebrokenrail/gestus/emote/EmotePart.java @@ -1,13 +1,36 @@ package com.thebrokenrail.gestus.emote; public enum EmotePart { - MAIN_ARM("main_arm"), - OFF_ARM("off_arm"), - RIGHT_ARM("right_arm"), - LEFT_ARM("left_arm"), - RIGHT_LEG("right_leg"), - LEFT_LEG("left_leg"), - BODY("body"); + RIGHT_ARM("right_arm") { + @Override + public EmotePart mirror() { + return LEFT_ARM; + } + }, + LEFT_ARM("left_arm") { + @Override + public EmotePart mirror() { + return RIGHT_ARM; + } + }, + RIGHT_LEG("right_leg") { + @Override + public EmotePart mirror() { + return LEFT_LEG; + } + }, + LEFT_LEG("left_leg") { + @Override + public EmotePart mirror() { + return RIGHT_LEG; + } + }, + BODY("body") { + @Override + public EmotePart mirror() { + return BODY; + } + }; private final String name; @@ -18,4 +41,6 @@ public enum EmotePart { public String getName() { return name; } + + public abstract EmotePart mirror(); } diff --git a/src/main/java/com/thebrokenrail/gestus/entity/FakePlayerEntity.java b/src/main/java/com/thebrokenrail/gestus/entity/FakePlayerEntity.java index 26f5964..47e9204 100644 --- a/src/main/java/com/thebrokenrail/gestus/entity/FakePlayerEntity.java +++ b/src/main/java/com/thebrokenrail/gestus/entity/FakePlayerEntity.java @@ -11,6 +11,7 @@ import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.data.TrackedData; import net.minecraft.entity.decoration.ArmorStandEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.CrossbowItem; import net.minecraft.item.DyeableItem; import net.minecraft.item.Item; @@ -20,6 +21,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; import net.minecraft.util.Arm; import net.minecraft.util.Hand; import net.minecraft.util.Identifier; @@ -264,7 +266,7 @@ public class FakePlayerEntity extends ArmorStandEntity { private void updateEquipment() { for (EquipmentSlot slot : EquipmentSlot.values()) { - ItemStack target = getFallbackItem(slot, player.getEquippedStack(slot).copy(), isInvisible()); + ItemStack target = getFallbackItem(slot, player.getEquippedStack(slot).copy(), isInvisible()).copy(); if (!getEquippedStack(slot).isItemEqual(target)) { equipStack(slot, target); } @@ -299,4 +301,14 @@ public class FakePlayerEntity extends ArmorStandEntity { public boolean damage(DamageSource source, float amount) { return player.damage(source, amount); } + + @Override + public ActionResult interactAt(PlayerEntity player, Vec3d hitPos, Hand hand) { + return ActionResult.PASS; + } + + @Override + public ActionResult interact(PlayerEntity player, Hand hand) { + return ActionResult.PASS; + } } diff --git a/src/main/resources/data/gestus/emotes/builtin/aim.emote b/src/main/resources/data/gestus/emotes/builtin/aim.emote index 334570a..d950c79 100644 --- a/src/main/resources/data/gestus/emotes/builtin/aim.emote +++ b/src/main/resources/data/gestus/emotes/builtin/aim.emote @@ -1 +1 @@ -main_arm 0 -90 0 off_arm 40 -90 0 \ No newline at end of file +right_arm 0 -90 0 left_arm 40 -90 0 \ No newline at end of file diff --git a/src/main/resources/data/gestus/emotes/builtin/eat.emote b/src/main/resources/data/gestus/emotes/builtin/eat.emote index 9ca53db..257b5c9 100644 --- a/src/main/resources/data/gestus/emotes/builtin/eat.emote +++ b/src/main/resources/data/gestus/emotes/builtin/eat.emote @@ -1,5 +1,5 @@ -main_arm -51 -76 0 -main_arm -55 -80 0 -main_arm -59 -84 0 -main_arm -55 -80 0 -main_arm -51 -76 0 \ No newline at end of file +right_arm -51 -76 0 +right_arm -55 -80 0 +right_arm -59 -84 0 +right_arm -55 -80 0 +right_arm -51 -76 0 \ No newline at end of file diff --git a/src/main/resources/data/gestus/emotes/builtin/hit.emote b/src/main/resources/data/gestus/emotes/builtin/hit.emote index 1fec505..f7cd2d3 100644 --- a/src/main/resources/data/gestus/emotes/builtin/hit.emote +++ b/src/main/resources/data/gestus/emotes/builtin/hit.emote @@ -1,9 +1,9 @@ -main_arm 0 0 0 -main_arm -8.5 -17 0 -main_arm -17 -34 0 -main_arm -25.5 -51 0 -main_arm -34 -68 0 -main_arm -25.5 -51 0 -main_arm -17 -34 0 -main_arm -8.5 -17 0 -main_arm 0 0 0 \ No newline at end of file +right_arm 0 0 0 +right_arm -8.5 -17 0 +right_arm -17 -34 0 +right_arm -25.5 -51 0 +right_arm -34 -68 0 +right_arm -25.5 -51 0 +right_arm -17 -34 0 +right_arm -8.5 -17 0 +right_arm 0 0 0 \ No newline at end of file diff --git a/src/main/resources/data/gestus/emotes/builtin/shield.emote b/src/main/resources/data/gestus/emotes/builtin/shield.emote index da9a0aa..ea1b8fd 100644 --- a/src/main/resources/data/gestus/emotes/builtin/shield.emote +++ b/src/main/resources/data/gestus/emotes/builtin/shield.emote @@ -1 +1 @@ -main_arm -42 -90 0 \ No newline at end of file +right_arm -42 -90 0 \ No newline at end of file diff --git a/src/main/resources/data/gestus/emotes/builtin/still.emote b/src/main/resources/data/gestus/emotes/builtin/still.emote index 7f63891..2a72c35 100644 --- a/src/main/resources/data/gestus/emotes/builtin/still.emote +++ b/src/main/resources/data/gestus/emotes/builtin/still.emote @@ -1 +1 @@ -main_arm 0 0 0 off_arm 0 0 0 left_leg 0 0 0 right_leg 0 0 0 body 0 0 0 \ No newline at end of file +right_arm 0 0 0 left_arm 0 0 0 left_leg 0 0 0 right_leg 0 0 0 body 0 0 0 \ No newline at end of file diff --git a/src/main/resources/data/gestus/emotes/builtin/trident.emote b/src/main/resources/data/gestus/emotes/builtin/trident.emote index e16282e..8b15b29 100644 --- a/src/main/resources/data/gestus/emotes/builtin/trident.emote +++ b/src/main/resources/data/gestus/emotes/builtin/trident.emote @@ -1 +1 @@ -main_arm 0 -180 0 \ No newline at end of file +right_arm 0 -180 0 \ No newline at end of file diff --git a/src/main/resources/data/gestus/emotes/custom/wave.emote b/src/main/resources/data/gestus/emotes/custom/wave.emote index 2b3d696..137b74c 100644 --- a/src/main/resources/data/gestus/emotes/custom/wave.emote +++ b/src/main/resources/data/gestus/emotes/custom/wave.emote @@ -1,40 +1,40 @@ -main_arm 0 0 0 -main_arm 0 0 16 -main_arm 0 0 32 -main_arm 0 0 48 -main_arm 0 0 64 -main_arm 0 0 80 -main_arm 0 0 96 -main_arm 0 0 112 -main_arm 0 0 128 -main_arm 0 0 144 -main_arm 0 0 145 -main_arm 0 0 140 -main_arm 0 0 135 -main_arm 0 0 130 -main_arm 0 0 125 -main_arm 0 0 120 -main_arm 0 0 125 -main_arm 0 0 130 -main_arm 0 0 135 -main_arm 0 0 140 -main_arm 0 0 145 -main_arm 0 0 145 -main_arm 0 0 140 -main_arm 0 0 135 -main_arm 0 0 130 -main_arm 0 0 125 -main_arm 0 0 120 -main_arm 0 0 125 -main_arm 0 0 130 -main_arm 0 0 135 -main_arm 0 0 140 -main_arm 0 0 145 -main_arm 0 0 112 -main_arm 0 0 96 -main_arm 0 0 80 -main_arm 0 0 64 -main_arm 0 0 48 -main_arm 0 0 32 -main_arm 0 0 16 -main_arm 0 0 0 \ No newline at end of file +right_arm 0 0 0 +right_arm 0 0 16 +right_arm 0 0 32 +right_arm 0 0 48 +right_arm 0 0 64 +right_arm 0 0 80 +right_arm 0 0 96 +right_arm 0 0 112 +right_arm 0 0 128 +right_arm 0 0 144 +right_arm 0 0 145 +right_arm 0 0 140 +right_arm 0 0 135 +right_arm 0 0 130 +right_arm 0 0 125 +right_arm 0 0 120 +right_arm 0 0 125 +right_arm 0 0 130 +right_arm 0 0 135 +right_arm 0 0 140 +right_arm 0 0 145 +right_arm 0 0 145 +right_arm 0 0 140 +right_arm 0 0 135 +right_arm 0 0 130 +right_arm 0 0 125 +right_arm 0 0 120 +right_arm 0 0 125 +right_arm 0 0 130 +right_arm 0 0 135 +right_arm 0 0 140 +right_arm 0 0 145 +right_arm 0 0 112 +right_arm 0 0 96 +right_arm 0 0 80 +right_arm 0 0 64 +right_arm 0 0 48 +right_arm 0 0 32 +right_arm 0 0 16 +right_arm 0 0 0 \ No newline at end of file