Skip to content

Commit fedc3ec

Browse files
committed
Support minecraft version 1.21.10
- Add player model shivering when frozen - Fix player models going dark
1 parent 54f5283 commit fedc3ec

11 files changed

Lines changed: 53 additions & 33 deletions

File tree

build.gradle

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
plugins {
22
id "fabric-loom" version "${loom_version}"
33
id "maven-publish"
4-
id "me.modmuss50.mod-publish-plugin" version "1.0.0"
4+
id "me.modmuss50.mod-publish-plugin" version "1.1.0"
55
}
66

7-
version = project.mod_version
7+
version = "${project.mod_version}+${project.minecraft_version}"
88
group = project.maven_group
99

1010
base {
@@ -36,7 +36,6 @@ repositories {
3636

3737
maven { url "https://maven.terraformersmc.com/" } // Mod menu
3838
maven { url "https://maven.isxander.dev/releases" } // YACL
39-
maven { url "https://maven.shedaniel.me/" } // Cloth Config
4039

4140
mavenCentral()
4241
}
@@ -115,7 +114,7 @@ publishMods {
115114
modrinth {
116115
accessToken = project.findProperty("MODRINTH_API_KEY") ?: providers.environmentVariable("MODRINTH_API_KEY")
117116
projectId = "4vsSeMij"
118-
minecraftVersions.addAll("1.21.6", "1.21.7", "1.21.8")
117+
minecraftVersions.addAll("1.21.9", "1.21.10")
119118

120119
requires("fabric-api")
121120
requires("yacl")

gradle.properties

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@ org.gradle.parallel=true
44

55
# Fabric Properties
66
# check these on https://fabricmc.net/develop
7-
minecraft_version=1.21.8
8-
yarn_mappings=1.21.8+build.1
7+
minecraft_version=1.21.10
8+
yarn_mappings=1.21.10+build.2
99
loader_version=0.17.3
1010
loom_version=1.11-SNAPSHOT
1111

1212
# Mod Properties
13-
mod_version=1.4.0
13+
mod_version=1.4.1
1414
maven_group=dev.hintsystem.playerrelay
1515
archives_base_name=player-relay
1616

1717
# Dependencies
18-
fabric_version=0.129.0+1.21.8
19-
modmenu_version=15.0.0
20-
yacl_version=3.7.1+1.21.6-fabric
21-
pingwheel_version=1.12.0-fabric,1.21.8
22-
xaerosminimap_version=25.2.16_Fabric_1.21.8
23-
xaerosworldmap_version=1.39.13_Fabric_1.21.8
18+
fabric_version=0.136.0+1.21.10
19+
modmenu_version=16.0.0-rc.1
20+
yacl_version=3.8.0+1.21.9-fabric
21+
pingwheel_version=1.12.0-fabric,1.21.10
22+
xaerosminimap_version=25.2.15_Fabric_1.21.9
23+
xaerosworldmap_version=1.39.17_Fabric_1.21.9

src/main/java/dev/hintsystem/playerrelay/ClientCore.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,10 @@ private static boolean updateComponent(PlayerInfoPayload info, PlayerDataCompone
115115
public static int ticksToMs(int ticks) { return Math.round((ticks / tickRate) * 1000); }
116116

117117
public static void sendClientMessage(Text message) {
118-
ClientPlayerEntity clientPlayer = MinecraftClient.getInstance().player;
119-
if (clientPlayer == null) { return; }
118+
MinecraftClient client = MinecraftClient.getInstance();
119+
if (client.player == null) { return; }
120120

121-
clientPlayer.sendMessage(message, false);
121+
client.execute(() -> client.player.sendMessage(message, false));
122122
}
123123

124124
@Nullable

src/main/java/dev/hintsystem/playerrelay/config/Config.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public Screen createScreen(Screen parent) {
146146
.name(Text.literal("Display Name Color"))
147147
.binding(DEFAULTS.displayNameColor, () -> displayNameColor, val -> displayNameColor = val)
148148
.controller(opt -> ColorControllerBuilder.create(opt)
149-
.allowAlpha(false))
149+
.allowAlpha(true)) // TODO: set allowAlpha to false when YACL fixes the crash caused by ColorPickerWidget
150150
.build())
151151
.option(Option.<Integer>createBuilder()
152152
.name(Text.literal("AFK Timeout"))

src/main/java/dev/hintsystem/playerrelay/gui/PaperDollRenderer.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import net.minecraft.client.MinecraftClient;
77
import net.minecraft.client.gui.DrawContext;
88
import net.minecraft.client.render.RenderTickCounter;
9-
import net.minecraft.client.render.entity.EntityRenderDispatcher;
9+
import net.minecraft.client.render.entity.EntityRenderManager;
1010
import net.minecraft.client.render.entity.EntityRenderer;
1111
import net.minecraft.client.render.entity.state.EntityRenderState;
1212
import net.minecraft.entity.Entity;
@@ -88,7 +88,7 @@ public void applyHealth(LivingEntity livingEntity, float health) {
8888

8989
public void setFakeVehicle(LivingEntity livingEntity) {
9090
if (fakeVehicle == null) {
91-
fakeVehicle = new Entity(EntityType.ARMOR_STAND, livingEntity.getWorld()) {
91+
fakeVehicle = new Entity(EntityType.ARMOR_STAND, livingEntity.getEntityWorld()) {
9292
@Override
9393
protected void initDataTracker(DataTracker.Builder builder) {}
9494
@Override
@@ -126,7 +126,10 @@ public void tick(LivingEntity livingEntity) {
126126
headYawOffset = headYawOffsetO = centerYaw = 0.0f;
127127
}
128128

129-
if (livingEntity.isAlive()) livingEntity.tick();
129+
if (livingEntity.isAlive()) {
130+
livingEntity.tick();
131+
livingEntity.age++;
132+
}
130133
}
131134

132135
public void renderPaperDoll(DrawContext context, int x1, int y1, int x2, int y2, int scale, LivingEntity livingEntity, RenderTickCounter tickCounter) {
@@ -172,11 +175,14 @@ public void renderPaperDoll(DrawContext context, int x1, int y1, int x2, int y2,
172175
/** @see net.minecraft.client.gui.screen.ingame.InventoryScreen#drawEntity(DrawContext, int, int, int, int, float, Vector3f, Quaternionf, Quaternionf, LivingEntity) **/
173176
public static void drawEntity(DrawContext context, int x1, int y1, int x2, int y2, float scale, Vector3f translation,
174177
Quaternionf rotation, @Nullable Quaternionf overrideCameraAngle, LivingEntity livingEntity, RenderTickCounter tickCounter) {
175-
EntityRenderDispatcher entityRenderDispatcher = MinecraftClient.getInstance().getEntityRenderDispatcher();
176-
EntityRenderer<? super LivingEntity, ?> entityRenderer = entityRenderDispatcher.getRenderer(livingEntity);
178+
EntityRenderManager entityRenderManager = MinecraftClient.getInstance().getEntityRenderDispatcher();
179+
EntityRenderer<? super LivingEntity, ?> entityRenderer = entityRenderManager.getRenderer(livingEntity);
177180
EntityRenderState entityRenderState = entityRenderer.getAndUpdateRenderState(livingEntity, tickCounter.getTickProgress(false));
178181
entityRenderState.displayName = null;
179182
entityRenderState.hitbox = null;
183+
entityRenderState.light = 15728880;
184+
entityRenderState.shadowPieces.clear();
185+
entityRenderState.outlineColor = 0;
180186
context.addEntity(entityRenderState, scale, translation, rotation, overrideCameraAngle, x1, y1, x2, y2);
181187
}
182188

src/main/java/dev/hintsystem/playerrelay/gui/PlayerListEntry.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
import net.minecraft.client.gui.hud.InGameHud;
1212
import net.minecraft.client.network.OtherClientPlayerEntity;
1313
import net.minecraft.client.render.RenderTickCounter;
14-
import net.minecraft.client.util.SkinTextures;
14+
import net.minecraft.component.type.ProfileComponent;
15+
import net.minecraft.entity.player.SkinTextures;
1516
import net.minecraft.client.world.ClientWorld;
1617
import net.minecraft.entity.effect.StatusEffects;
1718
import net.minecraft.entity.player.PlayerEntity;
@@ -122,7 +123,10 @@ private void applyInfoToPlayer(PlayerEntity player) {
122123
if (statsData != null) paperDollRenderer.applyHealth(player, statsData.health);
123124

124125
PlayerStatusEffectsData statusEffectsData = playerInfo.getComponent(PlayerStatusEffectsData.class);
125-
if (statusEffectsData != null) playerEntity.setOnFire(statusEffectsData.isOnFire());
126+
if (statusEffectsData != null) {
127+
playerEntity.setFrozenTicks(statusEffectsData.isFrozen() ? playerEntity.getMinFreezeDamageTicks() + 4 : 0);
128+
playerEntity.setOnFire(statusEffectsData.isOnFire());
129+
}
126130

127131
PlayerEquipmentData equipmentData = playerInfo.getComponent(PlayerEquipmentData.class);
128132
if (equipmentData != null) equipmentData.applyToPlayer(player);
@@ -131,13 +135,19 @@ private void applyInfoToPlayer(PlayerEntity player) {
131135
@Nullable
132136
public OtherClientPlayerEntity getRenderPlayerEntity() {
133137
ClientWorld world = MinecraftClient.getInstance().world;
134-
if ((this.playerEntity == null || this.playerEntity.clientWorld != world) && world != null) {
138+
if ((this.playerEntity == null || this.playerEntity.getEntityWorld() != world) && world != null) {
135139
this.playerEntity = new OtherClientPlayerEntity(world, playerInfo.toGameProfile());
136140
}
137141

138142
return this.playerEntity;
139143
}
140144

145+
public SkinTextures getPlayerSkinTextures() {
146+
return MinecraftClient.getInstance().getPlayerSkinCache()
147+
.get(ProfileComponent.ofStatic(playerInfo.toGameProfile()))
148+
.getTextures();
149+
}
150+
141151
public void render(DrawContext context, int x, int y, RenderTickCounter tickCounter) {
142152
MinecraftClient client = MinecraftClient.getInstance();
143153

@@ -156,8 +166,7 @@ public void render(DrawContext context, int x, int y, RenderTickCounter tickCoun
156166
renderIconUnderlay(context, x, y, x2, y2, null);
157167
paperDollRenderer.renderPaperDoll(context, x, y, x2, y2, 22, playerEntity, tickCounter);
158168
} else {
159-
SkinTextures skin = client.getSkinProvider().getSkinTextures(playerInfo.toGameProfile());
160-
PlayerSkinDrawer.draw(context, skin, x, y, config.iconWidth);
169+
PlayerSkinDrawer.draw(context, getPlayerSkinTextures(), x, y, config.iconWidth);
161170
}
162171

163172
renderIconOverlay(context, x, y, x2, y2, null);

src/main/java/dev/hintsystem/playerrelay/mixin/minecraft/KeyboardMixin.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package dev.hintsystem.playerrelay.mixin.minecraft;
22

33
import dev.hintsystem.playerrelay.PlayerRelay;
4+
45
import net.minecraft.client.Keyboard;
6+
import net.minecraft.client.input.KeyInput;
7+
58
import org.spongepowered.asm.mixin.Mixin;
69
import org.spongepowered.asm.mixin.injection.At;
710
import org.spongepowered.asm.mixin.injection.Inject;
@@ -10,7 +13,7 @@
1013
@Mixin(Keyboard.class)
1114
public class KeyboardMixin {
1215
@Inject(method = "onKey", at = @At("HEAD"))
13-
private void onKey(long window, int key, int scancode, int action, int modifiers, CallbackInfo ci) {
16+
private void onKey(long window, int action, KeyInput input, CallbackInfo ci) {
1417
// Only count press or repeat (not release)
1518
if (action != 0) PlayerRelay.updateInputActivity();
1619
}

src/main/java/dev/hintsystem/playerrelay/mixin/minecraft/MouseMixin.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package dev.hintsystem.playerrelay.mixin.minecraft;
22

33
import dev.hintsystem.playerrelay.PlayerRelay;
4+
45
import net.minecraft.client.Mouse;
6+
import net.minecraft.client.input.MouseInput;
7+
58
import org.spongepowered.asm.mixin.Mixin;
69
import org.spongepowered.asm.mixin.injection.At;
710
import org.spongepowered.asm.mixin.injection.Inject;
@@ -10,7 +13,7 @@
1013
@Mixin(Mouse.class)
1114
public class MouseMixin {
1215
@Inject(method = "onMouseButton", at = @At("HEAD"))
13-
private void onMouseButton(long window, int button, int action, int mods, CallbackInfo ci) {
16+
private void onMouseButton(long window, MouseInput input, int action, CallbackInfo ci) {
1417
if (action != 0) PlayerRelay.updateInputActivity();
1518
}
1619

src/main/java/dev/hintsystem/playerrelay/payload/player/PlayerPositionData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class PlayerPositionData implements PlayerDataComponent {
1515
public PlayerPositionData() {}
1616

1717
public PlayerPositionData(ClientPlayerEntity player) {
18-
this.coords = player.getPos();
18+
this.coords = player.getEntityPos();
1919
this.yaw = player.getYaw();
2020
this.pitch = player.getPitch();
2121
this.pose = (player.getVehicle() != null) ? EntityPose.SITTING : player.getPose();

src/main/java/dev/hintsystem/playerrelay/payload/player/PlayerWorldData.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ public PlayerWorldData(@Nullable PlayerEntity player) {
3333
if (player == null) { return; }
3434

3535
setFlag(FLAGS.IN_WORLD, true);
36-
WorldProperties worldProperties = player.getWorld().getLevelProperties();
36+
WorldProperties worldProperties = player.getEntityWorld().getLevelProperties();
3737

3838
setFlag(FLAGS.HARDCORE, worldProperties.isHardcore());
39-
this.dimension = player.getWorld().getRegistryKey();
39+
this.dimension = player.getEntityWorld().getRegistryKey();
4040
this.difficulty = worldProperties.getDifficulty();
4141
}
4242

0 commit comments

Comments
 (0)