132 YIPEE

This commit is contained in:
DaCodia
2024-08-06 23:02:05 -05:00
parent b508cfef9f
commit f6031652c2
62 changed files with 311 additions and 1322 deletions

View File

@@ -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

View File

@@ -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();

View File

@@ -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) {

View File

@@ -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;

View File

@@ -1,7 +1,5 @@
package com.drmangotea.createindustry.blocks.electricity.base;
import net.minecraftforge.energy.EnergyStorage;
public abstract class TFMGForgeEnergyStorage extends EnergyStorage {

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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<>();

View File

@@ -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

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();

View File

@@ -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();

View File

@@ -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 {

View File

@@ -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();
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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,

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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());

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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<>();

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;

View File

@@ -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> {

View File

@@ -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> {

View File

@@ -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;
}

View File

@@ -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 {

View File

@@ -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 ;
}
}

View File

@@ -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()));
}

View File

@@ -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 {

View File

@@ -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

View File

@@ -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);

View File

@@ -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;

View File

@@ -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)

View File

@@ -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_);

View File

@@ -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));

View File

@@ -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()));
}

View File

@@ -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);
}

View File

@@ -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)

View File

@@ -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)

View File

@@ -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);
}
}

View File

@@ -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)

View File

@@ -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);
}
}
}