132 YIPEE
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
org.gradle.jvmargs=-Xmx3G
|
||||
org.gradle.daemon=false
|
||||
|
||||
jei_minecraft_version = 1.19.2
|
||||
jei_version = 11.4.0.274
|
||||
jei_version = 11.6.0.1024
|
||||
fabric_loader_version = 0.15.7
|
||||
fabric_api_version = 0.92.0+1.20.1
|
||||
|
||||
|
||||
@@ -1,24 +1,20 @@
|
||||
package com.drmangotea.createindustry.base;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.AluminumPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.AluminumPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.EncasedAluminumPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.GlassAluminumPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.brass.BrassPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.brass.BrassPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.brass.EncasedBrassPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.brass.GlassBrassPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.cast_iron.CastIronPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.cast_iron.CastIronPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.cast_iron.EncasedCastIronPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.cast_iron.GlassCastIronPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.plastic.EncasedPlasticPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.plastic.GlassPlasticPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.plastic.PlasticPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.plastic.PlasticPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.steel.EncasedSteelPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.GeneralPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.steel.GlassSteelPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.steel.SteelPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.steel.SteelPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.pumps.TFMGPumpBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.smart_pipes.TFMGSmartFluidPipeBlock;
|
||||
@@ -48,6 +44,7 @@ import static com.drmangotea.createindustry.CreateTFMG.REGISTRATE;
|
||||
import static com.simibubi.create.foundation.data.ModelGen.customItemModel;
|
||||
import static com.simibubi.create.foundation.data.TagGen.axeOrPickaxe;
|
||||
import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly;
|
||||
import static com.drmangotea.createindustry.registry.TFMGPartialModels.*;
|
||||
|
||||
public class TFMGPipes {
|
||||
|
||||
@@ -61,7 +58,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -76,7 +73,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedSteelPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.STEEL_PIPE))
|
||||
.register();
|
||||
@@ -101,7 +98,7 @@ public class TFMGPipes {
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -111,7 +108,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -123,7 +120,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -134,7 +131,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -143,7 +140,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -158,7 +155,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedCastIronPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, CAST_IRON_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.CAST_IRON_PIPE))
|
||||
.register();
|
||||
@@ -183,7 +180,7 @@ public class TFMGPipes {
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, CAST_IRON_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -193,7 +190,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -205,7 +202,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -216,7 +213,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -225,7 +222,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -240,7 +237,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedBrassPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, BRASS_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.BRASS_PIPE))
|
||||
.register();
|
||||
@@ -265,7 +262,7 @@ public class TFMGPipes {
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -275,7 +272,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -287,7 +284,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -298,7 +295,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -307,7 +304,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.QUARTZ_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -322,7 +319,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedPlasticPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, PLASTIC_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.PLASTIC_PIPE))
|
||||
.register();
|
||||
@@ -347,7 +344,7 @@ public class TFMGPipes {
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, PLASTIC_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -357,7 +354,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -369,7 +366,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -380,7 +377,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -389,7 +386,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -404,7 +401,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedAluminumPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, ALUMINUM_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.ALUMINUM_PIPE))
|
||||
.register();
|
||||
@@ -416,20 +413,18 @@ public class TFMGPipes {
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate((c, p) -> {
|
||||
p.getVariantBuilder(c.getEntry())
|
||||
.forAllStatesExcept(state -> {
|
||||
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
|
||||
return ConfiguredModel.builder()
|
||||
.modelFile(p.models()
|
||||
.getExistingFile(p.modLoc("block/aluminum_pipe/window")))
|
||||
.uvLock(false)
|
||||
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
|
||||
.rotationY(axis == Direction.Axis.X ? 90 : 0)
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.blockstate((c, p) -> p.getVariantBuilder(c.getEntry())
|
||||
.forAllStatesExcept(state -> {
|
||||
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
|
||||
return ConfiguredModel.builder()
|
||||
.modelFile(p.models()
|
||||
.getExistingFile(p.modLoc("block/aluminum_pipe/window")))
|
||||
.uvLock(false)
|
||||
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
|
||||
.rotationY(axis == Direction.Axis.X ? 90 : 0)
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, ALUMINUM_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -439,7 +434,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -451,7 +446,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -462,7 +457,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
||||
@@ -80,22 +80,6 @@ public class ElectricBlockEntity extends SmartBlockEntity implements IHaveGoggle
|
||||
lazyEnergyHandler.invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull <T> LazyOptional<T> getCapability(@NotNull Capability<T> cap, @Nullable Direction side) {
|
||||
|
||||
|
||||
if (cap == ForgeCapabilities.ENERGY&&side == null) {
|
||||
return lazyEnergyHandler.cast();
|
||||
} else
|
||||
|
||||
if (cap == ForgeCapabilities.ENERGY&&hasElectricitySlot(side)) {
|
||||
return lazyEnergyHandler.cast();
|
||||
}
|
||||
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
public void manageVoltage(){
|
||||
|
||||
if(voltageGeneration()>0) {
|
||||
|
||||
@@ -3,21 +3,13 @@ package com.drmangotea.createindustry.blocks.electricity.base;
|
||||
import com.drmangotea.createindustry.base.util.TFMGUtils;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.base;
|
||||
|
||||
import net.minecraftforge.energy.EnergyStorage;
|
||||
|
||||
public abstract class TFMGForgeEnergyStorage extends EnergyStorage {
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.base.cables;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.base.TFMGTools;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.*;
|
||||
import com.drmangotea.createindustry.blocks.electricity.resistors.ResistorBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@@ -21,8 +17,6 @@ import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.energy.EnergyStorage;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,27 +1,19 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.base.cables;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.IHaveCables;
|
||||
import com.drmangotea.createindustry.items.weapons.advanced_potato_cannon.AdvancedPotatoCannonItemRenderer;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.simibubi.create.foundation.item.render.SimpleCustomRenderer;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.InteractionResultHolder;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class WireItem extends Item {
|
||||
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.cable_blocks;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.ElectricBlockEntity;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.IElectricBlock;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.drmangotea.createindustry.blocks.electricity.cable_blocks.copycat_ca
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.decoration.copycat.CopycatBlock;
|
||||
import com.simibubi.create.content.decoration.copycat.FilteredBlockAndTintGetter;
|
||||
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
@@ -16,14 +16,12 @@ import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class AbstractCopycatCableModel extends BakedModelWrapperWithData {
|
||||
public abstract class AbstractCopycatCableModel extends ForwardingBakedModel {
|
||||
|
||||
public static final ModelProperty<BlockState> MATERIAL_PROPERTY = new ModelProperty<>();
|
||||
private static final ModelProperty<OcclusionData> OCCLUSION_PROPERTY = new ModelProperty<>();
|
||||
|
||||
@@ -7,6 +7,8 @@ import com.simibubi.create.AllTags;
|
||||
import com.simibubi.create.content.decoration.copycat.CopycatModel;
|
||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.color.block.BlockColor;
|
||||
import net.minecraft.core.BlockPos;
|
||||
@@ -229,7 +231,7 @@ public class CopycatCableBlock extends Block implements IBE<CopycatCableBlockEnt
|
||||
// Connected Textures
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public BlockState getAppearance(BlockState state, BlockAndTintGetter level, BlockPos pos, Direction side,
|
||||
BlockState queryState, BlockPos queryPos) {
|
||||
|
||||
@@ -345,12 +347,12 @@ public class CopycatCableBlock extends Block implements IBE<CopycatCableBlockEnt
|
||||
|
||||
//
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static BlockColor wrappedColor() {
|
||||
return new WrappedBlockColor();
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static class WrappedBlockColor implements BlockColor {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -10,10 +10,6 @@ import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.cable_blocks.copycat_cable_block;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.decoration.copycat.CopycatModel;
|
||||
import com.simibubi.create.content.decoration.copycat.CopycatSpecialCases;
|
||||
import com.simibubi.create.foundation.model.BakedModelHelper;
|
||||
import com.simibubi.create.foundation.model.BakedQuadHelper;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelData;
|
||||
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
|
||||
@@ -13,16 +16,17 @@ import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class CopycatCableBlockModel extends com.simibubi.create.content.decoration.copycat.CopycatModel {
|
||||
public class CopycatCableBlockModel extends CopycatModel {
|
||||
|
||||
protected static final AABB CUBE_AABB = new AABB(BlockPos.ZERO);
|
||||
|
||||
@@ -30,6 +34,11 @@ public class CopycatCableBlockModel extends com.simibubi.create.content.decorati
|
||||
super(originalModel);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void emitBlockQuadsInner(BlockAndTintGetter blockView, BlockState state, BlockPos pos, Supplier<RandomSource> randomSupplier, RenderContext context, BlockState material, CullFaceRemovalData cullFaceRemovalData, OcclusionData occlusionData) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<BakedQuad> getCroppedQuads(BlockState state, Direction side, RandomSource rand, BlockState material,
|
||||
ModelData wrappedData, RenderType renderType) {
|
||||
|
||||
@@ -15,19 +15,13 @@ import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollVa
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.drmangotea.createindustry.base.util.TFMGUtils;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.ElectricBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.item.ItemHelper;
|
||||
import com.simibubi.create.foundation.item.SmartInventory;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
@@ -15,15 +14,9 @@ import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.Containers;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.voltmeter.energy_meter;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.IElectricBlock;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
@@ -14,8 +13,6 @@ import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.energy.EnergyStorage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -510,17 +510,6 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
return (float) tankInventory.getFluidAmount() / tankInventory.getCapacity();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
|
||||
@@ -484,16 +484,6 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
fluidCapability.invalidate();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyUpdate() {
|
||||
super.notifyUpdate();
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.drmangotea.createindustry.blocks.engines.diesel.engine_expansion;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
|
||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
@@ -11,9 +10,6 @@ import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
public class DieselEngineExpansionBlock extends DirectionalBlock implements IBE<DieselEngineExpansionBlockEntity>, IWrenchable {
|
||||
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
package com.drmangotea.createindustry.blocks.engines.intake;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||
import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -19,19 +21,11 @@ import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.drmangotea.createindustry.blocks.engines.intake.AirIntakeBlock.INVISIBLE;
|
||||
import static com.simibubi.create.content.kinetics.base.DirectionalKineticBlock.FACING;
|
||||
@@ -58,7 +52,7 @@ public class AirIntakeBlockEntity extends KineticBlockEntity implements IWrencha
|
||||
public LerpedFloat visual_angle = LerpedFloat.angular();
|
||||
|
||||
protected FluidTank tankInventory;
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
|
||||
|
||||
|
||||
@@ -79,7 +73,7 @@ public class AirIntakeBlockEntity extends KineticBlockEntity implements IWrencha
|
||||
int production = ((int) maxShaftSpeed * ((diameter * diameter))) / 10;
|
||||
if (tankInventory.getFluidAmount() + production <= tankInventory.getCapacity()) {
|
||||
//tankInventory.fill(new FluidStack(TFMGFluids.AIR.getSource(), production), IFluidHandler.FluidAction.EXECUTE);
|
||||
tankInventory.setFluid(new FluidStack(TFMGFluids.AIR.getSource(), production + tankInventory.getFluidAmount()));
|
||||
tankInventory.setFluid(new FluidStack(FluidVariant.of(TFMGFluids.AIR.getSource()), production + tankInventory.getFluidAmount()));
|
||||
// if(controller!=null) {
|
||||
// ((AirIntakeBlockEntity) level.getBlockEntity(controller)).setChanged();
|
||||
// ((AirIntakeBlockEntity) level.getBlockEntity(controller)).sendData();
|
||||
@@ -237,30 +231,9 @@ public class AirIntakeBlockEntity extends KineticBlockEntity implements IWrencha
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
|
||||
|
||||
|
||||
if (!fluidCapability.isPresent()) {
|
||||
refreshCapability();
|
||||
sendData();
|
||||
setChanged();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
private void refreshCapability() {
|
||||
|
||||
IFluidHandler handlerForCapability;
|
||||
FluidTank handlerForCapability;
|
||||
|
||||
if (controller == null || controller == this.getBlockPos()
|
||||
|
||||
@@ -272,8 +245,8 @@ public class AirIntakeBlockEntity extends KineticBlockEntity implements IWrencha
|
||||
}else handlerForCapability = tankInventory;
|
||||
|
||||
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
IFluidHandler finalHandlerForCapability = handlerForCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
FluidTank finalHandlerForCapability = handlerForCapability;
|
||||
fluidCapability = LazyOptional.of(() -> finalHandlerForCapability);
|
||||
//oldCap.invalidate();
|
||||
}
|
||||
|
||||
@@ -12,6 +12,11 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -26,25 +31,15 @@ import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
public class LowGradeFuelEngineBlockEntity extends GeneratingKineticBlockEntity implements IHaveGoggleInformation, IWrenchable {
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<CombinedTankWrapper> fluidCapability;
|
||||
protected FluidTank tankInventory;
|
||||
|
||||
protected FluidTank lubricationOilTank;
|
||||
@@ -87,9 +82,7 @@ boolean signalChanged;
|
||||
|
||||
|
||||
//fluidCapability = LazyOptional.of(() -> tankInventory);
|
||||
fluidCapability = LazyOptional.of(() -> {
|
||||
return new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank );
|
||||
});
|
||||
fluidCapability = LazyOptional.of(() -> new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank ));
|
||||
|
||||
signal = 0;
|
||||
setLazyTickRate(40);
|
||||
@@ -443,7 +436,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
private void makeSound(){
|
||||
soundTimer=0;
|
||||
|
||||
@@ -499,28 +492,10 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
protected void onFluidStackChanged(FluidStack newFluidStack) {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public float getFillState() {
|
||||
return (float) tankInventory.getFluidAmount() / tankInventory.getCapacity();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
@@ -529,7 +504,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.drmangotea.createindustry.blocks.engines.radial;
|
||||
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.blocks.engines.radial.input.RadialEngineInputBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
@@ -18,6 +17,11 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -31,27 +35,18 @@ import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static net.minecraft.world.level.block.DirectionalBlock.FACING;
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
public class RadialEngineBlockEntity extends GeneratingKineticBlockEntity implements IHaveGoggleInformation, IWrenchable {
|
||||
|
||||
public LazyOptional<IFluidHandler> fluidCapability;
|
||||
public LazyOptional<CombinedTankWrapper> fluidCapability;
|
||||
protected FluidTank tankInventory;
|
||||
|
||||
protected FluidTank lubricationOilTank;
|
||||
@@ -100,9 +95,7 @@ public class RadialEngineBlockEntity extends GeneratingKineticBlockEntity implem
|
||||
|
||||
|
||||
//fluidCapability = LazyOptional.of(() -> tankInventory);
|
||||
fluidCapability = LazyOptional.of(() -> {
|
||||
return new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank );
|
||||
});
|
||||
fluidCapability = LazyOptional.of(() -> new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank ));
|
||||
|
||||
signal = 0;
|
||||
setLazyTickRate(40);
|
||||
@@ -559,7 +552,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
private void makeSound(){
|
||||
soundTimer=0;
|
||||
|
||||
@@ -612,16 +605,6 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
return (float) tankInventory.getFluidAmount() / tankInventory.getCapacity();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
//if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
// return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
@@ -630,7 +613,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.drmangotea.createindustry.blocks.engines.radial.input;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.blocks.engines.radial.RadialEngineBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
@@ -11,9 +10,6 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.List;
|
||||
@@ -78,18 +74,6 @@ public class RadialEngineInputBlockEntity extends SmartBlockEntity {
|
||||
signal = newSignal;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("'net.minecraftforge.items.CapabilityItemHandler' is deprecated and marked for removal ")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
|
||||
if(engine!=null)
|
||||
if(side == this.getBlockState().getValue(FACING))
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return engine.fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(CompoundTag compound, boolean clientPacket) {
|
||||
compound.putInt("Signal", signal);
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
package com.drmangotea.createindustry.blocks.engines.radial.large;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.engines.radial.RadialEngineBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.drmangotea.createindustry.registry.TFMGTags;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
|
||||
public class LargeRadialEngineBlockEntity extends RadialEngineBlockEntity {
|
||||
public LargeRadialEngineBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
|
||||
@@ -15,6 +15,11 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -28,27 +33,17 @@ import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.simibubi.create.content.kinetics.base.DirectionalKineticBlock.FACING;
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
public abstract class AbstractEngineBlockEntity extends GeneratingKineticBlockEntity implements IHaveGoggleInformation, IWrenchable {
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
protected FluidTank tankInventory;
|
||||
|
||||
protected FluidTank lubricationOilTank;
|
||||
@@ -540,7 +535,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
private void makeSound(){
|
||||
soundTimer=0;
|
||||
if(this instanceof TurbineEngineTileEntity){
|
||||
@@ -610,17 +605,6 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
return (float) tankInventory.getFluidAmount() / tankInventory.getCapacity();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
@@ -629,7 +613,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -17,26 +20,18 @@ import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class EngineBackBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation {
|
||||
public class EngineBackBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation {
|
||||
|
||||
|
||||
|
||||
public int consumptionTimer=0;
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
public FluidTank tankInventory;
|
||||
|
||||
|
||||
@@ -197,12 +192,12 @@ import java.util.Optional;
|
||||
|
||||
|
||||
private void refreshCapability() {
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
fluidCapability = LazyOptional.of(() -> handlerForCapability());
|
||||
oldCap.invalidate();
|
||||
}
|
||||
|
||||
private IFluidHandler handlerForCapability() {
|
||||
private FluidTank handlerForCapability() {
|
||||
|
||||
return tankInventory;
|
||||
}
|
||||
@@ -231,24 +226,12 @@ import java.util.Optional;
|
||||
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
|
||||
}
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@ import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraftforge.fluids.ForgeFlowingFluid;
|
||||
|
||||
/**
|
||||
* makes fluid burn when close to fire,
|
||||
|
||||
@@ -238,18 +238,6 @@ public class ExhaustBlockEntity extends SmartBlockEntity implements IHaveGoggleI
|
||||
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
|
||||
|
||||
@@ -114,15 +114,7 @@ public class FireboxBlockEntity extends SmartBlockEntity {
|
||||
fluidCapability = LazyOptional.of(() -> handlerForCapability());
|
||||
oldCap.invalidate();
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
private FluidTank handlerForCapability() {
|
||||
|
||||
return tankInventory;
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
@@ -199,13 +200,12 @@ public class FlarestackBlockEntity extends SmartBlockEntity implements IHaveGogg
|
||||
|
||||
|
||||
private void refreshCapability() {
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
fluidCapability = LazyOptional.of(() -> handlerForCapability());
|
||||
oldCap.invalidate();
|
||||
}
|
||||
|
||||
private IFluidHandler handlerForCapability() {
|
||||
|
||||
private FluidTank handlerForCapability() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
@@ -233,25 +233,12 @@ public class FlarestackBlockEntity extends SmartBlockEntity implements IHaveGogg
|
||||
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
|
||||
}
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -383,16 +383,7 @@ public class BlastFurnaceOutputBlockEntity extends TFMGMachineBlockEntity implem
|
||||
super.invalidate();
|
||||
itemCapability.invalidate();
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if (cap == ForgeCapabilities.ITEM_HANDLER)
|
||||
return itemCapability.cast();
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
public void checkType(){
|
||||
|
||||
mainFloor = this.getBlockPos().relative(outputFacing.getOpposite());
|
||||
|
||||
@@ -266,16 +266,7 @@ public class CastingBasinBlockEntity extends TFMGMachineBlockEntity implements I
|
||||
super.invalidate();
|
||||
itemCapability.invalidate();
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
|
||||
return itemCapability.cast();
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
protected Object getRecipeCacheKey() {
|
||||
return CastingRecipesKey;
|
||||
}
|
||||
|
||||
@@ -509,19 +509,6 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
|
||||
super.invalidate();
|
||||
itemCapability.invalidate();
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if(controller!=null)
|
||||
refreshCapability();
|
||||
if (cap == ForgeCapabilities.ITEM_HANDLER)
|
||||
return itemCapability.cast();
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
|
||||
@@ -221,16 +221,6 @@ public class DistillationControllerBlockEntity extends SmartBlockEntity implemen
|
||||
return DistillationRecipesKey;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
public ArrayList<DistillationOutputBlockEntity> getOutputs(){
|
||||
ArrayList<DistillationOutputBlockEntity> outputs = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -45,13 +45,6 @@ public class DistillationOutputBlockEntity extends SmartBlockEntity implements I
|
||||
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
@Override
|
||||
protected void read(CompoundTag compound, boolean clientPacket) {
|
||||
super.read(compound, clientPacket);
|
||||
|
||||
@@ -254,13 +254,5 @@ public class PumpjackBaseBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
|
||||
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal;
|
||||
|
||||
import com.jozufozu.flywheel.core.PartialModel;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel;
|
||||
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
|
||||
import net.fabricmc.fabric.api.rendering.data.v1.RenderAttachedBlockView;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class GeneralPipeAttachmentModel extends ForwardingBakedModel {
|
||||
final Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> attachments;
|
||||
final PartialModel casing;
|
||||
|
||||
public GeneralPipeAttachmentModel(BakedModel wrapped, Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> attachments, PartialModel casing) {
|
||||
this.wrapped = wrapped;
|
||||
this.attachments = attachments;
|
||||
this.casing = casing;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVanillaAdapter() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void emitBlockQuads(BlockAndTintGetter world, BlockState state, BlockPos pos, Supplier<RandomSource> randomSupplier, RenderContext context) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
RenderAttachedBlockView attachmentView = (RenderAttachedBlockView) world;
|
||||
Object attachment = attachmentView.getBlockEntityRenderAttachment(pos);
|
||||
if (attachment instanceof FluidTransportBehaviour.AttachmentTypes[] attachments) {
|
||||
for (int i = 0; i < attachments.length; i++) {
|
||||
data.putAttachment(Iterate.directions[i], attachments[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
|
||||
super.emitBlockQuads(world, state, pos, randomSupplier, context);
|
||||
|
||||
addQuads(world, state, pos, randomSupplier, context, data);
|
||||
}
|
||||
|
||||
private void addQuads(BlockAndTintGetter world, BlockState state, BlockPos pos, Supplier<RandomSource> randomSupplier, RenderContext context,
|
||||
PipeModelData pipeData) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
bracket.emitBlockQuads(world, state, pos, randomSupplier, context);
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
attachments.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.emitBlockQuads(world, state, pos, randomSupplier, context);
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
(casing.get())
|
||||
.emitBlockQuads(world, state, pos, randomSupplier, context);
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private final FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.aluminum;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelData;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelProperty;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class AluminumPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public AluminumPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.ALUMINUM_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.ALUMINUM_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.brass;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelData;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelProperty;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class BrassPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public BrassPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.BRASS_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.BRASS_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.cast_iron;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelData;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelProperty;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class CastIronPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public CastIronPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.CAST_IRON_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.CAST_IRON_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.plastic;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelData;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelProperty;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class PlasticPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public PlasticPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.PLASTIC_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.PLASTIC_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.steel;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelData;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelProperty;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class SteelPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public SteelPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.STEEL_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.STEEL_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
public class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,6 +7,8 @@ import com.simibubi.create.content.fluids.tank.FluidTankCTBehaviour;
|
||||
import com.simibubi.create.foundation.block.connected.CTModel;
|
||||
import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelData;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelProperty;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
@@ -15,8 +17,6 @@ import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
@@ -11,14 +11,14 @@ import com.simibubi.create.foundation.fluid.FluidRenderer;
|
||||
import com.simibubi.create.foundation.render.CachedBufferer;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
public class SteelFluidTankRenderer extends SafeBlockEntityRenderer<SteelTankBlockEntity> {
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.drmangotea.createindustry.blocks.tanks;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
|
||||
import com.simibubi.create.api.connectivity.ConnectivityHandler;
|
||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||
@@ -47,11 +46,6 @@ import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.common.util.ForgeSoundType;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
|
||||
public class SteelTankBlock extends Block implements IWrenchable, IBE<SteelTankBlockEntity> {
|
||||
|
||||
|
||||
@@ -1,47 +1,31 @@
|
||||
package com.drmangotea.createindustry.blocks.tanks;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.controller.DistillationControllerBlock;
|
||||
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.output.DistillationOutputBlock;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.api.connectivity.ConnectivityHandler;
|
||||
import com.simibubi.create.content.decoration.steamWhistle.WhistleBlock;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.content.fluids.tank.BoilerHeaters;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankBlock;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity;
|
||||
import com.simibubi.create.content.kinetics.steamEngine.SteamEngineBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.IMultiBlockEntityContainer;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
|
||||
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.NbtUtils;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidType;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
@@ -53,7 +37,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
|
||||
private static final int MAX_SIZE = 3;
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
protected boolean forceFluidLevelUpdate;
|
||||
public FluidTank tankInventory;
|
||||
protected BlockPos controller;
|
||||
@@ -166,7 +150,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
if (!hasLevel())
|
||||
return;
|
||||
|
||||
FluidType attributes = newFluidStack.getFluid()
|
||||
FluidVariant attributes = newFluidStack.getFluid()
|
||||
.getFluidType();
|
||||
int luminosity = (int) (attributes.getLightLevel(newFluidStack) / 1.2f);
|
||||
boolean reversed = attributes.isLighterThanAir();
|
||||
@@ -226,7 +210,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
|
||||
public void applyFluidTankSize(int blocks) {
|
||||
tankInventory.setCapacity(blocks * getCapacityMultiplier());
|
||||
int overflow = tankInventory.getFluidAmount() - tankInventory.getCapacity();
|
||||
long overflow = tankInventory.getFluidAmount() - tankInventory.getCapacity();
|
||||
if (overflow > 0)
|
||||
tankInventory.drain(overflow, FluidAction.EXECUTE);
|
||||
forceFluidLevelUpdate = true;
|
||||
@@ -421,7 +405,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
}
|
||||
|
||||
public void refreshCapability() {
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
fluidCapability = LazyOptional.of(() -> handlerForCapability());
|
||||
oldCap.invalidate();
|
||||
}
|
||||
@@ -430,7 +414,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
|
||||
|
||||
|
||||
private IFluidHandler handlerForCapability() {
|
||||
private FluidTank handlerForCapability() {
|
||||
return isController() ?
|
||||
tankInventory
|
||||
: getControllerBE() != null ? getControllerBE().handlerForCapability() : tankInventory;
|
||||
@@ -576,24 +560,12 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
forceFluidLevelUpdate = false;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
//registerAwardables(behaviours, AllAdvancements.STEAM_ENGINE_MAXED, AllAdvancements.PIPE_ORGAN);
|
||||
}
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
@@ -705,7 +677,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTankSize(int tank) {
|
||||
public long getTankSize(int tank) {
|
||||
return getCapacityMultiplier();
|
||||
}
|
||||
|
||||
@@ -715,7 +687,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
}
|
||||
|
||||
@Override
|
||||
public IFluidTank getTank(int tank) {
|
||||
public FluidTank getTank(int tank) {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.drmangotea.createindustry.blocks.tanks;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
|
||||
import com.simibubi.create.api.connectivity.ConnectivityHandler;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -15,7 +16,6 @@ import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
public class SteelTankItem extends BlockItem {
|
||||
|
||||
|
||||
@@ -1,27 +1,19 @@
|
||||
package com.drmangotea.createindustry.items;
|
||||
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraftforge.common.property.Properties;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class CoalCokeItem extends Item {
|
||||
|
||||
|
||||
|
||||
|
||||
public CoalCokeItem(Properties p_40566_) {
|
||||
super( p_40566_);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
|
||||
return 3200;
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,9 +9,10 @@ import com.simibubi.create.content.equipment.armor.BacktankUtil;
|
||||
import com.simibubi.create.content.equipment.potatoCannon.*;
|
||||
import com.simibubi.create.content.equipment.zapper.ShootableGadgetItemMethods;
|
||||
import com.simibubi.create.foundation.item.CustomArmPoseItem;
|
||||
import com.simibubi.create.foundation.item.render.SimpleCustomRenderer;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.HumanoidModel.ArmPose;
|
||||
import net.minecraft.client.player.AbstractClientPlayer;
|
||||
@@ -29,13 +30,9 @@ import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class AdvancedPotatoCannonItem extends ProjectileWeaponItem implements CustomArmPoseItem {
|
||||
@@ -173,7 +170,7 @@ public class AdvancedPotatoCannonItem extends ProjectileWeaponItem implements Cu
|
||||
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static Optional<ItemStack> getAmmoforPreview(ItemStack cannon) {
|
||||
if (AnimationTickHolder.getTicks() % 3 != 0)
|
||||
return Optional.of(CLIENT_CURRENT_AMMO)
|
||||
@@ -223,7 +220,7 @@ public class AdvancedPotatoCannonItem extends ProjectileWeaponItem implements Cu
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
|
||||
consumer.accept(SimpleCustomRenderer.create(this, new AdvancedPotatoCannonItemRenderer()));
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.UseAnim;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class FlamethrowerItem extends Item implements CustomArmPoseItem {
|
||||
|
||||
@@ -5,24 +5,20 @@ import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.drmangotea.createindustry.registry.TFMGMobEffects;
|
||||
import net.minecraft.core.NonNullList;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResultHolder;
|
||||
import net.minecraft.world.effect.MobEffect;
|
||||
import net.minecraft.world.effect.MobEffectInstance;
|
||||
import net.minecraft.world.effect.MobEffects;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.*;
|
||||
import net.minecraft.world.item.enchantment.Enchantment;
|
||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraftforge.registries.RegistryObject;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -126,11 +122,11 @@ public class LitLithiumBladeItem extends SwordItem {
|
||||
|
||||
|
||||
|
||||
}else {
|
||||
ItemStack stack1 = new ItemStack(TFMGItems.LITHIUM_BLADE.get(),1,stack.getOrCreateTag());
|
||||
} else {
|
||||
ItemStack stack1 = TFMGItems.LITHIUM_BLADE.asStack();
|
||||
|
||||
|
||||
Map<Enchantment, Integer> enchantments = stack.getAllEnchantments();
|
||||
Map<Enchantment, Integer> enchantments = EnchantmentHelper.getEnchantments(stack);
|
||||
|
||||
enchantments.forEach(stack1::enchant);
|
||||
|
||||
@@ -141,15 +137,6 @@ public class LitLithiumBladeItem extends SwordItem {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) {
|
||||
|
||||
if(!slotChanged)
|
||||
return false;
|
||||
|
||||
return super.shouldCauseReequipAnimation(oldStack, newStack, slotChanged);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillItemCategory(CreativeModeTab pCategory, NonNullList<ItemStack> pItems) {
|
||||
//nah
|
||||
|
||||
@@ -14,6 +14,8 @@ import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.Components;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.HumanoidModel;
|
||||
@@ -40,8 +42,6 @@ import net.minecraft.world.item.enchantment.Enchantments;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
@@ -197,7 +197,7 @@ public class QuadPotatoCannonItem extends ProjectileWeaponItem implements Custom
|
||||
.map($ -> findAmmo);
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static Optional<ItemStack> getAmmoforPreview(ItemStack cannon) {
|
||||
if (AnimationTickHolder.getTicks() % 3 != 0)
|
||||
return Optional.of(CLIENT_CURRENT_AMMO)
|
||||
@@ -215,7 +215,7 @@ public class QuadPotatoCannonItem extends ProjectileWeaponItem implements Custom
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public void appendHoverText(ItemStack stack, Level world, List<Component> tooltip, TooltipFlag flag) {
|
||||
int power = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.POWER_ARROWS, stack);
|
||||
int punch = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.PUNCH_ARROWS, stack);
|
||||
|
||||
@@ -2,10 +2,8 @@ package com.drmangotea.createindustry.mixins;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.worldgen.TFMGLayeredPatterns;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.data.DynamicDataProvider;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.infrastructure.worldgen.AllLayerPatterns;
|
||||
import com.simibubi.create.infrastructure.worldgen.AllOreFeatureConfigEntries;
|
||||
import com.simibubi.create.infrastructure.worldgen.OreFeatureConfigEntry;
|
||||
@@ -17,9 +15,6 @@ import net.minecraft.tags.BiomeTags;
|
||||
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.common.world.BiomeModifier;
|
||||
import net.minecraftforge.data.event.GatherDataEvent;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
package com.drmangotea.createindustry.mixins;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.drmangotea.createindustry.base.TFMGPipeModelData;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.plastic.PlasticPipeAttachmentModel;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.PipeAttachmentModel;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -19,7 +17,6 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
|
||||
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
@@ -35,7 +32,6 @@ import net.minecraftforge.client.model.data.ModelData.Builder;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
@Mixin(PipeAttachmentModel.class)
|
||||
|
||||
@@ -6,27 +6,19 @@ import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ScreenEffectRenderer;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.FluidTags;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import static net.minecraft.client.renderer.ScreenEffectRenderer.renderFluid;
|
||||
|
||||
@Mixin(ScreenEffectRenderer.class)
|
||||
public class ScreenEffectRendererMixin {
|
||||
public abstract class ScreenEffectRendererMixin {
|
||||
|
||||
private static final ResourceLocation MOLTEN_METAL_OVERLAY = CreateTFMG.asResource("textures/gui/molten_metal.png");
|
||||
|
||||
|
||||
|
||||
@Inject(method = "renderScreenEffect", at = @At("HEAD"))
|
||||
private static void renderScreenEffect(Minecraft p_110719_, PoseStack p_110720_, CallbackInfo ci) {
|
||||
|
||||
|
||||
|
||||
if (!p_110719_.player.isSpectator()) {
|
||||
if (p_110719_.player.getLevel().getBlockState(p_110719_.player.getOnPos().above(2)).is(TFMGBlocks.MOLTEN_METAL.get())) {
|
||||
renderMoltenMetal(p_110719_, p_110720_);
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.simibubi.create.compat.jei.category.CreateRecipeCategory;
|
||||
import com.simibubi.create.foundation.gui.AllGuiTextures;
|
||||
import mezz.jei.api.forge.ForgeTypes;
|
||||
import mezz.jei.api.fabric.constants.FabricTypes;
|
||||
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
|
||||
import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
|
||||
import mezz.jei.api.recipe.IFocusGroup;
|
||||
@@ -70,7 +70,7 @@ public class CastingCategory extends CreateRecipeCategory<CastingRecipe> {
|
||||
builder
|
||||
.addSlot(RecipeIngredientRole.INPUT, 2, 33)
|
||||
.setBackground(getRenderedSlot(), -1, -1)
|
||||
.addIngredients(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getInputFluid().getMatchingFluidStacks()))
|
||||
.addIngredients(FabricTypes.FLUID_STACK, withImprovedVisibility(recipe.getInputFluid().getMatchingFluidStacks()))
|
||||
.addTooltipCallback(addFluidTooltip(111));
|
||||
|
||||
|
||||
|
||||
@@ -8,12 +8,12 @@ import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.simibubi.create.compat.jei.category.CreateRecipeCategory;
|
||||
import com.simibubi.create.foundation.gui.AllGuiTextures;
|
||||
import mezz.jei.api.forge.ForgeTypes;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import mezz.jei.api.fabric.constants.FabricTypes;
|
||||
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
|
||||
import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
|
||||
import mezz.jei.api.recipe.IFocusGroup;
|
||||
import mezz.jei.api.recipe.RecipeIngredientRole;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
@@ -48,13 +48,13 @@ public class CokingCategory extends CreateRecipeCategory<CokingRecipe> {
|
||||
builder
|
||||
.addSlot(RecipeIngredientRole.OUTPUT,160, 46)
|
||||
.setBackground(getRenderedSlot(), -1, -1)
|
||||
.addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(new FluidStack(TFMGFluids.CARBON_DIOXIDE.get(),5000)))
|
||||
.addIngredient(FabricTypes.FLUID_STACK, withImprovedVisibility(new FluidStack(TFMGFluids.CARBON_DIOXIDE.get(),5000)))
|
||||
.addTooltipCallback(addFluidTooltip(5000));
|
||||
|
||||
builder
|
||||
.addSlot(RecipeIngredientRole.OUTPUT,160, 22)
|
||||
.setBackground(getRenderedSlot(), -1, -1)
|
||||
.addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getFluidResults().get(0)))
|
||||
.addIngredient(FabricTypes.FLUID_STACK, withImprovedVisibility(recipe.getFluidResults().get(0)))
|
||||
.addTooltipCallback(addFluidTooltip(recipe.getFluidResults().get(0).getAmount()));
|
||||
|
||||
}
|
||||
|
||||
@@ -4,18 +4,15 @@ package com.drmangotea.createindustry.recipes.jei;
|
||||
|
||||
import com.drmangotea.createindustry.recipes.industrial_blasting.IndustrialBlastingRecipe;
|
||||
import com.drmangotea.createindustry.recipes.jei.machines.BlastFurnace;
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.simibubi.create.compat.jei.category.CreateRecipeCategory;
|
||||
import com.simibubi.create.foundation.gui.AllGuiTextures;
|
||||
import mezz.jei.api.forge.ForgeTypes;
|
||||
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
|
||||
import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
|
||||
import mezz.jei.api.recipe.IFocusGroup;
|
||||
import mezz.jei.api.recipe.RecipeIngredientRole;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
@@ -62,14 +59,13 @@ public class IndustrialBlastingCategory extends CreateRecipeCategory<IndustrialB
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(IndustrialBlastingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, PoseStack matrixStack, double mouseX, double mouseY) {
|
||||
public void draw(IndustrialBlastingRecipe recipe, IRecipeSlotsView recipeSlotsView, net.minecraft.class_4587 stack, double mouseX, double mouseY) {
|
||||
blastFurnace
|
||||
.draw(matrixStack, 50, 135);
|
||||
.draw(stack, 50, 135);
|
||||
|
||||
AllGuiTextures.JEI_ARROW.render(stack, 96, 121);
|
||||
|
||||
AllGuiTextures.JEI_ARROW.render(matrixStack, 96, 121);
|
||||
|
||||
AllGuiTextures.JEI_DOWN_ARROW.render(matrixStack, 45, 15);
|
||||
AllGuiTextures.JEI_DOWN_ARROW.render(stack, 45, 15);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.tterrag.registrate.util.entry.EntityEntry;
|
||||
import com.tterrag.registrate.util.nullness.NonNullConsumer;
|
||||
import com.tterrag.registrate.util.nullness.NonNullFunction;
|
||||
import com.tterrag.registrate.util.nullness.NonNullSupplier;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderer;
|
||||
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
@@ -68,13 +69,13 @@ public class TFMGEntityTypes {
|
||||
private static <T extends Entity> CreateEntityBuilder<T, ?> register(String name, EntityType.EntityFactory<T> factory,
|
||||
NonNullSupplier<NonNullFunction<EntityRendererProvider.Context, EntityRenderer<? super T>>> renderer,
|
||||
MobCategory group, int range, int updateFrequency, boolean sendVelocity, boolean immuneToFire,
|
||||
NonNullConsumer<EntityType.Builder<T>> propertyBuilder) {
|
||||
NonNullConsumer<FabricEntityTypeBuilder<T>> propertyBuilder) {
|
||||
String id = Lang.asId(name);
|
||||
return (CreateEntityBuilder<T, ?>) CreateTFMG.REGISTRATE
|
||||
.entity(id, factory, group)
|
||||
.properties(b -> b.setTrackingRange(range)
|
||||
.setUpdateInterval(updateFrequency)
|
||||
.setShouldReceiveVelocityUpdates(sendVelocity))
|
||||
.properties(b -> b.trackRangeBlocks(range)
|
||||
.trackedUpdateRate(updateFrequency)
|
||||
.forceTrackedVelocityUpdates(sendVelocity))
|
||||
.properties(propertyBuilder)
|
||||
.properties(b -> {
|
||||
if (immuneToFire)
|
||||
|
||||
@@ -81,8 +81,7 @@ public class TFMGFluids {
|
||||
|
||||
|
||||
public static final FluidEntry<ConcreteFluid> COOLING_FLUID =
|
||||
REGISTRATE.fluid("cooling_fluid",COOLING_FLUID_STILL_RL,COOLING_FLUID_FLOW_RL,
|
||||
p -> new ConcreteFluid(p)
|
||||
REGISTRATE.fluid("cooling_fluid",COOLING_FLUID_STILL_RL,COOLING_FLUID_FLOW_RL, ConcreteFluid::new
|
||||
// ConcreteFluidType.create(0x333333,
|
||||
// () -> 1f / 24f )
|
||||
)
|
||||
@@ -124,10 +123,11 @@ public class TFMGFluids {
|
||||
|
||||
|
||||
|
||||
public static final FluidEntry<SimpleFlowableFluid> LIQUID_CONCRETE =
|
||||
REGISTRATE.fluid("liquid_concrete",CONCRETE_RL,CONCRETE_RL,
|
||||
ConcreteFluidType.create(0x333333,
|
||||
() -> 1f / 24f ))
|
||||
public static final FluidEntry<ConcreteFluid> LIQUID_CONCRETE =
|
||||
REGISTRATE.fluid("liquid_concrete",CONCRETE_RL,CONCRETE_RL, ConcreteFluid::new
|
||||
// ConcreteFluidType.create(0x333333,
|
||||
// () -> 1f / 24f )
|
||||
)
|
||||
.lang("Liquid Concrete")
|
||||
.fluidProperties(p -> p.levelDecreasePerBlock(0)
|
||||
.tickRate(99999)
|
||||
@@ -140,10 +140,11 @@ public class TFMGFluids {
|
||||
.build()
|
||||
.register();
|
||||
|
||||
public static final FluidEntry<SimpleFlowableFluid> LIQUID_ASPHALT =
|
||||
REGISTRATE.fluid("liquid_asphalt", ASPHALT_RL, ASPHALT_RL,
|
||||
ConcreteFluidType.create(0x333333,
|
||||
() -> 1f / 24f ))
|
||||
public static final FluidEntry<ConcreteFluid> LIQUID_ASPHALT =
|
||||
REGISTRATE.fluid("liquid_asphalt", ASPHALT_RL, ASPHALT_RL, ConcreteFluid::new
|
||||
// ConcreteFluidType.create(0x333333,
|
||||
// () -> 1f / 24f )
|
||||
)
|
||||
.lang("Liquid Asphalt")
|
||||
.fluidProperties(p -> p.levelDecreasePerBlock(0)
|
||||
.tickRate(99999)
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.drmangotea.createindustry.registry;
|
||||
|
||||
import net.fabricmc.fabric.api.registry.FuelRegistry;
|
||||
|
||||
public class TFMGFuels {
|
||||
private FuelRegistry registry = FuelRegistry.INSTANCE;
|
||||
|
||||
public void register() {
|
||||
registry.add(TFMGItems.COAL_COKE.get(), 3200);
|
||||
registry.add(TFMGItems.COAL_COKE.get(), 3200);
|
||||
}
|
||||
}
|
||||
@@ -190,8 +190,8 @@ public class TFMGItems {
|
||||
.model((c, p) -> p.withExistingParent(c.getName(), CreateTFMG.asResource("item/unfinished_engine")))
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<CoalCokeItem>
|
||||
COAL_COKE_DUST = REGISTRATE.item("coal_coke_dust", CoalCokeItem::new)
|
||||
public static final ItemEntry<Item>
|
||||
COAL_COKE_DUST = REGISTRATE.item("coal_coke_dust", Item::new)
|
||||
.tag(forgeItemTag("dusts/coal_coke"))
|
||||
.register();
|
||||
|
||||
@@ -222,7 +222,7 @@ public class TFMGItems {
|
||||
public static final ItemEntry<CastingMoldItem>
|
||||
BLOCK_MOLD = REGISTRATE.item("block_mold", p -> new CastingMoldItem(p, CastingBasinBlockEntity.MoldType.BLOCK)).properties(p -> p.stacksTo(1)).register(),
|
||||
INGOT_MOLD = REGISTRATE.item("ingot_mold", p -> new CastingMoldItem(p, CastingBasinBlockEntity.MoldType.INGOT)).properties(p -> p.stacksTo(1)).register();
|
||||
public static final ItemEntry<CoalCokeItem> COAL_COKE = REGISTRATE.item("coal_coke", CoalCokeItem::new)
|
||||
public static final ItemEntry<Item> COAL_COKE = REGISTRATE.item("coal_coke", Item::new)
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<ScrewdriverItem> SCREWDRIVER = REGISTRATE.item("screwdriver", ScrewdriverItem::new)
|
||||
|
||||
@@ -6,10 +6,12 @@ import com.drmangotea.createindustry.items.weapons.quad_potato_cannon.QuadPotato
|
||||
|
||||
import com.simibubi.create.foundation.networking.SimplePacketBase;
|
||||
import io.github.fabricators_of_create.porting_lib.util.NetworkDirection;
|
||||
import me.pepperbell.simplenetworking.S2CPacket;
|
||||
import me.pepperbell.simplenetworking.SimpleChannel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
@@ -37,12 +39,7 @@ public enum TFMGPackets {
|
||||
}
|
||||
|
||||
public static void registerPackets() {
|
||||
channel = NetworkRegistry.ChannelBuilder.named(CHANNEL_NAME)
|
||||
.serverAcceptedVersions(NETWORK_VERSION_STR::equals)
|
||||
.clientAcceptedVersions(NETWORK_VERSION_STR::equals)
|
||||
.networkProtocolVersion(() -> NETWORK_VERSION_STR)
|
||||
.simpleChannel();
|
||||
|
||||
channel = new SimpleChannel(CHANNEL_NAME);
|
||||
for (TFMGPackets packet : values())
|
||||
packet.packetType.register();
|
||||
}
|
||||
@@ -52,39 +49,27 @@ public enum TFMGPackets {
|
||||
}
|
||||
|
||||
public static void sendToNear(Level world, BlockPos pos, int range, Object message) {
|
||||
getChannel().send(
|
||||
PacketDistributor.NEAR.with(PacketDistributor.TargetPoint.p(pos.getX(), pos.getY(), pos.getZ(), range, world.dimension())),
|
||||
message);
|
||||
getChannel().sendToClientsAround((S2CPacket) message, (ServerLevel) world, pos, range);
|
||||
}
|
||||
|
||||
private static class PacketType<T extends SimplePacketBase> {
|
||||
private static int index = 0;
|
||||
|
||||
private BiConsumer<T, FriendlyByteBuf> encoder;
|
||||
private Function<FriendlyByteBuf, T> decoder;
|
||||
private BiConsumer<T, Supplier<NetworkEvent.Context>> handler;
|
||||
private Class<T> type;
|
||||
private NetworkDirection direction;
|
||||
|
||||
private PacketType(Class<T> type, Function<FriendlyByteBuf, T> factory, NetworkDirection direction) {
|
||||
encoder = T::write;
|
||||
decoder = factory;
|
||||
handler = (packet, contextSupplier) -> {
|
||||
NetworkEvent.Context context = contextSupplier.get();
|
||||
if (packet.handle(context)) {
|
||||
context.setPacketHandled(true);
|
||||
}
|
||||
};
|
||||
this.type = type;
|
||||
this.direction = direction;
|
||||
}
|
||||
|
||||
private void register() {
|
||||
getChannel().messageBuilder(type, index++, direction)
|
||||
.encoder(encoder)
|
||||
.decoder(decoder)
|
||||
.consumerNetworkThread(handler)
|
||||
.add();
|
||||
switch (direction) {
|
||||
case PLAY_TO_CLIENT -> getChannel().registerS2CPacket(type, index++, decoder);
|
||||
case PLAY_TO_SERVER -> getChannel().registerC2SPacket(type, index++, decoder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user