Skip to content

Commit 7999c01

Browse files
committed
-now parsing entity to ModelRendering
1 parent d621d0c commit 7999c01

File tree

8 files changed

+52
-37
lines changed

8 files changed

+52
-37
lines changed

common/src/main/java/smartin/miapi/client/model/DynamicBakery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public static DynamicBakedModel dynamicBakedModel(BakedModel model) {
164164
return quad;
165165
}
166166

167-
static class DynamicOverrideList extends ModelOverrideList {
167+
public static class DynamicOverrideList extends ModelOverrideList {
168168
public final DynamicBakedOverride[] dynamicOverrides;
169169
public final Identifier[] dynamicConditionTypes;
170170
public final List<ModelOverride> overrideList;

common/src/main/java/smartin/miapi/client/modelrework/BakedMiapiModel.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import net.minecraft.client.render.model.json.ModelOverrideList;
1010
import net.minecraft.client.render.model.json.ModelTransformationMode;
1111
import net.minecraft.client.util.math.MatrixStack;
12+
import net.minecraft.entity.LivingEntity;
1213
import net.minecraft.item.ItemStack;
1314
import net.minecraft.util.math.Direction;
1415
import net.minecraft.util.math.random.Random;
@@ -38,14 +39,13 @@ public BakedMiapiModel(List<BakedModel> models, ItemModule.ModuleInstance instan
3839
}
3940

4041
@Override
41-
public void render(MatrixStack matrices, ItemStack stack, ModelTransformationMode transformationMode, float tickDelta, VertexConsumerProvider vertexConsumers, int light, int overlay) {
42+
public void render(MatrixStack matrices, ItemStack stack, ModelTransformationMode transformationMode, float tickDelta, VertexConsumerProvider vertexConsumers, LivingEntity entity, int light, int overlay) {
4243
if (!(vertexConsumers instanceof VertexConsumerProvider.Immediate immediate)) return;
4344

4445
for (BakedModel model : models) {
4546
for (Direction direction : Direction.values()) {
4647
if (model.getOverrides() != null && !model.getOverrides().equals(ModelOverrideList.EMPTY)) {
47-
model = model.getOverrides().apply(model, stack, MinecraftClient.getInstance().world, null, light);
48-
//Miapi.LOGGER.warn(model.getOverrides().toString());
48+
model = model.getOverrides().apply(model, stack, MinecraftClient.getInstance().world, entity, light);
4949
}
5050
VertexConsumer consumer;
5151
if (material != null)

common/src/main/java/smartin/miapi/client/modelrework/MiapiItemModel.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import net.minecraft.client.render.VertexConsumerProvider;
44
import net.minecraft.client.render.model.json.ModelTransformationMode;
55
import net.minecraft.client.util.math.MatrixStack;
6+
import net.minecraft.entity.LivingEntity;
67
import net.minecraft.item.ItemStack;
78
import org.jetbrains.annotations.Nullable;
89
import org.joml.Matrix4f;
@@ -44,21 +45,21 @@ public void render(MatrixStack matrices, ModelTransformationMode mode, float tic
4445
}
4546

4647
@Override
47-
public void render(MatrixStack matrices, ItemStack stack, ModelTransformationMode mode, float tickDelta, VertexConsumerProvider vertexConsumers, int light, int overlay) {
48-
render(null, stack, matrices, mode, tickDelta, vertexConsumers, light, overlay);
48+
public void render(MatrixStack matrices, ItemStack stack, ModelTransformationMode mode, float tickDelta, VertexConsumerProvider vertexConsumers, LivingEntity entity, int light, int overlay) {
49+
render(null, stack, matrices, mode, tickDelta, vertexConsumers, entity, light, overlay);
4950
}
5051

5152
public void render(String modelType, MatrixStack matrices, ModelTransformationMode mode, float tickDelta, VertexConsumerProvider vertexConsumers, int light, int overlay) {
52-
render(modelType, stack, matrices, mode, tickDelta, vertexConsumers, light, overlay);
53+
render(modelType, stack, matrices, mode, tickDelta, vertexConsumers, null, light, overlay);
5354
}
5455

55-
public void render(String modelType, ItemStack stack, MatrixStack matrices, ModelTransformationMode mode, float tickDelta, VertexConsumerProvider vertexConsumers, int light, int overlay) {
56+
public void render(String modelType, ItemStack stack, MatrixStack matrices, ModelTransformationMode mode, float tickDelta, VertexConsumerProvider vertexConsumers, LivingEntity entity, int light, int overlay) {
5657
matrices.push();
5758
for (ModelTransformer transformer : modelTransformers) {
5859
matrices = transformer.transform(matrices, stack, mode, modelType, tickDelta);
5960
}
6061
RegistryInventory.Client.glintShader.getUniformOrDefault("ModelMat").set(new Matrix4f(matrices.peek().getPositionMatrix()));
61-
rootModel.render(modelType, stack, matrices, mode, tickDelta, vertexConsumers, light, overlay);
62+
rootModel.render(modelType, stack, matrices, mode, tickDelta, vertexConsumers, entity, light, overlay);
6263
matrices.pop();
6364
}
6465

common/src/main/java/smartin/miapi/client/modelrework/MiapiModel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
import net.minecraft.client.render.VertexConsumerProvider;
44
import net.minecraft.client.render.model.json.ModelTransformationMode;
55
import net.minecraft.client.util.math.MatrixStack;
6+
import net.minecraft.entity.LivingEntity;
67
import net.minecraft.item.ItemStack;
78
import org.jetbrains.annotations.Nullable;
89
import org.joml.Matrix4f;
910

1011
public interface MiapiModel {
11-
void render(MatrixStack matrices, ItemStack stack, ModelTransformationMode transformationMode, float tickDelta, VertexConsumerProvider vertexConsumers, int light, int overlay);
12+
void render(MatrixStack matrices, ItemStack stack, ModelTransformationMode transformationMode, float tickDelta, VertexConsumerProvider vertexConsumers, LivingEntity entity, int light, int overlay);
1213

1314
@Nullable Matrix4f subModuleMatrix(int submoduleId);
1415
}

common/src/main/java/smartin/miapi/client/modelrework/ModuleModel.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import net.minecraft.client.render.VertexConsumerProvider;
55
import net.minecraft.client.render.model.json.ModelTransformationMode;
66
import net.minecraft.client.util.math.MatrixStack;
7+
import net.minecraft.entity.LivingEntity;
78
import net.minecraft.item.ItemStack;
89
import org.joml.Matrix4f;
910
import smartin.miapi.item.modular.Transform;
@@ -42,7 +43,7 @@ private List<Pair<Matrix4f, MiapiModel>> generateModel(String key) {
4243
return modelList;
4344
}
4445

45-
public void render(String modelTypeRaw, ItemStack stack, MatrixStack matrices, ModelTransformationMode mode, float tickDelta, VertexConsumerProvider vertexConsumers, int light, int overlay) {
46+
public void render(String modelTypeRaw, ItemStack stack, MatrixStack matrices, ModelTransformationMode mode, float tickDelta, VertexConsumerProvider vertexConsumers, LivingEntity entity, int light, int overlay) {
4647
String modelType = modelTypeRaw == null ? "item" : modelTypeRaw;
4748
if (!otherModels.containsKey(modelType)) {
4849
otherModels.put(modelType, generateModel(modelType));
@@ -52,7 +53,7 @@ public void render(String modelTypeRaw, ItemStack stack, MatrixStack matrices, M
5253
otherModels.get(modelType).forEach(matrix4fMiapiModelPair -> {
5354
matrices.push();
5455
matrices.peek().getPositionMatrix().mul(matrix4fMiapiModelPair.getFirst());
55-
matrix4fMiapiModelPair.getSecond().render(matrices, stack, mode, tickDelta, vertexConsumers, light, overlay);
56+
matrix4fMiapiModelPair.getSecond().render(matrices, stack, mode, tickDelta, vertexConsumers, entity, light, overlay);
5657
matrices.pop();
5758

5859
//prepare for submodules
@@ -74,7 +75,7 @@ public void render(String modelTypeRaw, ItemStack stack, MatrixStack matrices, M
7475
subModuleModel = new ModuleModel(instance1, stack);
7576
subModuleModels.put(integer, subModuleModel);
7677
}
77-
subModuleModel.render(modelType, stack, matrices, mode, tickDelta, vertexConsumers, integer, overlay);
78+
subModuleModel.render(modelType, stack, matrices, mode, tickDelta, vertexConsumers, entity, integer, overlay);
7879
matrices.pop();
7980
});
8081
}

common/src/main/java/smartin/miapi/mixin/client/ItemRendererMixin.java

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
import net.minecraft.client.render.model.BakedQuad;
1010
import net.minecraft.client.render.model.json.ModelTransformationMode;
1111
import net.minecraft.client.util.math.MatrixStack;
12+
import net.minecraft.entity.LivingEntity;
1213
import net.minecraft.item.ItemStack;
14+
import net.minecraft.world.World;
1315
import org.spongepowered.asm.mixin.Debug;
1416
import org.spongepowered.asm.mixin.Mixin;
1517
import org.spongepowered.asm.mixin.injection.At;
@@ -28,34 +30,37 @@ public class ItemRendererMixin {
2830
/**
2931
* 10 bit Color Support, should be refactored to be less intrusive if possible
3032
*/
31-
@Inject(method = "renderBakedItemQuads(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;Ljava/util/List;Lnet/minecraft/item/ItemStack;II)V", at = @At("HEAD"), cancellable = true)
32-
private void miapi$colorSupport10bitColor(MatrixStack matrices, VertexConsumer vertices, List<BakedQuad> quads, ItemStack stack, int light, int overlay, CallbackInfo ci){
33+
@Inject(method = "renderBakedItemQuads(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;Ljava/util/List;Lnet/minecraft/item/ItemStack;II)V",
34+
at = @At("HEAD"),
35+
cancellable = true)
36+
private void miapi$colorSupport10bitColor(MatrixStack matrices, VertexConsumer vertices, List<BakedQuad> quads, ItemStack stack, int light, int overlay, CallbackInfo ci) {
3337
boolean bl = !stack.isEmpty();
3438
MatrixStack.Entry entry = matrices.peek();
3539
Iterator var9 = quads.iterator();
3640

37-
while(var9.hasNext()) {
38-
BakedQuad bakedQuad = (BakedQuad)var9.next();
41+
while (var9.hasNext()) {
42+
BakedQuad bakedQuad = (BakedQuad) var9.next();
3943
int i = -1;
4044
if (bl && bakedQuad.hasColor()) {
41-
ItemColors colors = ((ItemRendererAccessor)this).color();
45+
ItemColors colors = ((ItemRendererAccessor) this).color();
4246
i = colors.getColor(stack, bakedQuad.getColorIndex());
4347
}
44-
if(i>>30 == -2 && stack.getItem() instanceof ModularItem){
45-
float f = (float)(i >> 20 & 1023) / 255.0F;
46-
float g = (float)(i >> 10 & 1023) / 255.0F;
47-
float h = (float)(i & 1023) / 255.0F;
48+
if (i >> 30 == -2 && stack.getItem() instanceof ModularItem) {
49+
float f = (float) (i >> 20 & 1023) / 255.0F;
50+
float g = (float) (i >> 10 & 1023) / 255.0F;
51+
float h = (float) (i & 1023) / 255.0F;
4852
vertices.quad(entry, bakedQuad, f, g, h, light, overlay);
49-
}
50-
else{
51-
float f = (float)(i >> 16 & 255) / 255.0F;
52-
float g = (float)(i >> 8 & 255) / 255.0F;
53-
float h = (float)(i & 255) / 255.0F;
53+
} else {
54+
float f = (float) (i >> 16 & 255) / 255.0F;
55+
float g = (float) (i >> 8 & 255) / 255.0F;
56+
float h = (float) (i & 255) / 255.0F;
5457
vertices.quad(entry, bakedQuad, f, g, h, light, overlay);
5558
}
5659
}
5760
}
5861

62+
private LivingEntity entity;
63+
5964
@Inject(
6065
method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V",
6166
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/model/BakedModel;isBuiltin()Z")
@@ -66,7 +71,16 @@ public class ItemRendererMixin {
6671
int overlay, BakedModel model, CallbackInfo ci
6772
) {
6873
if (stack.getItem() instanceof ModularItem) {
69-
MiapiItemModel.getItemModel(stack).render(matrices, stack, renderMode, MinecraftClient.getInstance().getTickDelta(), vertexConsumers, light, overlay);
74+
MiapiItemModel.getItemModel(stack).render(matrices, stack, renderMode, MinecraftClient.getInstance().getTickDelta(), vertexConsumers, entity, light, overlay);
75+
entity = null;
7076
}
7177
}
78+
79+
@Inject(
80+
method = "Lnet/minecraft/client/render/item/ItemRenderer;renderItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;Lnet/minecraft/world/World;III)V",
81+
at = @At("HEAD")
82+
)
83+
private void miapi$customItemRenderingEntityGetter(LivingEntity entity, ItemStack item, ModelTransformationMode renderMode, boolean leftHanded, MatrixStack matrices, VertexConsumerProvider vertexConsumers, World world, int light, int overlay, int seed, CallbackInfo ci) {
84+
this.entity = entity;
85+
}
7286
}

common/src/main/java/smartin/miapi/modules/properties/EnchantmentProperty.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,6 @@ public static void addToReplaceMap(String key, EnchantmentTarget target) {
114114

115115
public static boolean isAllowed(ItemStack stack, Enchantment enchantment) {
116116
boolean allowed = getAllowedList(stack).contains(enchantment);
117-
getAllowedList(stack).forEach(enchantment1 -> {
118-
Miapi.LOGGER.error(String.valueOf(enchantment1));
119-
});
120-
Miapi.LOGGER.warn(String.valueOf(allowed));
121117
return allowed;
122118
}
123119

@@ -131,7 +127,6 @@ public boolean load(String moduleKey, JsonElement data) throws Exception {
131127

132128
public static List<Enchantment> convert(List<String> list) {
133129
List<String> replaceList = new ArrayList<>();
134-
Map<String,Set<String>> rawMap = replaceMap;
135130
for (String id : list) {
136131
if (replaceMap.containsKey(id)) {
137132
replaceList.addAll(replaceMap.get(id));
@@ -146,7 +141,7 @@ public static List<Enchantment> convert(List<String> list) {
146141
enchantments.add(enchantment);
147142
}
148143
else{
149-
Miapi.LOGGER.warn("enchantment "+id+ " not found");
144+
//Miapi.LOGGER.warn("enchantment "+id+ " not found");
150145
}
151146
}
152147
return enchantments;

common/src/main/java/smartin/miapi/modules/properties/render/ModelProperty.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import com.google.gson.JsonElement;
66
import net.fabricmc.api.EnvType;
77
import net.fabricmc.api.Environment;
8-
import net.minecraft.client.render.model.*;
8+
import net.minecraft.client.render.model.BakedModel;
9+
import net.minecraft.client.render.model.ModelBakeSettings;
10+
import net.minecraft.client.render.model.ModelLoader;
911
import net.minecraft.client.render.model.json.ItemModelGenerator;
1012
import net.minecraft.client.render.model.json.JsonUnbakedModel;
1113
import net.minecraft.client.render.model.json.ModelOverrideList;
@@ -28,9 +30,9 @@
2830
import smartin.miapi.mixin.client.ModelLoaderInterfaceAccessor;
2931
import smartin.miapi.modules.ItemModule;
3032
import smartin.miapi.modules.cache.ModularItemCache;
33+
import smartin.miapi.modules.properties.SlotProperty;
3134
import smartin.miapi.modules.properties.material.Material;
3235
import smartin.miapi.modules.properties.material.MaterialProperty;
33-
import smartin.miapi.modules.properties.SlotProperty;
3436
import smartin.miapi.modules.properties.util.ModuleProperty;
3537

3638
import java.io.FileNotFoundException;
@@ -100,7 +102,8 @@ List<BakedModel> getForModule(ItemModule.ModuleInstance instance) {
100102
unbakedModel = modelCache.get(fullPath);
101103
}
102104
}
103-
models.add(DynamicBakery.bakeModel(unbakedModel, textureGetter, ColorHelper.Argb.getArgb(255, 255, 255, 255), json.transform).optimize());
105+
DynamicBakedModel model = DynamicBakery.bakeModel(unbakedModel, textureGetter, ColorHelper.Argb.getArgb(255, 255, 255, 255), json.transform);
106+
models.add(model.optimize());
104107
}
105108
}
106109
return models;

0 commit comments

Comments
 (0)