Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion gradle-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
version: '0.0.2'
source: "https://github.com/tr7zw/ProcessedModTemplate/tree/master"
source: "https://github.com/tr7zw/ProcessedModTemplate/tree/stonecutter"
replacements:
name: "FirstPerson"
id: "firstperson"
Expand Down Expand Up @@ -43,6 +43,7 @@ enabledFlags:
- includeLibs
- addTRansitionLib
- addTRenderLib
- mixinextras
rootProject:
template: "."
subProjects:
Expand Down
15 changes: 9 additions & 6 deletions settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
"1.20.6-forge",
"1.20.6-neoforge",
"1.20.6-fabric",
"1.21-forge",
"1.21-neoforge",
"1.21-fabric",
"1.21.1-forge",
"1.21.1-neoforge",
"1.21.1-fabric",
"1.21.3-forge",
"1.21.3-neoforge",
"1.21.3-fabric",
Expand All @@ -30,8 +30,11 @@
"1.21.5-forge",
"1.21.5-neoforge",
"1.21.5-fabric",
"1.21.6-forge",
"1.21.6-neoforge",
"1.21.6-fabric"
"1.21.8-forge",
"1.21.8-neoforge",
"1.21.8-fabric",
"1.21.10-forge",
"1.21.10-neoforge",
"1.21.10-fabric"
]
}
90 changes: 49 additions & 41 deletions src/main/java/dev/tr7zw/firstperson/FirstPersonBootstrap.java
Original file line number Diff line number Diff line change
@@ -1,41 +1,49 @@
//#if FORGE
//$$package dev.tr7zw.firstperson;
//$$
//$$import net.minecraftforge.api.distmarker.Dist;
//$$import net.minecraftforge.fml.DistExecutor;
//$$import net.minecraftforge.fml.common.Mod;
//$$import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
//$$import dev.tr7zw.transition.loader.ModLoaderUtil;
//$$
//$$@Mod("firstperson")
//$$public class FirstPersonBootstrap {
//$$
//$$ public FirstPersonBootstrap(FMLJavaModLoadingContext context) {
//$$ ModLoaderUtil.setModLoadingContext(context);
//$$ DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
//$$ new FirstPersonModelMod().sharedSetup();
//$$ });
//$$ }
//$$ public FirstPersonBootstrap() {
//$$ this(FMLJavaModLoadingContext.get());
//$$ }
//$$
//$$}
//#elseif NEOFORGE
//$$package dev.tr7zw.firstperson;
//$$
//$$import net.neoforged.api.distmarker.Dist;
//$$import net.neoforged.fml.loading.FMLEnvironment;
//$$import net.neoforged.fml.common.Mod;
//$$
//$$@Mod("firstperson")
//$$public class FirstPersonBootstrap {
//$$
//$$ public FirstPersonBootstrap() {
//$$ if(FMLEnvironment.dist == Dist.CLIENT) {
//$$ dev.tr7zw.transition.loader.ModLoaderEventUtil.registerClientSetupListener(() -> new FirstPersonModelMod().sharedSetup());
//$$ }
//$$ }
//$$
//$$}
//#endif
//? if forge {
/*
package dev.tr7zw.firstperson;

import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import dev.tr7zw.transition.loader.ModLoaderUtil;

@Mod("firstperson")
public class FirstPersonBootstrap {

public FirstPersonBootstrap(FMLJavaModLoadingContext context) {
ModLoaderUtil.setModLoadingContext(context);
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
new FirstPersonModelMod().sharedSetup();
});
}

public FirstPersonBootstrap() {
this(FMLJavaModLoadingContext.get());
}

}
*///? } else if neoforge {
/*
package dev.tr7zw.firstperson;

import net.neoforged.api.distmarker.Dist;
import net.neoforged.fml.loading.FMLEnvironment;
import net.neoforged.fml.common.Mod;

@Mod("firstperson")
public class FirstPersonBootstrap {

public FirstPersonBootstrap() {
//? if < 1.21.9 {
/^
if (FMLEnvironment.dist == Dist.CLIENT) {
^///? } else {

if (FMLEnvironment.getDist() == Dist.CLIENT) {
//? }
dev.tr7zw.transition.loader.ModLoaderEventUtil.registerClientSetupListener(() -> new FirstPersonModelMod().sharedSetup());
}
}
}
*///? }
78 changes: 43 additions & 35 deletions src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
package dev.tr7zw.firstperson;

