From 69c104a994d02993e184807ea16cfe1a1f7f9f3b Mon Sep 17 00:00:00 2001 From: Wynd Date: Sun, 2 Apr 2023 23:07:24 +0300 Subject: [PATCH] Fixed leg armor not updating its rotation correctly while in vechicles --- README.md | 17 ++++++++ .../xyz/pixelatedw/betterbeta/WyHelper.java | 39 ++----------------- .../mixin/LivingEntityRendererMixin.java | 16 ++++++++ .../betterbeta/mixin/PlayerRendererMixin.java | 22 ++++++++++- src/main/resources/betterbeta.mixins.json | 3 +- 5 files changed, 60 insertions(+), 37 deletions(-) create mode 100644 src/main/java/xyz/pixelatedw/betterbeta/mixin/LivingEntityRendererMixin.java 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:
+
## 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