From 7f41fdf86404b582b5a5ace1235982df2712314a Mon Sep 17 00:00:00 2001 From: eligibbs Date: Tue, 10 Mar 2026 23:03:27 -0400 Subject: [PATCH] fixes fabric datagen stuff and some networking stuff --- .../networking/ModPackets.java | 12 ++-- .../datagen/FabricModModelProvider.java | 59 +++++++++++++++---- gradlew | 0 .../platform/ForgeItemFluidHelper.java | 5 ++ .../capabilities/NeoForgeEnergyStorage.java | 42 +++++++++++++ 5 files changed, 102 insertions(+), 16 deletions(-) mode change 100755 => 100644 gradlew create mode 100644 neoforge/src/main/java/net/cmr/jurassicrevived/neoforge/capabilities/NeoForgeEnergyStorage.java diff --git a/common/src/main/java/net/cmr/jurassicrevived/networking/ModPackets.java b/common/src/main/java/net/cmr/jurassicrevived/networking/ModPackets.java index decdf91..7098148 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/networking/ModPackets.java +++ b/common/src/main/java/net/cmr/jurassicrevived/networking/ModPackets.java @@ -2,15 +2,17 @@ package net.cmr.jurassicrevived.networking; import dev.architectury.fluid.FluidStack; import dev.architectury.networking.NetworkManager; +import dev.architectury.utils.Env; +import dev.architectury.utils.EnvExecutor; import io.netty.buffer.Unpooled; import net.cmr.jurassicrevived.Constants; import net.cmr.jurassicrevived.screen.custom.TankMenu; -import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; //? if >1.20.1 { /*import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.core.component.DataComponentPatch; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; *///?} @@ -26,7 +28,7 @@ public class ModPackets { public static void register() { //? if >1.20.1 { - /*NetworkManager.registerReceiver(NetworkManager.Side.S2C, TANK_SYNC_TYPE, TANK_SYNC_STREAM_CODEC, (payload, context) -> { + /*EnvExecutor.runInEnv(Env.CLIENT, () -> () -> NetworkManager.registerReceiver(NetworkManager.Side.S2C, TANK_SYNC_TYPE, TANK_SYNC_STREAM_CODEC, (payload, context) -> { FluidStack fluidStack = payload.fluidStack(); context.queue(() -> { Player player = context.getPlayer(); @@ -37,9 +39,9 @@ public class ModPackets { } } }); - }); + })); *///?} else { - NetworkManager.registerReceiver(NetworkManager.Side.S2C, TANK_SYNC, (buf, context) -> { + EnvExecutor.runInEnv(Env.CLIENT, () -> () -> NetworkManager.registerReceiver(NetworkManager.Side.S2C, TANK_SYNC, (buf, context) -> { FluidStack fluidStack = FluidStack.read(buf); context.queue(() -> { Player player = context.getPlayer(); @@ -50,7 +52,7 @@ public class ModPackets { } } }); - }); + })); //?} } diff --git a/fabricmc/src/main/java/net/cmr/jurassicrevived/datagen/FabricModModelProvider.java b/fabricmc/src/main/java/net/cmr/jurassicrevived/datagen/FabricModModelProvider.java index 0666d13..d48c542 100644 --- a/fabricmc/src/main/java/net/cmr/jurassicrevived/datagen/FabricModModelProvider.java +++ b/fabricmc/src/main/java/net/cmr/jurassicrevived/datagen/FabricModModelProvider.java @@ -51,6 +51,7 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl public void generateItemModels(ItemModelGenerators itemModelGenerator) { this.itemModelGenerator = itemModelGenerator; ModItemModelProvider.registerItemModels(this); + ModBlockStateProvider.registerBlockStates(this); } // Helper to check mode @@ -62,6 +63,16 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl return itemModelGenerator != null; } + private void generateBlockItemModel(Block block) { + if (isGeneratingItems()) { + itemModelGenerator.output.accept(ModelLocationUtils.getModelLocation(block.asItem()), () -> { + JsonObject json = new JsonObject(); + json.addProperty("parent", ModelLocationUtils.getModelLocation(block).toString()); + return json; + }); + } + } + // --- BlockStateHelper Implementation --- @Override @@ -84,15 +95,13 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl @Override public void simpleBlockItem(Block block, ResourceLocation model) { - // This is called from ModBlockStateProvider, intended to register item models for blocks. - // Since we are merging, we can potentially handle this here if we are in item generation mode? - // But ModBlockStateProvider calls this during registerBlockStates, which is called during generateBlockStateModels. - // So we are in block generation mode. - // We can't generate item models here because itemModelGenerator is null. - // We should probably ignore this here and rely on ModItemModelProvider to register block items? - // OR, we can store these requests and run them later? - // But ModItemModelProvider seems to have its own logic. - // Let's assume ModItemModelProvider handles all item models, including block items. + if (isGeneratingItems()) { + itemModelGenerator.output.accept(ModelLocationUtils.getModelLocation(block.asItem()), () -> { + JsonObject json = new JsonObject(); + json.addProperty("parent", model.toString()); + return json; + }); + } } @Override @@ -100,6 +109,13 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl if (isGeneratingBlocks()) { blockStateGenerator.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, model)); } + if (isGeneratingItems()) { + itemModelGenerator.output.accept(ModelLocationUtils.getModelLocation(block.asItem()), () -> { + JsonObject json = new JsonObject(); + json.addProperty("parent", model.toString()); + return json; + }); + } } @Override @@ -127,6 +143,9 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl if (isGeneratingBlocks()) { blockStateGenerator.createTrivialCube(block); } + if (isGeneratingItems()) { + generateBlockItemModel(block); + } } private PropertyDispatch createRotatedHorizontalFacingDispatch() { @@ -143,6 +162,9 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl ResourceLocation model = ModelLocationUtils.getModelLocation(block); blockStateGenerator.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)).with(BlockModelGenerators.createHorizontalFacingDispatch())); } + if (isGeneratingItems()) { + generateBlockItemModel(block); + } } @Override @@ -151,6 +173,9 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl ResourceLocation model = ModelLocationUtils.getModelLocation(block); blockStateGenerator.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)).with(createRotatedHorizontalFacingDispatch())); } + if (isGeneratingItems()) { + generateBlockItemModel(block); + } } @Override @@ -159,13 +184,18 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl ResourceLocation model = ModelLocationUtils.getModelLocation(block); blockStateGenerator.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)).with(createRotatedHorizontalFacingDispatch())); } + if (isGeneratingItems()) { + generateBlockItemModel(block); + } } @Override public void eggLike(Block block) { if (isGeneratingBlocks()) { ResourceLocation eggModel = Constants.rl("block/egg"); - blockStateGenerator.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, eggModel)); + // Use multipart to ensure it covers all variants (properties) + blockStateGenerator.blockStateOutput.accept(MultiPartGenerator.multiPart(block) + .with(Variant.variant().with(VariantProperties.MODEL, eggModel))); } } @@ -220,6 +250,13 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl blockStateGenerator.blockStateOutput.accept(multipart); } + if (isGeneratingItems()) { + itemModelGenerator.output.accept(ModelLocationUtils.getModelLocation(block.asItem()), () -> { + JsonObject json = new JsonObject(); + json.addProperty("parent", Constants.rl("block/" + modelBaseName).toString()); + return json; + }); + } } @Override @@ -417,4 +454,4 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl }); } } -} +} \ No newline at end of file diff --git a/gradlew b/gradlew old mode 100755 new mode 100644 diff --git a/minecraftforge/src/main/java/net/cmr/jurassicrevived/platform/ForgeItemFluidHelper.java b/minecraftforge/src/main/java/net/cmr/jurassicrevived/platform/ForgeItemFluidHelper.java index e493a3d..cea1561 100644 --- a/minecraftforge/src/main/java/net/cmr/jurassicrevived/platform/ForgeItemFluidHelper.java +++ b/minecraftforge/src/main/java/net/cmr/jurassicrevived/platform/ForgeItemFluidHelper.java @@ -76,4 +76,9 @@ public class ForgeItemFluidHelper implements IItemFluidHelper { } return new TransferResult(0, stack); } + + @Override + public boolean isFluidHandler(ItemStack stack) { + return FluidUtil.getFluidHandler(stack).isPresent() || stack.is(Items.BUCKET) || stack.is(Items.WATER_BUCKET) || stack.is(Items.LAVA_BUCKET); + } } diff --git a/neoforge/src/main/java/net/cmr/jurassicrevived/neoforge/capabilities/NeoForgeEnergyStorage.java b/neoforge/src/main/java/net/cmr/jurassicrevived/neoforge/capabilities/NeoForgeEnergyStorage.java new file mode 100644 index 0000000..7bf1abc --- /dev/null +++ b/neoforge/src/main/java/net/cmr/jurassicrevived/neoforge/capabilities/NeoForgeEnergyStorage.java @@ -0,0 +1,42 @@ +package net.cmr.jurassicrevived.neoforge.capabilities; + +import net.cmr.jurassicrevived.block.entity.energy.ModEnergyStorage; +import net.neoforged.neoforge.energy.IEnergyStorage; + +public class NeoForgeEnergyStorage implements IEnergyStorage { + private final ModEnergyStorage storage; + + public NeoForgeEnergyStorage(ModEnergyStorage storage) { + this.storage = storage; + } + + @Override + public int receiveEnergy(int maxReceive, boolean simulate) { + return storage.receiveEnergy(maxReceive, simulate); + } + + @Override + public int extractEnergy(int maxExtract, boolean simulate) { + return storage.extractEnergy(maxExtract, simulate); + } + + @Override + public int getEnergyStored() { + return storage.getEnergyStored(); + } + + @Override + public int getMaxEnergyStored() { + return storage.getMaxEnergyStored(); + } + + @Override + public boolean canExtract() { + return storage.canExtract(); + } + + @Override + public boolean canReceive() { + return storage.canReceive(); + } +} \ No newline at end of file