From 0a5a40c5aa6af70e112b5f0fb63d70114ea7317b Mon Sep 17 00:00:00 2001 From: marcus8448 Date: Tue, 8 Oct 2024 10:16:34 -0700 Subject: [PATCH] fix: allow alternative short-form texture declaration --- .../machinelib/api/transfer/ResourceType.java | 3 ++- .../api/model/sprite/TextureProvider.java | 12 ++++++++---- .../client/impl/model/MachineBakedModel.java | 18 +++--------------- .../impl/model/MachineModelLoadingPlugin.java | 2 +- .../textures/block/machine_oxygen_both.png | Bin 201 -> 0 bytes .../textures/block/machine_oxygen_input.png | Bin 188 -> 0 bytes .../textures/block/machine_oxygen_output.png | Bin 191 -> 0 bytes 7 files changed, 14 insertions(+), 21 deletions(-) delete mode 100644 src/testmod/resources/assets/machinelib_testmod/textures/block/machine_oxygen_both.png delete mode 100644 src/testmod/resources/assets/machinelib_testmod/textures/block/machine_oxygen_input.png delete mode 100644 src/testmod/resources/assets/machinelib_testmod/textures/block/machine_oxygen_output.png diff --git a/src/main/java/dev/galacticraft/machinelib/api/transfer/ResourceType.java b/src/main/java/dev/galacticraft/machinelib/api/transfer/ResourceType.java index 043870e..9597a00 100644 --- a/src/main/java/dev/galacticraft/machinelib/api/transfer/ResourceType.java +++ b/src/main/java/dev/galacticraft/machinelib/api/transfer/ResourceType.java @@ -22,6 +22,7 @@ package dev.galacticraft.machinelib.api.transfer; +import com.mojang.serialization.Codec; import dev.galacticraft.machinelib.impl.Constant; import io.netty.buffer.ByteBuf; import net.minecraft.ChatFormatting; @@ -59,7 +60,7 @@ public enum ResourceType implements StringRepresentable { */ ANY(0b111, Component.translatable(Constant.TranslationKey.ANY).setStyle(Style.EMPTY.withColor(ChatFormatting.AQUA))); - public static final StringRepresentable.EnumCodec CODEC = StringRepresentable.fromEnum(ResourceType::values); + public static final Codec CODEC = StringRepresentable.fromValues(ResourceType::values); public static final StreamCodec STREAM_CODEC = ByteBufCodecs.BYTE.map(i -> i == -1 ? null : values()[i], face -> face == null ? -1 : (byte) face.ordinal()); /** diff --git a/src/main/java/dev/galacticraft/machinelib/client/api/model/sprite/TextureProvider.java b/src/main/java/dev/galacticraft/machinelib/client/api/model/sprite/TextureProvider.java index 5dffe53..cbceb8f 100644 --- a/src/main/java/dev/galacticraft/machinelib/client/api/model/sprite/TextureProvider.java +++ b/src/main/java/dev/galacticraft/machinelib/client/api/model/sprite/TextureProvider.java @@ -23,6 +23,7 @@ package dev.galacticraft.machinelib.client.api.model.sprite; import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.galacticraft.machinelib.api.machine.MachineRenderData; import dev.galacticraft.machinelib.api.util.BlockFace; @@ -36,10 +37,13 @@ import java.util.function.Function; public interface TextureProvider { - Codec MATERIAL_CODEC = RecordCodecBuilder.create(instance -> instance.group( - ResourceLocation.CODEC.fieldOf("atlas").orElse(TextureAtlas.LOCATION_BLOCKS).forGetter(Material::atlasLocation), - ResourceLocation.CODEC.fieldOf("texture").forGetter(Material::texture) - ).apply(instance, Material::new)); + Codec MATERIAL_CODEC = Codec.withAlternative( + RecordCodecBuilder.create(instance -> instance.group( + ResourceLocation.CODEC.fieldOf("atlas").orElse(TextureAtlas.LOCATION_BLOCKS).forGetter(Material::atlasLocation), + ResourceLocation.CODEC.fieldOf("texture").forGetter(Material::texture) + ).apply(instance, Material::new)), + ResourceLocation.CODEC.comapFlatMap(tex -> DataResult.success(new Material(TextureAtlas.LOCATION_BLOCKS, tex)), Material::atlasLocation) + ); B bind(Function atlas); diff --git a/src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineBakedModel.java b/src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineBakedModel.java index 688c812..a63cfc7 100644 --- a/src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineBakedModel.java +++ b/src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineBakedModel.java @@ -36,10 +36,10 @@ import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView; import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel; +import net.fabricmc.fabric.api.renderer.v1.model.ModelHelper; import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.ItemOverrides; -import net.minecraft.client.renderer.block.model.ItemTransform; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; @@ -58,7 +58,6 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.joml.Vector3f; import java.util.Collections; import java.util.List; @@ -67,17 +66,6 @@ @Environment(EnvType.CLIENT) @ApiStatus.Internal public final class MachineBakedModel implements FabricBakedModel, BakedModel { - private static final ItemTransforms ITEM_TRANSFORMATION = new ItemTransforms( - new ItemTransform(new Vector3f(75, 45, 0), new Vector3f(0, 0.25f, 0), new Vector3f(0.375f, 0.375f, 0.375f)), - new ItemTransform(new Vector3f(75, 45, 0), new Vector3f(0, 0.25f, 0), new Vector3f(0.375f, 0.375f, 0.375f)), - new ItemTransform(new Vector3f(0, 225, 0), new Vector3f(0, 0, 0), new Vector3f(0.40f, 0.40f, 0.40f)), - new ItemTransform(new Vector3f(0, 45, 0), new Vector3f(0, 0, 0), new Vector3f(0.40f, 0.40f, 0.40f)), - ItemTransform.NO_TRANSFORM, - new ItemTransform(new Vector3f(30, 225, 0), new Vector3f(0, 0, 0), new Vector3f(0.625f, 0.625f, 0.625f)), - new ItemTransform(new Vector3f(0, 0, 0), new Vector3f(0, 0.2f, 0), new Vector3f(0.25f, 0.25f, 0.25f)), - new ItemTransform(new Vector3f(0, 0, 0), new Vector3f(0, 0, 0), new Vector3f(0.5f, 0.5f, 0.5f)) - ); - private final TextureProvider.BoundTextureProvider provider; private final MachineTextureBase.Bound base; @@ -101,8 +89,8 @@ private boolean transform(MachineRenderData renderData, @NotNull BlockState stat private boolean transformItem(IOConfig config, @NotNull MutableQuadView quad) { BlockFace face = BlockFace.from(Direction.NORTH, quad.nominalFace()); - IOFace IOFace = config.get(face); assert face != null; + IOFace IOFace = config.get(face); quad.spriteBake(getSprite(face, config, IOFace.getType(), IOFace.getFlow()), @@ -245,7 +233,7 @@ public boolean isCustomRenderer() { @Override public @NotNull ItemTransforms getTransforms() { - return ITEM_TRANSFORMATION; + return ModelHelper.MODEL_TRANSFORM_BLOCK; } @Override diff --git a/src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineModelLoadingPlugin.java b/src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineModelLoadingPlugin.java index e93b757..3d52369 100644 --- a/src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineModelLoadingPlugin.java +++ b/src/main/java/dev/galacticraft/machinelib/client/impl/model/MachineModelLoadingPlugin.java @@ -52,7 +52,7 @@ public class MachineModelLoadingPlugin implements PreparableModelLoadingPlugin> codec = MachineModelRegistry.getProviderFactoryOrDefault(ResourceLocation.parse(GsonHelper.getAsString(json, MachineModelRegistry.MARKER))); - DataResult, JsonElement>> sprites = codec.decode(JsonOps.INSTANCE, json.getAsJsonObject("data")); + DataResult, JsonElement>> sprites = codec.decode(JsonOps.INSTANCE, json.get("data")); JsonElement baseId = json.get("base"); ResourceLocation base = baseId == null ? context.id().withPath("base") : ResourceLocation.parse(baseId.getAsString()); MachineUnbakedModel model = new MachineUnbakedModel(sprites.getOrThrow().getFirst(), base); diff --git a/src/testmod/resources/assets/machinelib_testmod/textures/block/machine_oxygen_both.png b/src/testmod/resources/assets/machinelib_testmod/textures/block/machine_oxygen_both.png deleted file mode 100644 index 521025e8b00d4d86bdb6698aa653519866545a25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!N`Oy@tC)z0!~zY`UVgzkxrjh_ zZ+B-8Cz}Nl5_VQ*z5FU#8ft2a3fI*CwE)#8c)B=-RNP8E7tPgRz~gf9qTQTxZ|e7( z33?y>J-I+Zpn}bTX~OR6W07ZMCkbt-YFM?^wbXI5?n~xml?x7Ye(YH{k)c628~F1SfC i^cpGz9AW@E<=-YZNgb^lZ+8MMVeoYIb6Mw<&;$TI4mVH$ diff --git a/src/testmod/resources/assets/machinelib_testmod/textures/block/machine_oxygen_output.png b/src/testmod/resources/assets/machinelib_testmod/textures/block/machine_oxygen_output.png deleted file mode 100644 index 1860125cefb60c6ce343c74fd13d743e7b52939c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!T!2rAtC)yLM4-F3yR(Or%>oGt zJ1etZew8{wK`jk6HARIZp@H^5l`)Fc}?ce{&g6S4MuMR$W ze7d=+P9b9ta{~*rKEqjsX-&n+4tHh5ST;zzsP)~wo8VTUCBhL<8q3ABf`Ki9wPj(f lIRo1^wnh$K69$GK%)65%P0#(ZdJ43M!PC{xWt~$(698