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.fluid.FluidStack;
import dev.architectury.networking.NetworkManager; import dev.architectury.networking.NetworkManager;
import dev.architectury.utils.Env;
import dev.architectury.utils.EnvExecutor;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import net.cmr.jurassicrevived.Constants; import net.cmr.jurassicrevived.Constants;
import net.cmr.jurassicrevived.screen.custom.TankMenu; import net.cmr.jurassicrevived.screen.custom.TankMenu;
import net.minecraft.core.component.DataComponentPatch;
import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
//? if >1.20.1 { //? if >1.20.1 {
/*import net.minecraft.network.RegistryFriendlyByteBuf; /*import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.core.component.DataComponentPatch;
import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
*///?} *///?}
@@ -26,7 +28,7 @@ public class ModPackets {
public static void register() { public static void register() {
//? if >1.20.1 { //? 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(); FluidStack fluidStack = payload.fluidStack();
context.queue(() -> { context.queue(() -> {
Player player = context.getPlayer(); Player player = context.getPlayer();
@@ -37,9 +39,9 @@ public class ModPackets {
} }
} }
}); });
}); }));
*///?} else { *///?} 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); FluidStack fluidStack = FluidStack.read(buf);
context.queue(() -> { context.queue(() -> {
Player player = context.getPlayer(); 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) { public void generateItemModels(ItemModelGenerators itemModelGenerator) {
this.itemModelGenerator = itemModelGenerator; this.itemModelGenerator = itemModelGenerator;
ModItemModelProvider.registerItemModels(this); ModItemModelProvider.registerItemModels(this);
ModBlockStateProvider.registerBlockStates(this);
} }
// Helper to check mode // Helper to check mode
@@ -62,6 +63,16 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl
return itemModelGenerator != null; 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 --- // --- BlockStateHelper Implementation ---
@Override @Override
@@ -84,15 +95,13 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl
@Override @Override
public void simpleBlockItem(Block block, ResourceLocation model) { public void simpleBlockItem(Block block, ResourceLocation model) {
// This is called from ModBlockStateProvider, intended to register item models for blocks. if (isGeneratingItems()) {
// Since we are merging, we can potentially handle this here if we are in item generation mode? itemModelGenerator.output.accept(ModelLocationUtils.getModelLocation(block.asItem()), () -> {
// But ModBlockStateProvider calls this during registerBlockStates, which is called during generateBlockStateModels. JsonObject json = new JsonObject();
// So we are in block generation mode. json.addProperty("parent", model.toString());
// We can't generate item models here because itemModelGenerator is null. return json;
// 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.
} }
@Override @Override
@@ -100,6 +109,13 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl
if (isGeneratingBlocks()) { if (isGeneratingBlocks()) {
blockStateGenerator.blockStateOutput.accept(BlockModelGenerators.createSimpleBlock(block, model)); 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 @Override
@@ -127,6 +143,9 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl
if (isGeneratingBlocks()) { if (isGeneratingBlocks()) {
blockStateGenerator.createTrivialCube(block); blockStateGenerator.createTrivialCube(block);
} }
if (isGeneratingItems()) {
generateBlockItemModel(block);
}
} }
private PropertyDispatch createRotatedHorizontalFacingDispatch() { private PropertyDispatch createRotatedHorizontalFacingDispatch() {
@@ -143,6 +162,9 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl
ResourceLocation model = ModelLocationUtils.getModelLocation(block); ResourceLocation model = ModelLocationUtils.getModelLocation(block);
blockStateGenerator.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)).with(BlockModelGenerators.createHorizontalFacingDispatch())); blockStateGenerator.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)).with(BlockModelGenerators.createHorizontalFacingDispatch()));
} }
if (isGeneratingItems()) {
generateBlockItemModel(block);
}
} }
@Override @Override
@@ -151,6 +173,9 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl
ResourceLocation model = ModelLocationUtils.getModelLocation(block); ResourceLocation model = ModelLocationUtils.getModelLocation(block);
blockStateGenerator.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)).with(createRotatedHorizontalFacingDispatch())); blockStateGenerator.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)).with(createRotatedHorizontalFacingDispatch()));
} }
if (isGeneratingItems()) {
generateBlockItemModel(block);
}
} }
@Override @Override
@@ -159,13 +184,18 @@ public class FabricModModelProvider extends FabricModelProvider implements ModBl
ResourceLocation model = ModelLocationUtils.getModelLocation(block); ResourceLocation model = ModelLocationUtils.getModelLocation(block);
blockStateGenerator.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)).with(createRotatedHorizontalFacingDispatch())); blockStateGenerator.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block, Variant.variant().with(VariantProperties.MODEL, model)).with(createRotatedHorizontalFacingDispatch()));
} }
if (isGeneratingItems()) {
generateBlockItemModel(block);
}
} }
@Override @Override
public void eggLike(Block block) { public void eggLike(Block block) {
if (isGeneratingBlocks()) { if (isGeneratingBlocks()) {
ResourceLocation eggModel = Constants.rl("block/egg"); 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); 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 @Override
Vendored Executable → Regular
View File
@@ -76,4 +76,9 @@ public class ForgeItemFluidHelper implements IItemFluidHelper {
} }
return new TransferResult(0, stack); 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();
}
}