Skip to content

Commit 72c147c

Browse files
committed
Merge remote-tracking branch 'upstream/main' into offset-21
# Conflicts: # .github/workflows/build.yml # build.gradle # gradle.properties # gradle/wrapper/gradle-wrapper.properties # src/main/java/com/daniking/backtools/BackToolFeatureRenderer.java # src/main/java/com/daniking/backtools/BackTools.java # src/main/java/com/daniking/backtools/ConfigHandler.java # src/main/java/com/daniking/backtools/HeldItemContext.java # src/main/resources/fabric.mod.json
2 parents 41e62fd + 4659eea commit 72c147c

14 files changed

Lines changed: 113 additions & 96 deletions

.github/workflows/build.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,28 @@ jobs:
1515
21, # Current Java LTS & minimum supported by Minecraft
1616
]
1717
# and run on both Linux and Windows
18-
os: [ubuntu-20.04, windows-2022]
18+
os: [ubuntu-latest, windows-latest]
1919
runs-on: ${{ matrix.os }}
2020
steps:
2121
- name: checkout repository
22-
uses: actions/checkout@v2
22+
uses: actions/checkout@v4
2323
- name: validate gradle wrapper
24-
uses: gradle/wrapper-validation-action@v1
24+
uses: gradle/actions/wrapper-validation@v3
2525
- name: setup jdk ${{ matrix.java }}
26-
uses: actions/setup-java@v1
26+
uses: actions/setup-java@v4
2727
with:
28+
distribution: 'temurin'
2829
java-version: ${{ matrix.java }}
30+
cache: 'gradle'
2931
- name: make gradle wrapper executable
3032
if: ${{ runner.os != 'Windows' }}
3133
run: chmod +x ./gradlew
3234
- name: build
33-
run: ./gradlew build
35+
# For the reason on `--no-daemon` see https://github.com/actions/cache/issues/454
36+
run: ./gradlew build --no-daemon
3437
- name: capture build artifacts
3538
if: ${{ runner.os == 'Linux' && matrix.java == '21' }} # Only upload artifacts built from latest java on one OS
36-
uses: actions/upload-artifact@v2
39+
uses: actions/upload-artifact@v4
3740
with:
3841
name: Artifacts
3942
path: build/libs/

build.gradle

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
plugins {
2-
id 'fabric-loom' version '1.7-SNAPSHOT'
3-
id 'maven-publish'
2+
id 'fabric-loom' version '1.8-SNAPSHOT'
3+
id 'maven-publish'
44
}
55

66
sourceCompatibility = JavaVersion.VERSION_21
@@ -11,69 +11,69 @@ version = project.mod_version
1111
group = project.maven_group
1212

1313
repositories {
14-
// Add repositories to retrieve artifacts from in here.
15-
// You should only use this when depending on other mods because
16-
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
17-
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
18-
// for more information about repositories.
19-
maven {
20-
name "cloth config"
21-
url "https://maven.shedaniel.me"
22-
}
14+
// Add repositories to retrieve artifacts from in here.
15+
// You should only use this when depending on other mods because
16+
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
17+
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
18+
// for more information about repositories.
19+
maven {
20+
name "cloth config"
21+
url "https://maven.shedaniel.me"
22+
}
2323
}
2424

2525
dependencies {
26-
// To change the versions see the gradle.properties file
27-
minecraft "com.mojang:minecraft:${project.minecraft_version}"
28-
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
29-
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
26+
// To change the versions see the gradle.properties file
27+
minecraft "com.mojang:minecraft:${project.minecraft_version}"
28+
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
29+
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
3030

31-
// Fabric API. This is technically optional, but you probably want it anyway.
32-
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
33-
modImplementation("me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}") {
34-
exclude(group: "net.fabricmc.fabric-api")
35-
}
31+
// Fabric API. This is technically optional, but you probably want it anyway.
32+
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
33+
modImplementation("me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}") {
34+
exclude(group: "net.fabricmc.fabric-api")
35+
}
3636
}
3737

3838
processResources {
39-
inputs.property "version", project.version
39+
inputs.property "version", project.version
4040

41-
filesMatching("fabric.mod.json") {
42-
expand "version": project.version
43-
}
41+
filesMatching("fabric.mod.json") {
42+
expand "version": project.version
43+
}
4444
}
4545

