fixes fabric datagen stuff and some networking stuff
This commit is contained in:
@@ -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 {
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}));
|
||||
//?}
|
||||
}
|
||||
|
||||
|
||||
+48
-11
@@ -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
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+42
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user