Skip to content

Commit fa37a2d

Browse files
committed
Port to 1.21.11
1 parent 54d03aa commit fa37a2d

File tree

11 files changed

+114
-24
lines changed

11 files changed

+114
-24
lines changed

build.gradle.kts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
// versions
2-
val minecraftVersion = "1.21.1"
3-
val minecraftDep = "=1.21.1"
2+
val minecraftVersion = "1.21.11"
3+
val minecraftDep = "=1.21.11"
44
// https://parchmentmc.org/docs/getting-started
5-
val parchmentVersion = "2024.11.17"
5+
val parchmentVersion = "2025.12.20"
66
// https://fabricmc.net/develop
7-
val loaderVersion = "0.16.14"
7+
val loaderVersion = "0.18.4"
88

99
// buildscript
1010
plugins {
11-
id("fabric-loom") version "1.11.+"
11+
id("net.fabricmc.fabric-loom-remap") version "1.15.+"
1212
id("maven-publish")
1313
}
1414

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
org.gradle.jvmargs=-Xmx2G
22
org.gradle.parallel=true
33
org.gradle.caching=true
4-
org.gradle.configuration-cache=true
4+
#org.gradle.configuration-cache=true

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

src/main/java/one/devos/nautical/sheared/ShearedClient.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import org.slf4j.LoggerFactory;
55

66
import net.fabricmc.api.ClientModInitializer;
7-
import net.minecraft.resources.ResourceLocation;
7+
import net.minecraft.resources.Identifier;
88