4646
tasks.withType(JavaCompile).configureEach {
47-
// Minecraft 1.20.5 upwards uses Java 21.
48-
it.options.release = 21
47+
// Minecraft 1.20.5 upwards uses Java 21.
48+
it.options.release = 21
4949
}
5050

5151
java {
52-
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
53-
// if it is present.
54-
// If you remove this line, sources will not be generated.
55-
withSourcesJar()
52+
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
53+
// if it is present.
54+
// If you remove this line, sources will not be generated.
55+
withSourcesJar()
5656
}
5757

5858
jar {
59-
from("LICENSE") {
60-
rename { "${it}_${project.archivesBaseName}"}
61-
}
59+
from("LICENSE") {
60+
rename { "${it}_${project.archivesBaseName}"}
61+
}
6262
}
6363

6464
// configure the maven publication
6565
publishing {
66-
publications {
67-
mavenJava(MavenPublication) {
68-
from components.java
69-
}
70-
}
66+
publications {
67+
mavenJava(MavenPublication) {
68+
from components.java
69+
}
70+
}
7171

72-
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
73-
repositories {
74-
// Add repositories to publish to here.
75-
// Notice: This block does NOT have the same function as the block in the top level.
76-
// The repositories here will be used for publishing your artifact, not for
77-
// retrieving dependencies.
78-
}
72+
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
73+
repositories {
74+
// Add repositories to publish to here.
75+
// Notice: This block does NOT have the same function as the block in the top level.
76+
// The repositories here will be used for publishing your artifact, not for
77+
// retrieving dependencies.
78+
}
7979
}

gradle.properties

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
org.gradle.jvmargs=-Xmx1G
33
# Fabric Properties
44
# check these on https://fabricmc.net/develop
5-
minecraft_version=1.21
6-
yarn_mappings=1.21+build.7
7-
loader_version=0.15.9
5+
minecraft_version=1.21.3
6+
yarn_mappings=1.21.3+build.2
7+
loader_version=0.16.9
88
# Mod Properties
9-
mod_version = 1.21.0-0
9+
mod_version = 1.21.3-0
1010
maven_group = com.daniking.backtools
1111
archives_base_name = backtools
1212
# Dependencies
13-
fabric_version=0.100.4+1.21
13+
fabric_version=0.107.0+1.21.3
1414
cloth_config_version=15.0.127

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

src/main/java/com/daniking/backtools/BackToolFeatureRenderer.java

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,55 +3,52 @@
33
import net.fabricmc.api.EnvType;
44
import net.fabricmc.api.Environment;
55
import net.minecraft.client.MinecraftClient;
6-
import net.minecraft.client.network.AbstractClientPlayerEntity;
76
import net.minecraft.client.render.OverlayTexture;
87
import net.minecraft.client.render.VertexConsumerProvider;
98
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
10-
import net.minecraft.client.render.entity.feature.HeldItemFeatureRenderer;
9+
import net.minecraft.client.render.entity.feature.PlayerHeldItemFeatureRenderer;
1110
import net.minecraft.client.render.entity.model.PlayerEntityModel;
12-
import net.minecraft.client.render.item.HeldItemRenderer;
13-
import net.minecraft.client.render.model.json.ModelTransformationMode;
11+
import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
12+
import net.minecraft.client.render.item.ItemRenderer;
1413
import net.minecraft.client.util.math.MatrixStack;
15-
import net.minecraft.entity.EntityPose;
16-
import net.minecraft.entity.EquipmentSlot;
17-
import net.minecraft.entity.player.PlayerModelPart;
1814
import net.minecraft.item.ItemStack;
15+
import net.minecraft.item.ModelTransformationMode;
1916
import net.minecraft.item.ShieldItem;
2017
import net.minecraft.util.Arm;
2118
import net.minecraft.util.math.RotationAxis;
2219

