diff --git a/README.md b/README.md
index 66e3561..b1b9e1f 100644
--- a/README.md
+++ b/README.md
@@ -100,6 +100,23 @@ After:
**Note: The mod doesn't add any sounds by itself, all of these sounds are already present in your "resources" folder, they are automatically downloaded by Minecraft itself**
+
+
+Fixed leg armor not being updated while riding
+
+Before:
+
+
+After:
+
+
+Before:
+![player's leg armor not updating its rotation according to the player's legs](https://i.imgur.com/Vx8GAtV.png)
+
+After:
+![player's leg armor correctly updating its rotation according to the player's legs](https://i.imgur.com/eHppgk9.png)
+
+
## Troubleshooting
diff --git a/src/main/java/xyz/pixelatedw/betterbeta/WyHelper.java b/src/main/java/xyz/pixelatedw/betterbeta/WyHelper.java
index 07231c3..c4946ea 100644
--- a/src/main/java/xyz/pixelatedw/betterbeta/WyHelper.java
+++ b/src/main/java/xyz/pixelatedw/betterbeta/WyHelper.java
@@ -4,6 +4,8 @@ import java.lang.management.ManagementFactory;
import java.util.Random;
import net.minecraft.entity.player.Player;
+import net.minecraft.item.ItemInstance;
+import net.minecraft.item.ItemType;
public class WyHelper {
@@ -22,47 +24,14 @@ public class WyHelper {
public static void cheatCommand(Player player) {
Random rand = new Random();
- player.level.playSound(player, "random.break", 1, (rand.nextFloat() - rand.nextFloat()) * 0.2F + 1.0F);
+// player.level.playSound(player, "random.break", 1, (rand.nextFloat() - rand.nextFloat()) * 0.2F + 1.0F);
// player.dropItem(new ItemInstance(ItemType.pickaxeGold, 1, 100), false);
// player.dropItem(new ItemInstance(Tile.STONE, 64), false);
// player.level.playLevelEvent((Player)null, 1005, (int)player.x, (int)player.y, (int)player.z, 0);
-// player.dropItem(new ItemInstance(Tile.DOOR_WOOD, 1), false);
-
-// player.dropItem(new ItemInstance(Tile.JUKEBOX, 1), false);
-// player.dropItem(new ItemInstance(ItemType.record_cat, 1), false);
-
-// player.dropItem(new ItemInstance(Tile.STONE_SLAB, 2), false);
-// player.dropItem(new ItemInstance(Tile.CHEST, 2), false);
-// player.dropItem(new ItemInstance(Tile.FURNACE, 1), false);
-// player.dropItem(new ItemInstance(Tile.DISPENSER, 1), false);
-// player.dropItem(new ItemInstance(Tile.DIRT, 64), false);
-// player.dropItem(new ItemInstance(Tile.DOOR_WOOD, 1), false);
-// player.dropItem(new ItemInstance(Tile.STILL_LAVA, 1), false);
-// player.dropItem(new ItemInstance(ItemType.pickaxeDiamond, 1), false);
-// player.dropItem(new ItemInstance(ItemType.hatchetDiamond, 1), false);
-// player.dropItem(new ItemInstance(ItemType.bow, 1), false);
-// player.dropItem(new ItemInstance(Tile.COBBLESTONE, 1), false);
-// player.dropItem(new ItemInstance(Tile.STAIRS_STONE, 64), false);
-// player.dropItem(new ItemInstance(Tile.STAIRS_WOOD, 64), false);
-// player.dropItem(new ItemInstance(ItemType.boat, 1), false);
-// player.dropItem(new ItemInstance(ItemType.minecart, 1), false);
-// player.dropItem(new ItemInstance(ItemType.minecartChest, 1), false);
-// player.dropItem(new ItemInstance(ItemType.minecartFurnace, 1), false);
-// player.dropItem(new ItemInstance(Tile.RAIL, 64), false);
-// player.dropItem(new ItemInstance(Tile.GOLDEN_RAIL, 64), false);
-// player.dropItem(new ItemInstance(Tile.REDSTONE_TORCH, 64), false);
-// player.dropItem(new ItemInstance(Tile.BUTTON, 1), false);
-// player.dropItem(new ItemInstance(Tile.REDSTONE_DUST, 64), false);
-
-// player.dropItem(new ItemInstance(ItemType.bootsDiamond, 1), false);
-// player.dropItem(new ItemInstance(ItemType.chestplateDiamond, 1), false);
-// player.dropItem(new ItemInstance(ItemType.helmetDiamond, 1), false);
-// player.dropItem(new ItemInstance(ItemType.leggingsDiamond, 1), false);
-
-// player.dropItem(new ItemInstance(Tile.FENCE, 1), false);
+ player.dropItem(new ItemInstance(ItemType.boat, 1), false);
// Skeleton enemy = new Skeleton(player.level);
// enemy.setPositionAndAngles(player.x + 2, player.y, player.z, 0.0f, 0.0f);
diff --git a/src/main/java/xyz/pixelatedw/betterbeta/mixin/LivingEntityRendererMixin.java b/src/main/java/xyz/pixelatedw/betterbeta/mixin/LivingEntityRendererMixin.java
new file mode 100644
index 0000000..d683f26
--- /dev/null
+++ b/src/main/java/xyz/pixelatedw/betterbeta/mixin/LivingEntityRendererMixin.java
@@ -0,0 +1,16 @@
+package xyz.pixelatedw.betterbeta.mixin;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+
+import net.minecraft.client.render.entity.LivingEntityRenderer;
+import net.minecraft.client.render.entity.model.EntityModel;
+
+@Mixin(LivingEntityRenderer.class)
+public class LivingEntityRendererMixin {
+ @Shadow
+ protected EntityModel field_909;
+
+ @Shadow
+ protected EntityModel model;
+}
diff --git a/src/main/java/xyz/pixelatedw/betterbeta/mixin/PlayerRendererMixin.java b/src/main/java/xyz/pixelatedw/betterbeta/mixin/PlayerRendererMixin.java
index 55f4013..c92a00a 100644
--- a/src/main/java/xyz/pixelatedw/betterbeta/mixin/PlayerRendererMixin.java
+++ b/src/main/java/xyz/pixelatedw/betterbeta/mixin/PlayerRendererMixin.java
@@ -2,18 +2,27 @@ package xyz.pixelatedw.betterbeta.mixin;
import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.At.Shift;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.client.render.entity.PlayerRenderer;
+import net.minecraft.client.render.entity.model.BipedModel;
import net.minecraft.entity.player.Player;
import net.minecraft.item.ItemInstance;
import net.minecraft.item.ItemType;
+import net.minecraft.item.armour.ArmourItem;
@Mixin(PlayerRenderer.class)
-public class PlayerRendererMixin {
+public class PlayerRendererMixin extends LivingEntityRendererMixin{
+
+ @Shadow
+ private BipedModel field_295; // Armor
+
+ @Shadow
+ private BipedModel field_296; // Legs
@Inject(method = "method_827", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/HandItemRenderer;method_1862(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemInstance;)V", shift = Shift.BEFORE))
public void playerRendering(Player player, float f, CallbackInfo ci) {
@@ -22,4 +31,15 @@ public class PlayerRendererMixin {
GL11.glTranslatef(0.0F, -0.5F, 0.0F);
}
}
+
+ @Inject(method = "render(Lnet/minecraft/entity/player/Player;DDDFF)V", at = @At("HEAD"))
+ public void render(Player arg, double d, double d1, double d2, float f, float f1, CallbackInfo ci) {
+ ItemInstance stack = arg.inventory.getArmourItem(1);
+ if (stack != null) {
+ ItemType item = stack.getType();
+ if (item instanceof ArmourItem) {
+ this.field_296.isRiding = this.field_909.isRiding;
+ }
+ }
+ }
}
diff --git a/src/main/resources/betterbeta.mixins.json b/src/main/resources/betterbeta.mixins.json
index f0c6e04..bbf916f 100644
--- a/src/main/resources/betterbeta.mixins.json
+++ b/src/main/resources/betterbeta.mixins.json
@@ -19,7 +19,8 @@
"MinecraftAppletMixin",
"ItemInstanceMixin",
"MinecraftMixin",
- "MinecartMixin"
+ "MinecartMixin",
+ "LivingEntityRendererMixin"
],
"injectors": {
"defaultRequire": 1