Skip to content

Commit

Permalink
Add another workaround for hiding head gear. Add workaround against c…
Browse files Browse the repository at this point in the history
…rashing mods that dont use the api
  • Loading branch information
tr7zw committed Jan 27, 2024
1 parent a063e4e commit 512d47b
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public void loadConfig() {
}
ConfigUpgrader.upgradeConfig(config);
writeSettings();
enabled = config.enabledByDefault;
setEnabled(config.enabledByDefault);
}

public void writeSettings() {
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ public abstract class FirstPersonModelCore extends FirstPersonBase {
private boolean isHeld = false;
private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295, "Firstperson");
private boolean lateInit = true;
@Deprecated
public static boolean enabled = true;
@Deprecated
public static boolean isRenderingPlayer = false;

protected FirstPersonModelCore() {
instance = this;
Expand Down Expand Up @@ -70,4 +74,16 @@ public void onTick() {
}
}

@Override
public void setRenderingPlayer(boolean isRenderingPlayer) {
super.setRenderingPlayer(isRenderingPlayer);
FirstPersonModelCore.isRenderingPlayer = isRenderingPlayer;
}

@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
FirstPersonModelCore.enabled = enabled;
}

}
6 changes: 6 additions & 0 deletions src/main/java/dev/tr7zw/firstperson/LogicHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import net.minecraft.world.entity.vehicle.Boat;
import net.minecraft.world.entity.vehicle.Minecart;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.Vec3;

@RequiredArgsConstructor
Expand Down Expand Up @@ -144,6 +145,11 @@ public boolean showVanillaHands() {
return fpm.getConfig().vanillaHands || autoVanillaHandItems.contains(client.player.getMainHandItem().getItem())
|| autoVanillaHandItems.contains(client.player.getOffhandItem().getItem());
}

public boolean showVanillaHands(ItemStack mainhand, ItemStack offhand) {
return fpm.getConfig().vanillaHands || autoVanillaHandItems.contains(mainhand.getItem())
|| autoVanillaHandItems.contains(offhand.getItem());
}

public void addAutoVanillaHandsItem(Item item) {
autoVanillaHandItems.add(item);
Expand Down
35 changes: 35 additions & 0 deletions src/main/java/dev/tr7zw/firstperson/mixins/PlayerMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package dev.tr7zw.firstperson.mixins;

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.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import dev.tr7zw.firstperson.FirstPersonModelCore;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;

@Mixin(Player.class)
public class PlayerMixin {

@Shadow
private Inventory inventory;

@Inject(method = "getItemBySlot", at = @At("HEAD"), cancellable = true)
public void getItemBySlot(EquipmentSlot slot, CallbackInfoReturnable<ItemStack> ci) {
if (FirstPersonModelCore.instance.isRenderingPlayer()) {
if (slot == EquipmentSlot.HEAD) {
ci.setReturnValue(ItemStack.EMPTY);
return;
}
if (FirstPersonModelCore.instance.getLogicHandler().showVanillaHands(this.inventory.getSelected(), this.inventory.offhand.get(0))) {
ci.setReturnValue(ItemStack.EMPTY);
return;
}
}
}

}
3 changes: 2 additions & 1 deletion src/main/resources/firstperson.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
"PlayerRendererMixin",
"HumanoidModelMixin",
"CustomHeadLayerMixin",
"PlayerModelMixin"
"PlayerModelMixin",
"PlayerMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit 512d47b

Please sign in to comment.