import dev.tr7zw.firstperson.access.PlayerRendererAccess;
import dev.tr7zw.firstperson.api.FirstPersonAPI;
import dev.tr7zw.firstperson.config.ConfigScreenProvider;
import dev.tr7zw.firstperson.modsupport.ModSupportLoader;
import dev.tr7zw.firstperson.modsupport.PlayerAnimatorSupport;
import dev.tr7zw.firstperson.versionless.FirstPersonBase;
import dev.tr7zw.transition.loader.ModLoaderEventUtil;
import dev.tr7zw.transition.loader.ModLoaderUtil;
import lombok.Getter;
import net.minecraft.client.CameraType;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
//#if MC >= 12106
import net.minecraft.client.renderer.entity.state.PlayerRenderState;
//#endif
import dev.tr7zw.firstperson.access.*;
import dev.tr7zw.firstperson.api.*;
import dev.tr7zw.firstperson.config.*;
import dev.tr7zw.firstperson.modsupport.*;
import dev.tr7zw.firstperson.versionless.*;
import dev.tr7zw.transition.loader.*;
import lombok.*;
import net.minecraft.client.*;
//? if >= 1.21.2
import net.minecraft.client.renderer.entity.state.*;
import net.minecraft.resources.*;

public abstract class FirstPersonModelCore extends FirstPersonBase {

@Getter
private LogicHandler logicHandler;
public static FirstPersonModelCore instance;
private boolean isHeld = false;
private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295, "firstperson.keybind");
private KeyMapping keyBinding = new KeyMapping("key.firstperson.toggle", 295,
//? if >= 1.21.9 {
new KeyMapping.Category(ResourceLocation.fromNamespaceAndPath("firstperson", "keybind")));
//? } else {
/*"firstperson.keybind");
*///? }
private boolean lateInit = true;
@Deprecated
public static boolean enabled = true;
Expand All @@ -45,16 +46,21 @@ public void sharedSetup() {
ModLoaderUtil.disableDisplayTest();
ModLoaderUtil.registerConfigScreen(ConfigScreenProvider::createConfigScreen);

//#if NEOFORGE
//$$ ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender);
//#endif
//#if FORGE
//#if MC >= 12106
//$$ net.minecraftforge.client.event.RenderHandEvent.BUS.addListener(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender);
//#else
//$$ ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender);
//#endif
//#endif
//? if neoforge {
/*
ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender);
*///? }
//? if forge {
/*
//? if >= 1.21.6 {

net.minecraftforge.client.event.RenderHandEvent.BUS
.addListener(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender);
//? } else {

// ModLoaderUtil.registerForgeEvent(new dev.tr7zw.firstperson.forge.RenderHandEventListener()::onRender);
//? }
*///? }

ModSupportLoader.loadSupport();
}
Expand Down Expand Up @@ -111,15 +117,17 @@ public void setEnabled(boolean enabled) {

public void updatePlayerLayers() {
PlayerRendererAccess access = null;
//#if MC >= 12106
access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher()
.getRenderer(new PlayerRenderState());
//#else
//$$if (Minecraft.getInstance().player != null) {
//$$ access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher()
//$$ .getRenderer(Minecraft.getInstance().player);
//$$}
//#endif
//? if >= 1.21.6 {

access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer(
/*? if >= 1.21.9 {*/new AvatarRenderState()/*?} else {*//*new PlayerRenderState()*//*? }*/);
//? } else {
/*
if (Minecraft.getInstance().player != null) {
access = (PlayerRendererAccess) Minecraft.getInstance().getEntityRenderDispatcher()
.getRenderer(Minecraft.getInstance().player);
}
*///? }
if (access != null) {
access.updatePartsList(lastCameraType != CameraType.FIRST_PERSON);
}
Expand Down
17 changes: 10 additions & 7 deletions src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
package dev.tr7zw.firstperson;

//#if FABRIC
import net.fabricmc.api.ClientModInitializer;
//#endif
//? if fabric {

import net.fabricmc.api.*;
//? }

public class FirstPersonModelMod extends FirstPersonModelCore
//#if FABRIC
//? if fabric {

implements ClientModInitializer
//#endif
//? }
{

//#if FABRIC
//? if fabric {

@Override
//#endif
//? }
public void onInitializeClient() {
sharedSetup();
}
Comment on lines +15 to 21
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Critical: Method body must be included in the conditional compilation block.

The conditional block on lines 15-18 only wraps the @Override annotation, but the method declaration and body (lines 19-21) remain unconditionally compiled. When the fabric flag is not defined, this creates an orphaned public method that:

  • Won't be called by Fabric's initialization system (since ClientModInitializer isn't implemented)
  • Exists as dead code with no purpose
  • Contradicts the stated goal of conditionally including Fabric-specific code

Apply this diff to fix the issue:

 //? if fabric {
 
 @Override
-//? }
 public void onInitializeClient() {
     sharedSetup();
 }
+//? }

This ensures the entire method is only present when the fabric flag is defined, consistent with the pattern used for the import and interface implementation blocks.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
//? if fabric {
@Override
//#endif
//? }
public void onInitializeClient() {
sharedSetup();
}
//? if fabric {
@Override
public void onInitializeClient() {
sharedSetup();
}
//? }
🤖 Prompt for AI Agents
In src/main/java/dev/tr7zw/firstperson/FirstPersonModelMod.java around lines 15
to 21, the conditional compilation only wraps the @Override annotation leaving
the onInitializeClient() method and its body unguarded; move the entire method
declaration and body inside the same fabric conditional block so the method
(including @Override, signature and body calling sharedSetup()) is only compiled
when the fabric flag is defined, ensuring matching opening/closing conditional
markers and preserving indentation.

Expand Down
57 changes: 33 additions & 24 deletions src/main/java/dev/tr7zw/firstperson/InventoryUtil.java
Original file line number Diff line number Diff line change
@@ -1,51 +1,60 @@
package dev.tr7zw.firstperson;

import java.util.List;
import net.minecraft.world.entity.player.*;
import net.minecraft.world.item.*;

import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import java.util.*;

public class InventoryUtil {

public static Inventory getInventory(Player player) {
//#if MC >= 11700
//? if >= 1.17.0 {

return player.getInventory();
//#else
//$$ return player.inventory;
//#endif
//? } else {
/*
return player.inventory;
*///? }
}

public static ItemStack getSelected(Inventory inventory) {
//#if MC >= 12105
//? if >= 1.21.5 {

return inventory.getSelectedItem();
//#else
//$$ return inventory.getSelected();
//#endif
//? } else {
/*
return inventory.getSelected();
*///? }
}

public static ItemStack getOffhand(Inventory inventory) {
//#if MC >= 12105
//? if >= 1.21.5 {

return inventory.getItem(Inventory.SLOT_OFFHAND);
//#else
//$$ return inventory.offhand.get(0);
//#endif
//? } else {
/*
return inventory.offhand.get(0);
*///? }
}

public static int getSelectedId(Inventory inventory) {
//#if MC >= 12105
//? if >= 1.21.5 {

return inventory.getSelectedSlot();
//#else
//$$ return inventory.selected;
//#endif
//? } else {
/*
return inventory.selected;
*///? }
}

public static List<ItemStack> getNonEquipmentItems(Inventory inventory) {
//#if MC >= 12105
//? if >= 1.21.5 {

return inventory.getNonEquipmentItems();
//#else
//$$ return inventory.items;
//#endif
//? } else {
/*
return inventory.items;
*///? }
}

}
Loading
Loading