fixes fabric datagen stuff and some networking stuff

This commit is contained in:
2026-03-10 23:03:27 -04:00
parent a30721d9b8
commit 7f41fdf864
5 changed files with 102 additions and 16 deletions
@@ -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 {
}
}
});
});
}));
//?}
}
@@ -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
Vendored Executable → Regular
View File
@@ -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);
}
}
@@ -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();
}
}