1.0
This commit is contained in:
@@ -55,13 +55,13 @@ public class TFMG {
|
||||
REGISTRATE.registerEventListeners(modEventBus);
|
||||
|
||||
TFMGSoundEvents.prepare();
|
||||
|
||||
TFMGPipes.init();
|
||||
TFMGBlocks.init();
|
||||
TFMGBlockEntities.init();
|
||||
TFMGItems.init();
|
||||
TFMGEntityTypes.init();
|
||||
TFMGPartialModels.init();
|
||||
TFMGPipes.init();
|
||||
|
||||
TFMGFluids.init();
|
||||
TFMGMenuTypes.init();
|
||||
TFMGEncasedBlocks.init();
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
package com.drmangotea.tfmg.content.decoration.pipes;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import com.simibubi.create.AllPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour.AttachmentTypes;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour.AttachmentTypes.ComponentPartials;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
|
||||
|
||||
import net.createmod.catnip.data.Iterate;
|
||||
import net.minecraft.client.Minecraft;
|
||||
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 net.minecraftforge.client.ChunkRenderTypeSet;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelData.Builder;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
|
||||
public class SigmaPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
private boolean ao;
|
||||
|
||||
public static SigmaPipeAttachmentModel withAO(BakedModel template) {
|
||||
return new SigmaPipeAttachmentModel(template, true);
|
||||
}
|
||||
|
||||
public static SigmaPipeAttachmentModel withoutAO(BakedModel template) {
|
||||
return new SigmaPipeAttachmentModel(template, false);
|
||||
}
|
||||
|
||||
public SigmaPipeAttachmentModel(BakedModel template, boolean ao) {
|
||||
super(template);
|
||||
this.ao = ao;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(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)
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
List<ChunkRenderTypeSet> set = new ArrayList<>();
|
||||
|
||||
set.add(super.getRenderTypes(state, rand, data));
|
||||
set.add(AllPartialModels.FLUID_PIPE_CASING.get().getRenderTypes(state, rand, data));
|
||||
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
for (Direction d : Iterate.directions) {
|
||||
AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (ComponentPartials partial : type.partials) {
|
||||
ChunkRenderTypeSet attachmentRenderTypeSet = AllPartialModels.PIPE_ATTACHMENTS.get(partial).get(d)
|
||||
.get().getRenderTypes(state, rand, data);
|
||||
set.add(attachmentRenderTypeSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ChunkRenderTypeSet.union(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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useAmbientOcclusion(BlockState state, RenderType renderType) {
|
||||
return ao;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useAmbientOcclusion(BlockState state) {
|
||||
return ao;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useAmbientOcclusion() {
|
||||
return ao;
|
||||
}
|
||||
|
||||
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) {
|
||||
AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (ComponentPartials partial : type.partials) {
|
||||
quads.addAll(AllPartialModels.PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(AllPartialModels.FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new AttachmentTypes[6];
|
||||
Arrays.fill(attachments, 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, AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,6 +17,8 @@ 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.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.ChunkRenderTypeSet;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
@@ -28,15 +30,32 @@ import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class TFMGPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
public final TFMGPipes.PipeMaterial material;
|
||||
|
||||
public final TFMGPipes.PipeMaterial material ;
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
private boolean ao;
|
||||
|
||||
public TFMGPipeAttachmentModel(BakedModel template, TFMGPipes.PipeMaterial material) {
|
||||
public static TFMGPipeAttachmentModel withAOSteel(BakedModel template) {
|
||||
return new TFMGPipeAttachmentModel(template, true, TFMGPipes.PipeMaterial.STEEL);
|
||||
}
|
||||
public static TFMGPipeAttachmentModel withAOAluminum(BakedModel template) {
|
||||
return new TFMGPipeAttachmentModel(template, true, TFMGPipes.PipeMaterial.ALUMINUM);
|
||||
}
|
||||
public static TFMGPipeAttachmentModel withAOBrass(BakedModel template) {
|
||||
return new TFMGPipeAttachmentModel(template, true, TFMGPipes.PipeMaterial.BRASS);
|
||||
}
|
||||
public static TFMGPipeAttachmentModel withAOCastIron(BakedModel template) {
|
||||
return new TFMGPipeAttachmentModel(template, true, TFMGPipes.PipeMaterial.CAST_IRON);
|
||||
}
|
||||
public static TFMGPipeAttachmentModel withAOPlastic(BakedModel template) {
|
||||
return new TFMGPipeAttachmentModel(template, true, TFMGPipes.PipeMaterial.PLASTIC);
|
||||
}
|
||||
|
||||
public TFMGPipeAttachmentModel(BakedModel template, boolean ao, TFMGPipes.PipeMaterial material) {
|
||||
super(template);
|
||||
this.ao = ao;
|
||||
this.material = material;
|
||||
}
|
||||
|
||||
@@ -48,34 +67,35 @@ public class TFMGPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
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()));
|
||||
}
|
||||
for (Direction d : Iterate.directions)
|
||||
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);
|
||||
List<ChunkRenderTypeSet> set = new ArrayList<>();
|
||||
|
||||
set.add(super.getRenderTypes(state, rand, data));
|
||||
set.add(TFMGPartialModels.PIPE_CASINGS.get(material).get().getRenderTypes(state, rand, data));
|
||||
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
ChunkRenderTypeSet attachmentRenderTypeSet = TFMGPartialModels.PIPE_ATTACHMENTS.get(material).get(partial).get(d)
|
||||
.get().getRenderTypes(state, rand, data);
|
||||
set.add(attachmentRenderTypeSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
return set;
|
||||
|
||||
return ChunkRenderTypeSet.union(set);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -89,6 +109,21 @@ public class TFMGPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
return quads;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useAmbientOcclusion(BlockState state, RenderType renderType) {
|
||||
return ao;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useAmbientOcclusion(BlockState state) {
|
||||
return ao;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useAmbientOcclusion() {
|
||||
return ao;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
@@ -125,6 +160,7 @@ public class TFMGPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
@@ -132,6 +168,7 @@ public class TFMGPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
@@ -145,4 +182,5 @@ public class TFMGPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static com.drmangotea.tfmg.TFMG.REGISTRATE;
|
||||
import static com.simibubi.create.foundation.data.ModelGen.customItemModel;
|
||||
@@ -57,7 +58,14 @@ public class TFMGPipes {
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> t -> new TFMGPipeAttachmentModel(t, pipeType)))
|
||||
.onRegister(CreateRegistrate.blockModel(()->
|
||||
switch (pipeType){
|
||||
case BRASS -> TFMGPipeAttachmentModel::withAOBrass;
|
||||
case STEEL -> TFMGPipeAttachmentModel::withAOSteel;
|
||||
case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum;
|
||||
case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron;
|
||||
case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic;
|
||||
}))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -73,7 +81,15 @@ 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(TFMGEncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withoutAO))
|
||||
.onRegister(CreateRegistrate.blockModel(()->
|
||||
switch (pipeType){
|
||||
case BRASS -> TFMGPipeAttachmentModel::withAOBrass;
|
||||
case STEEL -> TFMGPipeAttachmentModel::withAOSteel;
|
||||
case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum;
|
||||
case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron;
|
||||
case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic;
|
||||
}))
|
||||
|
||||
.loot((p, b) -> p.dropOther(b, pipe.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(pipe))
|
||||
.register();
|
||||
@@ -99,7 +115,15 @@ public class TFMGPipes {
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> t -> new TFMGPipeAttachmentModel(t, pipeType)))
|
||||
.onRegister(CreateRegistrate.blockModel(()->
|
||||
switch (pipeType){
|
||||
case BRASS -> TFMGPipeAttachmentModel::withAOBrass;
|
||||
case STEEL -> TFMGPipeAttachmentModel::withAOSteel;
|
||||
case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum;
|
||||
case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron;
|
||||
case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic;
|
||||
}))
|
||||
|
||||
.loot((p, b) -> p.dropOther(b, pipe.get()))
|
||||
.register();
|
||||
|
||||
@@ -110,7 +134,15 @@ public class TFMGPipes {
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> t -> new TFMGPipeAttachmentModel(t, pipeType)))
|
||||
.onRegister(CreateRegistrate.blockModel(()->
|
||||
switch (pipeType){
|
||||
case BRASS -> TFMGPipeAttachmentModel::withAOBrass;
|
||||
case STEEL -> TFMGPipeAttachmentModel::withAOSteel;
|
||||
case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum;
|
||||
case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron;
|
||||
case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic;
|
||||
}))
|
||||
|
||||
.transform(TFMGStress.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -123,7 +155,15 @@ public class TFMGPipes {
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> t -> new TFMGPipeAttachmentModel(t, pipeType)))
|
||||
.onRegister(CreateRegistrate.blockModel(()->
|
||||
switch (pipeType){
|
||||
case BRASS -> TFMGPipeAttachmentModel::withAOBrass;
|
||||
case STEEL -> TFMGPipeAttachmentModel::withAOSteel;
|
||||
case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum;
|
||||
case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron;
|
||||
case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic;
|
||||
}))
|
||||
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -137,7 +177,6 @@ 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(() -> t -> new TFMGPipeAttachmentModel(t, pipeType)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -149,6 +188,8 @@ public class TFMGPipes {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void init() {}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
|
||||
import com.simibubi.create.foundation.fluid.FluidRenderer;
|
||||
import net.createmod.catnip.animation.LerpedFloat;
|
||||
import net.createmod.catnip.platform.ForgeCatnipServices;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.util.Mth;
|
||||
@@ -59,7 +60,7 @@ public class TFMGFluidTankRenderer extends SafeBlockEntityRenderer<FluidTankBloc
|
||||
|
||||
ms.pushPose();
|
||||
ms.translate(0, clampedLevel - totalHeight, 0);
|
||||
FluidRenderer.renderFluidBox(fluidStack.getFluid(),fluidStack.getAmount(), xMin, yMin, zMin, xMax, yMax, zMax, buffer, ms, light, false, true, fluidStack.getTag());
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(fluidStack, xMin, yMin, zMin, xMax, yMax, zMax, buffer, ms, light, false, true);
|
||||
ms.popPose();
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import static net.createmod.catnip.platform.ForgeCatnipServices.FLUID_RENDERER;
|
||||
|
||||
public class SteelFluidTankRenderer extends SafeBlockEntityRenderer<SteelTankBlockEntity> {
|
||||
|
||||
public SteelFluidTankRenderer(BlockEntityRendererProvider.Context context) {}
|
||||
@@ -71,7 +73,8 @@ public class SteelFluidTankRenderer extends SafeBlockEntityRenderer<SteelTankBlo
|
||||
|
||||
ms.pushPose();
|
||||
ms.translate(0, clampedLevel - totalHeight, 0);
|
||||
FluidRenderer.renderFluidBox(fluidStack.getFluid(),fluidStack.getAmount(), xMin, yMin, zMin, xMax, yMax, zMax, buffer, ms, light, false,true,fluidStack.getTag());
|
||||
FLUID_RENDERER.renderFluidBox(fluidStack, xMin, yMin, zMin, xMax, yMax, zMax, buffer, ms, light, false,true);
|
||||
|
||||
ms.popPose();
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,8 @@ public class DebugCinderBlockItem extends Item {
|
||||
|
||||
BlockPos pos = context.getClickedPos();
|
||||
Level level = context.getLevel();
|
||||
if (level.getBlockEntity(pos) instanceof VatBlockEntity be) {
|
||||
if (level.getBlockEntity(pos) instanceof IElectric be) {
|
||||
be.getOrCreateElectricNetwork().handleInsufficientPower();
|
||||
|
||||
}
|
||||
return InteractionResult.PASS;
|
||||
|
||||
@@ -49,6 +49,15 @@ public class ElectricMotorBlockEntity extends KineticElectricBlockEntity {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lazyTick() {
|
||||
super.lazyTick();
|
||||
if(data.notEnoughtPower)
|
||||
setSpeed(0);
|
||||
if(data.voltage>0)
|
||||
setSpeed(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
super.addBehaviours(behaviours);
|
||||
|
||||
@@ -43,8 +43,8 @@ public class TrafficLightScrollSlot extends ValueBoxTransform {
|
||||
public void rotate(LevelAccessor level, BlockPos pos, BlockState state, PoseStack ms) {
|
||||
float yRot = AngleHelper.horizontalAngle(state.getValue(BlockStateProperties.HORIZONTAL_FACING)) + 180;
|
||||
TransformStack.of(ms)
|
||||
.rotateY(yRot+180)
|
||||
.rotateX(0);
|
||||
.rotateYDegrees(yRot+180)
|
||||
.rotateXDegrees(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -192,6 +192,7 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
|
||||
protected void read(CompoundTag compound, boolean clientPacket) {
|
||||
if (EngineUpgrade.getUpgrades().get(ItemStack.of(compound.getCompound("UpgradeItem")).getItem()) != null)
|
||||
upgrade = Optional.of(EngineUpgrade.getUpgrades().get(ItemStack.of(compound.getCompound("UpgradeItem")).getItem()));
|
||||
if(!compound.getString("Shift").isEmpty())
|
||||
shift = TransmissionUpgrade.TransmissionState.valueOf(compound.getString("Shift"));
|
||||
oil = compound.getInt("Oil");
|
||||
coolingFluid = compound.getInt("CoolingFluid");
|
||||
@@ -595,7 +596,8 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
|
||||
Direction facing = getBlockState().getValue(HORIZONTAL_FACING);
|
||||
Direction updateDirection = facing.getOpposite();
|
||||
|
||||
if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof AbstractSmallEngineBlockEntity be && be.getBlockState().getBlock() == this.getBlockState().getBlock()) {
|
||||
if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof AbstractSmallEngineBlockEntity be && be.getBlockState().getBlock() == this.getBlockState().getBlock()
|
||||
&&be.getBlockState().getValue(HORIZONTAL_FACING)==this.getBlockState().getValue(HORIZONTAL_FACING)) {
|
||||
be.connect();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ public class ScrewdriverItem extends Item {
|
||||
|
||||
return super.useOn(pContext);
|
||||
}
|
||||
if(level.getBlockEntity(positionClicked)!=null) {
|
||||
if(level.getBlockEntity(positionClicked) instanceof TFMGPipeBlockEntity) {
|
||||
((TFMGPipeBlockEntity) level.getBlockEntity(positionClicked)).toggleLock(player);
|
||||
pContext.getItemInHand().hurtAndBreak(1, pContext.getPlayer(),
|
||||
(playerr) -> playerr.broadcastBreakEvent(playerr.getUsedItemHand()));
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.drmangotea.tfmg.content.machinery.metallurgy.casting_basin;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
|
||||
import com.simibubi.create.foundation.fluid.FluidRenderer;
|
||||
import net.createmod.catnip.platform.ForgeCatnipServices;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -19,25 +19,25 @@ public class CastingBasinRenderer extends SafeBlockEntityRenderer<CastingBasinBl
|
||||
if (be.tank.isEmpty())
|
||||
return;
|
||||
BlockState blockState = be.getBlockState();
|
||||
FluidRenderer.renderFluidBox(be.tank.getFluid().getFluid(), be.tank.getFluid().getAmount(), 0.1f, 0.1f, 0.1f, 0.9f, be.fluidLevel.getValue(partialTicks) / 400, 0.9f, buffer, ms, light, false, false, be.tank.getFluid().getTag());
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(be.tank.getFluid(), 0.1f, 0.1f, 0.1f, 0.9f, be.fluidLevel.getValue(partialTicks) / 400, 0.9f, buffer, ms, light, false, false);
|
||||
if (be.flowTimer > 0) {
|
||||
|
||||
Direction facing = blockState.getValue(FACING);
|
||||
if (facing == Direction.NORTH) {
|
||||
FluidRenderer.renderFluidBox(be.tank.getFluid().getFluid(), be.tank.getFluid().getAmount(), (7 / 16f), (8 / 16f), (8 / 16f), (9 / 16f), (9 / 16f), (14 / 16f), buffer, ms, light, false, false, be.tank.getFluid().getTag());
|
||||
FluidRenderer.renderFluidBox(be.tank.getFluid().getFluid(), be.tank.getFluid().getAmount(), (7 / 16f), (1 / 16f), (8 / 16f), (9 / 16f), (8 / 16f), (10 / 16f), buffer, ms, light, false, false, be.tank.getFluid().getTag());
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(be.tank.getFluid(), (7 / 16f), (8 / 16f), (8 / 16f), (9 / 16f), (9 / 16f), (14 / 16f), buffer, ms, light, false, false);
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(be.tank.getFluid(), (7 / 16f), (1 / 16f), (8 / 16f), (9 / 16f), (8 / 16f), (10 / 16f), buffer, ms, light, false, false);
|
||||
}
|
||||
if (facing == Direction.SOUTH) {
|
||||
FluidRenderer.renderFluidBox(be.tank.getFluid().getFluid(), be.tank.getFluid().getAmount(), (7 / 16f), (2 / 16f), (6 / 16f), (9 / 16f), (9 / 16f), (8 / 16f), buffer, ms, light, false, false, be.tank.getFluid().getTag());
|
||||
FluidRenderer.renderFluidBox(be.tank.getFluid().getFluid(), be.tank.getFluid().getAmount(), (7 / 16f), (8 / 16f), (2 / 16f), (9 / 16f), (9 / 16f), (6 / 16f), buffer, ms, light, false, false, be.tank.getFluid().getTag());
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(be.tank.getFluid(), (7 / 16f), (2 / 16f), (6 / 16f), (9 / 16f), (9 / 16f), (8 / 16f), buffer, ms, light, false, false);
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(be.tank.getFluid(), (7 / 16f), (8 / 16f), (2 / 16f), (9 / 16f), (9 / 16f), (6 / 16f), buffer, ms, light, false, false);
|
||||
}
|
||||
if (facing == Direction.WEST) {
|
||||
FluidRenderer.renderFluidBox(be.tank.getFluid().getFluid(), be.tank.getFluid().getAmount(), (8 / 16f), (2 / 16f), (7 / 16f), (10 / 16f), (9 / 16f), (9 / 16f), buffer, ms, light, false, false, be.tank.getFluid().getTag());
|
||||
FluidRenderer.renderFluidBox(be.tank.getFluid().getFluid(), be.tank.getFluid().getAmount(), (10 / 16f), (8 / 16f), (7 / 16f), (14 / 16f), (9 / 16f), (9 / 16f), buffer, ms, light, false, false, be.tank.getFluid().getTag());
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(be.tank.getFluid(), (8 / 16f), (2 / 16f), (7 / 16f), (10 / 16f), (9 / 16f), (9 / 16f), buffer, ms, light, false, false);
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(be.tank.getFluid(), (10 / 16f), (8 / 16f), (7 / 16f), (14 / 16f), (9 / 16f), (9 / 16f), buffer, ms, light, false, false);
|
||||
}
|
||||
if (facing == Direction.EAST) {
|
||||
FluidRenderer.renderFluidBox(be.tank.getFluid().getFluid(), be.tank.getFluid().getAmount(), (6 / 16f), (2 / 16f), (7 / 16f), (8 / 16f), (9 / 16f), (9 / 16f), buffer, ms, light, false, false, be.tank.getFluid().getTag());
|
||||
FluidRenderer.renderFluidBox(be.tank.getFluid().getFluid(), be.tank.getFluid().getAmount(), (2 / 16f), (8 / 16f), (7 / 16f), (6 / 16f), (9 / 16f), (9 / 16f), buffer, ms, light, false, false, be.tank.getFluid().getTag());
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(be.tank.getFluid(), (6 / 16f), (2 / 16f), (7 / 16f), (8 / 16f), (9 / 16f), (9 / 16f), buffer, ms, light, false, false);
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(be.tank.getFluid(), (2 / 16f), (8 / 16f), (7 / 16f), (6 / 16f), (9 / 16f), (9 / 16f), buffer, ms, light, false, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.drmangotea.tfmg.content.machinery.misc.concrete_hose;
|
||||
|
||||
import com.simibubi.create.AllPartialModels;
|
||||
import com.simibubi.create.AllSpriteShifts;
|
||||
import com.simibubi.create.content.contraptions.pulley.AbstractPulleyVisual;
|
||||
import com.simibubi.create.content.fluids.hosePulley.HosePulleyBlockEntity;
|
||||
import com.simibubi.create.content.processing.burner.ScrollInstance;
|
||||
import com.simibubi.create.foundation.render.AllInstanceTypes;
|
||||
import dev.engine_room.flywheel.api.instance.Instancer;
|
||||
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
||||
import dev.engine_room.flywheel.lib.instance.InstanceTypes;
|
||||
import dev.engine_room.flywheel.lib.instance.TransformedInstance;
|
||||
import dev.engine_room.flywheel.lib.model.Models;
|
||||
import net.createmod.catnip.render.SpriteShiftEntry;
|
||||
|
||||
public class ConcreteHoseVisual extends AbstractPulleyVisual<ConcreteHoseBlockEntity> {
|
||||
public ConcreteHoseVisual(VisualizationContext dispatcher, ConcreteHoseBlockEntity blockEntity, float partialTick) {
|
||||
super(dispatcher, blockEntity, partialTick);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Instancer<TransformedInstance> getRopeModel() {
|
||||
return instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.HOSE));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Instancer<TransformedInstance> getMagnetModel() {
|
||||
return instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.HOSE_MAGNET));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Instancer<TransformedInstance> getHalfMagnetModel() {
|
||||
return instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.HOSE_HALF_MAGNET));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Instancer<ScrollInstance> getCoilModel() {
|
||||
return instancerProvider().instancer(AllInstanceTypes.SCROLLING, Models.partial(AllPartialModels.HOSE_COIL));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Instancer<TransformedInstance> getHalfRopeModel() {
|
||||
return instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(AllPartialModels.HOSE_HALF));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected float getOffset(float pt) {
|
||||
return blockEntity.getInterpolatedOffset(pt);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isRunning() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SpriteShiftEntry getCoilAnimation() {
|
||||
return AllSpriteShifts.HOSE_PULLEY_COIL;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRender
|
||||
import com.simibubi.create.foundation.fluid.FluidRenderer;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import net.createmod.catnip.animation.LerpedFloat;
|
||||
import net.createmod.catnip.platform.ForgeCatnipServices;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.util.Mth;
|
||||
@@ -54,7 +55,7 @@ public class VatRenderer extends SafeBlockEntityRenderer<VatBlockEntity> {
|
||||
float yMax = yMin + (level * (be.height - (2 * capHeight))) / 8;
|
||||
|
||||
|
||||
FluidRenderer.renderFluidBox(fluidHandler.getFluidInTank(tankNumber).getFluid(), fluidHandler.getFluidInTank(tankNumber).getAmount(), xMin, yMin, zMin, xMax, yMax, zMax, bufferSource, ms, light, false, false, fluidHandler.getFluidInTank(tankNumber).getTag());
|
||||
ForgeCatnipServices.FLUID_RENDERER.renderFluidBox(fluidHandler.getFluidInTank(tankNumber), xMin, yMin, zMin, xMax, yMax, zMax, bufferSource, ms, light, false, false);
|
||||
tankNumber++;
|
||||
totalFluidHeight += yMax-yMin;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.drmangotea.tfmg.registry.TFMGItems;
|
||||
import com.google.common.base.Supplier;
|
||||
import com.simibubi.create.Create;
|
||||
|
||||
import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeBuilder;
|
||||
import com.simibubi.create.api.data.recipe.MechanicalCraftingRecipeBuilder;
|
||||
import net.createmod.catnip.platform.CatnipServices;
|
||||
import net.minecraft.data.PackOutput;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -23,7 +23,7 @@ public class TFMGMechanicalCraftingRecipeGen extends TFMGRecipeProvider {
|
||||
|
||||
ENGINE_CONTROLLER = create(TFMGBlocks.ENGINE_CONTROLLER::get)
|
||||
.recipe(b -> b
|
||||
.key('R', rubber())
|
||||
.key('R', rubber())
|
||||
.key('S', shaft())
|
||||
.key('V', TFMGBlocks.VOLTMETER)
|
||||
.key('W', copperWire())
|
||||
|
||||
@@ -2,9 +2,11 @@ package com.drmangotea.tfmg.datagen.recipes.values.create;
|
||||
|
||||
|
||||
import com.drmangotea.tfmg.TFMG;
|
||||
import com.drmangotea.tfmg.datagen.recipes.TFMGRecipeProvider;
|
||||
import com.drmangotea.tfmg.recipes.WindingRecipe;
|
||||
import com.drmangotea.tfmg.registry.TFMGBlocks;
|
||||
import com.drmangotea.tfmg.registry.TFMGItems;
|
||||
import com.simibubi.create.api.data.recipe.BaseRecipeProvider;
|
||||
import com.simibubi.create.content.fluids.transfer.FillingRecipe;
|
||||
import com.simibubi.create.content.kinetics.deployer.DeployerApplicationRecipe;
|
||||
import com.simibubi.create.content.kinetics.press.PressingRecipe;
|
||||
@@ -20,7 +22,7 @@ import static com.drmangotea.tfmg.datagen.recipes.TFMGRecipeProvider.I.*;
|
||||
import static com.drmangotea.tfmg.datagen.recipes.TFMGRecipeProvider.F.*;
|
||||
|
||||
|
||||
public class TFMGSequencedAssemblyRecipeGen extends CreateRecipeProvider {
|
||||
public class TFMGSequencedAssemblyRecipeGen extends TFMGRecipeProvider {
|
||||
|
||||
GeneratedRecipe POTENTIOMETER = create("potentiometer", b -> b.require(TFMGBlocks.HEAVY_MACHINERY_CASING.get())
|
||||
.transitionTo(TFMGItems.UNFINISHED_POTENTIOMETER.get())
|
||||
|
||||
@@ -3,9 +3,9 @@ package com.drmangotea.tfmg.recipes.jei;
|
||||
import com.drmangotea.tfmg.TFMG;
|
||||
import com.drmangotea.tfmg.recipes.*;
|
||||
import com.drmangotea.tfmg.registry.TFMGBlocks;
|
||||
import com.drmangotea.tfmg.registry.TFMGFluids;
|
||||
import com.drmangotea.tfmg.registry.TFMGItems;
|
||||
import com.drmangotea.tfmg.registry.TFMGRecipeTypes;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.compat.jei.*;
|
||||
import com.simibubi.create.compat.jei.category.CreateRecipeCategory;
|
||||
import com.simibubi.create.content.equipment.blueprint.BlueprintScreen;
|
||||
@@ -14,7 +14,6 @@ import com.simibubi.create.content.redstone.link.controller.LinkedControllerScre
|
||||
import com.simibubi.create.content.trains.schedule.ScheduleScreen;
|
||||
import com.simibubi.create.foundation.gui.menu.AbstractSimiContainerScreen;
|
||||
import com.simibubi.create.foundation.recipe.IRecipeTypeInfo;
|
||||
|
||||
import com.simibubi.create.foundation.utility.CreateLang;
|
||||
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||
import com.simibubi.create.infrastructure.config.CRecipes;
|
||||
@@ -32,6 +31,7 @@ import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.Recipe;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
@@ -88,30 +88,23 @@ public class TFMGJei implements IModPlugin {
|
||||
.catalyst(TFMGBlocks.FIREPROOF_BRICKS::get)
|
||||
.catalyst(TFMGBlocks.FIREPROOF_BRICK_REINFORCEMENT::get)
|
||||
.catalyst(TFMGBlocks.BLAST_FURNACE_REINFORCEMENT::get)
|
||||
.catalyst(TFMGBlocks.BLAST_FURNACE_REINFORCEMENT_WALL::get)
|
||||
.catalyst(TFMGBlocks.BLAST_FURNACE_HATCH::get)
|
||||
.itemIcon(TFMGBlocks.BLAST_FURNACE_OUTPUT.get())
|
||||
.emptyBackground(177, 150)
|
||||
.build("industrial_blasting", IndustrialBlastingCategory::new),
|
||||
|
||||
casting = builder(CastingRecipe.class)
|
||||
.addTypedRecipes(TFMGRecipeTypes.CASTING)
|
||||
.catalyst(TFMGBlocks.CASTING_BASIN::get)
|
||||
.catalyst(TFMGItems.STEEL_INGOT::get)
|
||||
.itemIcon(TFMGBlocks.CASTING_BASIN.get())
|
||||
.emptyBackground(177, 53)
|
||||
.build("casting", CastingCategory::new),
|
||||
|
||||
hot_blast = builder(HotBlastRecipe.class)
|
||||
.addTypedRecipes(TFMGRecipeTypes.HOT_BLAST)
|
||||
.catalyst(TFMGBlocks.BLAST_STOVE::get)
|
||||
.catalyst(TFMGBlocks.BLAST_FURNACE_HATCH::get)
|
||||
.itemIcon(TFMGBlocks.BLAST_STOVE.get())
|
||||
.emptyBackground(177, 110)
|
||||
.build("hot_blast", HotBlastCategory::new),
|
||||
|
||||
polarizing = builder(PolarizingRecipe.class)
|
||||
.addTypedRecipes(TFMGRecipeTypes.POLARIZING)
|
||||
|
||||
.catalyst(Blocks.LIGHTNING_ROD::asItem)
|
||||
.catalyst(TFMGBlocks.POLARIZER::get)
|
||||
.itemIcon(TFMGBlocks.POLARIZER.get())
|
||||
.emptyBackground(177, 53)
|
||||
@@ -120,9 +113,18 @@ public class TFMGJei implements IModPlugin {
|
||||
winding = builder(WindingRecipe.class)
|
||||
.addTypedRecipes(TFMGRecipeTypes.WINDING)
|
||||
.catalyst(TFMGBlocks.WINDING_MACHINE::get)
|
||||
.catalyst(TFMGItems.COPPER_SPOOL::get)
|
||||
.catalyst(TFMGItems.CONSTANTAN_SPOOL::get)
|
||||
.itemIcon(TFMGBlocks.WINDING_MACHINE.get())
|
||||
.emptyBackground(177, 53)
|
||||
.build("winding", WindingCategory::new);
|
||||
.build("winding", WindingCategory::new),
|
||||
|
||||
casting = builder(CastingRecipe.class)
|
||||
.addTypedRecipes(TFMGRecipeTypes.CASTING)
|
||||
.catalyst(TFMGBlocks.CASTING_BASIN::get)
|
||||
.itemIcon(TFMGBlocks.CASTING_BASIN.get())
|
||||
.emptyBackground(177, 53)
|
||||
.build("casting", CastingCategory::new);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -7,12 +7,12 @@ import com.drmangotea.tfmg.content.decoration.doors.TFMGSlidingDoorRenderer;
|
||||
import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelBlockEntity;
|
||||
import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelRenderer;
|
||||
import com.drmangotea.tfmg.content.decoration.flywheels.TFMGFlywheelVisual;
|
||||
import com.drmangotea.tfmg.content.decoration.pipes.TFMGEncasedPipeBlock;
|
||||
import com.drmangotea.tfmg.content.decoration.pipes.TFMGPipeBlockEntity;
|
||||
import com.drmangotea.tfmg.content.decoration.pipes.TFMGPipes;
|
||||
import com.drmangotea.tfmg.content.decoration.tanks.TFMGFluidTankRenderer;
|
||||
import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelFluidTankRenderer;
|
||||
import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlockEntity;
|
||||
import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity;
|
||||
import com.drmangotea.tfmg.content.electricity.connection.cable_hub.CableHubBlockEntity;
|
||||
import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity;
|
||||
import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorRenderer;
|
||||
@@ -76,6 +76,7 @@ import com.drmangotea.tfmg.content.machinery.metallurgy.coke_oven.CokeOvenRender
|
||||
import com.drmangotea.tfmg.content.machinery.misc.air_intake.AirIntakeBlockEntity;
|
||||
import com.drmangotea.tfmg.content.machinery.misc.air_intake.AirIntakeRenderer;
|
||||
import com.drmangotea.tfmg.content.machinery.misc.concrete_hose.ConcreteHoseBlockEntity;
|
||||
import com.drmangotea.tfmg.content.machinery.misc.concrete_hose.ConcreteHoseVisual;
|
||||
import com.drmangotea.tfmg.content.machinery.misc.concrete_hose.ConcreteHoseRenderer;
|
||||
import com.drmangotea.tfmg.content.machinery.misc.exhaust.ExhaustBlockEntity;
|
||||
import com.drmangotea.tfmg.content.machinery.misc.firebox.FireboxBlockEntity;
|
||||
@@ -182,7 +183,7 @@ public class TFMGBlockEntities {
|
||||
.register();
|
||||
public static final BlockEntityEntry<ConcreteHoseBlockEntity> CONCRETE_HOSE = REGISTRATE
|
||||
.blockEntity("concrete_hose", ConcreteHoseBlockEntity::new)
|
||||
//.instance(() -> ConcreteHoseInstance::new)
|
||||
.visual(() -> ConcreteHoseVisual::new)
|
||||
.validBlocks(TFMGBlocks.CONCRETE_HOSE)
|
||||
.renderer(() -> ConcreteHoseRenderer::new)
|
||||
.register();
|
||||
|
||||
@@ -54,6 +54,12 @@ description='''${mod_description}'''
|
||||
ordering="NONE"
|
||||
# Side this dependency is applied on - BOTH, CLIENT, or SERVER
|
||||
side="BOTH"# Here's another dependency
|
||||
[[dependencies."${mod_id}"]]
|
||||
modId="create"
|
||||
mandatory=true
|
||||
versionRange="[6.0.6,6.1.0)"
|
||||
ordering="NONE"
|
||||
side="BOTH"
|
||||
[[dependencies."${mod_id}"]]
|
||||
modId="minecraft"
|
||||
mandatory=true
|
||||
|
||||
@@ -106,8 +106,9 @@
|
||||
"create.creative_generator.voltage_generation": "Voltage Generation",
|
||||
|
||||
"create.distillation_output.when_tank_is_full": "When Internal Tank is Full",
|
||||
"create.distillation_output.mode.keep_fluid": "Stop Distillation Process",
|
||||
"create.distillation_output.mode.void_when_full": "Void Excess Fluid",
|
||||
"distillation_output.mode.keep_fluid": "Stop Distillation Process",
|
||||
"distillation_output.mode.void_when_full": "Void Excess Fluid",
|
||||
"create.traffic_light.timer": "Traffic Light Cycle Timer",
|
||||
|
||||
"death.attack.tfmg.concrete": "%1$s tried to eat Concrete",
|
||||
"death.attack.tfmg.concrete.player": "%1$s tried to eat Concrete",
|
||||
@@ -124,13 +125,14 @@
|
||||
"create.tooltip.cylinder": "Supported Fuels:",
|
||||
"create.tooltip.fluid_item": "Fluid Amount: %1$s",
|
||||
|
||||
"create.recipe.assembly.winding": "Wind %1$s",
|
||||
"create.recipe.assembly.winding": "Wind a Spool",
|
||||
|
||||
"create.recipe.distillation": "Distillation",
|
||||
"create.recipe.advanced_distillation": "Advanced Distillation",
|
||||
"create.recipe.industrial_blasting": "Industrial Blasting",
|
||||
"create.recipe.casting": "Casting",
|
||||
"create.recipe.coking": "Coking",
|
||||
"create.recipe.winding": "Winding",
|
||||
"create.recipe.polarizing": "Polarizing",
|
||||
"create.recipe.chemical_vat": "Chemical Vat",
|
||||
"create.recipe.hot_blast": "Air Blasting",
|
||||
|
||||
@@ -3,7 +3,251 @@
|
||||
|
||||
"OwO": "UwU",
|
||||
|
||||
"item.tfmg.multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.white_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.white_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.white_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.white_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.white_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.light_gray_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.light_gray_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.light_gray_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.light_gray_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.light_gray_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.gray_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.gray_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.gray_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.gray_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.gray_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.black_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.black_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.black_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.black_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.black_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.red_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.red_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.red_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.red_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.red_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.orange_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.orange_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.orange_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.orange_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.orange_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.yellow_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.yellow_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.yellow_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.yellow_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.yellow_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.lime_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.lime_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.lime_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.lime_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.lime_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.green_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.green_multimeter_.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.green_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.green_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.green_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.light_blue_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.light_blue_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.light_blue_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.light_blue_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.light_blue_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.cyan_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.cyan_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.cyan_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.cyan_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.cyan_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.blue_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.blue_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.blue_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.blue_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.blue_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.purple_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.purple_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.purple_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.purple_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.purple_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.magenta_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.magenta_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.magenta_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.magenta_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.magenta_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.pink_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.pink_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.pink_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.pink_multimeter.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.pink_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.brown_multimeter.tooltip.summary": "Shows data about an electrical block and its network",
|
||||
"item.tfmg.brown_multimeter.tooltip.condition1": "When looking at an electric component NOTE: It does not work while wearing Engineers Goggles",
|
||||
"item.tfmg.brown_multimeter.tooltip.behaviour1": "Shows resistance, voltage, current and power in ohms, volts, amperes and kilowatts respectively along with the components group",
|
||||
"item.tfmg.brown_multimeter_cannon.tooltip.condition2": "When looking at an electric component while crouching",
|
||||
"item.tfmg.brown_multimeter.tooltip.behaviour2": "Additionally to the previously mentioned stats the multimeter shows the networks total power generation and consumption",
|
||||
|
||||
"item.tfmg.firebox.tooltip.summary": "Heats machinery when fuel is pumped inside",
|
||||
"item.tfmg.firebox.tooltip.condition1": "When filled with lpg, butane, diesel, propane, naphta or kerosene with carbon dioxide being pumped out",
|
||||
"item.tfmg.firebox.tooltip.behaviour1": "Heats machinery above it acting as a blaze burner",
|
||||
|
||||
"item.tfmg.winding_machine.tooltip.summary": "Changes the amount of turns on spools and the resistance on resistors",
|
||||
"item.tfmg.winding_machine.tooltip.behaviour1": "Right click with your desired item (Electromagnetic Coil or Resistor) and then right click with either a Copper spool for Coils and an Aluminium one for resistors. Interact with it to set the amount of turns/ohms and power with rotation. Use the Engineers goggles to see when your winding is finished.",
|
||||
|
||||
"item.tfmg.surface_scanner.tooltip.summary": "Helps to find chunks with oil",
|
||||
"item.tfmg.surface_scanner.tooltip.condition1": "When powered from below with a Machine Input",
|
||||
"item.tfmg.surface_scanner.tooltip.behaviour1": "The machines top 5x5 grid shows the surrounding chunks with its chunk in the center, the chunks that have atleast 1 oil deposit in them should glow. If the surface does not start to glow within a few seconds then it is likely that there are no oil deposits nearby. Chunks can be seen ingame with F3+G",
|
||||
|
||||
"item.tfmg.casting_basin.tooltip.summary": "Casts ingots",
|
||||
"item.tfmg.casting_basin.tooltip.condition1": "When supplied with molten steel",
|
||||
"item.tfmg.casting_basin.tooltip.behaviour1": "Creates steel ingots which must have a sufficent output as the internal storage of the basin is limited",
|
||||
|
||||
"item.tfmg.neon_tube.tooltip.summary": "Glows",
|
||||
"item.tfmg.neon_tube.tooltip.condition1": "When provided with power",
|
||||
"item.tfmg.neon_tube.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
|
||||
"item.tfmg.neon_tube.tooltip.condition2": "When interacted with a dye",
|
||||
"item.tfmg.neon_tube.tooltip.behaviour2": "Changes color to the color of the light when glowing",
|
||||
"item.tfmg.neon_tube.tooltip.condition3": "When interacted with a Wrench",
|
||||
"item.tfmg.neon_tube.tooltip.behaviour3": "Changes shape providing a space to power the tube",
|
||||
|
||||
"item.tfmg.light_bulb.tooltip.summary": "Glows",
|
||||
"item.tfmg.light_bulb.tooltip.condition1": "When provided with power",
|
||||
"item.tfmg.light_bulb.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
|
||||
"item.tfmg.light_bulb.tooltip.condition2": "When interacted with a dye",
|
||||
"item.tfmg.light_bulb.tooltip.behaviour2": "Changes color to the color of the light when glowing",
|
||||
|
||||
"item.tfmg.circular_light.tooltip.summary": "Glows",
|
||||
"item.tfmg.circular_light.tooltip.condition1": "When provided with power",
|
||||
"item.tfmg.circular_light.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
|
||||
"item.tfmg.circular_light.tooltip.condition2": "When interacted with a dye",
|
||||
"item.tfmg.circular_light.tooltip.behaviour2": "Changes color to the color of the light when glowing",
|
||||
|
||||
"item.tfmg.modern_light.tooltip.summary": "Glows",
|
||||
"item.tfmg.modern_light.tooltip.condition1": "When provided with power",
|
||||
"item.tfmg.modern_light.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
|
||||
"item.tfmg.modern_light.tooltip.condition2": "When interacted with a dye",
|
||||
"item.tfmg.modern_light.tooltip.behaviour2": "Changes color to the color of the light when glowing",
|
||||
|
||||
"item.tfmg.aluminum_lamp.tooltip.summary": "Glows",
|
||||
"item.tfmg.aluminum_lamp.tooltip.condition1": "When provided with power",
|
||||
"item.tfmg.aluminum_lamp.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
|
||||
"item.tfmg.aluminum_lamp.tooltip.condition2": "When interacted with a dye",
|
||||
"item.tfmg.aluminum_lamp.tooltip.behaviour2": "Changes color to the color of the light when glowing",
|
||||
|
||||
"item.tfmg.oil_can.tooltip.summary": "Adds lubrication oil to engines",
|
||||
"item.tfmg.oil_can.tooltip.condition1": "When Right Clicking a tank with lubrication oil inside",
|
||||
"item.tfmg.oil_can.tooltip.behaviour1": "Fills the can with lubrication oil",
|
||||
"item.tfmg.oil_can.tooltip.condition2": "When Right Clicking an engine",
|
||||
"item.tfmg.oil_can.tooltip.behaviour2": "Fills the engine with lubrication oil",
|
||||
|
||||
"item.tfmg.cable_connector.tooltip.summary": "Transfers power",
|
||||
"item.tfmg.cable_connector.tooltip.condition1": "When 2 cable insulators are right clicked with a copper/aluminum/constantan spool",
|
||||
"item.tfmg.cable_connector.tooltip.behaviour1": "Created a connection between the 2 insulators transferring power between them",
|
||||
|
||||
"item.tfmg.glass_cable_insulator.tooltip.summary": "Transfers power",
|
||||
"item.tfmg.glass_cable_insulator.tooltip.condition1": "When 2 cable insulators are right clicked with a copper/aluminum/constantan spool",
|
||||
"item.tfmg.glass_cable_insulator.tooltip.behaviour1": "Created a connection between the 2 insulators transferring power between them",
|
||||
|
||||
"item.tfmg.transformer.tooltip.summary": "Changes the voltage in a circuit",
|
||||
"item.tfmg.transformer.tooltip.behaviour1": "Needs 2 electromagnetic coils of different turn amounts that have to be put on the transformer where the output (indicated by a small line of copper) outputs voltage based on the ratio of the 2 coils (for example if the input has a coil with 50 turns and the output has one with a 100 then the voltage is doubled since 100/50 = 2)",
|
||||
|
||||
"item.tfmg.diode.tooltip.summary": "Functions as a one way gateway for power to flow through",
|
||||
"item.tfmg.diode.tooltip.condition1": "When provided with power from its darker side",
|
||||
"item.tfmg.diode.tooltip.behaviour1": "The power will be outputted on its lighter side acting as a one way pathway for power (meaning any power that would be coming from its lighter side would not be outputted on the darker one)",
|
||||
|
||||
"item.tfmg.blast_stove.tooltip.summary": "Heats Air",
|
||||
"item.tfmg.blast_stove.tooltip.behaviour1": "When 3 blast stoves are placed on top of eachother (or in a 3x2 shape) the smallest version of a blast stove is created, to add further internal storage you can add more stove blocks on top which is generally reccomended. A Blast Stove requires 2 things to be pumped in. Air, from the side of the bottom block and Creosote or Furnace gas from the bottom. Carbon dioxide must be pumped out from the side of the bottom block and finally heated air must be pumped out from the machines top.",
|
||||
|
||||
"item.tfmg.resistor.tooltip.summary": "Adds resistance to a network",
|
||||
"item.tfmg.resistor.tooltip.condition1": "When placed on a block within a group",
|
||||
"item.tfmg.resistor.tooltip.behaviour1": "Adds the resistors respective resistance (to see how to change its resistance look at the winding machines tooltip) to whatever electric group its target block is in",
|
||||
|
||||
"item.tfmg.electrical_switch.tooltip.summary": "Lets power through when powered with redstone",
|
||||
|
||||
"item.tfmg.potentiometer.tooltip.summary": "Lets through a only a set amount of voltage",
|
||||
"item.tfmg.potentiometer.tooltip.behaviour1": "Based on what pecentage you set, this machine only lets through a certain amount of voltage outputted by its output (its output can be seen by the arrow like pattern on its top pointing to it)",
|
||||
|
||||
"item.tfmg.fireclay.tooltip.summary": "Spawns in underground veins located in the overworld",
|
||||
|
||||
"item.tfmg.advanced_potato_cannon.tooltip.summary": "Launches _Napalm Potatoes_ at Enemies. Can be powered with _Air_ _Pressure_ from a _Backtank_",
|
||||
"item.tfmg.advanced_potato_cannon.tooltip.condition1": "When R-Clicked",
|
||||
"item.tfmg.advanced_potato_cannon.tooltip.behaviour1": "_Shoots_ a _Napalm Potato_ from your _Inventory_.",
|
||||
"item.tfmg.advanced_potato_cannon.tooltip.condition2": "While wearing Backtank",
|
||||
"item.tfmg.advanced_potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.tfmg.flamethrower.tooltip.summary": "Burns burnable _Gases_ and _Fluids_ to shoot out a burst of flame to burn your Enemies",
|
||||
"item.tfmg.flamethrower.tooltip.condition1": "When R-Clicked",
|
||||
"item.tfmg.flamethrower.tooltip.behaviour1": "_Shoots out Flames_ ",
|
||||
"item.tfmg.flamethrower.tooltip.condition2": "When R-Clicking a Fluid Tank with Gasoline, Diesel, Kerosene, Naphtha, LPG, Molten Slag or Napalm inside",
|
||||
"item.tfmg.flamethrower.tooltip.behaviour2": "The _Fuel_ will be consumed from the tank. _Range_ and _Spread_ change according to your _Fuel_ of choice",
|
||||
|
||||
"item.tfmg.pipebomb.tooltip.summary": "So cool",
|
||||
|
||||
"item.tfmg.screwdriver.tooltip.summary": "Can lock pipes in place",
|
||||
"item.tfmg.screwdriver.tooltip.condition1": "When R-Clicking pipe",
|
||||
"item.tfmg.screwdriver.tooltip.behaviour1": "Locks _Pipe_ in its current rotation allowing for _Pipes_ to be placed next to eachother _Without Connecting_",
|
||||
|
||||
"block.tfmg.polarizer.tooltip.summary": "Makes Magnetis out of Magnetic Ingots",
|
||||
"block.tfmg.polarizer.tooltip.condition1": "When powered",
|
||||
"block.tfmg.polarizer.tooltip.behaviour1": "Will turn a _Magnetic Ingot_ into a _Magnet_ when right clicked with a _Magnetic Ingot_ after a bit of time",
|
||||
|
||||
"block.tfmg.magnetic_ingot.tooltip.summary": "On ocassion turns into a Magnet when struck by lighting",
|
||||
|
||||
"item.tfmg.lithium_blade.tooltip.summary": "Using _Steel Ingot_Lithium Charges_, this Blade is set aflame burning enemies and shooting out Bolts of _Hellfire_",
|
||||
"item.tfmg.lithium_blade.tooltip.condition1": "When R-Clicked when Off",
|
||||
"item.tfmg.lithium_blade.tooltip.behaviour1": "Is set on hellfire, consuming a _Lithium Charge_. Its flame sets enemies on fire for a set amount of time, this fire is renewed even after Enemy extinguishes themself in water ",
|
||||
"item.tfmg.lithium_blade.tooltip.condition2": "When R-Clicking when On",
|
||||
"item.tfmg.lithium_blade.tooltip.behaviour2": "Shoots out several bolts of _Hellfire_ consuming the blades charge",
|
||||
|
||||
"block.tfmg.accumulator.tooltip.summary": "Holds a Large Amount of energy (inserted from bottom) that can be outputted Slowly from the Top",
|
||||
|
||||
"item.tfmg.electrictians_wrench.tooltip.summary": "Changes the electrical group of a component",
|
||||
"item.tfmg.electrictians_wrench.tooltip.condition1": "When R-Clicking electrical block",
|
||||
"item.tfmg.electrictians_wrench.tooltip.behaviour1": "Opens up a menu where you can choose the group of set block. Groups are explained within the generators ponder",
|
||||
|
||||
"block.tfmg.flarestack.tooltip.summary": "Burns unneeded oil products",
|
||||
"block.tfmg.flarestack.tooltip.condition1": "When Pumped burnable Fluids/Gases into from the bottom",
|
||||
"block.tfmg.flarestack.tooltip.behaviour1": "Deletes what is pumped inside",
|
||||
|
||||
"block.tfmg.large_engine.tooltip.summary": "Creates rotation from less refined fuels",
|
||||
"block.tfmg.large_engine.tooltip.behaviour1": "To function it requires air and fuel to be pumped in (Diesel, Kerosene, Naphta, Furnace Gas) and co2 to be pumped out (needs an exhaust) to generate rotation (a shaft needs to be attached similiar to a steam engine)",
|
||||
|
||||
"block.tfmg.simple_large_engine.tooltip.summary": "Creates rotation (less effectively than its regular counterpart) from less refined fuels",
|
||||
"block.tfmg.simple_large_engine.tooltip.behaviour1": "To function it requires air and fuel to be pumped in (Diesel, Kerosene, Naphta, Furnace Gas) and co2 to be pumped out (needs an exhaust) to generate rotation (a shaft needs to be attached similiar to a steam engine)",
|
||||
|
||||
"block.tfmg.engine_controller.tooltip.summary": "Controls the speed and direction of rotation generated by various types of engine",
|
||||
"block.tfmg.engine_controller.tooltip.condition1": "How to link to an engine",
|
||||
"block.tfmg.engine_controller.tooltip.behaviour1": "R-Click the controller with a transmission item and then do the same with the engine.",
|
||||
"block.tfmg.engine_controller.tooltip.condition2": "How to control an engine",
|
||||
"block.tfmg.engine_controller.tooltip.behaviour2": "Look in the Keybinds part of the minecraft settings specifically in the Create: The Factory Must Grow section",
|
||||
|
||||
"block.tfmg.voltmeter.tooltip.summary": "Shows various different values about an electric component",
|
||||
"block.tfmg.voltmeter.tooltip.behaviour1": "To use put this block on an electric block/component. By default it will measure voltage from 0 to 500 volts. To see what its currently measuring look at it with engineers goggles. To choose from various options of what it can measure R-Click with a wrench.",
|
||||
|
||||
"block.tfmg.converter.tooltip.summary": "Converts FE to TFMG energy and vice versa",
|
||||
"block.tfmg.converter.tooltip.behaviour1": "The block has a TFMG input (copper) and an FE one (redstone) by default it converts TFMG energy to FE with a wrench you can make the converter convert FE to TFMG energy. Voltage of the tfmg output may be abjusted by opening a menu on the side of the Converter",
|
||||
|
||||
"block.tfmg.cocrete_hose.tooltip.summary": "Pumps concrete like a hose pulley into rebar blocks. Set concrete dries as rebar concrete",
|
||||
|
||||
"block.tfmg.voltage_observer.tooltip.summary": "Powers redstone when any voltage is detected",
|
||||
|
||||
"item.tfmg.quad_potato_cannon.tooltip.summary": "Launches 4 of your home-grown vegetables at Enemies. Can be powered with _Air_ _Pressure_ from a _Backtank_",
|
||||
"item.tfmg.quad_potato_cannon.tooltip.condition1": "When R-Clicked",
|
||||
@@ -11,4 +255,6 @@
|
||||
"item.tfmg.quad_potato_cannon.tooltip.condition2": "While wearing Backtank",
|
||||
"item.tfmg.quad_potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank"
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -33,9 +33,7 @@
|
||||
"faces": {
|
||||
"north": {"uv": [0.66667, 0, 4.66667, 0.66666], "rotation": 90, "texture": "#0"},
|
||||
"east": {"uv": [0.66667, 0, 4.66667, 0.33333], "rotation": 90, "texture": "#0"},
|
||||
"west": {"uv": [0.66667, 0, 4.66667, 0.33333], "rotation": 270, "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 0.33333, 0.33333], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 0.33333, 0.33333], "rotation": 180, "texture": "#0"}
|
||||
"west": {"uv": [0.66667, 0, 4.66667, 0.33333], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -44,9 +42,7 @@
|
||||
"faces": {
|
||||
"north": {"uv": [0.66667, 0, 4.66667, 0.66666], "rotation": 270, "texture": "#0"},
|
||||
"east": {"uv": [0.66667, 0, 4.66667, 0.33333], "rotation": 90, "texture": "#0"},
|
||||
"west": {"uv": [0.66667, 0, 4.66667, 0.33333], "rotation": 270, "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 0.33333, 0.33333], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 0.33333, 0.33333], "rotation": 180, "texture": "#0"}
|
||||
"west": {"uv": [0.66667, 0, 4.66667, 0.33333], "rotation": 270, "texture": "#0"}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 282 B After Width: | Height: | Size: 279 B |
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"fluid": "forge:crude_oil",
|
||||
"speed": 1,
|
||||
"efficiency": 2,
|
||||
"stress": 3
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user