package com.thebrokenrail.gestus.emote; import net.minecraft.util.math.EulerAngle; import java.util.HashMap; import java.util.Map; public class EmoteFrame { public final Map rightHanded; public final Map leftHanded; public EmoteFrame(Map data) { rightHanded = resolve(data, false); leftHanded = resolve(data, true); } private static Map resolve(Map data, boolean leftHanded) { 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()); } } return result; } }