2320
@Environment(EnvType.CLIENT)
24-
public class BackToolFeatureRenderer<T extends AbstractClientPlayerEntity, M extends PlayerEntityModel<T>> extends HeldItemFeatureRenderer<T, M> {
25-
21+
public class BackToolFeatureRenderer<M extends PlayerEntityModel> extends PlayerHeldItemFeatureRenderer<PlayerEntityRenderState, M> {
2622
public ItemStack mainStack = ItemStack.EMPTY;
2723
public ItemStack offStack = ItemStack.EMPTY;
2824
public Arm mainArm = Arm.RIGHT;
2925

30-
public BackToolFeatureRenderer(FeatureRendererContext<T, M> context, HeldItemRenderer heldItemRenderer) {
26+
public BackToolFeatureRenderer(FeatureRendererContext<PlayerEntityRenderState, M> context, ItemRenderer heldItemRenderer) {
3127
super(context, heldItemRenderer);
3228
}
3329

34-
3530
@Override
36-
public void render(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, T player, float f, float g, float h, float j, float k, float l) {
31+
public void render(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, PlayerEntityRenderState playerRenderState, float limbAngle, float limbDistance) {
32+
if (!(playerRenderState.capeVisible && playerRenderState.skinTextures.capeTexture() != null && !ConfigHandler.isRenderWithCapesTrue()) &&
33+
!playerRenderState.invisible && playerRenderState.sleepingDirection == null &&
34+
ClientSetup.HELD_TOOLS.containsKey(playerRenderState.name)) {
3735

38-
if (!(player.isPartVisible(PlayerModelPart.CAPE) && player.getSkinTextures().capeTexture() != null) && !player.isInvisible() && !player.isSleeping() && ClientSetup.HELD_TOOLS.containsKey(player)) {
39-
final HeldItemContext ctx = ClientSetup.HELD_TOOLS.get(player);
36+
final HeldItemContext ctx = ClientSetup.HELD_TOOLS.get(playerRenderState.name);
4037

4138
if (ctx.droppedEntity != null) {
4239
return;
4340
}
44-
this.setRenders(ctx.previousMain, ctx.previousOff, player.getMainArm());
41+
this.setRenders(ctx.previousMain, ctx.previousOff, playerRenderState.mainArm);
4542
matrixStack.push();
4643
this.getContextModel().body.rotate(matrixStack);
47-
boolean bl = ConfigHandler.isHelicopterModeOn() && (player.getPose().equals(EntityPose.SWIMMING) || player.isFallFlying());
48-
this.renderItem(!player.getEquippedStack(EquipmentSlot.CHEST).isEmpty() ? 1.0F : player.isPartVisible(PlayerModelPart.JACKET) ? 0.5F : 0F,
49-
matrixStack, vertexConsumerProvider, i, bl ? player.age : 0, h);
44+
boolean isHelicopterMode = ConfigHandler.isHelicopterModeOn() && (playerRenderState.isSwimming || playerRenderState.isGliding);
45+
this.renderItem(!playerRenderState.equippedChestStack.isEmpty() ? 1.0F : playerRenderState.jacketVisible ? 0.5F : 0F,
46+
matrixStack, vertexConsumerProvider, light, isHelicopterMode ? playerRenderState.age : 0);
5047
matrixStack.pop();
5148
}
5249
}
5350

54-
private void renderItem(float offset, MatrixStack matrices, VertexConsumerProvider provider, int light, final int ticks, final float partialTicks) {
51+
private void renderItem(float offset, MatrixStack matrices, VertexConsumerProvider provider, int light, final float age) {
5552
matrices.translate(0F, 4F / 16F, 1.91F / 16F + (offset / 16F));
5653
matrices.translate(0F, 0F, 0.025F);
5754

@@ -95,8 +92,8 @@ private void renderItem(float offset, MatrixStack matrices, VertexConsumerProvid
9592
matrices.translate(config.getX(), config.getY(), -config.getZ());
9693
}
9794

98-
if (ticks > 0) {
99-
matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees((ticks + partialTicks) * 40F));
95+
if (age > 0) {
96+
matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(age * 40F));
10097
}
10198
MinecraftClient.getInstance().getItemRenderer().renderItem(this.mainStack, ModelTransformationMode.FIXED, light, OverlayTexture.DEFAULT_UV, matrices, provider, null, 0);
10299
}
@@ -122,8 +119,8 @@ private void renderItem(float offset, MatrixStack matrices, VertexConsumerProvid
122119
matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(config.getZ()));
123120
}
124121

125-
if (ticks > 0) {
126-
matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees((ticks + partialTicks) * 40F));
122+
if (age > 0) {
123+
matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(age * 40F));
127124
}
128125
MinecraftClient.getInstance().getItemRenderer().renderItem(this.offStack, ModelTransformationMode.FIXED, light, OverlayTexture.DEFAULT_UV, matrices, provider, null, 0);
129126
}

src/main/java/com/daniking/backtools/BackTools.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
public class BackTools implements ModInitializer {
1212
public static final Logger LOGGER = LoggerFactory.getLogger(BackTools.class);
13-
public static final String VERSION = "1.21-0";
13+
public static final String VERSION = "1.21.3-0";
1414

1515
@Override
1616
public void onInitialize() {

src/main/java/com/daniking/backtools/BackToolsConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@ public class BackToolsConfig implements ConfigData {
2727
public List<String> toolOffset = Arrays.asList("net.minecraft.item.HoeItem" + "{\"minecraft:custom_name\": '\"translation test1\"'}" + ":0.3:0:0.3", "net.minecraft.item.HoeItem" + "{\"minecraft:custom_name\": '\"translation test2\"'}" + ":0.3");
2828
@Comment(value = "Get in swimming position and your tools go \"Weeee\"")
2929
public boolean helicopterMode = false;
30+
@Comment(value = "If true, tools render with capes")
31+
public boolean renderWithCapes = false;
3032
}

src/main/java/com/daniking/backtools/ClientSetup.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,14 @@
55
import net.fabricmc.api.ClientModInitializer;
66
import net.fabricmc.api.EnvType;
77
import net.fabricmc.api.Environment;
8-
import net.minecraft.client.network.AbstractClientPlayerEntity;
98

109
import java.util.Map;
1110
import java.util.WeakHashMap;
1211

1312
@Environment(EnvType.CLIENT)
1413
public class ClientSetup implements ClientModInitializer {
15-
1614
public static BackToolsConfig config;
17-
public static final Map<AbstractClientPlayerEntity, HeldItemContext> HELD_TOOLS = new WeakHashMap<>();
15+
public static final Map<String, HeldItemContext> HELD_TOOLS = new WeakHashMap<>();
1816

1917
@Override
2018
public void onInitializeClient() {

src/main/java/com/daniking/backtools/ConfigHandler.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class ConfigHandler {
2929
private static final HashSet<Identifier> ENABLED_TOOLS = new HashSet<>();
3030
private static final Set<Identifier> DISABLED_TOOLS = new HashSet<>();
3131
private static boolean HELICOPTER_MODE = false;
32+
private static boolean RENDER_WITH_CAPES = true;
3233

3334
public static TransformationSetting getToolOrientation(@NotNull ItemStack itemStack) {
3435
return getToolOrientation(itemStack.getComponents(), itemStack.getItem().getClass());
@@ -118,6 +119,8 @@ public static void init() {
118119

119120
// load easter egg setting
120121
HELICOPTER_MODE = ClientSetup.config.helicopterMode;
122+
//render with capes setting
123+
RENDER_WITH_CAPES = ClientSetup.config.renderWithCapes;
121124
}
122125

123126
/**
@@ -242,4 +245,5 @@ private static void parseOffset() {
242245
public static boolean isHelicopterModeOn() {
243246
return HELICOPTER_MODE;
244247
}
248+
public static boolean isRenderWithCapesTrue() { return RENDER_WITH_CAPES; }
245249
}

src/main/java/com/daniking/backtools/HeldItemContext.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ private void reset(ItemStack entityStack) {
7272

7373
public static boolean areStacksEqual(final ItemStack a, final ItemStack b) {
7474
return !a.isEmpty() && !b.isEmpty() &&
75-
(a.getComponents().isEmpty() || !b.getComponents().isEmpty()) &&
76-
(!a.getComponents().isEmpty() || b.getComponents().isEmpty()) &&
77-
a.getItem() == b.getItem();
75+
(a.getComponents().isEmpty() || !b.getComponents().isEmpty()) &&
76+
(!a.getComponents().isEmpty() || b.getComponents().isEmpty()) &&
77+
a.getItem() == b.getItem();
7878
}
7979
}

0 commit comments

Comments
 (0)