Skip to content

Commit 6aa2741

Browse files
committed
add more werewolf skins
1 parent 07de0e0 commit 6aa2741

File tree

7 files changed

+52
-4
lines changed

7 files changed

+52
-4
lines changed

src/api/java/de/teamlapen/werewolves/api/entities/werewolf/WerewolfForm.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ public class WerewolfForm {
1212
private static final Map<String, WerewolfForm> REGISTRY = new HashMap<>();
1313
public static final WerewolfForm NONE = new WerewolfForm("none", null, true, false, 0, 0F, true);
1414
public static final WerewolfForm HUMAN = new WerewolfForm("human", null, true, true, 3, 0.05F, true);
15-
public static final WerewolfForm BEAST = new WerewolfForm("beast", WerewolfSize.BEAST, false, true, 9, 0.2F, true);
16-
public static final WerewolfForm BEAST4L = new WerewolfForm("beast4l", WerewolfSize.BEAST, false, true, 9, 0.3F, false);
17-
public static final WerewolfForm SURVIVALIST = new WerewolfForm("survivalist", WerewolfSize.SURVIVAL, false, true, 9, 0.4F, false);
15+
public static final WerewolfForm BEAST = new WerewolfForm("beast", WerewolfSize.BEAST, false, true, 11, 0.2F, true);
16+
public static final WerewolfForm BEAST4L = new WerewolfForm("beast4l", WerewolfSize.BEAST, false, true, 11, 0.3F, false);
17+
public static final WerewolfForm SURVIVALIST = new WerewolfForm("survivalist", WerewolfSize.SURVIVAL, false, true, 11, 0.4F, false);
1818

1919
@Nonnull
2020
private final String name;

src/main/java/de/teamlapen/werewolves/client/model/WerewolfBaseModel.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.mojang.blaze3d.vertex.PoseStack;
44
import com.mojang.blaze3d.vertex.VertexConsumer;
55
import de.teamlapen.werewolves.util.REFERENCE;
6+
import de.teamlapen.werewolves.util.AlphanumericComparator;
67
import net.minecraft.client.Minecraft;
78
import net.minecraft.client.model.PlayerModel;
89
import net.minecraft.client.model.geom.ModelPart;
@@ -95,7 +96,7 @@ public void translateToHand(@Nonnull HumanoidArm arm, @Nonnull PoseStack stack)
9596
}
9697

9798
protected static List<ResourceLocation> getTextures(String texturePath) {
98-
return Minecraft.getInstance().getResourceManager().listResources(texturePath, s -> s.getPath().endsWith(".png")).keySet().stream().filter(r -> REFERENCE.MODID.equals(r.getNamespace())).collect(Collectors.toList());
99+
return Minecraft.getInstance().getResourceManager().listResources(texturePath, s -> s.getPath().endsWith(".png")).keySet().stream().sorted(new AlphanumericComparator()).filter(r -> REFERENCE.MODID.equals(r.getNamespace())).collect(Collectors.toList());
99100
}
100101

101102
protected HumanoidArm getAttackArm(T pEntity) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package de.teamlapen.werewolves.util;
2+
3+
import net.minecraft.resources.ResourceLocation;
4+
5+
import java.util.Comparator;
6+
import java.util.regex.Matcher;
7+
import java.util.regex.Pattern;
8+
9+
public class AlphanumericComparator implements Comparator<ResourceLocation> {
10+
11+
private final Pattern p = Pattern.compile("(\\D*)(\\d*)");
12+
13+
@Override
14+
public int compare(ResourceLocation s, ResourceLocation t1) {
15+
String first = s.toString();
16+
String second = t1.toString();
17+
Matcher m1 = p.matcher(first);
18+
Matcher m2 = p.matcher(second);
19+
20+
// The loop is required because the string can contain multiple numeric parts,
21+
// e.g., beast2part10
22+
while (m1.find() && m2.find()) {
23+
// Non-numeric part (could be empty)
24+
int nonNumericCompare = m1.group(1).compareTo(m2.group(1));
25+
if (nonNumericCompare != 0) {
26+
return nonNumericCompare;
27+
}
28+
29+
// Numeric part (could be empty)
30+
if (!m1.group(2).isEmpty() && !m2.group(2).isEmpty()) {
31+
int numericCompare = Integer.compare(Integer.parseInt(m1.group(2)), Integer.parseInt(m2.group(2)));
32+
if (numericCompare != 0) {
33+
return numericCompare;
34+
}
35+
}
36+
}
37+
38+
// Handle if one string is a prefix of the other.
39+
// E.g., beast2 and beast2part10
40+
if (m1.hitEnd() && m2.hitEnd()) {
41+
return 0;
42+
} else {
43+
return m1.hitEnd() ? -1 : 1;
44+
}
45+
46+
}
47+
}
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)