99
public class ShearedClient implements ClientModInitializer {
1010
public static final String ID = "sheared";
@@ -14,7 +14,7 @@ public class ShearedClient implements ClientModInitializer {
1414
public void onInitializeClient() {
1515
}
1616

17-
public static ResourceLocation id(String path) {
18-
return ResourceLocation.fromNamespaceAndPath(ID, path);
17+
public static Identifier id(String path) {
18+
return Identifier.fromNamespaceAndPath(ID, path);
1919
}
2020
}

src/main/java/one/devos/nautical/sheared/mixin/LivingEntityMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import net.minecraft.util.Mth;
99
import net.minecraft.world.entity.LivingEntity;
10-
import net.minecraft.world.entity.animal.Sheep;
10+
import net.minecraft.world.entity.animal.sheep.Sheep;
1111
import one.devos.nautical.sheared.mixinterface.SheepExtension;
1212

1313
@Mixin(LivingEntity.class)

src/main/java/one/devos/nautical/sheared/mixin/LivingEntityRendererMixin.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package one.devos.nautical.sheared.mixin;
22

33
import java.util.Random;
4+
import java.util.UUID;
45

56
import org.joml.Matrix4f;
67
import org.spongepowered.asm.mixin.Mixin;
@@ -12,42 +13,45 @@
1213
import com.mojang.blaze3d.vertex.PoseStack;
1314

1415
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
16+
import net.minecraft.client.renderer.entity.state.LivingEntityRenderState;
1517
import net.minecraft.util.Mth;
16-
import net.minecraft.world.entity.LivingEntity;
17-
import net.minecraft.world.entity.animal.Sheep;
18-
import one.devos.nautical.sheared.mixinterface.SheepExtension;
18+
import one.devos.nautical.sheared.mixinterface.SheepRenderStateExtension;
1919

2020
@Mixin(LivingEntityRenderer.class)
2121
abstract class LivingEntityRendererMixin {
2222
@Unique
2323
private static final Random RANDOM = new Random();
2424

2525
@Inject(method = "setupRotations", at = @At("RETURN"))
26-
private void onReturnSetupRotations(LivingEntity entity, PoseStack poseStack, float bob, float yBodyRot, float partialTick, float scale, CallbackInfo ci) {
27-
if (!(entity instanceof Sheep sheep)) {
26+
private void onReturnSetupRotations(LivingEntityRenderState renderState, PoseStack poseStack, float bodyRot, float scale, CallbackInfo ci) {
27+
if (!(renderState instanceof SheepRenderStateExtension sheepRenderStateExt)) {
2828
return;
2929
}
3030

31-
long seed = entity.getUUID().getMostSignificantBits() ^ entity.getUUID().getLeastSignificantBits();
31+
UUID uuid = sheepRenderStateExt.sheared$getUuid();
32+
33+
if (uuid == null) {
34+
return;
35+
}
36+
37+
long seed = uuid.getMostSignificantBits() ^ uuid.getLeastSignificantBits();
3238
RANDOM.setSeed(seed);
3339

3440
if (RANDOM.nextInt(5) != 0) {
3541
return;
3642
}
3743

38-
SheepExtension extension = ((SheepExtension) sheep);
39-
float shearProgress = extension.sheared$getShearProgress();
40-
float shearProgressO = extension.sheared$getShearProgressO();
44+
float shearProgress = sheepRenderStateExt.sheared$getShearProgress();
4145

42-
if (shearProgress <= Mth.EPSILON && shearProgressO <= Mth.EPSILON) {
46+
if (shearProgress <= Mth.EPSILON) {
4347
return;
4448
}
4549

4650
float shearDirAngle = RANDOM.nextFloat(Mth.TWO_PI);
4751
float shearDirX = Mth.cos(shearDirAngle);
4852
float shearDirZ = Mth.sin(shearDirAngle);
4953
float shearAmount = RANDOM.nextFloat(0.25f, 1.0f);
50-
shearAmount *= Mth.lerp(partialTick, shearProgressO, shearProgress);
54+
shearAmount *= shearProgress;
5155

5256
Matrix4f matrix = new Matrix4f();
5357
matrix.m10(shearDirX * shearAmount);

src/main/java/one/devos/nautical/sheared/mixin/SheepMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import org.spongepowered.asm.mixin.Mixin;
44
import org.spongepowered.asm.mixin.Unique;
55

6-
import net.minecraft.world.entity.animal.Sheep;
6+
import net.minecraft.world.entity.animal.sheep.Sheep;
77
import one.devos.nautical.sheared.mixinterface.SheepExtension;
88

99
@Mixin(Sheep.class)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package one.devos.nautical.sheared.mixin;
2+
3+
import java.util.UUID;
4+
5+
import org.jspecify.annotations.Nullable;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Unique;
8+
9+
import net.minecraft.client.renderer.entity.state.SheepRenderState;
10+
import one.devos.nautical.sheared.mixinterface.SheepRenderStateExtension;
11+
12+
@Mixin(SheepRenderState.class)
13+
abstract class SheepRenderStateMixin implements SheepRenderStateExtension {
14+
@Unique
15+
@Nullable
16+
private UUID uuid;
17+
18+
@Unique
19+
private float shearProgress;
20+
21+
@Override
22+
@Nullable
23+
public UUID sheared$getUuid() {
24+
return uuid;
25+
}
26+
27+
@Override
28+
public float sheared$getShearProgress() {
29+
return shearProgress;
30+
}
31+
32+
@Override
33+
public void sheared$setUuid(@Nullable UUID uuid) {
34+
this.uuid = uuid;
35+
}
36+
37+
@Override
38+
public void sheared$setShearProgress(float shearProgress) {
39+
this.shearProgress = shearProgress;
40+
}
41+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package one.devos.nautical.sheared.mixin;
2+
3+
import org.spongepowered.asm.mixin.Mixin;
4+
import org.spongepowered.asm.mixin.injection.At;
5+
import org.spongepowered.asm.mixin.injection.Inject;
6+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
7+
8+
import net.minecraft.client.renderer.entity.SheepRenderer;
9+
import net.minecraft.client.renderer.entity.state.SheepRenderState;
10+
import net.minecraft.util.Mth;
11+
import net.minecraft.world.entity.animal.sheep.Sheep;
12+
import one.devos.nautical.sheared.mixinterface.SheepExtension;
13+
import one.devos.nautical.sheared.mixinterface.SheepRenderStateExtension;
14+
15+
@Mixin(SheepRenderer.class)
16+
abstract class SheepRendererMixin {
17+
@Inject(method = "extractRenderState", at = @At("RETURN"))
18+
private void onReturnExtractRenderState(Sheep sheep, SheepRenderState renderState, float partialTick, CallbackInfo ci) {
19+
SheepExtension extension = ((SheepExtension) sheep);
20+
float shearProgress = extension.sheared$getShearProgress();
21+
float shearProgressO = extension.sheared$getShearProgressO();
22+
23+
((SheepRenderStateExtension) renderState).sheared$setUuid(sheep.getUUID());
24+
float stateShearProgress = Mth.lerp(partialTick, shearProgressO, shearProgress);
25+
((SheepRenderStateExtension) renderState).sheared$setShearProgress(stateShearProgress);
26+
}
27+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package one.devos.nautical.sheared.mixinterface;
2+
3+
import java.util.UUID;
4+
5+
import org.jspecify.annotations.Nullable;
6+
7+
public interface SheepRenderStateExtension {
8+
@Nullable
9+
UUID sheared$getUuid();
10+
11+
float sheared$getShearProgress();
12+
13+
void sheared$setUuid(@Nullable UUID uuid);
14+
15+
void sheared$setShearProgress(float shearProgress);
16+
}

0 commit comments

Comments
 (0)