WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 310238f

Browse files
committed
[StAPI] Fix texture ids in a more compatible way
1 parent 28179be commit 310238f

File tree

9 files changed

+228
-101
lines changed

9 files changed

+228
-101
lines changed

apron-stapi/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ dependencies {
2525
transitive false
2626
}
2727
modImplementation("maven.modrinth:always-more-items:1.2.0")
28+
29+
include("com.github.bawnorton.mixinsquared:mixinsquared-fabric:0.2.0")
2830
}

apron-stapi/src/main/java/io/github/betterthanupdates/apron/stapi/mixin/client/ArsenicItemRendererMixin.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,6 @@
1414

1515
@Mixin(ArsenicItemRenderer.class)
1616
public class ArsenicItemRendererMixin {
17-
@Redirect(method = "renderVanilla", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;getTextureId()I"))
18-
private int apron$fixItemTextureIndex(ItemStack instance) {
19-
int oldIndex = instance.getTextureId();
20-
Item item = instance.getItem();
21-
22-
return ApronStAPICompat.fixItemTexture(oldIndex, item);
23-
}
24-
2517
@ModifyVariable(method = "renderItemOnGui(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/client/texture/TextureManager;IIIII)V",
2618
argsOnly = true, at = @At("HEAD"), ordinal = 2)
2719
private int apron$fixItemTextureIndex(int old, @Local(argsOnly = true, ordinal = 0) int id) {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.github.betterthanupdates.apron.stapi.mixin.client;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import io.github.betterthanupdates.apron.stapi.ApronStAPICompat;
6+
import net.minecraft.block.Block;
7+
import net.minecraft.class_556;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
11+
@Mixin(class_556.class)
12+
public class BlockOverlayMixin {
13+
@WrapOperation(method = "method_1864", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;getTexture(I)I"))
14+
private int apron$stapi$fixBlockTextureIndex(Block instance, int i, Operation<Integer> original) {
15+
var oldTexture = original.call(instance, i);
16+
17+
return ApronStAPICompat.fixBlockTexture(oldTexture, instance);
18+
}
19+
}
Lines changed: 161 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.betterthanupdates.apron.stapi.mixin.client;
22

3+
import com.bawnorton.mixinsquared.TargetHandler;
34
import com.llamalad7.mixinextras.sugar.Local;
45
import org.spongepowered.asm.mixin.Mixin;
56
import org.spongepowered.asm.mixin.injection.At;
@@ -12,99 +13,193 @@
1213

1314
@Mixin(BlockRenderManager.class)
1415
public class BlockRendererMixin {
16+
@TargetHandler(
17+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.BlockRenderManagerMixin",
18+
name = "stationapi_block_captureTexture",
19+
prefix = "handler"
20+
)
1521
@ModifyVariable(
16-
method = {"renderBottomFace", "renderTopFace", "renderEastFace", "renderWestFace", "renderNorthFace", "renderSouthFace"},
17-
at = @At(
18-
value = "FIELD",
19-
target = "Lnet/minecraft/client/render/block/BlockRenderManager;textureOverride:I",
20-
opcode = 180,
21-
ordinal = 1,
22-
shift = At.Shift.BY,
23-
by = 3
24-
),
22+
method = "@MixinSquared:Handler", at = @At("HEAD"),
2523
argsOnly = true
2624
)
27-
private int apron$stapi$fixTextureIndex(int texture, @Local(ordinal = 0) Block block) {
25+
private int apron$stapi$fixBlockTextureIndex(int texture, @Local(ordinal = 0) Block block) {
26+
return ApronStAPICompat.fixBlockTexture(texture, block);
27+
}
28+
29+
30+
@TargetHandler(
31+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.BedRendererMixin",
32+
name = "stationapi_bed_captureTexture1",
33+
prefix = "handler"
34+
)
35+
@ModifyVariable(
36+
method = "@MixinSquared:Handler", at = @At("HEAD"),
37+
argsOnly = true,
38+
ordinal = 3
39+
)
40+
private int apron$stapi$fixBedTextureIndex1(int texture, @Local(ordinal = 0) Block block) {
2841
return ApronStAPICompat.fixBlockTexture(texture, block);
2942
}
3043

44+
@TargetHandler(
45+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.BedRendererMixin",
46+
name = "stationapi_bed_captureTexture2",
47+
prefix = "handler"
48+
)
49+
@ModifyVariable(
50+
method = "@MixinSquared:Handler", at = @At("HEAD"),
51+
argsOnly = true,
52+
ordinal = 3
53+
)
54+
private int apron$stapi$fixBedTextureIndex2(int texture, @Local(ordinal = 0) Block block) {
55+
return ApronStAPICompat.fixBlockTexture(texture, block);
56+
}
57+
58+
59+
@TargetHandler(
60+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.CropRendererMixin",
61+
name = "stationapi_column_captureTexture",
62+
prefix = "handler"
63+
)
3164
@ModifyVariable(
32-
method = {"renderTiltedTorch", "renderCrop(Lnet/minecraft/block/Block;IDDD)V", "renderCross(Lnet/minecraft/block/Block;IDDD)V", "renderFire", "renderLadder"},
33-
at = @At(
34-
value = "FIELD",
35-
target = "Lnet/minecraft/client/render/block/BlockRenderManager;textureOverride:I",
36-
opcode = 180,
37-
ordinal = 1,
38-
shift = At.Shift.BY,
39-
by = 3
40-
),
41-
ordinal = 0
42-
)
43-
private int apron$stapi$fixOtherTextureIndex1(int texture, @Local(ordinal = 0) Block block) {
65+
method = "@MixinSquared:Handler", at = @At("HEAD"),
66+
argsOnly = true,
67+
ordinal = 1
68+
)
69+
private int apron$stapi$fixColumnTextureIndex(int texture, @Local(ordinal = 0) Block block) {
4470
return ApronStAPICompat.fixBlockTexture(texture, block);
4571
}
4672

73+
74+
@TargetHandler(
75+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.CrossRendererMixin",
76+
name = "stationapi_crossed_captureTexture",
77+
prefix = "handler"
78+
)
4779
@ModifyVariable(
48-
method = {"renderCrop(Lnet/minecraft/block/Block;IDDD)V", "renderCross(Lnet/minecraft/block/Block;IDDD)V"},
49-
at = @At(
50-
value = "FIELD",
51-
target = "Lnet/minecraft/client/render/block/BlockRenderManager;textureOverride:I",
52-
opcode = 180,
53-
ordinal = 1,
54-
shift = At.Shift.BY,
55-
by = 3
56-
),
80+
method = "@MixinSquared:Handler", at = @At("HEAD"),
81+
argsOnly = true,
5782
ordinal = 1
5883
)
59-
private int apron$stapi$fixOtherTextureIndex2(int texture, @Local(ordinal = 0) Block block) {
84+
private int apron$stapi$fixCrossedTextureIndex(int texture, @Local(ordinal = 0) Block block) {
6085
return ApronStAPICompat.fixBlockTexture(texture, block);
6186
}
6287

88+
89+
@TargetHandler(
90+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.FireRendererMixin",
91+
name = "stationapi_fire_captureTexture1",
92+
prefix = "handler"
93+
)
6394
@ModifyVariable(
64-
method = {"renderFire", "renderLadder"},
65-
at = @At(
66-
value = "FIELD",
67-
target = "Lnet/minecraft/client/render/block/BlockRenderManager;textureOverride:I",
68-
opcode = 180,
69-
ordinal = 1,
70-
shift = At.Shift.BY,
71-
by = 3
72-
),
95+
method = "@MixinSquared:Handler", at = @At("HEAD"),
96+
argsOnly = true,
7397
ordinal = 3
7498
)
75-
private int apron$stapi$fixOtherTextureIndex3(int texture, @Local(ordinal = 0) Block block) {
99+
private int apron$stapi$fixFireTextureIndex(int texture, @Local(ordinal = 0) Block block) {
76100
return ApronStAPICompat.fixBlockTexture(texture, block);
77101
}
78102

103+
104+
@TargetHandler(
105+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.FluidRendererMixin",
106+
name = "stationapi_fluid_captureTexture1",
107+
prefix = "handler"
108+
)
79109
@ModifyVariable(
80-
method = {"renderRail"},
81-
at = @At(
82-
value = "FIELD",
83-
target = "Lnet/minecraft/client/render/block/BlockRenderManager;textureOverride:I",
84-
opcode = 180,
85-
ordinal = 1,
86-
shift = At.Shift.BY,
87-
by = 3
88-
),
89-
ordinal = 4
90-
)
91-
private int apron$stapi$fixOtherTextureIndex4(int texture, @Local(ordinal = 0) RailBlock block) {
110+
method = "@MixinSquared:Handler", at = @At("HEAD"),
111+
argsOnly = true,
112+
ordinal = 3
113+
)
114+
private int apron$stapi$fixFluidTextureIndex1(int texture, @Local(ordinal = 0) Block block) {
92115
return ApronStAPICompat.fixBlockTexture(texture, block);
93116
}
94117

118+
@TargetHandler(
119+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.FluidRendererMixin",
120+
name = "stationapi_fluid_captureTexture2",
121+
prefix = "handler"
122+
)
95123
@ModifyVariable(
96-
method = {"renderRedstoneDust"},
97-
at = @At(
98-
value = "FIELD",
99-
target = "Lnet/minecraft/client/render/block/BlockRenderManager;textureOverride:I",
100-
opcode = 180,
101-
ordinal = 1,
102-
shift = At.Shift.BY,
103-
by = 3
104-
),
105-
ordinal = 4
106-
)
107-
private int apron$stapi$fixOtherTextureIndex5(int texture, @Local(ordinal = 0) Block block) {
124+
method = "@MixinSquared:Handler", at = @At("HEAD"),
125+
argsOnly = true,
126+
ordinal = 3
127+
)
128+
private int apron$stapi$fixFluidTextureIndex2(int texture, @Local(ordinal = 0) Block block) {
129+
return ApronStAPICompat.fixBlockTexture(texture, block);
130+
}
131+
132+
133+
@TargetHandler(
134+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.LadderRendererMixin",
135+
name = "stationapi_ladder_captureTexture",
136+
prefix = "handler"
137+
)
138+
@ModifyVariable(
139+
method = "@MixinSquared:Handler", at = @At("HEAD"),
140+
argsOnly = true,
141+
ordinal = 3
142+
)
143+
private int apron$stapi$fixLadderTextureIndex(int texture, @Local(ordinal = 0) Block block) {
144+
return ApronStAPICompat.fixBlockTexture(texture, block);
145+
}
146+
147+
148+
@TargetHandler(
149+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.LeverRendererMixin",
150+
name = "stationapi_lever_captureTexture",
151+
prefix = "handler"
152+
)
153+
@ModifyVariable(
154+
method = "@MixinSquared:Handler", at = @At("HEAD"),
155+
argsOnly = true,
156+
ordinal = 3
157+
)
158+
private int apron$stapi$fixLeverTextureIndex(int texture, @Local(ordinal = 0) Block block) {
159+
return ApronStAPICompat.fixBlockTexture(texture, block);
160+
}
161+
162+
163+
@TargetHandler(
164+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.RailRendererMixin",
165+
name = "stationapi_rails_captureTexture",
166+
prefix = "handler"
167+
)
168+
@ModifyVariable(
169+
method = "@MixinSquared:Handler", at = @At("HEAD"),
170+
argsOnly = true,
171+
ordinal = 3
172+
)
173+
private int apron$stapi$fixRailTextureIndex(int texture, @Local(ordinal = 0) RailBlock block) {
174+
return ApronStAPICompat.fixBlockTexture(texture, block);
175+
}
176+
177+
178+
@TargetHandler(
179+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.RepeaterRendererMixin",
180+
name = "stationapi_repeater_captureTexture",
181+
prefix = "handler"
182+
)
183+
@ModifyVariable(
184+
method = "@MixinSquared:Handler", at = @At("HEAD"),
185+
argsOnly = true,
186+
ordinal = 3
187+
)
188+
private int apron$stapi$fixRepeaterTextureIndex(int texture, @Local(ordinal = 0) Block block) {
189+
return ApronStAPICompat.fixBlockTexture(texture, block);
190+
}
191+
192+
193+
@TargetHandler(
194+
mixin = "net.modificationstation.stationapi.mixin.arsenic.client.block.TorchRendererMixin",
195+
name = "stationapi_torch_captureTexture",
196+
prefix = "handler"
197+
)
198+
@ModifyVariable(
199+
method = "@MixinSquared:Handler", at = @At("HEAD"),
200+
argsOnly = true
201+
)
202+
private int apron$stapi$fixTorchTextureIndex(int texture, @Local(ordinal = 0) Block block) {
108203
return ApronStAPICompat.fixBlockTexture(texture, block);
109204
}
110205
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.github.betterthanupdates.apron.stapi.mixin.client;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import io.github.betterthanupdates.apron.stapi.ApronStAPICompat;
6+
import net.minecraft.client.particle.ItemParticle;
7+
import net.minecraft.item.Item;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
11+
@Mixin(ItemParticle.class)
12+
public class ItemParticleMixin {
13+
@WrapOperation(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/Item;getTextureId(I)I"))
14+
private int apron$stapi$fixItemTexture(Item instance, int i, Operation<Integer> original) {
15+
var oldTextureId = original.call(instance, i);
16+
17+
return ApronStAPICompat.fixItemTexture(oldTextureId, instance);
18+
}
19+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.github.betterthanupdates.apron.stapi.mixin.client;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import io.github.betterthanupdates.apron.stapi.ApronStAPICompat;
6+
import net.fabricmc.api.EnvType;
7+
import net.fabricmc.api.Environment;
8+
import net.minecraft.item.Item;
9+
import net.minecraft.item.ItemStack;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
13+
@Mixin(ItemStack.class)
14+
@Environment(EnvType.CLIENT)
15+
public class ItemStackMixin {
16+
@WrapOperation(method = "getTextureId", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/Item;getTextureId(Lnet/minecraft/item/ItemStack;)I"))
17+
private int apron$stapi$fixItemTexture(Item instance, ItemStack itemStack, Operation<Integer> original) {
18+
var oldItemTexture = original.call(instance, itemStack);
19+
20+
return ApronStAPICompat.fixItemTexture(oldItemTexture, instance);
21+
}
22+
}

apron-stapi/src/main/java/io/github/betterthanupdates/apron/stapi/mixin/client/LivingEntityMixin.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

apron-stapi/src/main/resources/apron-stapi.mixins.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
"ami.StackHelperMixin",
2323
"client.ArsenicItemRendererMixin",
2424
"client.AtlasLoaderMixin",
25-
"client.LivingEntityMixin",
2625
"datafixer.McRegionItemStackDamagerSchemaMixin",
2726
"datafixer.McRegionSchemaB1_7_3Mixin",
2827
"datafixer.StationFlatteningDamagerSchemaB1_7_3Mixin",
@@ -35,9 +34,12 @@
3534
],
3635
"plugin": "io.github.betterthanupdates.apron.stapi.MixinCompatPlugin",
3736
"client": [
37+
"client.BlockOverlayMixin",
3838
"client.BlockRendererMixin",
3939
"client.DiggingParticleEntityMixin",
4040
"client.DimensionMixin",
41+
"client.ItemParticleMixin",
42+
"client.ItemStackMixin",
4143
"client.MinecraftMixin"
4244
]
4345
}

0 commit comments

Comments
 (0)