Skip to content

Commit 0a5a40c

Browse files
committed
fix: allow alternative short-form texture declaration
1 parent b2a6f56 commit 0a5a40c

File tree

7 files changed

+14
-21
lines changed

7 files changed

+14
-21
lines changed

src/main/java/dev/galacticraft/machinelib/api/transfer/ResourceType.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
package dev.galacticraft.machinelib.api.transfer;
2424

25+
import com.mojang.serialization.Codec;
2526
import dev.galacticraft.machinelib.impl.Constant;
2627
import io.netty.buffer.ByteBuf;
2728
import net.minecraft.ChatFormatting;
@@ -59,7 +60,7 @@ public enum ResourceType implements StringRepresentable {
5960
*/
6061
ANY(0b111, Component.translatable(Constant.TranslationKey.ANY).setStyle(Style.EMPTY.withColor(ChatFormatting.AQUA)));
6162

62-
public static final StringRepresentable.EnumCodec<ResourceType> CODEC = StringRepresentable.fromEnum(ResourceType::values);
63+
public static final Codec<ResourceType> CODEC = StringRepresentable.fromValues(ResourceType::values);
6364
public static final StreamCodec<ByteBuf, ResourceType> STREAM_CODEC = ByteBufCodecs.BYTE.map(i -> i == -1 ? null : values()[i], face -> face == null ? -1 : (byte) face.ordinal());
6465

6566
/**

src/main/java/dev/galacticraft/machinelib/client/api/model/sprite/TextureProvider.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
package dev.galacticraft.machinelib.client.api.model.sprite;
2424

2525
import com.mojang.serialization.Codec;
26+
import com.mojang.serialization.DataResult;
2627
import com.mojang.serialization.codecs.RecordCodecBuilder;
2728
import dev.galacticraft.machinelib.api.machine.MachineRenderData;
2829
import dev.galacticraft.machinelib.api.util.BlockFace;
@@ -36,10 +37,13 @@
3637
import java.util.function.Function;
3738

3839
public interface TextureProvider<B extends TextureProvider.BoundTextureProvider> {
39-
Codec<Material> MATERIAL_CODEC = RecordCodecBuilder.create(instance -> instance.group(
40-
ResourceLocation.CODEC.fieldOf("atlas").orElse(TextureAtlas.LOCATION_BLOCKS).forGetter(Material::atlasLocation),
41-
ResourceLocation.CODEC.fieldOf("texture").forGetter(Material::texture)
42-
).apply(instance, Material::new));
40+
Codec<Material> MATERIAL_CODEC = Codec.withAlternative(
41+
RecordCodecBuilder.create(instance -> instance.group(
42+
ResourceLocation.CODEC.fieldOf("atlas").orElse(TextureAtlas.LOCATION_BLOCKS).forGetter(Material::atlasLocation),
43+
ResourceLocation.CODEC.fieldOf("texture").forGetter(Material::texture)
44+
).apply(instance, Material::new)),
45+
ResourceLocation.CODEC.comapFlatMap(tex -> DataResult.success(new Material(TextureAtlas.LOCATION_BLOCKS, tex)), Material::atlasLocation)
46+
);
4347

4448
B bind(Function<Material, TextureAtlasSprite> atlas);
4549

src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineBakedModel.java

+3-15
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@
3636
import net.fabricmc.api.Environment;
3737
import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView;
3838
import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel;
39+
import net.fabricmc.fabric.api.renderer.v1.model.ModelHelper;
3940
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
4041
import net.minecraft.client.renderer.block.model.BakedQuad;
4142
import net.minecraft.client.renderer.block.model.ItemOverrides;
42-
import net.minecraft.client.renderer.block.model.ItemTransform;
4343
import net.minecraft.client.renderer.block.model.ItemTransforms;
4444
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
4545
import net.minecraft.client.resources.model.BakedModel;
@@ -58,7 +58,6 @@
5858
import org.jetbrains.annotations.ApiStatus;
5959
import org.jetbrains.annotations.NotNull;
6060
import org.jetbrains.annotations.Nullable;
61-
import org.joml.Vector3f;
6261

6362
import java.util.Collections;
6463
import java.util.List;
@@ -67,17 +66,6 @@
6766
@Environment(EnvType.CLIENT)
6867
@ApiStatus.Internal
6968
public final class MachineBakedModel implements FabricBakedModel, BakedModel {
70-
private static final ItemTransforms ITEM_TRANSFORMATION = new ItemTransforms(
71-
new ItemTransform(new Vector3f(75, 45, 0), new Vector3f(0, 0.25f, 0), new Vector3f(0.375f, 0.375f, 0.375f)),
72-
new ItemTransform(new Vector3f(75, 45, 0), new Vector3f(0, 0.25f, 0), new Vector3f(0.375f, 0.375f, 0.375f)),
73-
new ItemTransform(new Vector3f(0, 225, 0), new Vector3f(0, 0, 0), new Vector3f(0.40f, 0.40f, 0.40f)),
74-
new ItemTransform(new Vector3f(0, 45, 0), new Vector3f(0, 0, 0), new Vector3f(0.40f, 0.40f, 0.40f)),
75-
ItemTransform.NO_TRANSFORM,
76-
new ItemTransform(new Vector3f(30, 225, 0), new Vector3f(0, 0, 0), new Vector3f(0.625f, 0.625f, 0.625f)),
77-
new ItemTransform(new Vector3f(0, 0, 0), new Vector3f(0, 0.2f, 0), new Vector3f(0.25f, 0.25f, 0.25f)),
78-
new ItemTransform(new Vector3f(0, 0, 0), new Vector3f(0, 0, 0), new Vector3f(0.5f, 0.5f, 0.5f))
79-
);
80-
8169
private final TextureProvider.BoundTextureProvider provider;
8270
private final MachineTextureBase.Bound base;
8371

@@ -101,8 +89,8 @@ private boolean transform(MachineRenderData renderData, @NotNull BlockState stat
10189

10290
private boolean transformItem(IOConfig config, @NotNull MutableQuadView quad) {
10391
BlockFace face = BlockFace.from(Direction.NORTH, quad.nominalFace());
104-
IOFace IOFace = config.get(face);
10592
assert face != null;
93+
IOFace IOFace = config.get(face);
10694
quad.spriteBake(getSprite(face,
10795
config,
10896
IOFace.getType(), IOFace.getFlow()),
@@ -245,7 +233,7 @@ public boolean isCustomRenderer() {
245233

246234
@Override
247235
public @NotNull ItemTransforms getTransforms() {
248-
return ITEM_TRANSFORMATION;
236+
return ModelHelper.MODEL_TRANSFORM_BLOCK;
249237
}
250238

251239
@Override

src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineModelLoadingPlugin.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public class MachineModelLoadingPlugin implements PreparableModelLoadingPlugin<M
5252
JsonObject json = this.data.remove(context.id());
5353
if (json != null) {
5454
Codec<? extends TextureProvider<?>> codec = MachineModelRegistry.getProviderFactoryOrDefault(ResourceLocation.parse(GsonHelper.getAsString(json, MachineModelRegistry.MARKER)));
55-
DataResult<? extends Pair<? extends TextureProvider<?>, JsonElement>> sprites = codec.decode(JsonOps.INSTANCE, json.getAsJsonObject("data"));
55+
DataResult<? extends Pair<? extends TextureProvider<?>, JsonElement>> sprites = codec.decode(JsonOps.INSTANCE, json.get("data"));
5656
JsonElement baseId = json.get("base");
5757
ResourceLocation base = baseId == null ? context.id().withPath("base") : ResourceLocation.parse(baseId.getAsString());
5858
MachineUnbakedModel model = new MachineUnbakedModel(sprites.getOrThrow().getFirst(), base);

0 commit comments

Comments
 (0)