diff --git a/LobbySystem/src/de/steamwar/lobby/particle/DrawnWings.java b/LobbySystem/src/de/steamwar/lobby/particle/DrawnWings.java index ec31c586..ef8bd082 100644 --- a/LobbySystem/src/de/steamwar/lobby/particle/DrawnWings.java +++ b/LobbySystem/src/de/steamwar/lobby/particle/DrawnWings.java @@ -101,11 +101,15 @@ public enum DrawnWings { abstract List> rightWing(); private static final Map CACHE = new HashMap<>(); + // The shapes are drawn with the shoulder joint at y = 7; moving it to 3.3 puts it at the shoulder blades + // (about 1.3 blocks above the feet at the default size) instead of at head height + private static final double SHOULDER_SHIFT = 7 - 3.3; // Both wings with the given number of points per wing, spread evenly along the lines public WingDesign withDetail(int pointsPerWing) { return CACHE.computeIfAbsent(name() + "@" + pointsPerWing, key -> { List right = sample(rightWing(), pointsPerWing); + right.forEach(point -> point.setY(point.getY() - SHOULDER_SHIFT)); List both = new ArrayList<>(right); right.forEach(point -> both.add(new Vector(-point.getX(), point.getY(), 0))); return new WingDesign.WingDesignImpl(both.toArray(new Vector[0]));