0.7.0 update :3

This commit is contained in:
DrMangoTea
2024-01-15 20:36:28 +01:00
parent 53b140284d
commit 095fb25d96
205 changed files with 21164 additions and 1467 deletions

View File

@@ -1,5 +1,6 @@
package com.drmangotea.createindustry;
import com.drmangotea.createindustry.base.TFMGContraptions;
import com.drmangotea.createindustry.base.TFMGLangPartials;
import com.drmangotea.createindustry.items.gadgets.explosives.thermite_grenades.fire.TFMGColoredFires;
import com.drmangotea.createindustry.registry.*;
@@ -55,6 +56,7 @@ public class CreateTFMG
TFMGFluids.register();
TFMGPaletteBlocks.register();
TFMGSoundEvents.prepare();
TFMGContraptions.prepare();
TFMGColoredFires.register(modEventBus);
TFMGFeatures.register(modEventBus);

View File

@@ -0,0 +1,14 @@
package com.drmangotea.createindustry.base;
import net.minecraft.core.NonNullList;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.Block;
public class DebugBlock extends Block {
public DebugBlock(Properties p_49795_) {
super(p_49795_);
}
@Override
public void fillItemCategory(CreativeModeTab tab, NonNullList<ItemStack> list) {}
}

View File

@@ -0,0 +1,13 @@
package com.drmangotea.createindustry.base;
import com.drmangotea.createindustry.CreateTFMG;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.PumpjackContraption;
import com.simibubi.create.content.contraptions.ContraptionType;
public class TFMGContraptions {
public static final ContraptionType
PUMPJACK_CONTRAPTION = ContraptionType.register(CreateTFMG.asResource("pumpjack").toString(), PumpjackContraption::new);
public static void prepare() {}
}

View File

@@ -0,0 +1,110 @@
package com.drmangotea.createindustry.blocks.engines.compact;
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
import com.drmangotea.createindustry.registry.TFMGShapes;
import com.simibubi.create.content.kinetics.base.DirectionalKineticBlock;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.pathfinder.PathComputationType;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class CompactEngineBlock extends DirectionalKineticBlock implements IBE<CompactEngineBlockEntity> {
public CompactEngineBlock(Properties properties) {
super(properties);
}
/*
@Override
public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return AllShapes.MOTOR_BLOCK.get(state.getValue(FACING));
}
*/
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
if(pState.getValue(FACING).getAxis()==Axis.Y) {
return TFMGShapes.COMPACT_ENGINE_VERTICAL.get(pState.getValue(FACING));
}else
return TFMGShapes.COMPACT_ENGINE.get(pState.getValue(FACING));
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
Direction preferred = getPreferredFacing(context);
if ((context.getPlayer() != null && context.getPlayer()
.isShiftKeyDown()) || preferred == null)
return super.getStateForPlacement(context);
return defaultBlockState()
.setValue(FACING, preferred)
//.setValue(BACK_PART,false)
;
}
// IRotate:
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
return face == state.getValue(FACING);
}
@Override
public Axis getRotationAxis(BlockState state) {
return state.getValue(FACING)
.getAxis();
}
@Override
public boolean hideStressImpact() {
return true;
}
@Override
public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) {
return false;
}
@Override
public InteractionResult use(BlockState pState, Level level, BlockPos pos, Player pPlayer, InteractionHand pHand, BlockHitResult pHit) {
if (level.getBlockEntity(pos) instanceof CompactEngineBlockEntity be)
if (be.playerInteract(pPlayer, pHand))
return InteractionResult.SUCCESS;
return super.use(pState,level,pos,pPlayer,pHand,pHit);
}
@Override
public Class<CompactEngineBlockEntity> getBlockEntityClass() {
return CompactEngineBlockEntity.class;
}
@Override
public BlockEntityType<? extends CompactEngineBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.COMPACT_ENGINE.get();
}
}

View File

@@ -0,0 +1,541 @@
package com.drmangotea.createindustry.blocks.engines.compact;
import com.drmangotea.createindustry.registry.TFMGFluids;
import com.drmangotea.createindustry.registry.TFMGSoundEvents;
import com.simibubi.create.Create;
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.content.kinetics.base.GeneratingKineticBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
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 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.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
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 CompactEngineBlockEntity extends GeneratingKineticBlockEntity implements IHaveGoggleInformation, IWrenchable {
protected LazyOptional<IFluidHandler> fluidCapability;
protected FluidTank tankInventory;
protected FluidTank lubricationOilTank;
protected FluidTank coolantTank;
protected int soundTimer=0;
public int fuelConsumption =0;
public float stressTotal=0;
public float speed=0;
public float stressBase=0;
public int efficiency=1;
public final int idealSpeed=12;
private int consumptionTimer=0;
public Fluid lubricationOil = TFMGFluids.LUBRICATION_OIL.get();
public Fluid coolant = TFMGFluids.COOLING_FLUID.get();
public float powerModifier=1;
public float efficiencyModifier = 1.4f;
//
int signal;
boolean signalChanged;
//
// protected ScrollValueBehaviour generatedSpeed;
public CompactEngineBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
tankInventory = createInventory();
lubricationOilTank = createUpgradeTankInventory(lubricationOil);
coolantTank = createUpgradeTankInventory(coolant);
//fluidCapability = LazyOptional.of(() -> tankInventory);
fluidCapability = LazyOptional.of(() -> {
return new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank );
});
signal = 0;
setLazyTickRate(40);
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
}
@Override
public void initialize() {
super.initialize();
sendData();
if (!hasSource() || getGeneratedSpeed() > getTheoreticalSpeed())
updateGeneratedRotation();
}
@Override
public float getGeneratedSpeed() {
if(!level.isClientSide){
calculateEfficiency();
fuelConsumption = (int)((speed/(efficiency/10)/13)+1);
if(fuelConsumption<1)
fuelConsumption=0;
if(!tankInventory.isEmpty()) {
if(consumptionTimer>=45) {
if(signal!=0)
tankInventory.drain(fuelConsumption, IFluidHandler.FluidAction.EXECUTE);
consumptionTimer=0;
}
consumptionTimer++;
// return convertToDirection((signal * signal), getBlockState().getValue(FACING))*Create.RANDOM.nextFloat(2);
return ((signal*signal)*0.5f)*powerModifier;
// *powerModifier;
}}
return 0;
}
public void calculateEfficiency(){
if(signal==0||tankInventory.isEmpty()) {
efficiency = 0;
return;
}
efficiency=100;
if(signal>=idealSpeed){
efficiency= (int) ((100-(signal-idealSpeed)*5)/efficiencyModifier);
}
if(signal<idealSpeed){
efficiency= (int) ((100-(idealSpeed-signal)*3)/efficiencyModifier);
}
if(efficiency>100)
efficiency=100;
}
@Override
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
// boolean added = super.addToGoggleTooltip(tooltip, isPlayerSneaking);
// if (!IRotate.StressImpact.isEnabled())
// return added;
//
Lang.translate("goggles.engine_stats")
.forGoggles(tooltip);
stressBase = calculateAddedStressCapacity();
// if (Mth.equal(stressBase, 0))
// return added;
Lang.translate("tooltip.capacityProvided")
.style(ChatFormatting.GRAY)
.space()
.forGoggles(tooltip);
speed = getTheoreticalSpeed();
if (speed != getGeneratedSpeed() && speed != 0)
// stressBase *= getGeneratedSpeed() / speed;
speed = Math.abs(speed);
stressTotal = stressBase * speed;
Lang.number(stressTotal)
.translate("generic.unit.stress")
.style(ChatFormatting.DARK_AQUA)
.space()
.add(Lang.translate("gui.goggles.at_current_speed")
.style(ChatFormatting.DARK_GRAY))
.forGoggles(tooltip, 1);
Lang.translate("goggles.engine_redstone_input")
.style(ChatFormatting.GRAY)
.forGoggles(tooltip);
Lang.translate("tooltip.engine_analog_strength", this.signal)
.style(ChatFormatting.DARK_AQUA)
.forGoggles(tooltip,1);
/////
Lang.translate("goggles.engine.efficiency")
.style(ChatFormatting.GRAY)
.forGoggles(tooltip);
Lang.translate("goggles.get_engine_efficiency", this.efficiency)
.style(ChatFormatting.DARK_AQUA)
.add(Lang.translate("goggles.misc.percent_symbol"))
.forGoggles(tooltip,1);
////////////////////////////////////////
LazyOptional<IFluidHandler> handler = this.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
Optional<IFluidHandler> resolve = handler.resolve();
if (!resolve.isPresent())
return false;
IFluidHandler tank = resolve.get();
if (tank.getTanks() == 0)
return false;
LangBuilder mb = Lang.translate("generic.unit.millibuckets");
Lang.translate("goggles.fuel_container")
.style(ChatFormatting.GRAY)
.forGoggles(tooltip);
boolean isEmpty = true;
for (int i = 0; i < tank.getTanks(); i++) {
FluidStack fluidStack = tank.getFluidInTank(i);
if (fluidStack.isEmpty())
continue;
Lang.fluidName(fluidStack)
.style(ChatFormatting.GRAY)
.forGoggles(tooltip, 1);
Lang.builder()
.add(Lang.number(fluidStack.getAmount())
.add(mb)
.style(ChatFormatting.DARK_AQUA))
.text(ChatFormatting.GRAY, " / ")
.add(Lang.number(tank.getTankCapacity(i))
.add(mb)
.style(ChatFormatting.DARK_GRAY))
.forGoggles(tooltip, 1);
isEmpty = false;
}
if (tank.getTanks() > 1) {
if (isEmpty)
tooltip.remove(tooltip.size() - 1);
return true;
}
if (!isEmpty)
return true;
Lang.translate("gui.goggles.fluid_container.capacity")
.add(Lang.number(tank.getTankCapacity(0))
.add(mb)
.style(ChatFormatting.DARK_AQUA))
.style(ChatFormatting.DARK_GRAY)
.forGoggles(tooltip, 1);
return true;
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
// this.getBlockState().setValue(EngineBlock.BACKPART,true);
return InteractionResult.SUCCESS;
}
/////////////////////////////////////////////
@Override
public void write(CompoundTag compound, boolean clientPacket) {
compound.putInt("Signal", signal);
compound.put("TankContent", tankInventory.writeToNBT(new CompoundTag()));
compound.put("Coolant", coolantTank.writeToNBT(new CompoundTag()));
compound.put("LubricationOil", lubricationOilTank.writeToNBT(new CompoundTag()));
super.write(compound, clientPacket);
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
tankInventory.readFromNBT(compound.getCompound("TankContent"));
coolantTank.readFromNBT(compound.getCompound("Coolant"));
lubricationOilTank.readFromNBT(compound.getCompound("LubricationOil"));
signal = compound.getInt("Signal");
super.read(compound, clientPacket);
}
public float getModifier() {
return getModifierForSignal(signal);
}
public void neighbourChanged() {
if (!hasLevel())
return;
int power = level.getBestNeighborSignal(worldPosition);
if (power != signal)
signalChanged = true;
}
@Override
public void lazyTick() {
super.lazyTick();
neighbourChanged();
}
@Override
public void tick() {
super.tick();
calculateUpgradeModifier();
//
int random1 = Create.RANDOM.nextInt(125);
int random2 = Create.RANDOM.nextInt(200);
if(random1 == 69)
coolantTank.drain(1, IFluidHandler.FluidAction.EXECUTE);
if(random2 == 69)
lubricationOilTank.drain(1, IFluidHandler.FluidAction.EXECUTE);
//
///
// if(signal!=0&&hasBackPart()&&tankInventory.getFluidAmount()!=0&&!overStressed&&isExhaustTankFull()) {
soundTimer++;
// if(!isExhaustTankFull()) {
if (soundTimer >= ((16-signal)/0.8)+1) {
if(signal!=0&&
tankInventory.getFluidAmount()!=0 &&
!overStressed
){
// if(this.getGeneratedSpeed()!=0) {
if (level.isClientSide)
makeSound();
}
}
// }
///
updateGeneratedRotation();
calculateEfficiency();
stressBase = calculateAddedStressCapacity();
speed = getTheoreticalSpeed();
if (speed != getGeneratedSpeed() && speed != 0)
stressBase *= getGeneratedSpeed() / speed;
speed = Math.abs(speed);
stressTotal = stressBase * speed;
// if (level.isClientSide)
// return;
if (signalChanged) {
signalChanged = false;
analogSignalChanged(level.getBestNeighborSignal(worldPosition));
}
}
public void calculateUpgradeModifier(){
float newPowerModifier=1;
float newEfficiencyModifier = 1.4f;
if(lubricationOilTank.getFluidAmount()>0) {
//newPowerModifier+=.3f;
newEfficiencyModifier-=.1f;
}
if(coolantTank.getFluidAmount()>0) {
newPowerModifier+=.3f;
newEfficiencyModifier-=.3f;
}
////////
////
powerModifier=newPowerModifier;
efficiencyModifier = newEfficiencyModifier;
}
@OnlyIn(Dist.CLIENT)
private void makeSound(){
soundTimer=0;
TFMGSoundEvents.ENGINE.playAt(level, worldPosition, 0.6f, 1f, false);
}
public boolean playerInteract(Player pPlayer, InteractionHand pHand) {
ItemStack stack = pPlayer.getItemInHand(pHand);
if(stack.is(TFMGFluids.GASOLINE.getBucket().get())&&tankInventory.isEmpty()){
tankInventory.setFluid(new FluidStack(TFMGFluids.GASOLINE.get(),1000));
pPlayer.setItemInHand(pHand, Items.BUCKET.getDefaultInstance());
return true;
}
return false;
}
protected void analogSignalChanged(int newSignal) {
//removeSource();
signal = newSignal;
}
protected float getModifierForSignal(int newPower) {
if (newPower == 0)
return 1;
return 1 + ((newPower + 1) / 16f);
}
/////////////////////
protected SmartFluidTank createInventory() {
return new SmartFluidTank(1000, this::onFluidStackChanged){
@Override
public boolean isFluidValid(FluidStack stack) {
return stack.getFluid().isSame(validFuel());
}
};
}
protected SmartFluidTank createUpgradeTankInventory(Fluid validFluid) {
return new SmartFluidTank(1000, this::onFluidStackChanged){
@Override
public boolean isFluidValid(FluidStack stack) {
return stack.getFluid().isSame(validFluid);
}
};
}
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();
fluidCapability.invalidate();
}
public IFluidTank getTankInventory() {
return tankInventory;
}
public Fluid validFuel(){
return TFMGFluids.GASOLINE.get();
};
}

View File

@@ -0,0 +1,22 @@
package com.drmangotea.createindustry.blocks.engines.compact;
import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.world.level.block.state.BlockState;
public class CompactEngineRenderer extends KineticBlockEntityRenderer<CompactEngineBlockEntity> {
public CompactEngineRenderer(BlockEntityRendererProvider.Context context) {
super(context);
}
@Override
protected SuperByteBuffer getRotatedModel(CompactEngineBlockEntity be, BlockState state) {
return CachedBufferer.partialFacing(AllPartialModels.SHAFT_HALF, state);
}
}

View File

@@ -193,7 +193,8 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
if(getShaft() != null)
engineProcess(targetAxis,verticalTarget);
//DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::makeSound);
makeSound(targetAxis,verticalTarget);
if(level.isClientSide)
makeSound(targetAxis,verticalTarget);
int conveyedSpeedLevel =
engineStrength == 0 ? 1 : verticalTarget ? 1 : (int) GeneratingKineticBlockEntity.convertToDirection(1, facing)*2;
@@ -218,7 +219,7 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
@OnlyIn(Dist.CLIENT)
//@OnlyIn(Dist.CLIENT)
private void makeSound(Axis targetAxis, boolean verticalTarget){
Float targetAngle = getTargetAngle();
PoweredShaftBlockEntity ste = target.get();

View File

@@ -0,0 +1,106 @@
package com.drmangotea.createindustry.blocks.engines.radial;
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
import com.drmangotea.createindustry.registry.TFMGShapes;
import com.simibubi.create.content.kinetics.base.DirectionalKineticBlock;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.pathfinder.PathComputationType;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class RadialEngineBlock extends DirectionalKineticBlock implements IBE<RadialEngineBlockEntity> {
public RadialEngineBlock(Properties properties) {
super(properties);
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
Level level = context.getLevel();
BlockPos pos = context.getClickedPos();
Direction direction = context.getClickedFace();
return onBlockEntityUse(level, pos, be -> {
if(be.spawnInput(direction))
return InteractionResult.SUCCESS;
return InteractionResult.FAIL;
});
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return TFMGShapes.RADIAL_ENGINE.get(pState.getValue(FACING));
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
Direction preferred = getPreferredFacing(context);
if ((context.getPlayer() != null && context.getPlayer()
.isShiftKeyDown()) || preferred == null)
return super.getStateForPlacement(context);
return defaultBlockState()
.setValue(FACING, preferred)
//.setValue(BACK_PART,false)
;
}
// IRotate:
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
return face.getAxis() == state.getValue(FACING).getAxis();
}
@Override
public Axis getRotationAxis(BlockState state) {
return state.getValue(FACING)
.getAxis();
}
@Override
public boolean hideStressImpact() {
return true;
}
@Override
public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) {
return false;
}
@Override
public Class<RadialEngineBlockEntity> getBlockEntityClass() {
return RadialEngineBlockEntity.class;
}
@Override
public BlockEntityType<? extends RadialEngineBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.RADIAL_ENGINE.get();
}
}

View File

@@ -0,0 +1,641 @@
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;
import com.drmangotea.createindustry.registry.TFMGSoundEvents;
import com.simibubi.create.Create;
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.content.kinetics.base.DirectionalKineticBlock;
import com.simibubi.create.content.kinetics.base.GeneratingKineticBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
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 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.InteractionResult;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.block.Blocks;
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.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.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;
protected FluidTank tankInventory;
protected FluidTank lubricationOilTank;
protected FluidTank coolantTank;
protected int soundTimer=0;
public int inputSingal=0;
public int fuelConsumption =0;
public float stressTotal=0;
public float speed=0;
public float stressBase=0;
public int efficiency=1;
public final int idealSpeed=12;
public int consumptionTimer=0;
public Fluid lubricationOil = TFMGFluids.LUBRICATION_OIL.get();
public Fluid coolant = TFMGFluids.COOLING_FLUID.get();
public float powerModifier=1;
public float efficiencyModifier = 1.4f;
public List<BlockPos> inputs = new ArrayList<>();
//
public int signal;
boolean signalChanged;
//
// protected ScrollValueBehaviour generatedSpeed;
public RadialEngineBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
tankInventory = createInventory();
lubricationOilTank = createUpgradeTankInventory(lubricationOil);
coolantTank = createUpgradeTankInventory(coolant);
//fluidCapability = LazyOptional.of(() -> tankInventory);
fluidCapability = LazyOptional.of(() -> {
return new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank );
});
signal = 0;
setLazyTickRate(40);
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {}
public boolean spawnInput(Direction side){
BlockPos posToSpawn = getBlockPos().relative(side);
if(side.getAxis() == this.getBlockState().getValue(DirectionalKineticBlock.FACING).getAxis())
return false;
if(!level.getBlockState(posToSpawn).isAir()) {
if(level.getBlockState(posToSpawn).is(TFMGBlocks.RADIAL_ENGINE_INPUT.get())) {
inputs.remove(posToSpawn);
level.setBlock(posToSpawn, Blocks.AIR.defaultBlockState(),3);
return true;
}
return false;
}
level.setBlock(posToSpawn, TFMGBlocks.RADIAL_ENGINE_INPUT.getDefaultState().setValue(DirectionalBlock.FACING,this.getBlockState().getValue(DirectionalKineticBlock.FACING).getOpposite()),3);
inputs.add(posToSpawn);
((RadialEngineInputBlockEntity)level.getBlockEntity(posToSpawn)).setEngine(this);
return true;
}
@Override
public void initialize() {
super.initialize();
sendData();
if (!hasSource() || getGeneratedSpeed() > getTheoreticalSpeed())
updateGeneratedRotation();
}
@Override
public float getGeneratedSpeed() {
int signal = Math.max(this.signal,inputSingal);
if(!level.isClientSide){
calculateEfficiency();
fuelConsumption = (int)((speed/(efficiency/10)/7)+1);
if(fuelConsumption<1)
fuelConsumption=0;
if(!tankInventory.isEmpty()) {
if(consumptionTimer>=45) {
if(signal!=0)
tankInventory.drain(fuelConsumption, IFluidHandler.FluidAction.EXECUTE);
consumptionTimer=0;
}
consumptionTimer++;
return ((signal*signal)*0.8f)*powerModifier;
}}
return 0;
}
public void setInputSingal(int inputSingal) {
this.inputSingal = inputSingal;
}
public void calculateEfficiency(){
int signal = Math.max(this.signal,inputSingal);
if(signal==0||tankInventory.isEmpty()) {
efficiency = 0;
return;
}
efficiency=100;
if(signal>=idealSpeed){
efficiency= (int) ((100-(signal-idealSpeed)*5)/efficiencyModifier);
}
if(signal<idealSpeed){
efficiency= (int) ((100-(idealSpeed-signal)*3)/efficiencyModifier);
}
if(efficiency>100)
efficiency=100;
}
@Override
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
// boolean added = super.addToGoggleTooltip(tooltip, isPlayerSneaking);
// if (!IRotate.StressImpact.isEnabled())
// return added;
//
Lang.translate("goggles.engine_stats")
.forGoggles(tooltip);
stressBase = calculateAddedStressCapacity();
// if (Mth.equal(stressBase, 0))
// return added;
Lang.translate("tooltip.capacityProvided")
.style(ChatFormatting.GRAY)
.space()
.forGoggles(tooltip);
speed = getTheoreticalSpeed();
if (speed != getGeneratedSpeed() && speed != 0)
// stressBase *= getGeneratedSpeed() / speed;
speed = Math.abs(speed);
stressTotal = stressBase * speed;
Lang.number(stressTotal)
.translate("generic.unit.stress")
.style(ChatFormatting.DARK_AQUA)
.space()
.add(Lang.translate("gui.goggles.at_current_speed")
.style(ChatFormatting.DARK_GRAY))
.forGoggles(tooltip, 1);
Lang.translate("goggles.engine_redstone_input")
.style(ChatFormatting.GRAY)
.forGoggles(tooltip);
Lang.translate("tooltip.engine_analog_strength", this.signal)
.style(ChatFormatting.DARK_AQUA)
.forGoggles(tooltip,1);
/////
Lang.translate("goggles.engine.efficiency")
.style(ChatFormatting.GRAY)
.forGoggles(tooltip);
Lang.translate("goggles.get_engine_efficiency", this.efficiency)
.style(ChatFormatting.DARK_AQUA)
.add(Lang.translate("goggles.misc.percent_symbol"))
.forGoggles(tooltip,1);
////////////////////////////////////////
LazyOptional<IFluidHandler> handler = fluidCapability;
Optional<IFluidHandler> resolve = handler.resolve();
if (!resolve.isPresent())
return false;
IFluidHandler tank = resolve.get();
if (tank.getTanks() == 0)
return false;
LangBuilder mb = Lang.translate("generic.unit.millibuckets");
Lang.translate("goggles.fuel_container")
.style(ChatFormatting.GRAY)
.forGoggles(tooltip);
boolean isEmpty = true;
for (int i = 0; i < tank.getTanks(); i++) {
FluidStack fluidStack = tank.getFluidInTank(i);
if (fluidStack.isEmpty())
continue;
Lang.fluidName(fluidStack)
.style(ChatFormatting.GRAY)
.forGoggles(tooltip, 1);
Lang.builder()
.add(Lang.number(fluidStack.getAmount())
.add(mb)
.style(ChatFormatting.DARK_AQUA))
.text(ChatFormatting.GRAY, " / ")
.add(Lang.number(tank.getTankCapacity(i))
.add(mb)
.style(ChatFormatting.DARK_GRAY))
.forGoggles(tooltip, 1);
isEmpty = false;
}
if (tank.getTanks() > 1) {
if (isEmpty)
tooltip.remove(tooltip.size() - 1);
return true;
}
if (!isEmpty)
return true;
Lang.translate("gui.goggles.fluid_container.capacity")
.add(Lang.number(tank.getTankCapacity(0))
.add(mb)
.style(ChatFormatting.DARK_AQUA))
.style(ChatFormatting.DARK_GRAY)
.forGoggles(tooltip, 1);
return true;
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
// this.getBlockState().setValue(EngineBlock.BACKPART,true);
return InteractionResult.SUCCESS;
}
/////////////////////////////////////////////
@Override
public void write(CompoundTag compound, boolean clientPacket) {
compound.putInt("Signal", signal);
compound.put("TankContent", tankInventory.writeToNBT(new CompoundTag()));
compound.put("Coolant", coolantTank.writeToNBT(new CompoundTag()));
compound.put("LubricationOil", lubricationOilTank.writeToNBT(new CompoundTag()));
compound.put("Inputs", writeInputs(new CompoundTag(),inputs));
super.write(compound, clientPacket);
}
public static CompoundTag writeInputs(CompoundTag nbt, List<BlockPos> inputs){
int x = 0;
for(BlockPos input : inputs) {
nbt.putInt("X"+x, input.getX());
nbt.putInt("Y"+x, input.getY());
nbt.putInt("Z"+x, input.getZ());
x++;
}
return nbt;
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
tankInventory.readFromNBT(compound.getCompound("TankContent"));
coolantTank.readFromNBT(compound.getCompound("Coolant"));
lubricationOilTank.readFromNBT(compound.getCompound("LubricationOil"));
inputs = readInputs(compound.getCompound("Inputs"));
signal = compound.getInt("Signal");
super.read(compound, clientPacket);
}
public void loadInputs(){
for(BlockPos pos : inputs){
if(level.getBlockEntity(pos) instanceof RadialEngineInputBlockEntity be)
be.setEngine(this);
}
}
public List<BlockPos> readInputs(CompoundTag nbt){
int inputCount = nbt.getAllKeys().size()/3;
List<BlockPos> toReturn = new ArrayList<>();
for(int i = 0; i < inputCount; i++){
toReturn.add(new BlockPos(nbt.getInt("X"+i),nbt.getInt("Y"+i),nbt.getInt("Z"+i)));
}
return toReturn;
}
public float getModifier() {
return getModifierForSignal(signal);
}
public void neighbourChanged() {
if (!hasLevel())
return;
int power = level.getBestNeighborSignal(worldPosition);
if (power != signal)
signalChanged = true;
}
@Override
public void lazyTick() {
super.lazyTick();
neighbourChanged();
}
@Override
public void tick() {
super.tick();
loadInputs();
if (signalChanged) {
signalChanged = false;
analogSignalChanged(level.getBestNeighborSignal(worldPosition));
}
for (int i = 0; i < inputs.size(); i++) {
BlockPos pos = inputs.get(i);
if(level.getBlockEntity(pos) instanceof RadialEngineInputBlockEntity) {
((RadialEngineInputBlockEntity) level.getBlockEntity(pos)).setEngine(this);
if(level.getBlockState(pos).getValue(FACING)!=this.getBlockState().getValue(FACING)){
level.getBlockState(pos).setValue(FACING,this.getBlockState().getValue(FACING));
}
}
else inputs.remove(pos);
}
calculateUpgradeModifier();
//
int random1 = Create.RANDOM.nextInt(125);
int random2 = Create.RANDOM.nextInt(200);
if(random1 == 69)
coolantTank.drain(1, IFluidHandler.FluidAction.EXECUTE);
if(random2 == 69)
lubricationOilTank.drain(1, IFluidHandler.FluidAction.EXECUTE);
//
///
// if(signal!=0&&hasBackPart()&&tankInventory.getFluidAmount()!=0&&!overStressed&&isExhaustTankFull()) {
int signal = Math.max(this.signal,inputSingal);
soundTimer++;
// if(!isExhaustTankFull()) {
if (soundTimer >= ((16-signal)/0.8)+1) {
if(signal!=0&&
tankInventory.getFluidAmount()!=0 &&
!overStressed
){
// if(this.getGeneratedSpeed()!=0) {
if (level.isClientSide)
makeSound();
}
}
// }
///
updateGeneratedRotation();
calculateEfficiency();
stressBase = calculateAddedStressCapacity();
speed = getTheoreticalSpeed();
if (speed != getGeneratedSpeed() && speed != 0)
stressBase *= getGeneratedSpeed() / speed;
speed = Math.abs(speed);
stressTotal = stressBase * speed;
// if (level.isClientSide)
// return;
}
public void calculateUpgradeModifier(){
float newPowerModifier=1;
float newEfficiencyModifier = 1.4f;
if(lubricationOilTank.getFluidAmount()>0) {
//newPowerModifier+=.3f;
newEfficiencyModifier-=.1f;
}
if(coolantTank.getFluidAmount()>0) {
newPowerModifier+=.3f;
newEfficiencyModifier-=.3f;
}
////////
////
powerModifier=newPowerModifier;
efficiencyModifier = newEfficiencyModifier;
}
@OnlyIn(Dist.CLIENT)
private void makeSound(){
soundTimer=0;
TFMGSoundEvents.ENGINE.playAt(level, worldPosition, 0.6f, 1f, false);
}
protected void analogSignalChanged(int newSignal) {
//removeSource();
signal = newSignal;
}
protected float getModifierForSignal(int newPower) {
if (newPower == 0)
return 1;
return 1 + ((newPower + 1) / 16f);
}
/////////////////////
protected SmartFluidTank createInventory() {
return new SmartFluidTank(1000, this::onFluidStackChanged){
@Override
public boolean isFluidValid(FluidStack stack) {
return stack.getFluid().isSame(validFuel());
}
};
}
protected SmartFluidTank createUpgradeTankInventory(Fluid validFluid) {
return new SmartFluidTank(1000, this::onFluidStackChanged){
@Override
public boolean isFluidValid(FluidStack stack) {
return stack.getFluid().isSame(validFluid);
}
};
}
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();
fluidCapability.invalidate();
}
public IFluidTank getTankInventory() {
return tankInventory;
}
public Fluid validFuel(){
return TFMGFluids.GASOLINE.get();
};
}

View File

@@ -0,0 +1,22 @@
package com.drmangotea.createindustry.blocks.engines.radial;
import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.world.level.block.state.BlockState;
public class RadialEngineRenderer extends KineticBlockEntityRenderer<RadialEngineBlockEntity> {
public RadialEngineRenderer(BlockEntityRendererProvider.Context context) {
super(context);
}
@Override
protected SuperByteBuffer getRotatedModel(RadialEngineBlockEntity be, BlockState state) {
return CachedBufferer.partialFacing(AllPartialModels.SHAFT_HALF, state);
}
}

View File

@@ -0,0 +1,55 @@
package com.drmangotea.createindustry.blocks.engines.radial.input;
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
import com.drmangotea.createindustry.registry.TFMGShapes;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
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.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class RadialEngineInputBlock extends DirectionalBlock implements IBE<RadialEngineInputBlockEntity> {
public RadialEngineInputBlock(Properties p_52591_) {
super(p_52591_);
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
builder.add(FACING);
super.createBlockStateDefinition(builder);
}
@Override
public VoxelShape getShape(BlockState state, BlockGetter p_220053_2_, BlockPos p_220053_3_,
CollisionContext p_220053_4_) {
return TFMGShapes.EMPTY;
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
Direction nearestLookingDirection = context.getNearestLookingDirection();
return defaultBlockState().setValue(FACING, context.getPlayer() != null && context.getPlayer()
.isShiftKeyDown() ? nearestLookingDirection : nearestLookingDirection.getOpposite());
}
@Override
public Class<RadialEngineInputBlockEntity> getBlockEntityClass() {
return RadialEngineInputBlockEntity.class;
}
@Override
public BlockEntityType<? extends RadialEngineInputBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.RADIAL_ENGINE_INPUT.get();
}
}

View File

@@ -0,0 +1,144 @@
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;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
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;
import static net.minecraft.world.level.block.DirectionalBlock.FACING;
// :3
public class RadialEngineInputBlockEntity extends SmartBlockEntity {
int timer = 10;
boolean signalChanged;
public int signal=0;
RadialEngineBlockEntity engine;
public RadialEngineInputBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
public void setEngine(RadialEngineBlockEntity engine) {
this.engine = engine;
}
public void tick(){
super.tick();
if(timer>0){
timer--;
}
if(engine!=null) {
if (!(level.getBlockEntity(engine.getBlockPos()) instanceof RadialEngineBlockEntity)) {
engine = null;
}
if(engine!=null) {
engine.setInputSingal(signal);
}
}
if(engine == null) {
if(timer ==0)
level.setBlock(getBlockPos(), Blocks.AIR.defaultBlockState(), 3);
}
if (signalChanged) {
signalChanged = false;
analogSignalChanged(level.getBestNeighborSignal(worldPosition));
}
}
protected void analogSignalChanged(int newSignal) {
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);
if(engine !=null) {
compound.putInt("X", engine.getBlockPos().getX());
compound.putInt("Y", engine.getBlockPos().getY());
compound.putInt("Z", engine.getBlockPos().getZ());
}
super.write(compound, clientPacket);
}
public void neighbourChanged() {
if (!hasLevel())
return;
int power = level.getBestNeighborSignal(worldPosition);
if (power != signal)
signalChanged = true;
}
@Override
public void lazyTick() {
super.lazyTick();
neighbourChanged();
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
if(engine == null)
engine = (RadialEngineBlockEntity) level.getBlockEntity(new BlockPos(
compound.getInt("X"),
compound.getInt("Y"),
compound.getInt("Z")
));
signal = compound.getInt("Signal");
super.read(compound, clientPacket);
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
}
}

View File

@@ -0,0 +1,107 @@
package com.drmangotea.createindustry.blocks.engines.radial.large;
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
import com.drmangotea.createindustry.registry.TFMGShapes;
import com.simibubi.create.content.kinetics.base.DirectionalKineticBlock;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.pathfinder.PathComputationType;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class LargeRadialEngineBlock extends DirectionalKineticBlock implements IBE<LargeRadialEngineBlockEntity> {
public LargeRadialEngineBlock(Properties properties) {
super(properties);
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
Level level = context.getLevel();
BlockPos pos = context.getClickedPos();
Direction direction = context.getClickedFace();
return onBlockEntityUse(level, pos, be -> {
if(be.spawnInput(direction))
return InteractionResult.SUCCESS;
return InteractionResult.FAIL;
});
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return TFMGShapes.LARGE_RADIAL_ENGINE.get(pState.getValue(FACING));
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
Direction preferred = getPreferredFacing(context);
if ((context.getPlayer() != null && context.getPlayer()
.isShiftKeyDown()) || preferred == null)
return super.getStateForPlacement(context);
return defaultBlockState()
.setValue(FACING, preferred)
//.setValue(BACK_PART,false)
;
}
// IRotate:
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
return face.getAxis() == state.getValue(FACING).getAxis();
}
@Override
public Axis getRotationAxis(BlockState state) {
return state.getValue(FACING)
.getAxis();
}
@Override
public boolean hideStressImpact() {
return true;
}
@Override
public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) {
return false;
}
@Override
public Class<LargeRadialEngineBlockEntity> getBlockEntityClass() {
return LargeRadialEngineBlockEntity.class;
}
@Override
public BlockEntityType<? extends LargeRadialEngineBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.LARGE_RADIAL_ENGINE.get();
}
}

View File

@@ -0,0 +1,48 @@
package com.drmangotea.createindustry.blocks.engines.radial.large;
import com.drmangotea.createindustry.blocks.engines.radial.RadialEngineBlockEntity;
import com.drmangotea.createindustry.registry.TFMGFluids;
import net.minecraft.core.BlockPos;
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) {
super(type, pos, state);
}
@Override
public float getGeneratedSpeed() {
int signal = Math.max(this.signal,inputSingal);
if(!level.isClientSide){
calculateEfficiency();
fuelConsumption = (int)((speed/(efficiency/10)/5)+1);
if(fuelConsumption<1)
fuelConsumption=0;
if(!tankInventory.isEmpty()) {
if(consumptionTimer>=45) {
if(signal!=0)
tankInventory.drain(fuelConsumption, IFluidHandler.FluidAction.EXECUTE);
consumptionTimer=0;
}
consumptionTimer++;
return ((signal*signal)*0.8f)*powerModifier;
}}
return 0;
}
@Override
public Fluid validFuel(){
return TFMGFluids.KEROSENE.get();
};
}

View File

@@ -83,9 +83,9 @@ public class BlastFurnaceOutputBlockEntity extends TFMGMachineBlockEntity implem
super(type, pos, state);
inputInventory = new SmartInventory(1, this).forbidInsertion()
inputInventory = new SmartInventory(1, this).forbidInsertion().forbidExtraction()
.withMaxStackSize(64);
fuelInventory = new SmartInventory(1, this).forbidInsertion()
fuelInventory = new SmartInventory(1, this).forbidInsertion().forbidExtraction()
.withMaxStackSize(64);
itemCapability = LazyOptional.of(() -> new CombinedInvWrapper(inputInventory,fuelInventory));
@@ -118,8 +118,9 @@ public class BlastFurnaceOutputBlockEntity extends TFMGMachineBlockEntity implem
if(speedModifier!=0) {
fuelEfficiency = 400 * speedModifier;
speedModifier = (blastFurnaceLevel/2);
fuelEfficiency = 400 * (speedModifier);
}else {
fuelEfficiency = 400;
speedModifier = 1;
@@ -194,7 +195,7 @@ public class BlastFurnaceOutputBlockEntity extends TFMGMachineBlockEntity implem
(tank1.getPrimaryHandler().getFluidAmount()+recipe.getFluidResults().get(0).getAmount())<=tank1.getPrimaryHandler().getCapacity()&&
(tank2.getPrimaryHandler().getFluidAmount()+recipe.getFluidResults().get(1).getAmount())<=tank2.getPrimaryHandler().getCapacity()) {
timer--;
int random = Create.RANDOM.nextInt((int) fuelEfficiency);
int random = Create.RANDOM.nextInt((int) Math.abs(fuelEfficiency)+1);
if(random == 69)
fuelInventory.getStackInSlot(0).shrink(1);

View File

@@ -1,8 +1,11 @@
package com.drmangotea.createindustry.blocks.machines.metal_processing.coke_oven;
import com.drmangotea.createindustry.blocks.machines.TFMGMachineBlockEntity;
import com.drmangotea.createindustry.recipes.coking.CokingRecipe;
import com.drmangotea.createindustry.registry.*;
import com.drmangotea.createindustry.registry.TFMGBlocks;
import com.drmangotea.createindustry.registry.TFMGRecipeTypes;
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
@@ -10,21 +13,24 @@ import com.simibubi.create.foundation.item.SmartInventory;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.RegistryAccess;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.ItemStack;
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.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.capability.CapabilityFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import net.minecraftforge.items.wrapper.RecipeWrapper;
@@ -39,7 +45,7 @@ import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWrenchable {
public boolean isController=false;
public boolean isController = false;
public CokeOvenBlockEntity controller;
@@ -74,19 +80,29 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
super.tick();
if(controller==null){
inputInventory.forbidInsertion();
} else {
inputInventory.allowInsertion();
}
// if(isController)
// level.setBlock(getBlockPos().above(5), Blocks.DIAMOND_BLOCK.defaultBlockState(),3);
if(controller==null){
controller = this;
inputInventory.forbidInsertion();
} else {
inputInventory.allowInsertion();
}
//if(controller!=this)
// level.setBlock(this.getBlockPos().above(5), Blocks.GOLD_BLOCK.defaultBlockState(),3);
visualDoorAngle.chase(doorAngle, 0.2f, LerpedFloat.Chaser.EXP);
visualDoorAngle.tickChaser();
// if(controller != null)
// refreshCapability();
// if(controller != null)
// refreshCapability();
if(isController){
controller = this;
}
@@ -94,11 +110,11 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
if(controller!=null)
if(!controller.isController)
controller=null;
controller=this;
if(controller!=null)
if(!(level.getBlockEntity(controller.getBlockPos()) instanceof CokeOvenBlockEntity))
controller = null;
controller = this;
setBlockState();
@@ -110,9 +126,9 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
progress = 0;
}else {
progress = 100-(timer/(lastRecipe.getProcessingDuration()/100));
}
progress = 100-(timer/(lastRecipe.getProcessingDuration()/100));
}
}
if(timer>=0&&timer<44){
@@ -148,7 +164,7 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
public void setBlockState(){
if(controller == null){
if(controller == this){
level.setBlock(getBlockPos(),this.getBlockState().setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.CASUAL),2);
}
@@ -159,18 +175,18 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
if(timer==-1) {
level.setBlock(getBlockPos(),this.getBlockState().setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.MIDDLE_OFF),2);
level.setBlock(getBlockPos(),this.getBlockState().setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.MIDDLE_OFF),2);
if(level.getBlockEntity(getBlockPos().below())instanceof CokeOvenBlockEntity)
level.setBlock(getBlockPos().below(),level.getBlockState(getBlockPos().below()).setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.BOTTOM_OFF).setValue(FACING,this.getBlockState().getValue(FACING)),2);
if(level.getBlockEntity(getBlockPos().above())instanceof CokeOvenBlockEntity)
level.setBlock(getBlockPos().above(),level.getBlockState(getBlockPos().above()).setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.TOP_OFF).setValue(FACING,this.getBlockState().getValue(FACING)),2);
}else {
level.setBlock(getBlockPos(),this.getBlockState().setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.MIDDLE_ON),2);
}else {
level.setBlock(getBlockPos(),this.getBlockState().setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.MIDDLE_ON),2);
if(level.getBlockEntity(getBlockPos().below())instanceof CokeOvenBlockEntity)
level.setBlock(getBlockPos().below(),level.getBlockState(getBlockPos().below()).setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.BOTTOM_ON).setValue(FACING,this.getBlockState().getValue(FACING)),2);
if(level.getBlockEntity(getBlockPos().above())instanceof CokeOvenBlockEntity)
level.setBlock(getBlockPos().above(),level.getBlockState(getBlockPos().above()).setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.TOP_ON).setValue(FACING,this.getBlockState().getValue(FACING)),2);
}
level.setBlock(getBlockPos().above(),level.getBlockState(getBlockPos().above()).setValue(CONTROLLER_TYPE, CokeOvenBlock.ControllerType.TOP_ON).setValue(FACING,this.getBlockState().getValue(FACING)),2);
}
@@ -192,17 +208,17 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
(tank1.getPrimaryHandler().getFluidAmount()+lastRecipe.getFluidResults().get(0).getAmount())<=tank1.getPrimaryHandler().getCapacity(
)){
)){
timer = lastRecipe.getProcessingDuration();
inputInventory.setItem(0,new ItemStack(inputInventory.getItem(0).getItem(),inputInventory.getItem(0).getCount()-1));
}
// if(lastRecipe != null)
// if((tank1.getPrimaryHandler().getFluidAmount()+lastRecipe.getFluidResults().get(0).getAmount())>tank1.getPrimaryHandler().getCapacity())
// timer = -1;
// if(lastRecipe != null)
// if((tank2.getPrimaryHandler().getFluidAmount()+CARBON_DIOXIDE_PRODUCTION)>tank2.getPrimaryHandler().getCapacity())
// timer = -1;
// if(lastRecipe != null)
// if((tank1.getPrimaryHandler().getFluidAmount()+lastRecipe.getFluidResults().get(0).getAmount())>tank1.getPrimaryHandler().getCapacity())
// timer = -1;
// if(lastRecipe != null)
// if((tank2.getPrimaryHandler().getFluidAmount()+CARBON_DIOXIDE_PRODUCTION)>tank2.getPrimaryHandler().getCapacity())
// timer = -1;
if(lastRecipe!=null
@@ -221,8 +237,7 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
public void process(){
if(level.isClientSide)
return;
if(!isController)
return;
//RecipeWrapper inventoryIn = new RecipeWrapper(inputInventory);
@@ -231,13 +246,16 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
// if (!recipe.isPresent())
// return;
// lastRecipe = recipe.get();
//}
//})
BlockPos toSpawn = getBlockPos().below().relative(this.getBlockState().getValue(FACING));
//
ItemEntity itemToSpawn = new ItemEntity(level,toSpawn.getX()+0.5f,toSpawn.getY()+0.5f,toSpawn.getZ()+0.5f, lastRecipe.getResultItem().copy());
if(lastRecipe == null)
return;
ItemEntity itemToSpawn = new ItemEntity(level, toSpawn.getX() + 0.5f, toSpawn.getY() + 0.5f, toSpawn.getZ() + 0.5f, lastRecipe.getResultItem().copy());
level.addFreshEntity(itemToSpawn);
// }
}
@@ -248,29 +266,18 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
private void refreshCapability() {
if (this.controller == null) {
return;
}
if(controller!=null)
if (controller.tank1 != null)
if (controller.tank2 != null)
if (controller.inputInventory != null){
fluidCapability = LazyOptional.of(() -> new CombinedTankWrapper(controller.tank1.getPrimaryHandler(), controller.tank2.getPrimaryHandler()));
itemCapability = LazyOptional.of(() -> new CombinedInvWrapper(controller.inputInventory));
}
LazyOptional<IFluidHandler> oldFluidCapability = fluidCapability;
LazyOptional<IItemHandlerModifiable> oldItemCapability = itemCapability;
if (controller.tank1 != null){
if (controller.tank2 != null){
if (controller.inputInventory != null){
fluidCapability = LazyOptional.of(() -> new CombinedTankWrapper(controller.tank1.getPrimaryHandler(), controller.tank2.getPrimaryHandler()));
itemCapability = LazyOptional.of(() -> new CombinedInvWrapper(controller.inputInventory));
}}}
//oldFluidCapability.invalidate();
//oldItemCapability.invalidate();
}
public void setControllers(){
if(!isValid())
@@ -289,10 +296,10 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
CokeOvenBlockEntity checkedBE = (CokeOvenBlockEntity) level.getBlockEntity(checkedPos);
checkedBE.controller = this;
checkedBE.controller = this;
if(checkedBE.getBlockState().getValue(FACING)!=getBlockState().getValue(FACING))
level.setBlock(checkedPos,checkedBE.getBlockState().setValue(FACING,getBlockState().getValue(FACING)),2);
if(checkedBE.getBlockState().getValue(FACING)!=getBlockState().getValue(FACING))
level.setBlock(checkedPos,checkedBE.getBlockState().setValue(FACING,getBlockState().getValue(FACING)),2);
checkedPos = checkedPos.below();
}
@@ -308,26 +315,34 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
BlockPos checkedPos=this.getBlockPos().above();
if(controller!=this){
isController = false;
return false;
}
for(int i = 0; i<3;i++){
for(int y = 0; y<3;y++){
if(checkedPos == this.getBlockPos()){
if(!isCokeOvenBlock(checkedPos,true)) {
isController = false;
return false;
}
}else
if(!isCokeOvenBlock(checkedPos)) {
isController=false;
return false;
}
if(occupiedByOtherController(checkedPos)) {
if(checkedPos == this.getBlockPos()){
if(!isCokeOvenBlock(checkedPos,true)) {
isController = false;
return false;
}
}
else
//
if(!isCokeOvenBlock(checkedPos)) {
isController = false;
return false;
}
//
if(occupiedByOtherController(checkedPos)) {
isController = false;
return false;
}
@@ -351,10 +366,13 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
}
public boolean occupiedByOtherController(BlockPos pos){
if(level.getBlockEntity(pos).getBlockState().is(TFMGBlocks.COKE_OVEN.get()))
if(((CokeOvenBlockEntity)level.getBlockEntity(pos)).controller == null||((CokeOvenBlockEntity)level.getBlockEntity(pos)).controller == this)
// if(((CokeOvenBlockEntity)level.getBlockEntity(pos)).controller != this)
return false;
if(controller == null)
controller = this;
if(level.getBlockEntity(pos).getBlockState().is(TFMGBlocks.COKE_OVEN.get()))
if(((CokeOvenBlockEntity)level.getBlockEntity(pos)).controller == ((CokeOvenBlockEntity)level.getBlockEntity(pos)).controller||((CokeOvenBlockEntity)level.getBlockEntity(pos)).controller == this)
// if(()
return false;
return true;
}
@@ -368,10 +386,10 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
// Lang.translate("goggles.surface_scanner.distance",controller.getBlockPos().getY())
// .style(ChatFormatting.DARK_BLUE)
// .forGoggles(tooltip,1);
// if(controller !=null)
// Lang.translate("goggles.surface_scanner.distance",controller.timer)
// .style(ChatFormatting.DARK_BLUE)
// .forGoggles(tooltip,1);
// if(controller !=null)
// Lang.translate("goggles.surface_scanner.distance",controller.timer)
// .style(ChatFormatting.DARK_BLUE)
// .forGoggles(tooltip,1);
//
//if(controller==null){
// Lang.translate("aaaaaaaaaaaaaaaaaaaaaaaaaaa")
@@ -379,8 +397,8 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
// .forGoggles(tooltip,1);
//
// return true;
// }
// return true;
// }
if(controller!=null)
if(controller.getBlockPos() == getBlockPos()&&!isValid()){
Lang.translate("goggles.coke_oven.invalid")
@@ -401,7 +419,7 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
if(lastRecipe != null)
if((tank1.getPrimaryHandler().getFluidAmount()+lastRecipe.getFluidResults().get(0).getAmount())>tank1.getPrimaryHandler().getCapacity()
&&(tank2.getPrimaryHandler().getFluidAmount()+CARBON_DIOXIDE_PRODUCTION)>tank2.getPrimaryHandler().getCapacity()) {
&&(tank2.getPrimaryHandler().getFluidAmount()+CARBON_DIOXIDE_PRODUCTION)>tank2.getPrimaryHandler().getCapacity()) {
Lang.translate("goggles.coke_oven.tank_full")
.style(ChatFormatting.DARK_RED)
.forGoggles(tooltip,1);
@@ -429,12 +447,12 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
// Lang.translate("goggles.coke_oven.fluid_amount_output",tank1.getPrimaryHandler().getCapacity())
// .style(ChatFormatting.DARK_AQUA)
// .forGoggles(tooltip,1);
// Lang.translate("goggles.coke_oven.fluid_amount_exhaust",tank2.getPrimaryHandler().getCapacity())
// .style(ChatFormatting.DARK_AQUA)
// .forGoggles(tooltip,1);
// Lang.translate("goggles.coke_oven.fluid_amount_output",tank1.getPrimaryHandler().getCapacity())
// .style(ChatFormatting.DARK_AQUA)
// .forGoggles(tooltip,1);
// Lang.translate("goggles.coke_oven.fluid_amount_exhaust",tank2.getPrimaryHandler().getCapacity())
// .style(ChatFormatting.DARK_AQUA)
// .forGoggles(tooltip,1);
Lang.translate("goggles.coke_oven.item_count",inputInventory.getItem(0).getCount())
.style(ChatFormatting.GOLD)
.forGoggles(tooltip,1);
@@ -457,6 +475,14 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
timer = compound.getInt("Timer");
// controller = (CokeOvenBlockEntity) level.getBlockEntity(new BlockPos(
// compound.getInt("controllerX"),
// compound.getInt("controllerY"),
// compound.getInt("controllerZ")
//
// ));
}
@Override
@@ -468,6 +494,13 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
compound.putInt("Timer", timer);
// compound.putInt("controllerX", controller.getBlockPos().getX());
// compound.putInt("controllerY", controller.getBlockPos().getY());
// compound.putInt("controllerZ", controller.getBlockPos().getZ());
}
@@ -478,13 +511,12 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
}
@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(controller!=null)
refreshCapability();
if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
if (cap == ForgeCapabilities.ITEM_HANDLER)
return itemCapability.cast();
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
if (cap == ForgeCapabilities.FLUID_HANDLER)
return fluidCapability.cast();
return super.getCapability(cap, side);
}
@@ -495,4 +527,4 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
super.addBehaviours(behaviours);
}
}
}

View File

@@ -1,63 +1,27 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.base;
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
import com.drmangotea.createindustry.registry.TFMGShapes;
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.Rotation;
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.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class PumpjackBaseBlock extends HorizontalDirectionalBlock implements IWrenchable, IBE<PumpjackBaseBlockEntity> {
public PumpjackBaseBlock(Properties p_i48440_1_) {
super(p_i48440_1_);
public class PumpjackBaseBlock extends Block implements IBE<PumpjackBaseBlockEntity> {
public PumpjackBaseBlock(Properties pProperties) {
super(pProperties);
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return TFMGShapes.PUMPJACK_BASE;
}
public BlockState rotate(BlockState p_54540_, Rotation p_54541_) {
return p_54540_.setValue(FACING, p_54541_.rotate(p_54540_.getValue(FACING)));
}
public BlockState mirror(BlockState p_54537_, Mirror p_54538_) {
return p_54537_.rotate(p_54538_.getRotation(p_54537_.getValue(FACING)));
}
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> p_54543_) {
p_54543_.add(FACING);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite());
}
@Override
public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) {
world.removeBlockEntity(pos);
}
@Override
public Class<PumpjackBaseBlockEntity> getBlockEntityClass() {
@@ -69,4 +33,5 @@ public class PumpjackBaseBlock extends HorizontalDirectionalBlock implements IWr
return TFMGBlockEntities.PUMPJACK_BASE.get();
}
}

View File

@@ -1,10 +1,9 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.base;
import com.drmangotea.createindustry.CreateTFMG;
import com.drmangotea.createindustry.blocks.deposits.FluidDepositBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder.PumpjackHammerHolderBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.machine_input.MachineInputBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.PumpjackBlockEntity;
import com.drmangotea.createindustry.registry.TFMGBlocks;
import com.drmangotea.createindustry.registry.TFMGFluids;
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
@@ -23,61 +22,152 @@ 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 static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
import java.util.Optional;
public class PumpjackBaseBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation {
public BlockPos crankPos = this.getBlockPos();
public PumpjackBlockEntity controllerHammer;
public boolean isRunning = false;
int depositCheckTimer = 0;
public int miningRate = 0;
protected LazyOptional<IFluidHandler> fluidCapability;
public FluidTank tankInventory;
public FluidDepositBlockEntity deposit;
public Direction direction = this.getBlockState().getValue(FACING).getOpposite();
int debugCounter = 0;
public int miningRate = 0;
int depositCheckTimer = 0;
private static final int SYNC_RATE = 8;
protected int syncCooldown;
protected boolean queuedSync;
public PumpjackBaseBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
tankInventory = createInventory();
fluidCapability = LazyOptional.of(() -> tankInventory);
refreshCapability();
}
@Override
public void tick() {
super.tick();
if(controllerHammer!=null)
if(controllerHammer.crank!=null){
}
if(controllerHammer!=null)
if (!(level.getBlockEntity(controllerHammer.getBlockPos()) instanceof PumpjackBlockEntity))
controllerHammer = null;
if(controllerHammer!=null)
if(controllerHammer.base==null)
controllerHammer = null;
if(controllerHammer!=null)
if(!controllerHammer.isRunning())
controllerHammer = null;
if(controllerHammer==null)
return;
isRunning = controllerHammer.isRunning();
if(!isRunning) {
deposit = null;
controllerHammer = null;
miningRate = 0;
return;
}
depositCheckTimer++;
if (depositCheckTimer > 50) {
depositCheckTimer = 0;
findDeposit();
}
PumpjackCrankBlockEntity crank=null;
if(controllerHammer.crank!=null)
crank = controllerHammer.crank;
if(crank == null)
return;
miningRate =
(int)
Math.abs(crank.getMachineInputSpeed()*
(crank.heightModifier));
process();
}
public void findDeposit() {
for (int i = 0; i < this.getBlockPos().getY() + 64; i++) {
BlockPos checkedPos = new BlockPos(this.getBlockPos().getX(), (this.getBlockPos().getY() - 1) - i, this.getBlockPos().getZ());
if (level.getBlockState(new BlockPos(checkedPos)).is(TFMGBlocks.OIL_DEPOSIT.get())) {
deposit = (FluidDepositBlockEntity) level.getBlockEntity(checkedPos);
return;
}
if (!(level.getBlockState(new BlockPos(checkedPos)).is(TFMGBlocks.INDUSTRIAL_PIPE.get()))) {
deposit = null;
return;
}
}
deposit = null;
}
public void process() {
if (deposit == null || deposit.fluidAmount == 0)
return;
if (tankInventory.getFluidAmount() + miningRate > 8000)
return;
deposit.fluidAmount -= miningRate;
tankInventory.setFluid(new FluidStack(deposit.getDepositFluid(), tankInventory.getFluidAmount() + miningRate));
}
public void setControllerHammer(PumpjackBlockEntity controllerHammer) {
this.controllerHammer = controllerHammer;
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
}
protected SmartFluidTank createInventory() {
return new SmartFluidTank(8000, this::onFluidStackChanged) {
@Override
public boolean isFluidValid(FluidStack stack) {
return stack.getFluid().isSame(TFMGFluids.CRUDE_OIL.getSource());
}
};
}
protected void onFluidStackChanged(FluidStack newFluidStack) {}
@Override
@SuppressWarnings("removal")
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
Lang.translate("goggles.pumpjack_info")
.forGoggles(tooltip);
if (!isComplete()) {
Lang.translate("goggles.pumpjack.part_missing")
.style(ChatFormatting.DARK_RED)
.forGoggles(tooltip);
if(isWronglyRotated()){
Lang.translate("goggles.pumpjack.wrong_rotation1")
.style(ChatFormatting.GOLD)
.forGoggles(tooltip);
Lang.translate("goggles.pumpjack.wrong_rotation2")
.style(ChatFormatting.GOLD)
.forGoggles(tooltip);
}
return true;
}
LangBuilder mb = Lang.translate("generic.unit.millibuckets");
@@ -98,6 +188,10 @@ public class PumpjackBaseBlockEntity extends SmartBlockEntity implements IHaveGo
).forGoggles(tooltip, 1);
Lang.translate("pumpjack_deposit_amount", this.miningRate)
.style(ChatFormatting.LIGHT_PURPLE)
.forGoggles(tooltip, 1);
} else {
Lang.translate("goggles.zero")
@@ -105,158 +199,66 @@ public class PumpjackBaseBlockEntity extends SmartBlockEntity implements IHaveGo
.forGoggles(tooltip, 1);
}
//--Fluid Info--//
LazyOptional<IFluidHandler> handler = this.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
Optional<IFluidHandler> resolve = handler.resolve();
if (!resolve.isPresent())
return false;
IFluidHandler tank = resolve.get();
if (tank.getTanks() == 0)
return false;
boolean isEmpty = true;
for (int i = 0; i < tank.getTanks(); i++) {
FluidStack fluidStack = tank.getFluidInTank(i);
if (fluidStack.isEmpty())
continue;
Lang.fluidName(fluidStack)
.style(ChatFormatting.GRAY)
.forGoggles(tooltip, 1);
Lang.builder()
.add(Lang.number(fluidStack.getAmount())
.add(mb)
.style(ChatFormatting.DARK_GREEN))
.text(ChatFormatting.GRAY, " / ")
.add(Lang.number(tank.getTankCapacity(i))
.add(mb)
.style(ChatFormatting.DARK_GRAY))
.forGoggles(tooltip, 1);
isEmpty = false;
}
if (tank.getTanks() > 1) {
if (isEmpty)
tooltip.remove(tooltip.size() - 1);
return true;
}
if (!isEmpty)
return true;
Lang.translate("gui.goggles.fluid_container.capacity")
.add(Lang.number(tank.getTankCapacity(0))
.add(mb)
.style(ChatFormatting.DARK_GREEN))
.style(ChatFormatting.DARK_GRAY)
.forGoggles(tooltip, 1);
return true;
}
public void process() {
if (deposit == null || deposit.fluidAmount == 0)
return;
if (tankInventory.getFluidAmount() + miningRate > 1000)
return;
deposit.fluidAmount -= miningRate;
tankInventory.setFluid(new FluidStack(deposit.getDepositFluid(), tankInventory.getFluidAmount() + miningRate));
}
public boolean hasPipe() {
for (int i = -62; i != getBlockPos().getY(); i++) {
BlockPos pos = new BlockPos(getBlockPos().getX(), i, getBlockPos().getZ());
if (!(level.getBlockState(pos).is(TFMGBlocks.INDUSTRIAL_PIPE.get())))
return false;
}
return true;
}
public void findDeposit() {
for (int i = 0; i < this.getBlockPos().getY() + 64; i++) {
debugCounter = this.getBlockPos().getY() - i;
BlockPos checkedPos = new BlockPos(this.getBlockPos().getX(), (this.getBlockPos().getY() - 1) - i, this.getBlockPos().getZ());
if (level.getBlockState(new BlockPos(checkedPos)).is(TFMGBlocks.OIL_DEPOSIT.get())) {
deposit = (FluidDepositBlockEntity) level.getBlockEntity(checkedPos);
return;
}
if (!(level.getBlockState(new BlockPos(checkedPos)).is(TFMGBlocks.INDUSTRIAL_PIPE.get()))) {
deposit = null;
return;
}
}
debugCounter = 0;
deposit = null;
return;
/*
if(!hasPipe()) {
deposit = null;
return;
}
if(level.getBlockEntity(new BlockPos(getBlockPos().getX(),-63,getBlockPos().getZ())) instanceof FluidDepositTileEntity) {
deposit = (FluidDepositTileEntity) (level.getBlockEntity(new BlockPos(getBlockPos().getX(),-64,getBlockPos().getZ())));
}else {
deposit=null;
}
*/
}
protected SmartFluidTank createInventory() {
return new SmartFluidTank(1000, this::onFluidStackChanged) {
@Override
public boolean isFluidValid(FluidStack stack) {
return stack.getFluid().isSame(TFMGFluids.CRUDE_OIL.getSource());
}
};
}
protected void onFluidStackChanged(FluidStack newFluidStack) {
}
@Override
public void tick() {
super.tick();
if (!isComplete())
return;
MachineInputBlockEntity input = null;
if (level.getBlockEntity(crankPos.below()) instanceof MachineInputBlockEntity)
input = (MachineInputBlockEntity) level.getBlockEntity(crankPos.below());
if (input == null)
return;
miningRate = input.powerLevel * 12;
depositCheckTimer++;
if (depositCheckTimer > 50) {
depositCheckTimer = 0;
findDeposit();
}
direction = this.getBlockState().getValue(FACING).getOpposite();
process();
if (syncCooldown > 0) {
syncCooldown--;
if (syncCooldown == 0 && queuedSync)
sendData();
}
}
@Override
public void initialize() {
super.initialize();
sendData();
if (level.isClientSide)
invalidateRenderBoundingBox();
}
@Override
public void sendData() {
if (syncCooldown > 0) {
queuedSync = true;
return;
}
super.sendData();
queuedSync = false;
syncCooldown = SYNC_RATE;
}
private void refreshCapability() {
LazyOptional<IFluidHandler> oldCap = fluidCapability;
fluidCapability = LazyOptional.of(() -> handlerForCapability());
oldCap.invalidate();
}
private IFluidHandler handlerForCapability() {
return tankInventory;
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
super.read(compound, clientPacket);
tankInventory.setCapacity(1000);
tankInventory.readFromNBT(compound.getCompound("TankContent"));
}
@@ -269,106 +271,13 @@ public class PumpjackBaseBlockEntity extends SmartBlockEntity implements IHaveGo
}
@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();
@SuppressWarnings("removal")
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
return fluidCapability.cast();
return super.getCapability(cap, side);
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
}
public IFluidTank getTankInventory() {
return tankInventory;
}
public boolean isComplete() {
BlockPos hammerPos = this.getBlockPos();
crankPos = this.getBlockPos();
if (direction == Direction.WEST) {
hammerPos = new BlockPos(this.getBlockPos().west(2).above(2));
crankPos = new BlockPos(this.getBlockPos().west(4).above(1));
}
if (direction == Direction.EAST) {
hammerPos = new BlockPos(this.getBlockPos().east(2).above(2));
crankPos = new BlockPos(this.getBlockPos().east(4).above(1));
}
if (direction == Direction.NORTH) {
hammerPos = new BlockPos(this.getBlockPos().north(2).above(2));
crankPos = new BlockPos(this.getBlockPos().north(4).above(1));
}
if (direction == Direction.SOUTH) {
hammerPos = new BlockPos(this.getBlockPos().south(2).above(2));
crankPos = new BlockPos(this.getBlockPos().south(4).above(1));
}
if (!(level.getBlockEntity(hammerPos) instanceof PumpjackHammerHolderBlockEntity &&
level.getBlockEntity(crankPos) instanceof PumpjackCrankBlockEntity)) {
return false;
}
//MachineInputTileEntity input = (MachineInputTileEntity) level.getBlockEntity(crankPos.below());
// if(input.powerLevel==0)
// return false;
if (level.getBlockEntity(hammerPos).getBlockState().getValue(FACING).getOpposite() == direction
&& level.getBlockEntity(crankPos).getBlockState().getValue(FACING).getOpposite() == direction
)
return true;
return false;
}
public boolean isWronglyRotated() {
if (isComplete())
return false;
BlockPos hammerPos1 = this.getBlockPos();
BlockPos hammerPos2 = this.getBlockPos();
BlockPos hammerPos3 = this.getBlockPos();
crankPos = this.getBlockPos();
if (direction == Direction.WEST) {
hammerPos1 = new BlockPos(this.getBlockPos().east(2).above(2));
hammerPos2 = new BlockPos(this.getBlockPos().north(2).above(2));
hammerPos3 = new BlockPos(this.getBlockPos().south(2).above(2));
}
if (direction == Direction.EAST) {
hammerPos1 = new BlockPos(this.getBlockPos().west(2).above(2));
hammerPos2 = new BlockPos(this.getBlockPos().north(2).above(2));
hammerPos3 = new BlockPos(this.getBlockPos().south(2).above(2));
}
if (direction == Direction.NORTH) {
hammerPos1 = new BlockPos(this.getBlockPos().south(2).above(2));
hammerPos2 = new BlockPos(this.getBlockPos().west(2).above(2));
hammerPos3 = new BlockPos(this.getBlockPos().east(2).above(2));
}
if (direction == Direction.SOUTH) {
hammerPos1 = new BlockPos(this.getBlockPos().north(2).above(2));
hammerPos2 = new BlockPos(this.getBlockPos().east(2).above(2));
hammerPos3 = new BlockPos(this.getBlockPos().west(2).above(2));
}
BlockState hammer1 = level.getBlockState(hammerPos1);
BlockState hammer2 = level.getBlockState(hammerPos2);
BlockState hammer3 = level.getBlockState(hammerPos3);
return hammer1.is(TFMGBlocks.PUMPJACK_HAMMER_HOLDER.get())||
hammer2.is(TFMGBlocks.PUMPJACK_HAMMER_HOLDER.get())||
hammer3.is(TFMGBlocks.PUMPJACK_HAMMER_HOLDER.get());
}
}

View File

@@ -1,50 +0,0 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.base;
import com.drmangotea.createindustry.registry.TFMGPartialModels;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedBufferer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.world.level.block.state.BlockState;
public class PumpjackBaseRenderer extends SafeBlockEntityRenderer<PumpjackBaseBlockEntity> {
public PumpjackBaseRenderer(BlockEntityRendererProvider.Context context) {}
@Override
protected void renderSafe(PumpjackBaseBlockEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
int light, int overlay) {
BlockState blockState = te.getBlockState();
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
ms.pushPose();
TransformStack msr = TransformStack.cast(ms);
msr.translate(1 / 2f, 0.5, 1 / 2f);
float dialPivot = 5.75f / 16;
if(te.isComplete()) {
CachedBufferer.partial(TFMGPartialModels.PUMPJACK_FRONT_ROPE, blockState)
// .rotateY(d.toYRot())
.unCentre()
.translateY(1)
.light(light)
.renderInto(ms, vb);
}
ms.popPose();
}
@Override
public boolean shouldRenderOffScreen(PumpjackBaseBlockEntity te) {
return false;
}
}

View File

@@ -1,23 +1,22 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank;
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
import com.drmangotea.createindustry.registry.TFMGShapes;
import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.AllShapes;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.RenderShape;
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.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class PumpjackCrankBlock extends HorizontalDirectionalBlock implements IBE<PumpjackCrankBlockEntity>, IWrenchable {
public class PumpjackCrankBlock extends HorizontalDirectionalBlock implements IBE<PumpjackCrankBlockEntity> {
public PumpjackCrankBlock(Properties p_54120_) {
super(p_54120_);
}
@@ -26,23 +25,22 @@ public class PumpjackCrankBlock extends HorizontalDirectionalBlock implements IB
return this.defaultBlockState().setValue(FACING, p_54779_.getHorizontalDirection());
}
@Override
public VoxelShape getShape(BlockState state, BlockGetter p_220053_2_, BlockPos p_220053_3_,
CollisionContext p_220053_4_) {
return TFMGShapes.PUMPJACK_CRANK;
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return AllShapes.CASING_14PX.get(Direction.UP);
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder);
builder.add(FACING);
}
@Override
public Class<PumpjackCrankBlockEntity> getBlockEntityClass() {
return PumpjackCrankBlockEntity.class;
}
@Override
public RenderShape getRenderShape(BlockState pState) {
return RenderShape.MODEL;
}
@Override
public BlockEntityType<? extends PumpjackCrankBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.PUMPJACK_CRANK.get();
}
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> p_54794_) {
p_54794_.add(FACING);
}
}

View File

@@ -1,122 +1,101 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder.PumpjackHammerHolderBlockEntity;
import com.drmangotea.createindustry.CreateTFMG;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.machine_input.MachineInputBlockEntity;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.ServerSpeedProvider;
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 java.util.List;
import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
public class PumpjackCrankBlockEntity extends KineticBlockEntity {
float targetSpeed;
public float angle=0;
public Direction direction;
public BlockPos hammerPos;
public float heightModifier=0;
protected float clientAngleDiff;
public float crankRadius = 0.7f;
public PumpjackCrankBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
angle=177;
if(direction==Direction.NORTH)
hammerPos =this.getBlockPos().north(2).above();
if(direction==Direction.SOUTH)
hammerPos =this.getBlockPos().south(2).above();
if(direction==Direction.WEST)
hammerPos =this.getBlockPos().west(2).above();
if(direction==Direction.EAST)
hammerPos =this.getBlockPos().east(2).above();
}
@Override
public void write(CompoundTag compound, boolean clientPacket) {
super.write(compound, clientPacket);
if (clientPacket) {
compound.putFloat("Angle", angle);
}
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
super.read(compound, clientPacket);
if (clientPacket) {
angle = compound.getFloat("Angle");
}
}
@Override
public void tick() {
public void tick(){
super.tick();
direction = this.getBlockState().getValue(FACING);
if (!level.isClientSide)
return;
setAngle();
if(direction==Direction.NORTH)
hammerPos =this.getBlockPos().north(2).above();
if(direction==Direction.SOUTH)
hammerPos =this.getBlockPos().south(2).above();
if(direction==Direction.WEST)
hammerPos =this.getBlockPos().west(2).above();
if(direction==Direction.EAST)
hammerPos =this.getBlockPos().east(2).above();
heightModifier = (float) (crankRadius * Math.sin(Math.toRadians(angle)));
if(!isValid()) {
angle = 177;
return;
}
public float getMachineInputSpeed(){
if(level.getBlockEntity(getBlockPos().below()) instanceof MachineInputBlockEntity)
return ((MachineInputBlockEntity)level.getBlockEntity(getBlockPos().below())).getSpeed();
return 0;
}
private void setAngle() {
if(level.getBlockEntity(getBlockPos().below()) instanceof MachineInputBlockEntity) {
float time;
if(level.isClientSide) {
time = AnimationTickHolder.getRenderTime(getLevel());
}else time = level.getBlockTicks().hashCode();
float speed_amogus = Math.min(getMachineInputSpeed() /6 , (float) 10);
if(speed_amogus!=0) {
angle = (time * speed_amogus * 3 / 10f) % 360;
angle = angle / 180f * (float) Math.PI;
angle = (float) Math.toDegrees(angle);
}
else angle = 180;
}
if(level.getBlockEntity(this.getBlockPos().below())instanceof MachineInputBlockEntity) {
if(((MachineInputBlockEntity)level.getBlockEntity(this.getBlockPos().below())).powerLevel!=0) {
angle += 3;
}else angle=177;
}else
angle=177;
targetSpeed= 10;
angle%=360;
}
public boolean isValid(){
if(hammerPos==null)
return false;
if(!(level.getBlockEntity(hammerPos) instanceof PumpjackHammerHolderBlockEntity))
return false;
if(!(direction==level.getBlockEntity(hammerPos).getBlockState().getValue(FACING)))
return false;
return true;
}
/*
private void moveConnectionPos() {
connectionPos = new BlockPos(this.getBlockPos().getX()+0.5f,this.getBlockPos().getY()+0.25f,this.getBlockPos().getZ()+0.5f);
float y=0.8f;
float x=0.8f;
// connectionPos.
}
*/
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {}
// @Override
// public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
//
// Lang.translate("goggles.coke_oven.progress", angle)
// .add(Lang.translate("goggles.misc.percent_symbol"))
// .style(ChatFormatting.DARK_PURPLE)
// .forGoggles(tooltip,1);
// return true;
// }
}

View File

@@ -1,112 +0,0 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank;
import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.api.instance.DynamicInstance;
import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityInstance;
import com.simibubi.create.foundation.utility.AngleHelper;
import net.minecraft.core.Direction;
public class PumpjackCrankInstance extends KineticBlockEntityInstance<PumpjackCrankBlockEntity> implements DynamicInstance {
protected final ModelData hammer;
protected float lastAngle = Float.NaN;
static float originOffset = 1 / 16f;
public PumpjackCrankInstance(MaterialManager modelManager, PumpjackCrankBlockEntity tile) {
super(modelManager, tile);
hammer = getTransformMaterial().getModel(blockState)
.createInstance();
animate(tile.angle);
}
@Override
public void beginFrame() {
float angle = blockEntity.angle;
animate(angle);
lastAngle = angle;
}
private void animate(float angle) {
PoseStack ms = new PoseStack();
TransformStack msr = TransformStack.cast(ms);
msr.translate(getInstancePosition());
// msr.centre()
// .rotateCentered(Direction.EAST, AngleHelper.rad(angle))
// .unCentre();
if(blockEntity.direction==Direction.EAST) {
msr.translateY(-0.5);
msr
.centre()
.translate(0, .25, 0)
.rotate(Direction.SOUTH, AngleHelper.rad(angle))
.translateBack(0, -.25, 0)
.unCentre();
}
if(blockEntity.direction==Direction.WEST) {
msr.translateY(-0.5);
msr
.centre()
.translate(0, .25, 0)
.rotate(Direction.NORTH, AngleHelper.rad(angle))
.translateBack(0, -.25, 0)
.unCentre();
}
if(blockEntity.direction==Direction.NORTH) {
msr.translateY(-0.5);
msr
.centre()
.translate(0, .25, 0)
.rotate(Direction.EAST, AngleHelper.rad(angle))
.translateBack(0, -.25, 0)
.unCentre();
}
if(blockEntity.direction==Direction.SOUTH) {
msr.translateY(-0.5);
msr
.centre()
.translate(0, .25, 0)
.rotate(Direction.WEST, AngleHelper.rad(angle))
.translateBack(0, -.25, 0)
.unCentre();
}
hammer.setTransform(ms);
}
@Override
public void updateLight() {
relight(pos, hammer);
}
@Override
public void remove() {
hammer.delete();
}
}

View File

@@ -2,8 +2,8 @@ package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.cr
import com.drmangotea.createindustry.registry.TFMGPartialModels;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
@@ -11,11 +11,9 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.utility.AngleHelper;
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.world.level.block.state.BlockState;
import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
@@ -35,15 +33,13 @@ public class PumpjackCrankRenderer extends KineticBlockEntityRenderer {
// if (Backend.canUseInstancing(te.getLevel()))
// return;
BlockState blockState = te.getBlockState();
PumpjackCrankBlockEntity wte = (PumpjackCrankBlockEntity) te;
PumpjackCrankBlockEntity be = (PumpjackCrankBlockEntity) te;
float angle = wte.angle * partialTicks;
float angle = be.angle * partialTicks;
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
@@ -54,9 +50,9 @@ public class PumpjackCrankRenderer extends KineticBlockEntityRenderer {
VertexConsumer vb) {
SuperByteBuffer hammer = CachedBufferer.block(blockState);
//kineticRotationTransform(hammer, te, getRotationAxisOf(te), AngleHelper.rad(angle), light);
hammer.renderInto(ms, vb);
//SuperByteBuffer hammer = CachedBufferer.block(blockState);
////kineticRotationTransform(hammer, te, getRotationAxisOf(te), AngleHelper.rad(angle), light);
//hammer.renderInto(ms, vb);
}
private void renderBlock(PumpjackCrankBlockEntity be, PoseStack ms, int light,
MultiBufferSource buffer) {
@@ -70,18 +66,17 @@ public class PumpjackCrankRenderer extends KineticBlockEntityRenderer {
float dialPivot = 5.75f / 16;
SuperByteBuffer crank = CachedBufferer.partialFacing(TFMGPartialModels.PUMPJACK_CRANK, blockState,blockState.getValue(FACING));
CachedBufferer.partialFacing(TFMGPartialModels.PUMPJACK_CRANK_BLOCK, blockState,blockState.getValue(FACING))
.translate(-0.5, -0.5, -0.5)
.light(light)
.renderInto(ms,vb);
crank
.translate(-0.5, -0.5, -0.5)
.centre()
.translate(0, -.25, 0)
.rotate(be.getBlockState().getValue(FACING).getCounterClockWise(), -AngleHelper.rad(be.angle))
.translate(0, .25, 0)
// .translate(0, -.25, 0)
.rotate(be.angle-90,be.getBlockState().getValue(FACING).getCounterClockWise().getAxis())
//.translate(0, .25, 0)
.unCentre()
.light(light);
@@ -89,87 +84,6 @@ public class PumpjackCrankRenderer extends KineticBlockEntityRenderer {
crank.renderInto(ms,vb);
if (be.direction == Direction.NORTH){
if(be.isValid()) {
CachedBufferer.partial(TFMGPartialModels.PUMPJACK_CONNECTOR, blockState)
.translate(-0.5, -0.75, -0.5)
.centre()
.rotate(Direction.WEST, -AngleHelper.rad(be.angle))
.unCentre()
.translateY(0.4)
.centre()
.rotate(Direction.WEST, AngleHelper.rad(be.angle))
.unCentre()
.light(light)
.translateY(0.4)
.renderInto(ms, vb);
}
}
if(be.direction == Direction.EAST) {
if(be.isValid()) {
CachedBufferer.partial(TFMGPartialModels.PUMPJACK_CONNECTOR, blockState)
.rotateY(270)
.translate(-0.5, -0.75, -0.5)
.centre()
.rotate(Direction.WEST, -AngleHelper.rad(be.angle))
.unCentre()
.translateY(0.4)
.centre()
.rotate(Direction.WEST, AngleHelper.rad(be.angle))
.unCentre()
.light(light)
.translateY(0.4)
.renderInto(ms, vb);
}
}
if(be.direction == Direction.SOUTH) {
if(be.isValid()) {
CachedBufferer.partial(TFMGPartialModels.PUMPJACK_CONNECTOR, blockState)
.rotateY(180)
.translate(-0.5, -0.75, -0.5)
.centre()
.rotate(Direction.WEST, -AngleHelper.rad(be.angle))
.unCentre()
.translateY(0.4)
.centre()
.rotate(Direction.WEST, AngleHelper.rad(be.angle))
.unCentre()
.light(light)
.translateY(0.4)
.renderInto(ms, vb);
}
}
if(be.direction == Direction.WEST) {
if(be.isValid()) {
CachedBufferer.partial(TFMGPartialModels.PUMPJACK_CONNECTOR, blockState)
.rotateY(90)
.translate(-0.5, -0.75, -0.5)
.centre()
.rotate(Direction.WEST, -AngleHelper.rad(be.angle))
.unCentre()
.translateY(0.4)
.centre()
.rotate(Direction.WEST, AngleHelper.rad(be.angle))
.unCentre()
.light(light)
.translateY(0.4)
.renderInto(ms, vb);
}
}
ms.popPose();
}

View File

@@ -0,0 +1,106 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer;
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
import com.drmangotea.createindustry.registry.TFMGBlocks;
import com.simibubi.create.content.contraptions.bearing.BearingBlock;
import com.simibubi.create.content.kinetics.base.IRotate;
import com.simibubi.create.foundation.block.IBE;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
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.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.BlockHitResult;
public class PumpjackBlock extends BearingBlock implements IBE<PumpjackBlockEntity> {
public static final BooleanProperty WIDE = BooleanProperty.create("wide");
public PumpjackBlock(Properties properties) {
super(properties);
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
builder.add(WIDE);
super.createBlockStateDefinition(builder);
}
@Override
public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn,
BlockHitResult hit) {
if (!player.mayBuild())
return InteractionResult.FAIL;
if (player.isShiftKeyDown())
return InteractionResult.FAIL;
if (player.getItemInHand(handIn)
.isEmpty()) {
if (worldIn.isClientSide)
return InteractionResult.SUCCESS;
withBlockEntityDo(worldIn, pos, be -> {
if (be.running) {
//be.disassemble();
return;
}
//if(be.crank==null||be.base == null)
// return;
});
return InteractionResult.SUCCESS;
}
return InteractionResult.PASS;
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
boolean wide = context.getLevel().getBlockState(context.getClickedPos().above()).is(TFMGBlocks.LARGE_PUMPJACK_HAMMER_PART.get());
Direction preferredDirection = getPreferredHorizontalFacing(context);
if (preferredDirection != null)
return this.defaultBlockState().setValue(FACING, preferredDirection).setValue(WIDE,wide);
return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection()).setValue(WIDE,wide);
}
public static Direction getPreferredHorizontalFacing(BlockPlaceContext context) {
Direction prefferedSide = null;
for (Direction side : Iterate.horizontalDirections) {
BlockState blockState = context.getLevel().getBlockState(context.getClickedPos().relative(side));
if (blockState.getBlock() instanceof IRotate) {
if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getLevel(), context.getClickedPos().relative(side),
blockState, side.getOpposite()))
if (prefferedSide != null && prefferedSide.getAxis() != side.getAxis()) {
prefferedSide = null;
break;
} else {
prefferedSide = side;
}
}
}
return prefferedSide == null ? null : prefferedSide;
}
@Override
public Class<PumpjackBlockEntity> getBlockEntityClass() {
return PumpjackBlockEntity.class;
}
@Override
public BlockEntityType<? extends PumpjackBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.PUMPJACK_HAMMER.get();
}
}

View File

@@ -0,0 +1,720 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.base.PumpjackBaseBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.PumpjackHammerConnectorBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.PumpjackHammerHeadBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.PumpjackHammerPartBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.large.LargePumpjackHammerConnectorBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.large.LargePumpjackHammerHeadBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.large.LargePumpjackHammerPartBlock;
import com.drmangotea.createindustry.registry.TFMGBlocks;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.ControlledContraptionEntity;
import com.simibubi.create.content.contraptions.IDisplayAssemblyExceptions;
import com.simibubi.create.content.contraptions.bearing.BearingBlock;
import com.simibubi.create.content.contraptions.bearing.IBearingBlockEntity;
import com.simibubi.create.content.kinetics.base.GeneratingKineticBlockEntity;
import com.simibubi.create.content.kinetics.transmission.sequencer.SequencerInstructions;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollOptionBehaviour;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.ServerSpeedProvider;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
import net.minecraft.world.phys.AABB;
import java.util.List;
import static com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.PumpjackBlock.WIDE;
import static net.minecraft.world.level.block.DirectionalBlock.FACING;
public class PumpjackBlockEntity extends GeneratingKineticBlockEntity
implements IBearingBlockEntity, IDisplayAssemblyExceptions {
protected ScrollOptionBehaviour<RotationMode> movementMode;
protected ControlledContraptionEntity movedContraption;
protected float angle;
protected boolean running;
protected boolean assembleNextTick;
protected float clientAngleDiff;
protected AssemblyException lastException;
protected double sequencedAngleLimit;
private float prevAngle;
public BlockPos headPosition=null;
public BlockPos connectorPosition =null;
public PumpjackCrankBlockEntity crank=null;
public PumpjackBaseBlockEntity base=null;
public int connectorDistance = 0;
public int headDistance = 0;
public boolean connectorAtFront = false;
public boolean headAtFront = false;
public int crankConnectorDistance = 0;
public int headBaseDistance = 0;
public PumpjackBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
setLazyTickRate(3);
sequencedAngleLimit = -1;
}
@Override
public boolean isWoodenTop() {
return false;
}
@Override
protected boolean syncSequenceContext() {
return true;
}
@Override
protected AABB createRenderBoundingBox() {
return super.createRenderBoundingBox().inflate(7);
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
super.addBehaviours(behaviours);
registerAwardables(behaviours, AllAdvancements.CONTRAPTION_ACTORS);
}
@Override
public void remove() {
if (!level.isClientSide)
disassemble();
super.remove();
}
@Override
public void write(CompoundTag compound, boolean clientPacket) {
if(connectorPosition!=null) {
compound.putInt("connectorX", connectorPosition.getX());
compound.putInt("connectorY", connectorPosition.getY());
compound.putInt("connectorZ", connectorPosition.getZ());
}
//
if(headPosition!=null) {
compound.putInt("headX", headPosition.getX());
compound.putInt("headY", headPosition.getY());
compound.putInt("headZ", headPosition.getZ());
}
compound.putBoolean("connectorAtFront", connectorAtFront);
compound.putBoolean("headAtFront", headAtFront);
compound.putBoolean("Running", running);
compound.putFloat("Angle", angle);
if (sequencedAngleLimit >= 0)
compound.putDouble("SequencedAngleLimit", sequencedAngleLimit);
AssemblyException.write(compound, lastException);
super.write(compound, clientPacket);
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
if (wasMoved) {
super.read(compound, clientPacket);
return;
}
connectorPosition = new BlockPos(
compound.getInt("connectorX"),
compound.getInt("connectorY"),
compound.getInt("connectorZ")
);
headPosition = new BlockPos(
compound.getInt("headX"),
compound.getInt("headY"),
compound.getInt("headZ")
);
connectorAtFront = compound.getBoolean("connectorAtFront");
headAtFront = compound.getBoolean("headAtFront");
float angleBefore = angle;
running = compound.getBoolean("Running");
angle = compound.getFloat("Angle");
sequencedAngleLimit = compound.contains("SequencedAngleLimit") ? compound.getDouble("SequencedAngleLimit") : -1;
lastException = AssemblyException.read(compound);
super.read(compound, clientPacket);
if (!clientPacket)
return;
if (running) {
if (movedContraption == null || !movedContraption.isStalled()) {
clientAngleDiff = AngleHelper.getShortestAngleDiff(angleBefore, angle);
angle = angleBefore;
}
} else
movedContraption = null;
}
@Override
public float getInterpolatedAngle(float partialTicks) {
if (isVirtual())
return Mth.lerp(partialTicks + .5f, prevAngle, angle);
if (movedContraption == null || movedContraption.isStalled() || !running)
partialTicks = 0;
float angularSpeed = getAngularSpeed();
if (sequencedAngleLimit >= 0)
angularSpeed = (float) Mth.clamp(angularSpeed, -sequencedAngleLimit, sequencedAngleLimit);
return Mth.lerp(partialTicks, angle, angle + angularSpeed);
}
@Override
public void onSpeedChanged(float prevSpeed) {
super.onSpeedChanged(prevSpeed);
assembleNextTick = true;
sequencedAngleLimit = -1;
if (movedContraption != null && Math.signum(prevSpeed) != Math.signum(getSpeed()) && prevSpeed != 0) {
if (!movedContraption.isStalled()) {
angle = Math.round(angle);
applyRotation();
}
movedContraption.getContraption()
.stop(level);
}
if (sequenceContext != null
&& sequenceContext.instruction() == SequencerInstructions.TURN_ANGLE)
sequencedAngleLimit = sequenceContext.getEffectiveValue(getTheoreticalSpeed());
}
public float getAngularSpeed() {
float speed = convertToAngular(getSpeed());
if (getSpeed() == 0)
speed = 0;
if (level.isClientSide) {
speed *= ServerSpeedProvider.get();
speed += clientAngleDiff / 3f;
}
return speed;
}
@Override
public AssemblyException getLastAssemblyException() {
return lastException;
}
@Override
public BlockPos getBlockPosition() {
return worldPosition;
}
public void assemble() {
if (!(level.getBlockState(worldPosition)
.getBlock() instanceof BearingBlock))
return;
Direction direction = getBlockState().getValue(BearingBlock.FACING);
PumpjackContraption contraption = new PumpjackContraption(direction);
try {
if (!contraption.assemble(level, worldPosition))
return;
if(connectorPosition==null||headPosition == null)
return;
lastException = null;
} catch (AssemblyException e) {
lastException = e;
sendData();
return;
}
int q = 1;
if(direction.getAxis()== Direction.Axis.X)
q = -1;
boolean canAssemble = true;
boolean foundHead= false;
boolean foundConnector= false;
BlockPos headLocalPos = headPosition.subtract(getBlockPos().above());
for (StructureTemplate.StructureBlockInfo block : contraption.getBlocks().values()) {
if(block.state.getBlock() instanceof PumpjackHammerHeadBlock||block.state.getBlock() instanceof LargePumpjackHammerHeadBlock) {
foundHead = true;
if (block.pos.getX() != headLocalPos.getX() ||
block.pos.getY() != q*headLocalPos.getY() ||
block.pos.getZ() != q*headLocalPos.getZ())
canAssemble = false;
}
}
BlockPos connectorLocalPos = connectorPosition.subtract(getBlockPos().above());
for (StructureTemplate.StructureBlockInfo block : contraption.getBlocks().values()) {
if(block.state.getBlock() instanceof PumpjackHammerConnectorBlock||block.state.getBlock() instanceof LargePumpjackHammerConnectorBlock) {
foundConnector = true;
if (block.pos.getX() !=connectorLocalPos.getX() ||
block.pos.getY() != q*connectorLocalPos.getY() ||
block.pos.getZ() != q*connectorLocalPos.getZ())
canAssemble = false;
}
}
if(!canAssemble||!foundHead||!foundConnector)
return;
if(base.controllerHammer!=this&&base.controllerHammer!=null)
return;
contraption.removeBlocksFromWorld(level, BlockPos.ZERO);
movedContraption = ControlledContraptionEntity.create(level, this, contraption);
BlockPos anchor = worldPosition.above();
movedContraption.setPos(anchor.getX(), anchor.getY(), anchor.getZ());
movedContraption.setRotationAxis(direction.getClockWise().getAxis());
level.addFreshEntity(movedContraption);
AllSoundEvents.MECHANICAL_PRESS_ACTIVATION.playOnServer(level, worldPosition);
if (contraption.containsBlockBreakers())
award(AllAdvancements.CONTRAPTION_ACTORS);
running = true;
angle = 0;
sendData();
updateGeneratedRotation();
}
private boolean findHeadAndConnector() {
Direction direction = getBlockState().getValue(FACING);
BlockPos checkedPos = this.getBlockPos().above();
connectorPosition = null;
headPosition = null;
for(int i =0;i<7;i++){
if(connectorPosition!=null&&headPosition!=null
//&&
//level.getBlockState(headPosition).getBlock() instanceof PumpjackHammerHeadBlock&&
//level.getBlockState(connectorPosition).getBlock() instanceof PumpjackHammerConnectorBlock
) {
sendData();
return true;
}
if(i!=0)
if(level.getBlockState(checkedPos).getBlock() instanceof PumpjackHammerHeadBlock||(level.getBlockState(checkedPos).getBlock() instanceof LargePumpjackHammerHeadBlock)){
headPosition = checkedPos;
headAtFront = true;
checkedPos = checkedPos.relative(direction);
sendData();
continue;
}
if(i!=0)
if(level.getBlockState(checkedPos).getBlock() instanceof PumpjackHammerConnectorBlock||level.getBlockState(checkedPos).getBlock() instanceof LargePumpjackHammerConnectorBlock){
if(level.getBlockState(checkedPos).getValue(HorizontalDirectionalBlock.FACING).getAxis()==this.getBlockState().getValue(FACING).getAxis()) {
connectorPosition = checkedPos;
connectorAtFront = true;
checkedPos = checkedPos.relative(direction);
sendData();
continue;
}
}
if(!(level.getBlockState(checkedPos).getBlock() instanceof PumpjackHammerPartBlock)&&!(level.getBlockState(checkedPos).getBlock() instanceof LargePumpjackHammerPartBlock)) {
break;
}else {
if(level.getBlockState(checkedPos).getValue(HorizontalDirectionalBlock.FACING).getAxis()!=this.getBlockState().getValue(FACING).getAxis()) {
break;
//
}
}
checkedPos = checkedPos.relative(direction);
}
checkedPos = this.getBlockPos().above();
for(int i =0;i<7;i++){
if(connectorPosition!=null&&headPosition!=null) {
sendData();
return true;
}
if(i!=0)
if(level.getBlockState(checkedPos).getBlock() instanceof PumpjackHammerHeadBlock||(level.getBlockState(checkedPos).getBlock() instanceof LargePumpjackHammerHeadBlock)){
headPosition = checkedPos;
headAtFront = false;
checkedPos = checkedPos.relative(direction.getOpposite());
sendData();
continue;
}
if(i!=0)
if(level.getBlockState(checkedPos).getBlock() instanceof PumpjackHammerConnectorBlock||level.getBlockState(checkedPos).getBlock() instanceof LargePumpjackHammerConnectorBlock){
if(level.getBlockState(checkedPos).getValue(HorizontalDirectionalBlock.FACING).getAxis()==this.getBlockState().getValue(FACING).getAxis()) {
connectorPosition = checkedPos;
connectorAtFront = false;
checkedPos = checkedPos.relative(direction.getOpposite());
sendData();
continue;
}
}
if(!(level.getBlockState(checkedPos).getBlock() instanceof PumpjackHammerPartBlock)&&!(level.getBlockState(checkedPos).getBlock() instanceof LargePumpjackHammerPartBlock)) {
break;
}else {
if(level.getBlockState(checkedPos).getValue(HorizontalDirectionalBlock.FACING).getAxis()!=this.getBlockState().getValue(FACING).getAxis()) {
break;
}
}
checkedPos = checkedPos.relative(direction.getOpposite());
}
sendData();
return false;
}
public void disassemble() {
if (!running && movedContraption == null)
return;
connectorDistance=0;
headDistance =0;
//headPosition=null;
//connectorPosition =null;
angle = 0;
sequencedAngleLimit = -1;
if (movedContraption != null) {
movedContraption.disassemble();
AllSoundEvents.MECHANICAL_PRESS_ACTIVATION.playOnServer(level, worldPosition);
}
movedContraption = null;
running = false;
updateGeneratedRotation();
assembleNextTick = false;
sendData();
}
@Override
public void tick() {
super.tick();
if(!isRunning())
findHeadAndConnector();
if(!isRunning()&&base !=null&&crank!=null
&&!level.isClientSide
) {
assemble();
}
if(base!=null)
if(base.controllerHammer==null){
if(isRunning())
base.setControllerHammer(this);
}
if(base == null||crank == null)
if (!level.isClientSide)
disassemble();
if(level.getBlockState(getBlockPos().above()).is(TFMGBlocks.LARGE_PUMPJACK_HAMMER_PART.get())&& !getBlockState().getValue(WIDE))
level.setBlock(getBlockPos(),getBlockState().setValue(WIDE,true),2);
if(!isRunning())
if(!level.getBlockState(getBlockPos().above()).is(TFMGBlocks.LARGE_PUMPJACK_HAMMER_PART.get())&& getBlockState().getValue(WIDE))
level.setBlock(getBlockPos(),getBlockState().setValue(WIDE,false),2);
Direction direction = getBlockState().getValue(BearingBlock.FACING);
if(connectorPosition!=null) {
if (direction.getAxis() == Direction.Axis.Z)
connectorDistance = Math.abs(getBlockPos().getZ() - connectorPosition.getZ());
if (direction.getAxis() == Direction.Axis.X)
connectorDistance = Math.abs(getBlockPos().getX() - connectorPosition.getX());
if(crank!=null) {
crankConnectorDistance = Math.abs(crank.getBlockPos().getY() - connectorPosition.getY());
crank.crankRadius = (float) connectorDistance /5;
}
}
if(headPosition!=null) {
if (direction.getAxis() == Direction.Axis.Z)
headDistance = Math.abs(getBlockPos().getZ() - headPosition.getZ());
if (direction.getAxis() == Direction.Axis.X)
headDistance = Math.abs(getBlockPos().getX() - headPosition.getX());
if(base!=null) {
headBaseDistance = Math.abs(base.getBlockPos().getY() - headPosition.getY());
}
}
if(connectorPosition!=null)
crank = findCrank();
if(crank!=null)
if(!(level.getBlockEntity(crank.getBlockPos()) instanceof PumpjackCrankBlockEntity))
crank =null;
/////////////////////
if(headPosition!=null) {
base = findBase();
}
if(base!=null)
if(!(level.getBlockEntity(base.getBlockPos()) instanceof PumpjackBaseBlockEntity))
base =null;
////////
prevAngle = angle;
if (level.isClientSide)
clientAngleDiff /= 2;
if (
!level.isClientSide &&
assembleNextTick) {
assembleNextTick = false;
if (running) {
} else {
assemble();
}
}
if (!running)
return;
//////////////////////////////////////////////////////////////////////
if (!(movedContraption != null && movedContraption.isStalled())) {
if(crank!=null) {
int x = 1;
if(connectorAtFront)
x = -1;
if(direction == Direction.SOUTH||direction == Direction.WEST) {
angle = (float) Math.toDegrees(Math.atan(crank.heightModifier*x / connectorDistance));
} else angle = (float) Math.toDegrees(Math.atan(-crank.heightModifier*x / connectorDistance));
}
}
applyRotation();
}
private PumpjackCrankBlockEntity findCrank() {
BlockPos checkedPos = connectorPosition.below();
for(int i =0;i<7;i++){
if(level.getBlockEntity(checkedPos) instanceof PumpjackCrankBlockEntity)
if(level.getBlockState(checkedPos).getValue(HorizontalDirectionalBlock.FACING).getAxis()==this.getBlockState().getValue(FACING).getAxis())
return (PumpjackCrankBlockEntity) level.getBlockEntity(checkedPos);
checkedPos = checkedPos.below();
}
return null;
}
private PumpjackBaseBlockEntity findBase() {
BlockPos checkedPos = headPosition.below();
for(int i =0;i<8;i++){
if(level.getBlockEntity(checkedPos) instanceof PumpjackBaseBlockEntity)
return (PumpjackBaseBlockEntity) level.getBlockEntity(checkedPos);
checkedPos = checkedPos.below();
}
return null;
}
public boolean isNearInitialAngle() {
return Math.abs(angle) < 22.5 || Math.abs(angle) > 360 - 22.5;
}
@Override
public void lazyTick() {
super.lazyTick();
if (movedContraption != null && !level.isClientSide)
sendData();
}
protected void applyRotation() {
if (movedContraption == null)
return;
movedContraption.setAngle(angle);
BlockState blockState = getBlockState();
if (blockState.hasProperty(BlockStateProperties.FACING))
movedContraption.setRotationAxis(blockState.getValue(BlockStateProperties.FACING).getClockWise()
.getAxis());
}
@Override
public void attach(ControlledContraptionEntity contraption) {
BlockState blockState = getBlockState();
if (!(contraption.getContraption() instanceof PumpjackContraption))
return;
if (!blockState.hasProperty(BearingBlock.FACING))
return;
this.movedContraption = contraption;
setChanged();
//BlockPos anchor = worldPosition.relative(blockState.getValue(BearingBlock.FACING));
BlockPos anchor = worldPosition.above();
movedContraption.setPos(anchor.getX(), anchor.getY(), anchor.getZ());
if (!level.isClientSide) {
this.running = true;
sendData();
}
}
@Override
public void onStall() {
if (!level.isClientSide)
sendData();
}
@Override
public boolean isValid() {
return !isRemoved();
}
@Override
public boolean isAttachedTo(AbstractContraptionEntity contraption) {
return movedContraption == contraption;
}
public boolean isRunning() {
return running;
}
public void setAngle(float forcedAngle) {
angle = forcedAngle;
}
public ControlledContraptionEntity getMovedContraption() {
return movedContraption;
}
}

View File

@@ -0,0 +1,92 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer;
import com.drmangotea.createindustry.base.TFMGContraptions;
import com.simibubi.create.content.contraptions.AssemblyException;
import com.simibubi.create.content.contraptions.ContraptionType;
import com.simibubi.create.content.contraptions.bearing.AnchoredLighter;
import com.simibubi.create.content.contraptions.bearing.BearingContraption;
import com.simibubi.create.content.contraptions.render.ContraptionLighter;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.apache.commons.lang3.tuple.Pair;
public class PumpjackContraption extends BearingContraption {
//protected Direction facing;
public PumpjackContraption() {}
public PumpjackContraption(Direction facing) {
this.facing = facing;
}
@Override
public boolean assemble(Level world, BlockPos pos) throws AssemblyException {
BlockPos offset = pos.above();
if (!searchMovedStructure(world, offset, null))
return false;
startMoving(world);
expandBoundsAroundAxis(facing.getAxis());
if (blocks.isEmpty())
return false;
return true;
}
@Override
public ContraptionType getType() {
return TFMGContraptions.PUMPJACK_CONTRAPTION;
}
@Override
protected boolean isAnchoringBlockAt(BlockPos pos) {
return pos.equals(anchor.below());
}
@Override
public void addBlock(BlockPos pos, Pair<StructureBlockInfo, BlockEntity> capture) {
BlockPos localPos = pos.subtract(anchor);
super.addBlock(pos, capture);
}
//@Override
//public CompoundTag writeNBT(boolean spawnPacket) {
// CompoundTag tag = super.writeNBT(spawnPacket);
// tag.putInt("Facing", facing.get3DDataValue());
// return tag;
//}
//
//@Override
//public void readNBT(Level world, CompoundTag tag, boolean spawnData) {
// facing = Direction.from3DDataValue(tag.getInt("Facing"));
// super.readNBT(world, tag, spawnData);
//}
//public Direction getFacing() {
// return facing;
//}
@Override
public boolean canBeStabilized(Direction facing, BlockPos localPos) {
if (facing.getOpposite() == this.facing && BlockPos.ZERO.equals(localPos))
return false;
return facing.getAxis() == this.facing.getAxis();
}
@OnlyIn(Dist.CLIENT)
@Override
public ContraptionLighter<?> makeLighter() {
return new AnchoredLighter(this);
}
}

View File

@@ -0,0 +1,40 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer;
import com.simibubi.create.content.contraptions.bearing.BearingBlock;
import com.simibubi.create.foundation.data.SpecialBlockStateGen;
import com.tterrag.registrate.providers.DataGenContext;
import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.generators.ModelFile;
import static com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.PumpjackBlock.WIDE;
import static com.simibubi.create.foundation.data.AssetLookup.partialBaseModel;
public class PumpjackGenerator extends SpecialBlockStateGen {
@Override
protected int getXRotation(BlockState state) {
return 0;
}
@Override
protected int getYRotation(BlockState state) {
if(state.getValue(BearingBlock.FACING).getAxis() == Direction.Axis.Y)
return horizontalAngle(Direction.NORTH);
return horizontalAngle(state.getValue(BearingBlock.FACING).getClockWise());
}
@Override
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
BlockState state) {
return state.getValue(WIDE) ? partialBaseModel(ctx, prov, "wide")
: partialBaseModel(ctx, prov);
}
}

View File

@@ -0,0 +1,372 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix4f;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import net.minecraft.client.renderer.LightTexture;
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.minecraft.world.phys.Vec3;
import static com.simibubi.create.content.kinetics.base.DirectionalKineticBlock.FACING;
public class PumpjackRenderer extends KineticBlockEntityRenderer {
public PumpjackRenderer(BlockEntityRendererProvider.Context context) {
super(context);
}
@Override
protected void renderSafe(KineticBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer,
int light, int overlay) {
if(((PumpjackBlockEntity)be).crank == null)
return;
if(((PumpjackBlockEntity)be).base == null)
return;
if(!((PumpjackBlockEntity) be).running)
return;
renderPumpjackLink(
false,
ms,
buffer,
(PumpjackBlockEntity) be
);
renderPumpjackLink(
true,
ms,
buffer,
(PumpjackBlockEntity) be
);
renderFrontPumpjackLink(
ms,
buffer,
(PumpjackBlockEntity) be
);
}
private void renderPumpjackLink(boolean second, PoseStack pMatrixStack, MultiBufferSource pBuffer, PumpjackBlockEntity be) {
pMatrixStack.pushPose();
Direction direction = be.getBlockState().getValue(FACING);
Vec3 vec3 = new Vec3(0,0,0);
// vec3 = vec3.subtract(1,0,1);
int q = 1;
if(be.connectorAtFront)
q = -1;
float hModifier = 0;
float x=0;
float y=0;
if(be.crank!=null) {
hModifier = be.crank.heightModifier - be.crankConnectorDistance;
float linkLenght = be.crankConnectorDistance;
if(direction == Direction.WEST) {
if ((be.crank.angle>0&&be.crank.angle < 90||be.crank.angle > 270)||(be.crank.angle<0&&be.crank.angle > -90||be.crank.angle < -270)) {
x = (float) Math.sqrt(Math.pow(be.crank.crankRadius, 2) - Math.pow(be.crank.heightModifier, 2));
} else
x = (float) -Math.sqrt(Math.pow(be.crank.crankRadius, 2) - Math.pow(be.crank.heightModifier, 2));
y = (float) (be.connectorDistance - Math.sqrt(Math.pow(be.connectorDistance, 2) - Math.pow(be.crank.heightModifier, 2)));
}
if(direction == Direction.EAST) {
if ((be.crank.angle>0&&be.crank.angle < 90||be.crank.angle > 270)||(be.crank.angle<0&&be.crank.angle > -90||be.crank.angle < -270)) {
x = (float) Math.sqrt(Math.pow(be.crank.crankRadius, 2) - Math.pow(be.crank.heightModifier, 2));
} else
x = (float) -Math.sqrt(Math.pow(be.crank.crankRadius, 2) - Math.pow(be.crank.heightModifier, 2));
y = (float) (be.connectorDistance - Math.sqrt(Math.pow(be.connectorDistance, 2) - Math.pow(be.crank.heightModifier, 2)));
}
if(direction == Direction.NORTH) {
if ((be.crank.angle > 90&&be.crank.angle < 270)||(be.crank.angle < -90&&be.crank.angle > -270)) {
x = (float) Math.sqrt(Math.pow(be.crank.crankRadius, 2) - Math.pow(be.crank.heightModifier, 2));
} else
x = (float) -Math.sqrt(Math.pow(be.crank.crankRadius, 2) - Math.pow(be.crank.heightModifier, 2));
y = (float) (be.connectorDistance - Math.sqrt(Math.pow(be.connectorDistance, 2) - Math.pow(be.crank.heightModifier, 2)));
}
if(direction == Direction.SOUTH) {
if ((be.crank.angle > 90&&be.crank.angle < 270)||(be.crank.angle < -90&&be.crank.angle > -270)) {
x = (float) Math.sqrt(Math.pow(be.crank.crankRadius, 2) - Math.pow(be.crank.heightModifier, 2));
} else
x = (float) -Math.sqrt(Math.pow(be.crank.crankRadius, 2) - Math.pow(be.crank.heightModifier, 2));
y = (float) (be.connectorDistance - Math.sqrt(Math.pow(be.connectorDistance, 2) - Math.pow(be.crank.heightModifier, 2)));
}
vec3 = vec3.add(0,linkLenght,0);
}
x = x * q;
y = y * q;
if(direction==Direction.NORTH) {
pMatrixStack.translate(0, hModifier +1.5, (be.connectorDistance + (.5*q) + x)*q);
x = x * q;
vec3 = vec3.add(0,0,-x+y);
if(second) {
pMatrixStack.translate(-1,0,0);
}
pMatrixStack.translate(1,0,0);
}
if(direction==Direction.SOUTH){
pMatrixStack.translate(0, hModifier+1.5, (-be.connectorDistance+(.5*q)+x)*q);
x = x * q;
vec3 = vec3.add(0,0,-x-y);
if(second) {
pMatrixStack.translate(1,0,0);
}
// pMatrixStack.translate(1,0,0);
}
if(direction==Direction.WEST){
pMatrixStack.translate((be.connectorDistance+(.5*q)+x)*q, hModifier+1.5, 0);
x = x * q;
vec3 = vec3.add(-x-y,0,0);
if(second) {
pMatrixStack.translate(0,0,1);
}
}
if(direction==Direction.EAST){
pMatrixStack.translate((-be.connectorDistance+(.5*q)+x)*q, hModifier+1.5, 0);
x = x * q;
vec3 = vec3.add(-x+y,0,0);
if(second) {
pMatrixStack.translate(0,0,-1);
}
pMatrixStack.translate(0,0,1);
}
float f = (float)(vec3.x);
float f1 = (float)(vec3.y );
float f2 = (float)(vec3.z);
VertexConsumer vertexconsumer = pBuffer.getBuffer(RenderType.leash());
Matrix4f matrix4f = pMatrixStack.last().pose();
float f4 = Mth.fastInvSqrt(f * f + f2 * f2) * 0.025F / 2.0F;
float f5 = f2 * f4;
float f6 = f * f4;
int i =15;
int j = 15;
//int i = this.getBlockLightLevel(pEntityLiving, blockpos);
//int j = this.entityRenderDispatcher.getRenderer(pLeashHolder).getBlockLightLevel(pLeashHolder, blockpos1);
//int k = pEntityLiving.level.getBrightness(LightLayer.SKY, blockpos);
//int l = pEntityLiving.level.getBrightness(LightLayer.SKY, blockpos1);
int k = 15;
int l = 15;
for(int i1 = 0; i1 <= 24; ++i1) {
addVertexPair(vertexconsumer, matrix4f, f, f1, f2, i, j, k, l, 0.025F, 0.025F, f5, f6, i1, false);
}
for(int j1 = 24; j1 >= 0; --j1) {
addVertexPair(vertexconsumer, matrix4f, f, f1, f2, i, j, k, l, 0.025F, 0.0F, f5, f6, j1, true);
}
pMatrixStack.popPose();
}
/////////////////////////////////////////////////////////////////
private void renderFrontPumpjackLink(PoseStack pMatrixStack, MultiBufferSource pBuffer, PumpjackBlockEntity be) {
pMatrixStack.pushPose();
Direction direction = be.getBlockState().getValue(FACING);
Vec3 vec3 = new Vec3(0,0,0);
int q = -1;
int g = 0;
float hModifier= 0;
if(be.headAtFront) {
q = 1;
}else g = 1;
float y=0;
if(be.crank!=null) {
float linkLenght = be.headBaseDistance;
hModifier = (float) (be.headDistance*Math.sin(Math.toRadians(be.angle)));
// if(direction == Direction.WEST) {
//
// y = (float) (be.headDistance);
// }
// if(direction == Direction.EAST) {
//
//
// y = (float) (be.headDistance );
// }
// if(direction == Direction.NORTH) {
//
// y = (float) (be.headDistance);
// }
// if(direction == Direction.SOUTH) {
//
// y = (float) (be.headDistance);
// }
y = -0.01f;
vec3 = vec3.add(0,linkLenght,0);
}
hModifier = hModifier*q;
if(direction==Direction.NORTH) {
pMatrixStack.translate(0.5, -be.headBaseDistance+2, (-be.headDistance*q)+(.5*q)+g);
vec3 = vec3.add(0,hModifier-0.3,+y);
}
if(direction==Direction.SOUTH){
pMatrixStack.translate(0.5, -be.headBaseDistance+2, (be.headDistance*q)+(.5*q)+g);
vec3 = vec3.add(0,-hModifier-0.3,-y);
}
if(direction==Direction.WEST){
pMatrixStack.translate((-be.headDistance*q)+(.5*q)+g, -be.headBaseDistance+2, 0.5);
vec3 = vec3.add(-y,-hModifier-0.3,0);
}
if(direction==Direction.EAST){
pMatrixStack.translate((be.headDistance*q)+(.5*q)+g, -be.headBaseDistance+2, 0.5);
vec3 = vec3.add(+y,hModifier-0.3,0);
}
float f = (float)(vec3.x);
float f1 = (float)(vec3.y );
float f2 = (float)(vec3.z);
VertexConsumer vertexconsumer = pBuffer.getBuffer(RenderType.leash());
Matrix4f matrix4f = pMatrixStack.last().pose();
float f4 = Mth.fastInvSqrt(f * f + f2 * f2) * 0.025F / 2.0F;
float f5 = f2 * f4;
float f6 = f * f4;
int i =15;
int j = 15;
//int i = this.getBlockLightLevel(pEntityLiving, blockpos);
//int j = this.entityRenderDispatcher.getRenderer(pLeashHolder).getBlockLightLevel(pLeashHolder, blockpos1);
//int k = pEntityLiving.level.getBrightness(LightLayer.SKY, blockpos);
//int l = pEntityLiving.level.getBrightness(LightLayer.SKY, blockpos1);
int k = 15;
int l = 15;
for(int i1 = 0; i1 <= 24; ++i1) {
addVertexPair(vertexconsumer, matrix4f, f, f1, f2, i, j, k, l, 0.025F, 0.025F, f5, f6, i1, false);
}
for(int j1 = 24; j1 >= 0; --j1) {
addVertexPair(vertexconsumer, matrix4f, f, f1, f2, i, j, k, l, 0.025F, 0.0F, f5, f6, j1, true);
}
pMatrixStack.popPose();
}
private static void addVertexPair(VertexConsumer vertexConsumer, Matrix4f p_174309_, float p_174310_, float p_174311_, float p_174312_, int p_174313_, int p_174314_, int p_174315_, int p_174316_, float p_174317_, float p_174318_, float p_174319_, float p_174320_, int p_174321_, boolean p_174322_) {
float f = (float)p_174321_ / 24.0F;
int i = (int)Mth.lerp(f, (float)p_174313_, (float)p_174314_);
int j = (int)Mth.lerp(f, (float)p_174315_, (float)p_174316_);
int k = LightTexture.pack(i, j);
float f1 = p_174321_ % 2 == (p_174322_ ? 1 : 0) ? 0.7F : 1.0F;
float f2 = 0.1F * f1;
float f3 = 0.1F * f1;
float f4 = 0.1F * f1;
float f5 = p_174310_ * f;
float f6 = p_174311_ > 0.0F ? p_174311_ * f * f : p_174311_ - p_174311_ * (1.0F - f) * (1.0F - f);
float f7 = p_174312_ * f;
vertexConsumer.vertex(p_174309_, f5 - p_174319_, f6 + p_174318_, f7 + p_174320_).color(f2, f3, f4, 1.0F).uv2(k).endVertex();
vertexConsumer.vertex(p_174309_, f5 + p_174319_, f6 + p_174317_ - p_174318_, f7 - p_174320_).color(f2, f3, f4, 1.0F).uv2(k).endVertex();
}
@Override
protected BlockState getRenderedBlockState(KineticBlockEntity te) {
return shaft(getRotationAxisOf(te));
}
}

View File

@@ -0,0 +1,34 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts;
import com.drmangotea.createindustry.registry.TFMGShapes;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class PumpjackHammerConnectorBlock extends HorizontalDirectionalBlock {
public PumpjackHammerConnectorBlock(Properties pProperties) {
super(pProperties);
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return TFMGShapes.PUMPJACK_HAMMER_PART.get(pState.getValue(FACING).getClockWise());
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) {
super.createBlockStateDefinition(pBuilder.add(FACING));
}
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
return this.defaultBlockState().setValue(FACING, pContext.getHorizontalDirection().getOpposite());
}
}

View File

@@ -0,0 +1,37 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts;
import com.drmangotea.createindustry.registry.TFMGShapes;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class PumpjackHammerHeadBlock extends HorizontalDirectionalBlock {
public PumpjackHammerHeadBlock(Properties pProperties) {
super(pProperties);
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return TFMGShapes.PUMPJACK_HEAD.get(pState.getValue(FACING));
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) {
super.createBlockStateDefinition(pBuilder.add(FACING));
}
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
return this.defaultBlockState().setValue(FACING, pContext.getHorizontalDirection().getOpposite());
}
}

View File

@@ -0,0 +1,101 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts;
import com.drmangotea.createindustry.registry.TFMGShapes;
import com.simibubi.create.foundation.placement.IPlacementHelper;
import com.simibubi.create.foundation.placement.PlacementHelpers;
import com.simibubi.create.foundation.placement.PlacementOffset;
import com.simibubi.create.foundation.placement.PoleHelper;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import java.util.function.Predicate;
public class PumpjackHammerPartBlock extends HorizontalDirectionalBlock {
public static final int placementHelperId = PlacementHelpers.register(new PlacementHelper());
// public static final Property<Direction.Axis> HORIZONTAL_AXIS = BlockStateProperties.HORIZONTAL_AXIS;
public PumpjackHammerPartBlock(Properties pProperties) {
super(pProperties);
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
builder.add(FACING);
super.createBlockStateDefinition(builder);
}
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
return this.defaultBlockState().setValue(FACING, pContext.getHorizontalDirection().getOpposite());
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return TFMGShapes.PUMPJACK_HAMMER_PART.get(pState.getValue(FACING).getClockWise());
}
@MethodsReturnNonnullByDefault
private static class PlacementHelper extends PoleHelper<Direction> {
private PlacementHelper() {
super(state -> state.getBlock() instanceof PumpjackHammerPartBlock, state -> state.getValue(FACING).getAxis(), FACING);
}
@Override
public Predicate<ItemStack> getItemPredicate() {
return i -> i.getItem() instanceof BlockItem
&& ((BlockItem) i.getItem()).getBlock() instanceof PumpjackHammerPartBlock;
}
@Override
public Predicate<BlockState> getStatePredicate() {
return s -> s.getBlock() instanceof PumpjackHammerPartBlock;
}
@Override
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos,
BlockHitResult ray) {
PlacementOffset offset = super.getOffset(player, world, state, pos, ray);
if (offset.isSuccessful())
offset.withTransform(offset.getTransform()
.andThen(s -> s));
return offset;
}
}
@Override
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand,
BlockHitResult pHit) {
if (pPlayer == null)
return InteractionResult.PASS;
ItemStack itemInHand = pPlayer.getItemInHand(pHand);
IPlacementHelper helper = PlacementHelpers.get(placementHelperId);
if (helper.matchesItem(itemInHand))
return helper.getOffset(pPlayer, pLevel, pState, pPos, pHit)
.placeInWorld(pLevel, (BlockItem) itemInHand.getItem(), pPlayer, pHand, pHit);
return InteractionResult.PASS;
}
public static BlockState pickCorrectBlock(BlockState stateForPlacement) {
//if (PoweredShaftBlock.stillValid(stateForPlacement, level, pos))
// return PoweredShaftBlock.getEquivalent(stateForPlacement);
return stateForPlacement;
}
}

View File

@@ -0,0 +1,26 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.large;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.PumpjackHammerConnectorBlock;
import com.drmangotea.createindustry.registry.TFMGShapes;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class LargePumpjackHammerConnectorBlock extends PumpjackHammerConnectorBlock {
public LargePumpjackHammerConnectorBlock(Properties pProperties) {
super(pProperties);
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return TFMGShapes.FULL;
}
}

View File

@@ -0,0 +1,26 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.large;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.PumpjackHammerHeadBlock;
import com.drmangotea.createindustry.registry.TFMGShapes;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class LargePumpjackHammerHeadBlock extends PumpjackHammerHeadBlock {
public LargePumpjackHammerHeadBlock(Properties pProperties) {
super(pProperties);
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return TFMGShapes.FULL;
}
}

View File

@@ -0,0 +1,43 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.large;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.PumpjackHammerPartBlock;
import com.drmangotea.createindustry.registry.TFMGShapes;
import com.simibubi.create.foundation.placement.IPlacementHelper;
import com.simibubi.create.foundation.placement.PlacementHelpers;
import com.simibubi.create.foundation.placement.PlacementOffset;
import com.simibubi.create.foundation.placement.PoleHelper;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import java.util.function.Predicate;
public class LargePumpjackHammerPartBlock extends PumpjackHammerPartBlock {
public LargePumpjackHammerPartBlock(Properties pProperties) {
super(pProperties);
}
@Override
public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) {
return TFMGShapes.FULL;
}
}

View File

@@ -1,45 +0,0 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder;
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
public class PumpjackHammerHolderBlock extends HorizontalDirectionalBlock implements IBE<PumpjackHammerHolderBlockEntity> {
public PumpjackHammerHolderBlock(Properties properties) {
super(properties);
}
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> p_54794_) {
p_54794_.add(FACING);
}
public BlockState getStateForPlacement(BlockPlaceContext p_54779_) {
return this.defaultBlockState().setValue(FACING, p_54779_.getHorizontalDirection());
}
@Override
public RenderShape getRenderShape(BlockState pState) {
return RenderShape.ENTITYBLOCK_ANIMATED;
}
@Override
public Class<PumpjackHammerHolderBlockEntity> getBlockEntityClass() {
return PumpjackHammerHolderBlockEntity.class;
}
@Override
public BlockEntityType<? extends PumpjackHammerHolderBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.PUMPJACK_HAMMER_HOLDER.get();
}
}

View File

@@ -1,162 +0,0 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.machine_input.MachineInputBlockEntity;
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import java.util.List;
public class PumpjackHammerHolderBlockEntity extends KineticBlockEntity implements IHaveGoggleInformation {
float targetSpeed;
LerpedFloat visualSpeed = LerpedFloat.linear();
LerpedFloat angle = LerpedFloat.angular();
float debugMogus = 0.4f;
float speedModifier=0;
public BlockPos crankPos;
public PumpjackCrankBlockEntity crank;
public float crankAngle;
public Direction direction = this.getBlockState().getValue(HorizontalDirectionalBlock.FACING);;
public Direction direction2 = this.getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise();;
public PumpjackHammerHolderBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
angle.setValue(14);
}
@Override
protected AABB createRenderBoundingBox() {
return new AABB(this.getBlockPos()).inflate(2);
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
}
public boolean hasCrank(){
BlockPos theoreticalPos;
if(direction == Direction.NORTH){
theoreticalPos = this.getBlockPos().south(2).below();
if(level.getBlockEntity(theoreticalPos) instanceof PumpjackCrankBlockEntity){
crankPos = theoreticalPos;
crank = (PumpjackCrankBlockEntity) level.getBlockEntity(crankPos);
return true;
}
}
if(direction == Direction.SOUTH){
theoreticalPos = this.getBlockPos().north(2).below();
if(level.getBlockEntity(theoreticalPos) instanceof PumpjackCrankBlockEntity){
crankPos = theoreticalPos;
crank = (PumpjackCrankBlockEntity) level.getBlockEntity(crankPos);
return true;
}
}
if(direction == Direction.WEST){
theoreticalPos = this.getBlockPos().east(2).below();
if(level.getBlockEntity(theoreticalPos) instanceof PumpjackCrankBlockEntity){
crankPos = theoreticalPos;
crank = (PumpjackCrankBlockEntity) level.getBlockEntity(crankPos);
return true;
}
}
if(direction == Direction.EAST){
theoreticalPos = this.getBlockPos().west(2).below();
if(level.getBlockEntity(theoreticalPos) instanceof PumpjackCrankBlockEntity) {
crankPos = theoreticalPos;
crank = (PumpjackCrankBlockEntity) level.getBlockEntity(crankPos);
return true;
}
}
return false;
}
@Override
public void tick() {
super.tick();
direction = this.getBlockState().getValue(HorizontalDirectionalBlock.FACING);
if (!level.isClientSide)
return;
if(!hasCrank()) {
angle.setValue(14);
return;
}
if(!(level.getBlockEntity(crankPos.below()) instanceof MachineInputBlockEntity)){
angle.setValue(14);
return;
}
if(((MachineInputBlockEntity) level.getBlockEntity(crankPos.below())).powerLevel==0) {
angle.setValue(14);
return;
}
if(!(crank.isValid())){
angle.setValue(14);
return;
}
angle.tickChaser();
if(angle.getValue()>0){
speedModifier=(angle.getValue()/25)*-1;
}else
speedModifier=angle.getValue()/25;
crankAngle=crank.angle;
//if(crankAngle==90||crankAngle==270) {
// angle.chase(13, 0.125f, Chaser.EXP);
//}
angle.updateChaseSpeed(.8f+speedModifier);
if(crankAngle==180){
angle.chase(-14, .8f+speedModifier, Chaser.LINEAR);
}
if(crankAngle==0) {
angle.chase(14, .8f+speedModifier, Chaser.LINEAR);
//angle.updateChaseSpeed(angle.getValue());
}
}
/*
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
if(hasCrank()){
Lang.translate("goggles.surface_scanner.no_rotation")
.style(ChatFormatting.GREEN)
.forGoggles(tooltip);
return true;
}
return false;
}
*/
@Override
public void write(CompoundTag compound, boolean clientPacket) {
super.write(compound, clientPacket);
if (clientPacket) {
compound.putFloat("Angle", angle.getValue());
}
}
@Override
protected void read(CompoundTag compound, boolean clientPacket) {
super.read(compound, clientPacket);
if (clientPacket) {
angle.setValue(compound.getFloat("Angle"));
}
}
}

View File

@@ -1,85 +0,0 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder;
import com.drmangotea.createindustry.registry.TFMGPartialModels;
import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.api.instance.DynamicInstance;
import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityInstance;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
public class PumpjackHammerHolderInstance extends KineticBlockEntityInstance<PumpjackHammerHolderBlockEntity> implements DynamicInstance {
protected final ModelData hammer;
protected final ModelData holder;
protected float lastAngle = Float.NaN;
public PumpjackHammerHolderInstance(MaterialManager modelManager, PumpjackHammerHolderBlockEntity tile) {
super(modelManager, tile);
hammer = getTransformMaterial()
.getModel(TFMGPartialModels.PUMPJACK_HAMMER,blockState,tile.direction)
.createInstance();
holder = getTransformMaterial()
.getModel(blockState)
.createInstance();
}
@Override
public void beginFrame() {
float partialTicks = AnimationTickHolder.getPartialTicks();
float speed = blockEntity.visualSpeed.getValue(partialTicks) * 3 / 10f;
float angle = blockEntity.angle.getValue() + speed * partialTicks;
if (Math.abs(angle - lastAngle) < 0.001)
return;
animate(angle);
lastAngle = angle;
}
private void animate(float angle) {
PoseStack ms = new PoseStack();
TransformStack msr = TransformStack.cast(ms);
msr.translate(getInstancePosition());
msr.centre()
.rotate(blockEntity.direction.getClockWise(), AngleHelper.rad(angle))
.unCentre();
PoseStack ms2 = new PoseStack();
TransformStack msr2 = TransformStack.cast(ms2);
msr2.translate(getInstancePosition());
//msr.centre()
// .rotate(blockEntity.direction.getClockWise(), AngleHelper.rad(angle))
// .unCentre();
hammer.setTransform(ms);
holder.setTransform(ms2);
}
@Override
public void updateLight() {
relight(pos, hammer,holder);
}
@Override
public void remove() {
hammer.delete();
holder.delete();
}
}

View File

@@ -1,80 +0,0 @@
package com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder;
import com.drmangotea.createindustry.registry.TFMGPartialModels;
import com.jozufozu.flywheel.backend.Backend;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import net.minecraft.client.renderer.LevelRenderer;
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.world.level.block.state.BlockState;
import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
public class PumpjackHammerHolderRenderer extends KineticBlockEntityRenderer<PumpjackHammerHolderBlockEntity> {
protected float lastAngle = Float.NaN;
public PumpjackHammerHolderRenderer(BlockEntityRendererProvider.Context context) {
super(context);
}
@Override
protected void renderSafe(PumpjackHammerHolderBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer,
int light, int overlay) {
// super.renderSafe(te, partialTicks, ms, buffer, light, overlay);
if (Backend.canUseInstancing(be.getLevel()))
return;
BlockState blockState = be.getBlockState();
PumpjackHammerHolderBlockEntity wte = (PumpjackHammerHolderBlockEntity) be;
float speed = be.visualSpeed.getValue(partialTicks) * 3 / 10f;
float angle = be.angle.getValue() + speed * partialTicks;
//if (Math.abs(angle - lastAngle) < 0.001)
// return;
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
renderHammer(be, ms, light, blockState, angle, vb);
lastAngle = angle;
}
private void renderHammer(PumpjackHammerHolderBlockEntity be, PoseStack ms, int light, BlockState blockState, float angle,
VertexConsumer vb) {
SuperByteBuffer hammer =
CachedBufferer.partialFacing(TFMGPartialModels.PUMPJACK_HAMMER, be.getBlockState(), be.direction);
int lightInFront = LevelRenderer.getLightColor(be.getLevel(), be.getBlockPos());
Direction.Axis axis = blockState.getValue(FACING).getAxis();
hammer.centre();
hammer.rotate(be.direction.getClockWise(), (float) Math.toRadians(angle));
hammer.unCentre();
hammer.renderInto(ms, vb);
//kineticRotationTransform(hammer, be, be.direction2.getAxis(), angle, lightInFront).renderInto(ms, vb);
}
}

View File

@@ -19,6 +19,10 @@ public class TFMGPonderIndex {
.addStoryBoard("small_engines", OilScenes::small_engines, TFMGPonderTag.OIL);
HELPER.forComponents(TFMGBlocks.RADIAL_ENGINE, TFMGBlocks.LARGE_RADIAL_ENGINE)
.addStoryBoard("radial_engines", OilScenes::radial_engines, TFMGPonderTag.OIL);
HELPER.forComponents(TFMGBlocks.DIESEL_ENGINE)
@@ -29,8 +33,18 @@ public class TFMGPonderIndex {
.addStoryBoard("surface_scanner", OilScenes::surface_scanner, TFMGPonderTag.OIL);
HELPER.forComponents(TFMGBlocks.PUMPJACK_BASE,TFMGBlocks.PUMPJACK_CRANK,TFMGBlocks.PUMPJACK_HAMMER_HOLDER)
.addStoryBoard("pumpjack", OilScenes::pumpjack, TFMGPonderTag.OIL);
HELPER.forComponents(
TFMGBlocks.PUMPJACK_BASE,
TFMGBlocks.PUMPJACK_CRANK,
TFMGBlocks.PUMPJACK_HAMMER,
TFMGBlocks.PUMPJACK_HAMMER_CONNECTOR,
TFMGBlocks.PUMPJACK_HAMMER_PART,
TFMGBlocks.PUMPJACK_HAMMER_HEAD,
TFMGBlocks.LARGE_PUMPJACK_HAMMER_CONNECTOR,
TFMGBlocks.LARGE_PUMPJACK_HAMMER_PART,
TFMGBlocks.LARGE_PUMPJACK_HAMMER_HEAD
).addStoryBoard("pumpjack", OilScenes::pumpjack, TFMGPonderTag.OIL);
HELPER.forComponents(TFMGBlocks.STEEL_DISTILLATION_CONTROLLER,TFMGBlocks.STEEL_DISTILLATION_OUTPUT)
.addStoryBoard("distillation_tower", OilScenes::distillation_tower, TFMGPonderTag.OIL);
@@ -63,9 +77,13 @@ public class TFMGPonderIndex {
.add(TFMGBlocks.STEEL_DISTILLATION_OUTPUT)
.add(TFMGBlocks.STEEL_DISTILLATION_CONTROLLER)
.add(TFMGBlocks.PUMPJACK_BASE)
.add(TFMGBlocks.PUMPJACK_HAMMER_HOLDER)
.add(TFMGBlocks.PUMPJACK_HAMMER)
.add(TFMGBlocks.DIESEL_ENGINE)
.add(TFMGBlocks.DIESEL_ENGINE_EXPANSION)
.add(TFMGBlocks.RADIAL_ENGINE)
.add(TFMGBlocks.LARGE_RADIAL_ENGINE)
.add(TFMGBlocks.COMPACT_ENGINE)
.add(TFMGBlocks.DIESEL_ENGINE_EXPANSION)
.add(TFMGBlocks.PUMPJACK_CRANK);
PonderRegistry.TAGS.forTag(TFMGPonderTag.METALLURGY)

View File

@@ -1,8 +1,14 @@
package com.drmangotea.createindustry.ponder.scenes;
import com.drmangotea.createindustry.registry.TFMGItems;
import com.simibubi.create.AllItems;
import com.simibubi.create.foundation.ponder.*;
import com.simibubi.create.foundation.ponder.element.InputWindowElement;
import com.simibubi.create.foundation.ponder.element.WorldSectionElement;
import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.Vec3;
public class OilScenes {
@@ -103,17 +109,23 @@ public class OilScenes {
public static void pumpjack(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("pumpjack", "");
scene.configureBasePlate(0, 0, 7);
////
Selection pipez = util.select.fromTo(0, 2, 0, 0, 4, 0);
Selection hammer = util.select.fromTo(3, 1, 2, 3, 3, 2);
Selection base = util.select.fromTo(1, 1, 2, 1, 1, 2);
Selection crank = util.select.fromTo(5, 2, 2, 5, 2, 2);
Selection input = util.select.fromTo(5, 1, 1, 5, 1, 2);
Selection hammer = util.select.fromTo(3, 1, 2, 3, 4, 2);
Selection base = util.select.fromTo(0, 1, 2, 0, 1, 2);
Selection crank = util.select.fromTo(6, 2, 2, 6, 2, 2);
Selection input = util.select.fromTo(5, 1, 1, 6, 1, 2);
Selection base1 = util.select.fromTo(2, 0, 0, 6, 0, 4);
Selection base2 = util.select.fromTo(0, 0, 0, 1, 0, 4);
Selection deposit = util.select.fromTo(0, 1, 0, 0, 1, 0);
Selection tank = util.select.fromTo(0, 0, 3, 1, 0, 4);
Selection hammer_part = util.select.fromTo(1, 5, 2, 5, 5, 2);
Selection hammer_head = util.select.fromTo(6, 5 ,2, 6, 5, 2);
Selection hammer_connector = util.select.fromTo(0, 5, 2, 0, 5, 2);
////
// scene.scaleSceneView(.4f);
@@ -147,15 +159,34 @@ public class OilScenes {
scene.overlay.showText(50)
.attachKeyFrame()
.text("Pumpjack base has to be placed on the top of the pipe")
.pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.WEST))
.pointAt(util.vector.blockSurface(util.grid.at(0, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(40);
ElementLink<WorldSectionElement> hammerElement1 = scene.world.showIndependentSection(hammer,Direction.UP);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Pumpjack hammer needs to be placed behind it")
.text("Pumpjack Hammer Holder needs to be placed behind it")
.pointAt(util.vector.blockSurface(util.grid.at(3, 3, 2), Direction.WEST))
.placeNearTarget();
scene.idle(70);
ElementLink<WorldSectionElement> connectorElement = scene.world.showIndependentSection(hammer_connector,Direction.UP);
ElementLink<WorldSectionElement> headElement = scene.world.showIndependentSection(hammer_head,Direction.UP);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Next step is building the Connector And the Head of the Pumpjack above the crank and the base")
.pointAt(util.vector.blockSurface(util.grid.at(3, 3, 2), Direction.WEST))
.placeNearTarget();
scene.idle(70);
ElementLink<WorldSectionElement> partElement = scene.world.showIndependentSection(hammer_part,Direction.UP);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Now they need to be connected with Pumpjack Pammer Parts")
.pointAt(util.vector.blockSurface(util.grid.at(3, 3, 2), Direction.WEST))
.placeNearTarget();
scene.idle(40);
scene.world.setKineticSpeed(input,70);
scene.world.setKineticSpeed(base1,-140);
@@ -426,7 +457,107 @@ public class OilScenes {
}
public static void radial_engines(SceneBuilder scene, SceneBuildingUtil util){
scene.title("radial_engines", "");
scene.configureBasePlate(0, 0, 5);
scene.idle(10);
scene.showBasePlate();
Selection engine_small = util.select.fromTo(2, 1, 1, 2, 1, 1);
Selection engine_large = util.select.fromTo(1, 1, 1, 1, 1, 1);
Selection engine_lever = util.select.fromTo(3, 1, 0, 3, 1, 0);
Selection input_pump = util.select.fromTo(3, 1, 2, 3, 1, 2);
Selection input = util.select.fromTo(3, 1, 1, 3, 1, 1);
Selection tank_1 = util.select.fromTo(3, 1, 3, 3, 2, 3);
Selection tank_2 = util.select.fromTo(2, 1, 3, 2, 2, 3);
scene.world.setKineticSpeed(engine_small,0);
ElementLink<WorldSectionElement> engineElement = scene.world.showIndependentSectionImmediately(engine_small);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Radial Engines are a special Type of Engine that doesn't require an exhaust block and has a shaft from both sides")
.pointAt(util.vector.blockSurface(util.grid.at(4, 0, 4), Direction.WEST))
.placeNearTarget();
scene.idle(100);
scene.world.setKineticSpeed(input_pump,80);
ElementLink<WorldSectionElement> inputElement = scene.world.showIndependentSection(input,Direction.DOWN);
scene.idle(50);
BlockPos inputPos = util.grid.at(2, 1, 1);
Vec3 topOf = util.vector.topOf(inputPos);
scene.overlay.showControls(new InputWindowElement(topOf, Pointing.DOWN).rightClick()
.withItem(new ItemStack(AllItems.WRENCH.get())), 20);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Clicking the Engine from one of its sides will spawn an input slot that can accept fuel and redstone signals")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 1), Direction.WEST))
.placeNearTarget();
scene.idle(100);
scene.overlay.showText(40)
.attachKeyFrame()
.text("Regular Radial Engines uses gasoline as fuel")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 1), Direction.WEST))
.placeNearTarget();
scene.idle(80);
ElementLink<WorldSectionElement> inputPumpElement = scene.world.showIndependentSection(input_pump,Direction.DOWN);
ElementLink<WorldSectionElement> tankElement1 = scene.world.showIndependentSection(tank_1,Direction.DOWN);
ElementLink<WorldSectionElement> leverElement = scene.world.showIndependentSection(engine_lever,Direction.DOWN);
scene.world.setKineticSpeed(engine_small,180);
scene.world.setKineticSpeed(engine_large,180);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Engine will start when redstone signal is applied to the input slot or the block itself")
.pointAt(util.vector.blockSurface(util.grid.at(3, 1, 0), Direction.WEST))
.placeNearTarget();
scene.idle(100);
scene.world.hideIndependentSection(engineElement,Direction.SOUTH);
scene.world.hideIndependentSection(tankElement1,Direction.SOUTH);
scene.idle(50);
ElementLink<WorldSectionElement> largeEngineElement = scene.world.showIndependentSection(engine_large,Direction.DOWN);
ElementLink<WorldSectionElement> tankElement2 = scene.world.showIndependentSection(tank_2,Direction.DOWN);
scene.world.moveSection(largeEngineElement,new Vec3(1d,0d,0d),0);
scene.world.moveSection(tankElement2,new Vec3(1d,0d,0d),0);
scene.overlay.showText(50)
.attachKeyFrame()
.text("The second variant of a radial is The Large Radial Engine which uses kerosene as fuel");
scene.idle(50);
}

View File

@@ -11,6 +11,8 @@ import com.drmangotea.createindustry.blocks.decoration.flywheels.TFMGFlywheelRen
import com.drmangotea.createindustry.blocks.deposits.FluidDepositBlockEntity;
import com.drmangotea.createindustry.blocks.deposits.surface_scanner.SurfaceScannerBlockEntity;
import com.drmangotea.createindustry.blocks.deposits.surface_scanner.SurfaceScannerRenderer;
import com.drmangotea.createindustry.blocks.engines.compact.CompactEngineBlockEntity;
import com.drmangotea.createindustry.blocks.engines.compact.CompactEngineRenderer;
import com.drmangotea.createindustry.blocks.engines.diesel.DieselEngineBlockEntity;
import com.drmangotea.createindustry.blocks.engines.diesel.DieselEngineInstance;
import com.drmangotea.createindustry.blocks.engines.diesel.DieselEngineRenderer;
@@ -18,6 +20,10 @@ import com.drmangotea.createindustry.blocks.engines.diesel.engine_expansion.Dies
import com.drmangotea.createindustry.blocks.engines.intake.AirIntakeBlockEntity;
import com.drmangotea.createindustry.blocks.engines.intake.AirIntakeInstance;
import com.drmangotea.createindustry.blocks.engines.intake.AirIntakeRenderer;
import com.drmangotea.createindustry.blocks.engines.radial.RadialEngineBlockEntity;
import com.drmangotea.createindustry.blocks.engines.radial.RadialEngineRenderer;
import com.drmangotea.createindustry.blocks.engines.radial.input.RadialEngineInputBlockEntity;
import com.drmangotea.createindustry.blocks.engines.radial.large.LargeRadialEngineBlockEntity;
import com.drmangotea.createindustry.blocks.engines.small.gasoline.GasolineEngineBackTileEntity;
import com.drmangotea.createindustry.blocks.engines.small.gasoline.GasolineEngineTileEntity;
import com.drmangotea.createindustry.blocks.engines.small.lpg.LPGEngineBackTileEntity;
@@ -39,21 +45,17 @@ import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.distillation_tower.DistillationOutputBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.distillery.DistilleryControllerBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.distillery.DistilleryOutputBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.base.PumpjackBaseRenderer;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.base.PumpjackBaseBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankRenderer;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder.PumpjackHammerHolderInstance;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder.PumpjackHammerHolderRenderer;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder.PumpjackHammerHolderBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankRenderer;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.PumpjackBlockEntity;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.PumpjackRenderer;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.machine_input.MachineInputRenderer;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.machine_input.MachineInputBlockEntity;
import com.drmangotea.createindustry.blocks.pipes.normal.LockablePipeBlockEntity;
import com.drmangotea.createindustry.blocks.tanks.SteelFluidTankRenderer;
import com.drmangotea.createindustry.blocks.tanks.SteelTankBlockEntity;
import com.drmangotea.createindustry.blocks.engines.small.UniversalEngineRenderer;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.Create;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.SmartFluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.StraightPipeBlockEntity;
@@ -139,19 +141,19 @@ public class TFMGBlockEntities {
.validBlocks(TFMGBlocks.STEEL_DISTILLATION_CONTROLLER)
.register();
public static final BlockEntityEntry<PumpjackHammerHolderBlockEntity> PUMPJACK_HAMMER_HOLDER = REGISTRATE
.blockEntity("pumpjack_hammer_holder", PumpjackHammerHolderBlockEntity::new)
.instance(() -> PumpjackHammerHolderInstance::new, false)
.validBlocks(TFMGBlocks.PUMPJACK_HAMMER_HOLDER)
.renderer(() -> PumpjackHammerHolderRenderer::new)
.register();
public static final BlockEntityEntry<PumpjackCrankBlockEntity> PUMPJACK_CRANK = REGISTRATE
.blockEntity("pumpjack_crank", PumpjackCrankBlockEntity::new)
//.instance(() -> PumpjackCrankInstance::new, true)
.validBlocks(TFMGBlocks.PUMPJACK_CRANK)
.renderer(() -> PumpjackCrankRenderer::new)
.register();
//public static final BlockEntityEntry<PumpjackHammerHolderBlockEntity> PUMPJACK_HAMMER_HOLDER = REGISTRATE
// .blockEntity("pumpjack_hammer_holder", PumpjackHammerHolderBlockEntity::new)
// .instance(() -> PumpjackHammerHolderInstance::new, false)
// .validBlocks(TFMGBlocks.PUMPJACK_HAMMER_HOLDER)
// .renderer(() -> PumpjackHammerHolderRenderer::new)
// .register();
//
//public static final BlockEntityEntry<PumpjackCrankBlockEntity> PUMPJACK_CRANK = REGISTRATE
// .blockEntity("pumpjack_crank", PumpjackCrankBlockEntity::new)
// //.instance(() -> PumpjackCrankInstance::new, true)
// .validBlocks(TFMGBlocks.PUMPJACK_CRANK)
// .renderer(() -> PumpjackCrankRenderer::new)
// .register();
public static final BlockEntityEntry<MachineInputBlockEntity> MACHINE_INPUT = REGISTRATE
.blockEntity("machine_input", MachineInputBlockEntity::new)
@@ -160,11 +162,11 @@ public class TFMGBlockEntities {
.renderer(() -> MachineInputRenderer::new)
.register();
public static final BlockEntityEntry<PumpjackBaseBlockEntity> PUMPJACK_BASE = REGISTRATE
.blockEntity("pumpjack_base", PumpjackBaseBlockEntity::new)
.validBlocks(TFMGBlocks.PUMPJACK_BASE)
.renderer(() -> PumpjackBaseRenderer::new)
.register();
//public static final BlockEntityEntry<PumpjackBaseBlockEntity> PUMPJACK_BASE = REGISTRATE
// .blockEntity("pumpjack_base", PumpjackBaseBlockEntity::new)
// .validBlocks(TFMGBlocks.PUMPJACK_BASE)
// .renderer(() -> PumpjackBaseRenderer::new)
// .register();
public static final BlockEntityEntry<BlastFurnaceOutputBlockEntity> BLAST_FURNACE_OUTPUT = REGISTRATE
.blockEntity("blast_furnace_output", BlastFurnaceOutputBlockEntity::new)
@@ -364,8 +366,49 @@ public class TFMGBlockEntities {
.register();
public static final BlockEntityEntry<RadialEngineBlockEntity> RADIAL_ENGINE = REGISTRATE
.blockEntity("radial_engine", RadialEngineBlockEntity::new)
.instance(() -> ShaftInstance::new, false)
.validBlocks(TFMGBlocks.RADIAL_ENGINE)
.renderer(() -> RadialEngineRenderer::new)
.register();
public static final BlockEntityEntry<LargeRadialEngineBlockEntity> LARGE_RADIAL_ENGINE = REGISTRATE
.blockEntity("large_radial_engine", LargeRadialEngineBlockEntity::new)
.instance(() -> ShaftInstance::new, false)
.validBlocks(TFMGBlocks.LARGE_RADIAL_ENGINE)
.renderer(() -> RadialEngineRenderer::new)
.register();
public static final BlockEntityEntry<RadialEngineInputBlockEntity> RADIAL_ENGINE_INPUT = REGISTRATE
.blockEntity("radial_engine_input", RadialEngineInputBlockEntity::new)
.validBlocks(TFMGBlocks.RADIAL_ENGINE_INPUT)
.register();
public static final BlockEntityEntry<CompactEngineBlockEntity> COMPACT_ENGINE = REGISTRATE
.blockEntity("compact_engine", CompactEngineBlockEntity::new)
.instance(() -> HalfShaftInstance::new, false)
.validBlocks(TFMGBlocks.COMPACT_ENGINE)
.renderer(() -> CompactEngineRenderer::new)
.register();
public static final BlockEntityEntry<PumpjackBlockEntity> PUMPJACK_HAMMER = REGISTRATE
.blockEntity("pumpjack_hammer", PumpjackBlockEntity::new)
.validBlocks(TFMGBlocks.PUMPJACK_HAMMER)
.renderer(() -> PumpjackRenderer::new)
.register();
public static final BlockEntityEntry<PumpjackCrankBlockEntity> PUMPJACK_CRANK = REGISTRATE
.blockEntity("pumpjack_crank", PumpjackCrankBlockEntity::new)
.validBlocks(TFMGBlocks.PUMPJACK_CRANK)
.renderer(() -> PumpjackCrankRenderer::new)
.register();
public static final BlockEntityEntry<PumpjackBaseBlockEntity> PUMPJACK_BASE = REGISTRATE
.blockEntity("pumpjack_base", PumpjackBaseBlockEntity::new)
.validBlocks(TFMGBlocks.PUMPJACK_BASE)
.register();
public static void register() {}

View File

@@ -1,9 +1,6 @@
package com.drmangotea.createindustry.registry;
import com.drmangotea.createindustry.base.TFMGBuilderTransformers;
import com.drmangotea.createindustry.base.TFMGMetalBarsGen;
import com.drmangotea.createindustry.base.TFMGSpriteShifts;
import com.drmangotea.createindustry.base.TFMGVanillaBlockStates;
import com.drmangotea.createindustry.base.*;
import com.drmangotea.createindustry.blocks.concrete.formwork.FormWorkBlock;
import com.drmangotea.createindustry.blocks.concrete.formwork.FormWorkGenerator;
import com.drmangotea.createindustry.blocks.concrete.formwork.rebar.RebarFormWorkBlock;
@@ -12,16 +9,17 @@ import com.drmangotea.createindustry.blocks.decoration.TrussBlock;
import com.drmangotea.createindustry.blocks.decoration.doors.TFMGSlidingDoorBlock;
import com.drmangotea.createindustry.blocks.decoration.flywheels.TFMGFlywheelBlock;
import com.drmangotea.createindustry.blocks.deposits.FluidDepositBlock;
import com.drmangotea.createindustry.blocks.encased.TFMGEncasedCogwheelBlock;
import com.drmangotea.createindustry.blocks.encased.TFMGEncasedShaftBlock;
import com.drmangotea.createindustry.blocks.engines.compact.CompactEngineBlock;
import com.drmangotea.createindustry.blocks.engines.diesel.DieselEngineBlock;
import com.drmangotea.createindustry.blocks.engines.diesel.engine_expansion.DieselEngineExpansionBlock;
import com.drmangotea.createindustry.blocks.engines.intake.AirIntakeBlock;
import com.drmangotea.createindustry.blocks.engines.intake.AirIntakeGenerator;
import com.drmangotea.createindustry.blocks.engines.radial.RadialEngineBlock;
import com.drmangotea.createindustry.blocks.engines.radial.input.RadialEngineInputBlock;
import com.drmangotea.createindustry.blocks.engines.radial.large.LargeRadialEngineBlock;
import com.drmangotea.createindustry.blocks.engines.small.EngineGenerator;
import com.drmangotea.createindustry.blocks.engines.small.gasoline.GasolineEngineBackBlock;
import com.drmangotea.createindustry.blocks.engines.small.gasoline.GasolineEngineBlock;
import com.drmangotea.createindustry.blocks.engines.small.gasoline.GasolineEngineGenerator;
import com.drmangotea.createindustry.blocks.engines.small.lpg.LPGEngineBackBlock;
import com.drmangotea.createindustry.blocks.engines.small.lpg.LPGEngineBlock;
import com.drmangotea.createindustry.blocks.engines.small.turbine.TurbineEngineBackBlock;
@@ -31,6 +29,16 @@ import com.drmangotea.createindustry.blocks.machines.flarestack.FlarestackBlock;
import com.drmangotea.createindustry.blocks.machines.flarestack.FlarestackGenerator;
import com.drmangotea.createindustry.blocks.machines.metal_processing.coke_oven.CokeOvenCTBehavior;
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.distillation_tower.IndustrialPipeBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.base.PumpjackBaseBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.PumpjackBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.PumpjackGenerator;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.PumpjackHammerConnectorBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.PumpjackHammerHeadBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.PumpjackHammerPartBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.large.LargePumpjackHammerConnectorBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.large.LargePumpjackHammerHeadBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer.parts.large.LargePumpjackHammerPartBlock;
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;
@@ -61,9 +69,6 @@ import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.distillation_tower.DistillationOutputBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.distillery.DistilleryControllerBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.distillery.DistilleryOutputBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.base.PumpjackBaseBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.crank.PumpjackCrankBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.hammer_holder.PumpjackHammerHolderBlock;
import com.drmangotea.createindustry.blocks.machines.oil_processing.pumpjack.machine_input.MachineInputBlock;
import com.drmangotea.createindustry.blocks.pipes.normal.steel.EncasedSteelPipeBlock;
import com.drmangotea.createindustry.blocks.pipes.normal.steel.GlassSteelPipeBlock;
@@ -77,6 +82,7 @@ import com.drmangotea.createindustry.blocks.tanks.SteelTankBlock;
import com.drmangotea.createindustry.blocks.tanks.SteelTankGenerator;
import com.drmangotea.createindustry.blocks.tanks.SteelTankItem;
import com.simibubi.create.*;
import com.simibubi.create.content.contraptions.bearing.StabilizedBearingMovementBehaviour;
import com.simibubi.create.content.decoration.MetalLadderBlock;
import com.simibubi.create.content.decoration.MetalScaffoldingBlock;
import com.simibubi.create.content.decoration.encasing.CasingBlock;
@@ -86,10 +92,6 @@ import com.simibubi.create.content.decoration.encasing.EncasingRegistry;
import com.simibubi.create.content.fluids.pipes.SmartFluidPipeGenerator;
import com.simibubi.create.content.fluids.pipes.valve.FluidValveBlock;
import com.simibubi.create.content.kinetics.BlockStressDefaults;
import com.simibubi.create.content.kinetics.simpleRelays.encased.EncasedCogCTBehaviour;
import com.simibubi.create.content.kinetics.simpleRelays.encased.EncasedCogwheelBlock;
import com.simibubi.create.content.kinetics.simpleRelays.encased.EncasedShaftBlock;
import com.simibubi.create.content.logistics.vault.ItemVaultCTBehaviour;
import com.simibubi.create.content.processing.AssemblyOperatorBlockItem;
import com.simibubi.create.foundation.data.*;
import com.simibubi.create.foundation.utility.Couple;
@@ -104,17 +106,15 @@ import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.block.*;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.level.material.MaterialColor;
import net.minecraft.world.level.storage.loot.LootPool;
import net.minecraft.world.level.storage.loot.entries.LootItem;
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
import net.minecraftforge.client.model.generators.ConfiguredModel;
import net.minecraftforge.common.Tags;
import net.minecraftforge.registries.RegistryObject;
import static com.drmangotea.createindustry.CreateTFMG.REGISTRATE;
import static com.simibubi.create.AllMovementBehaviours.movementBehaviour;
import static com.simibubi.create.foundation.data.BlockStateGen.simpleCubeAll;
import static com.simibubi.create.foundation.data.CreateRegistrate.casingConnectivity;
import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures;
@@ -139,6 +139,21 @@ public class TFMGBlocks {
.build()
.lang("Napalm Bomb")
.register();
public static final BlockEntry<Block> STEEL_FRAME = REGISTRATE.block("steel_frame", Block::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.COLOR_YELLOW))
.properties(p -> p.strength(3))
.transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped)
.properties(BlockBehaviour.Properties::noOcclusion)
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.item()
.build()
.lang("Steel Frame")
.register();
public static final BlockEntry<Block> FOSSILSTONE = REGISTRATE.block("fossilstone", Block::new)
.initialProperties(() -> Blocks.OBSIDIAN)
.properties(p -> p.strength(100f,1200f))
@@ -341,16 +356,7 @@ public class TFMGBlocks {
.lang("Factory Floor Slab")
.register();
public static final BlockEntry<TFMGGravityBlock> LIMESAND = REGISTRATE.block("limesand", TFMGGravityBlock::new)
.initialProperties(() -> Blocks.SAND)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
//.transform(pickaxeOnly())
.blockstate(simpleCubeAll("limesand"))
// .tag(Tags.Blocks)
.item()
.build()
.lang("Limesand")
.register();
public static final BlockEntry<TFMGGravityBlock> CEMENT = REGISTRATE.block("cement", TFMGGravityBlock::new)
.initialProperties(() -> Blocks.SAND)
@@ -537,37 +543,146 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.build()
.register();
public static final BlockEntry<PumpjackCrankBlock> PUMPJACK_CRANK =
REGISTRATE.block("pumpjack_crank", PumpjackCrankBlock::new)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(p -> p
.strength(4.5F))
.properties(BlockBehaviour.Properties::noOcclusion)
.blockstate(BlockStateGen.horizontalBlockProvider(true))
.transform(axeOrPickaxe())
.item()
.build()
.register();
public static final BlockEntry<PumpjackBaseBlock> PUMPJACK_BASE =
REGISTRATE.block("pumpjack_base", PumpjackBaseBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(BlockBehaviour.Properties::noOcclusion)
// public static final BlockEntry<PumpjackCrankBlock> PUMPJACK_CRANK =
// REGISTRATE.block("pumpjack_crank", PumpjackCrankBlock::new)
// .properties(p -> p.color(MaterialColor.COLOR_GRAY))
// .properties(p -> p
// .strength(4.5F))
// .properties(BlockBehaviour.Properties::noOcclusion)
// .blockstate(BlockStateGen.horizontalBlockProvider(true))
// .transform(axeOrPickaxe())
// .item()
// .build()
// .register();
// public static final BlockEntry<PumpjackBaseBlock> PUMPJACK_BASE =
// REGISTRATE.block("pumpjack_base", PumpjackBaseBlock::new)
// .initialProperties(SharedProperties::copperMetal)
// .properties(BlockBehaviour.Properties::noOcclusion)
// .transform(pickaxeOnly())
// .blockstate(BlockStateGen.horizontalBlockProvider(true))
// .item()
// .build()
// .register();
//
// public static final BlockEntry<PumpjackHammerHolderBlock> PUMPJACK_HAMMER_HOLDER =
// REGISTRATE.block("pumpjack_hammer_holder", PumpjackHammerHolderBlock::new)
// .initialProperties(SharedProperties::copperMetal)
// .properties(BlockBehaviour.Properties::noOcclusion)
// .blockstate(BlockStateGen.horizontalBlockProvider(true))
// .transform(pickaxeOnly())
// .item()
// .build()
// .register();
// //////
public static final BlockEntry<PumpjackBlock> PUMPJACK_HAMMER =
REGISTRATE.block("pumpjack_hammer", PumpjackBlock::new)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.horizontalBlockProvider(true))
.properties(BlockBehaviour.Properties::noOcclusion)
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.addLayer(() -> RenderType::cutoutMipped)
.blockstate(new PumpjackGenerator()::generate)
.onRegister(movementBehaviour(new StabilizedBearingMovementBehaviour()))
.item()
.build()
.transform(customItemModel())
.lang("Pumpjack Hammer Holder")
.register();
public static final BlockEntry<PumpjackHammerHolderBlock> PUMPJACK_HAMMER_HOLDER =
REGISTRATE.block("pumpjack_hammer_holder", PumpjackHammerHolderBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(BlockBehaviour.Properties::noOcclusion)
.blockstate(BlockStateGen.horizontalBlockProvider(true))
public static final BlockEntry<PumpjackCrankBlock> PUMPJACK_CRANK =
REGISTRATE.block("pumpjack_crank", PumpjackCrankBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.horizontalBlockProvider(true))
.properties(BlockBehaviour.Properties::noOcclusion)
.item()
.build()
.lang("Pumpjack Crank")
.register();
//////
public static final BlockEntry<PumpjackHammerPartBlock> PUMPJACK_HAMMER_PART = REGISTRATE.block("pumpjack_hammer_part", PumpjackHammerPartBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(pickaxeOnly())
.properties(BlockBehaviour.Properties::noOcclusion)
.blockstate(BlockStateGen.horizontalBlockProvider(false))
.item()
.build()
.lang("Pumpjack Hammer Part")
.register();
public static final BlockEntry<PumpjackHammerHeadBlock> PUMPJACK_HAMMER_HEAD = REGISTRATE.block("pumpjack_hammer_head", PumpjackHammerHeadBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(pickaxeOnly())
.properties(BlockBehaviour.Properties::noOcclusion)
.blockstate(BlockStateGen.horizontalBlockProvider(false))
.item()
.build()
.lang("Pumpjack Hammer Head")
.register();
public static final BlockEntry<PumpjackHammerConnectorBlock> PUMPJACK_HAMMER_CONNECTOR = REGISTRATE.block("pumpjack_hammer_connector", PumpjackHammerConnectorBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(pickaxeOnly())
.properties(BlockBehaviour.Properties::noOcclusion)
.blockstate(BlockStateGen.horizontalBlockProvider(false))
.item()
.build()
.lang("Pumpjack Hammer Connector")
.register();
////////
public static final BlockEntry<LargePumpjackHammerPartBlock> LARGE_PUMPJACK_HAMMER_PART = REGISTRATE.block("large_pumpjack_hammer_part", LargePumpjackHammerPartBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.horizontalBlockProvider(false))
.item()
.build()
.lang("Large Pumpjack Hammer Part")
.register();
public static final BlockEntry<LargePumpjackHammerHeadBlock> LARGE_PUMPJACK_HAMMER_HEAD = REGISTRATE.block("large_pumpjack_hammer_head", LargePumpjackHammerHeadBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.horizontalBlockProvider(false))
.item()
.build()
.lang("Large Pumpjack Hammer Head")
.register();
public static final BlockEntry<LargePumpjackHammerConnectorBlock> LARGE_PUMPJACK_HAMMER_CONNECTOR = REGISTRATE.block("large_pumpjack_hammer_connector", LargePumpjackHammerConnectorBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(pickaxeOnly())
.blockstate(BlockStateGen.horizontalBlockProvider(false))
.item()
.build()
.lang("Large Pumpjack Hammer Connector")
.register();
////////
public static final BlockEntry<PumpjackBaseBlock> PUMPJACK_BASE = REGISTRATE.block("pumpjack_base", PumpjackBaseBlock::new)
.initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(pickaxeOnly())
.properties(BlockBehaviour.Properties::noOcclusion)
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.item()
.build()
.lang("Pumpjack Base")
.register();
///////////
//Blast Furnace
@@ -917,6 +1032,80 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.lang("Diesel Engine Expansion")
.register();
public static final BlockEntry<RadialEngineBlock> RADIAL_ENGINE =
REGISTRATE.block("radial_engine", RadialEngineBlock::new)
.initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.addLayer(() -> RenderType::cutoutMipped)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.blockstate(new EngineGenerator()::generate)
.transform(BlockStressDefaults.setCapacity(70.0))
.transform(BlockStressDefaults.setGeneratorSpeed(() -> Couple.create(0, 256)))
.item()
.properties(p -> p.rarity(Rarity.UNCOMMON))
// .lang("Radial Engine")
.transform(customItemModel())
.register();
public static final BlockEntry<LargeRadialEngineBlock> LARGE_RADIAL_ENGINE =
REGISTRATE.block("large_radial_engine", LargeRadialEngineBlock::new)
.initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.addLayer(() -> RenderType::cutoutMipped)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.blockstate(new EngineGenerator()::generate)
.transform(BlockStressDefaults.setCapacity(93.0))
.transform(BlockStressDefaults.setGeneratorSpeed(() -> Couple.create(0, 256)))
.item()
.properties(p -> p.rarity(Rarity.UNCOMMON))
// .lang("Large Radial Engine")
.transform(customItemModel())
.register();
public static final BlockEntry<RadialEngineInputBlock> RADIAL_ENGINE_INPUT =
REGISTRATE.block("radial_engine_input", RadialEngineInputBlock::new)
.initialProperties(SharedProperties::stone)
.blockstate(BlockStateGen.directionalBlockProvider(false))
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.register();
public static final BlockEntry<DebugBlock> RADIAL_ENGINE_INPUT_PONDER =
REGISTRATE.block("radial_engine_input_ponder", DebugBlock::new)
.initialProperties(SharedProperties::stone)
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.item()
.build()
.register();
public static final BlockEntry<CompactEngineBlock> COMPACT_ENGINE =
REGISTRATE.block("compact_engine", CompactEngineBlock::new)
.initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.tag(AllTags.AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.blockstate(new EngineGenerator()::generate)
.transform(BlockStressDefaults.setCapacity(20.0))
.transform(BlockStressDefaults.setGeneratorSpeed(() -> Couple.create(0, 256)))
.item()
.properties(p -> p.rarity(Rarity.UNCOMMON))
// .lang("Small Engine")
.transform(customItemModel())
.register();
//----------------------PIPES-------------------------------//
//STEEL

View File

@@ -32,8 +32,7 @@ public class TFMGItems {
STEEL_INGOT = taggedIngredient("steel_ingot", forgeItemTag("ingots/steel"), CREATE_INGOTS.tag),
CAST_IRON_INGOT = taggedIngredient("cast_iron_ingot", forgeItemTag("ingots/cast_iron"), CREATE_INGOTS.tag),
ALUMINUM_INGOT = taggedIngredient("aluminum_ingot", forgeItemTag("ingots/aluminum"), CREATE_INGOTS.tag),
PLASTIC_SHEET = taggedIngredient("plastic_sheet", forgeItemTag("ingots/plastic"), CREATE_INGOTS.tag),
CHARCOAL_DUST = taggedIngredient("charcoal_dust", forgeItemTag("dusts/charcoal"))
PLASTIC_SHEET = taggedIngredient("plastic_sheet", forgeItemTag("ingots/plastic"), CREATE_INGOTS.tag)
// LEAD_INGOT = taggedIngredient("lead_ingot", forgeItemTag("ingots/lead"), CREATE_INGOTS.tag)
;
@@ -59,7 +58,13 @@ public class TFMGItems {
STEEL_MECHANISM = REGISTRATE.item("steel_mechanism", Item::new).register(),
NITRATE_DUST = REGISTRATE.item("nitrate_dust", Item::new).register(),
SULFUR_DUST = REGISTRATE.item("sulfur_dust", Item::new).register();
SULFUR_DUST = REGISTRATE.item("sulfur_dust", Item::new).register(),
LIMESAND = REGISTRATE.item("limesand", Item::new).register(),
CONCRETE_MIXTURE = REGISTRATE.item("concrete_mixture", Item::new).register()
;
public static final ItemEntry<SequencedAssemblyItem>

View File

@@ -36,7 +36,7 @@ public class TFMGPartialModels {
PUMPJACK_FRONT_ROPE = block("pumpjack/pumpjack_front_rope"),
PUMPJACK_CONNECTOR = block("pumpjack/pumpjack_connector"),
PUMPJACK_CRANK_BLOCK = block("pumpjack/pumpjack_crank_block"),
PUMPJACK_CRANK = block("pumpjack/pumpjack_crank"),
PUMPJACK_CRANK = block("pumpjack_crank/crank"),
TOWER_GAUGE = block("distillation_tower/gauge"),
SURFACE_SCANNER_DIAL = block("surface_scanner/dial"),
SURFACE_SCANNER_FLAG = block("surface_scanner/flag"),

View File

@@ -17,16 +17,31 @@ public class TFMGShapes {
public static final VoxelShaper
ENGINE_BACK = shape(3, 0, 3, 13, 16, 16)
.forDirectional(),
ENGINE_BACK_VERTICAL = shape(3, 0, 0, 13, 16, 13)
.forDirectional(),
ENGINE_BACK_VERTICAL = shape(3, 0, 3, 16, 16, 13)
.forDirectional(),
ENGINE_VERTICAL = shape(3, 0, 0, 13, 14, 13)
.forDirectional(),
ENGINE_VERTICAL = shape(3, 0, 3, 13, 14, 16)
.forDirectional(),
ENGINE = shape(3, 0, 3, 13, 14, 16)
.forDirectional()
.forDirectional(),
PUMPJACK_HAMMER_PART = shape(0, 2, 0, 16, 14, 16)
.forDirectional(),
RADIAL_ENGINE = shape(1, 4, 1, 15, 12, 15)
.forDirectional(),
LARGE_RADIAL_ENGINE = shape(-3, 4, -3, 19, 12, 19)
.forDirectional(),
PUMPJACK_HEAD = shape(1, 0, -4, 15, 14, 24)
.forDirectional(),
COMPACT_ENGINE_VERTICAL = shape(3, 0, 3, 13, 14, 14)
.forDirectional(),
COMPACT_ENGINE = shape(3, 0, 3, 13, 14, 14)
.forDirectional()
@@ -42,7 +57,9 @@ public class TFMGShapes {
CASTING_SPOUT = shape(1, 2, 1, 15, 14, 15)
.build(),
SURFACE_SCANNER = shape(2, 0, 2, 14, 14, 14).build();
SURFACE_SCANNER = shape(2, 0, 2, 14, 14, 14).build(),
FULL = shape(0, 0, 0, 16, 16, 16).build();
;
private static TFMGShapes.Builder shape(VoxelShape shape) {

View File

@@ -8,7 +8,7 @@ license="MIT"
modId="createindustry"
version="0.6.0"
version="0.7.0c"
displayName="Create: The Factory Must Grow"

View File

@@ -20,7 +20,9 @@
"createindustry.ponder.pumpjack.text_1": "To start extracting Oil, you must first build a pipeline on top of a deposit using Industrial Pipes",
"createindustry.ponder.pumpjack.text_2": "Then, construct a Pumpjack on top of the pipeline by first placing down a Pumpjack Base...",
"createindustry.ponder.pumpjack.text_3": "Placing the Pumpjack Hammer behind it...",
"createindustry.ponder.pumpjack.text_4": "And finally, placing the Machine Input with a Pumpjack Crank above it, as shown in the scene",
"createindustry.ponder.pumpjack.text_4": "Next step is building the Connector And the Head of the Pumpjack above the crank and the base",
"createindustry.ponder.pumpjack.text_5": "Now they need to be connected with Pumpjack Pammer Parts, keep in mind that superglue is needed to finish the structure",
"createindustry.ponder.pumpjack.text_6": "And finally, placing the Machine Input with a Pumpjack Crank above it, as shown in the scene",
"createindustry.ponder.distillation_tower.text_1": "A sufficiently large Steel Fluid Tank can be turned into a Distillation Tower",
"createindustry.ponder.distillation_tower.text_2": "The tower is assembled by first placing a Steel Distillation Tower Controller next to the tank...",
@@ -50,15 +52,25 @@
"createindustry.ponder.casting.text_1": "Casting is the process of pouring liquid metal into a Casting Basin using a Casting Spout",
"createindustry.ponder.casting.text_2": "The Casting Basin, obviously, requires a mold to function",
"createindustry.ponder.radial_engines.text_1": "Radial Engines are a special Type of Engine that doesn't require an exhaust block and has a shaft from both sides",
"createindustry.ponder.radial_engines.text_2": "Clicking the Engine from one of its sides will spawn an input slot that can accept fuel and redstone signals",
"createindustry.ponder.radial_engines.text_3": "Regular Radial Engines uses gasoline as fuel",
"createindustry.ponder.radial_engines.text_4": "Engine will start when redstone signal is applied to the input slot or the block itself",
"createindustry.ponder.radial_engines.text_5": "The second variant of a radial is The Large Radial Engine which uses kerosene as fuel",
"createindustry.ponder.distillation_tower.header": "Distillation Tower Setup",
"createindustry.ponder.pumpjack.header": "Building Pumpjacks",
"createindustry.ponder.surface_scanner.header": "Locating Oil",
"createindustry.ponder.diesel_engine.header": "Building a Diesel Engine",
"createindustry.ponder.diesel_engine_expansion.header": "Expanding Diesel Engines",
"createindustry.ponder.small_engines.header": "Building Small Engines",
"createindustry.ponder.radial_engines.header": "Using Radial Engines",
"createindustry.ponder.coke_oven.header": "Building a Coke Oven",
"createindustry.ponder.blast_furnace": "Building a Blast Furnace",
"createindustry.ponder.blast_furnace.header": "Building a Blast Furnace",
"createindustry.ponder.casting.header": "Casting Metal",
"createindustry.ponder.tag.oil": "Oil Related Machines",

View File

@@ -0,0 +1,438 @@
{
"_": "->------------------------] Game Elements [------------------------<-",
"block.createindustry.air_intake": "Entrada de aire",
"block.createindustry.aluminum_bars": "Barras de aluminio",
"block.createindustry.aluminum_block": "Bloque de aluminio",
"block.createindustry.aluminum_fluid_valve": "Válvula de fluidos de aluminio",
"block.createindustry.aluminum_flywheel": "Rueda de inercia de aluminio",
"block.createindustry.aluminum_ladder": "Escalera de aluminio",
"block.createindustry.aluminum_mechanical_pump": "Bomba mecánica de aluminio",
"block.createindustry.aluminum_pipe": "Tubería de aluminio",
"block.createindustry.aluminum_scaffolding": "Andamio de aluminio",
"block.createindustry.aluminum_smart_fluid_pipe": "Tubería de fluidos inteligente de aluminio",
"block.createindustry.aluminum_truss": "Armazón de aluminio",
"block.createindustry.asphalt": "Asfalto",
"block.createindustry.bauxite": "Bauxita",
"block.createindustry.bauxite_pillar": "Pilar de bauxita",
"block.createindustry.black_concrete": "Hormigón negro",
"block.createindustry.black_concrete_slab": "Losa de hormigón negro",
"block.createindustry.black_concrete_stairs": "Escaleras de hormigón negro",
"block.createindustry.black_concrete_wall": "Muro de hormigón negro",
"block.createindustry.blast_furnace_output": "Salida del alto horno",
"block.createindustry.blue_concrete": "Hormigón azul",
"block.createindustry.blue_concrete_slab": "Losa de hormigón azul",
"block.createindustry.blue_concrete_stairs": "Escaleras de hormigón azul",
"block.createindustry.blue_concrete_wall": "Muro de hormigón azul",
"block.createindustry.brass_fluid_valve": "Válvula de fluidos de latón",
"block.createindustry.brass_mechanical_pump": "Bomba mecánica de latón",
"block.createindustry.brass_pipe": "Tubería de latón",
"block.createindustry.brass_smart_fluid_pipe": "Tubería de fluidos inteligente de latón",
"block.createindustry.brown_concrete": "Hormigón marrón",
"block.createindustry.brown_concrete_slab": "Losa de hormigón marrón",
"block.createindustry.brown_concrete_stairs": "Escaleras de hormigón marrón",
"block.createindustry.brown_concrete_wall": "Muro de hormigón marrón",
"block.createindustry.cast_iron_block": "Bloque de hierro fundido",
"block.createindustry.cast_iron_distillation_controller": "Controlador de destilación de hierro fundido",
"block.createindustry.cast_iron_distillation_output": "Salida de destilación de hierro fundido",
"block.createindustry.cast_iron_fluid_valve": "Válvula de fluidos de hierro fundido",
"block.createindustry.cast_iron_flywheel": "Rueda de inercia de hierro fundido",
"block.createindustry.cast_iron_mechanical_pump": "Bomba mecánica de hierro fundido",
"block.createindustry.cast_iron_pipe": "Tubería de hierro fundido",
"block.createindustry.cast_iron_smart_fluid_pipe": "Tubería de fluidos inteligente de hierro fundido",
"block.createindustry.casting_basin": "Cuenca de fundición",
"block.createindustry.casting_spout": "Caño de fundición",
"block.createindustry.caution_block": "Bloque de precaución",
"block.createindustry.cement": "Cemento",
"block.createindustry.coal_coke_block": "Bloque de coque de carbón",
"block.createindustry.coke_oven": "Horno de coque",
"block.createindustry.concrete": "Hormigón",
"block.createindustry.concrete_slab": "Losa de hormigón",
"block.createindustry.concrete_stairs": "Escaleras de hormigón",
"block.createindustry.concrete_wall": "Muro de hormigón",
"block.createindustry.cooling_fluid": "Líquido refrigerante",
"block.createindustry.copper_encased_aluminum_pipe": "Tubería de aluminio revestido de cobre",
"block.createindustry.copper_encased_brass_pipe": "Tubería de latón revestido de cobre",
"block.createindustry.copper_encased_cast_iron_pipe": "Tubería de hierro fundido revestido de cobre",
"block.createindustry.copper_encased_plastic_pipe": "Tubería de plástico revestida de cobre",
"block.createindustry.copper_encased_steel_pipe": "Tubería de acero revestido de cobre",
"block.createindustry.creosote": "Creosota",
"block.createindustry.crude_oil_fluid": "Fluido de petróleo crudo",
"block.createindustry.cut_bauxite": "Bauxita cortada",
"block.createindustry.cut_bauxite_brick_slab": "Losa de ladrillo de bauxita cortada",
"block.createindustry.cut_bauxite_brick_stairs": "Escaleras de ladrillo de bauxita cortada",
"block.createindustry.cut_bauxite_brick_wall": "Pared de ladrillos de bauxita cortada",
"block.createindustry.cut_bauxite_bricks": "Ladrillos de bauxita cortada",
"block.createindustry.cut_bauxite_slab": "Losa de bauxita cortada",
"block.createindustry.cut_bauxite_stairs": "Escaleras de bauxita cortada",
"block.createindustry.cut_bauxite_wall": "Pared de bauxita cortada",
"block.createindustry.cyan_concrete": "Hormigón cian",
"block.createindustry.cyan_concrete_slab": "Losa de hormigón cian",
"block.createindustry.cyan_concrete_stairs": "Escaleras de hormigón cian",
"block.createindustry.cyan_concrete_wall": "Muro de hormigón cian",
"block.createindustry.diesel": "Diésel",
"block.createindustry.diesel_engine": "Motor diésel",
"block.createindustry.diesel_engine_expansion": "Expansión del motor diésel",
"block.createindustry.exhaust": "Tubería de escape",
"block.createindustry.factory_floor": "Suelo de fábrica",
"block.createindustry.factory_floor_slab": "Losa de suelo de fábrica",
"block.createindustry.factory_floor_stairs": "Escaleras de suelo de fábrica",
"block.createindustry.fireclay": "Arcilla refractaria",
"block.createindustry.fireproof_brick_reinforcement": "Muro de ladrillos ignífugos",
"block.createindustry.fireproof_bricks": "Ladrillos ignífugos",
"block.createindustry.flarestack": "Flarestack",
"block.createindustry.formwork_block": "Bloque de encofrado",
"block.createindustry.fossilstone": "Piedra fósil",
"block.createindustry.gasoline": "Gasolina",
"block.createindustry.gasoline_engine": "Motor de gasolina",
"block.createindustry.gasoline_engine_back": "Motor de gasolina trasero",
"block.createindustry.glass_aluminum_pipe": "Tubería de aluminio y crista",
"block.createindustry.glass_brass_pipe": "Tubería de latón y crista",
"block.createindustry.glass_cast_iron_pipe": "Tubería de hierro fundido y crista",
"block.createindustry.glass_plastic_pipe": "Tubería de plástico y cristal",
"block.createindustry.glass_steel_pipe": "Tubería de acero y cristal",
"block.createindustry.gray_concrete": "Hormigón gris",
"block.createindustry.gray_concrete_slab": "Losa de hormigón gris",
"block.createindustry.gray_concrete_stairs": "Escaleras de hormigón gris",
"block.createindustry.gray_concrete_wall": "Muro de hormigón gris",
"block.createindustry.green_concrete": "Hormigón verde",
"block.createindustry.green_concrete_slab": "Losa de hormigón verde",
"block.createindustry.green_concrete_stairs": "Escaleras de hormigón verde",
"block.createindustry.green_concrete_wall": "Muro de hormigón verde",
"block.createindustry.hardened_planks": "Tablas endurecidas",
"block.createindustry.heavy_casing_door": "Puerta de carcasa pesada",
"block.createindustry.heavy_machinery_casing": "Carcasa de maquinaria pesada",
"block.createindustry.heavy_oil": "Petróleo pesado",
"block.createindustry.industrial_pipe": "Tubería industrial",
"block.createindustry.kerosene": "Queroseno",
"block.createindustry.layered_bauxite": "Bauxita en capas",
"block.createindustry.light_blue_concrete": "Hormigón azul claro",
"block.createindustry.light_blue_concrete_slab": "Losa de hormigón azul claro",
"block.createindustry.light_blue_concrete_stairs": "Escaleras de hormigón azul claro",
"block.createindustry.light_blue_concrete_wall": "Muro de hormigón azul claro",
"block.createindustry.light_gray_concrete": "Hormigón gris claro",
"block.createindustry.light_gray_concrete_slab": "Losa de hormigón gris claro",
"block.createindustry.light_gray_concrete_stairs": "Escaleras de hormigón gris claro",
"block.createindustry.light_gray_concrete_wall": "Muro de hormigón gris claro",
"block.createindustry.lignite": "Lignito",
"block.createindustry.lime_concrete": "Hormigón ",
"block.createindustry.lime_concrete_slab": "Losa de hormigón verde lima",
"block.createindustry.lime_concrete_stairs": "Escaleras de hormigón verde lima",
"block.createindustry.lime_concrete_wall": "Muro de hormigón verde lima",
"block.createindustry.limesand": "Cal",
"block.createindustry.liquid_asphalt": "Asfalto líquido",
"block.createindustry.liquid_concrete": "Hormigón líquido",
"block.createindustry.liquid_plastic": "Plástico líquido",
"block.createindustry.lpg_engine": "Motor GLP",
"block.createindustry.lpg_engine_back": "Motor GLP trasero",
"block.createindustry.lubrication_oil": "Aceite lubricante",
"block.createindustry.machine_input": "Entrada de Pumpjack",
"block.createindustry.magenta_concrete": "Hormigón magenta",
"block.createindustry.magenta_concrete_slab": "Losa de hormigón magenta",
"block.createindustry.magenta_concrete_stairs": "Escaleras de hormigón magenta",
"block.createindustry.magenta_concrete_wall": "Muro de hormigón magenta",
"block.createindustry.molten_metal": "Metal fundido",
"block.createindustry.molten_slag": "Escoria fundida",
"block.createindustry.molten_steel": "Acero fundido",
"block.createindustry.napalm": "Napalm",
"block.createindustry.napalm_bomb": "Bomba de napalm",
"block.createindustry.nafta": "Nafta",
"block.createindustry.oil_deposit": "Depósito de petróleo",
"block.createindustry.orange_concrete": "Hormigón naranja",
"block.createindustry.orange_concrete_slab": "Losa de hormigón naranja",
"block.createindustry.orange_concrete_stairs": "Escaleras de hormigón naranja",
"block.createindustry.orange_concrete_wall": "Muro de hormigón naranja",
"block.createindustry.pink_concrete": "Hormigón rosa",
"block.createindustry.pink_concrete_slab": "Losa de hormigón rosa",
"block.createindustry.pink_concrete_stairs": "Escaleras de hormigón rosa",
"block.createindustry.pink_concrete_wall": "Muro de hormigón rosa",
"block.createindustry.plastic_block": "Bloque de plástico",
"block.createindustry.plastic_fluid_valve": "Válvula de fluidos de plástico",
"block.createindustry.plastic_mechanical_pump": "Bomba mecánica de plástico",
"block.createindustry.plastic_pipe": "Tubería de plástico",
"block.createindustry.plastic_smart_fluid_pipe": "Tubería de fluidos inteligente de plástico",
"block.createindustry.polished_cut_bauxite": "Bauxita cortada pulida",
"block.createindustry.polished_cut_bauxite_slab": "Losa de bauxita cortada pulida",
"block.createindustry.polished_cut_bauxite_stairs": "Escaleras de bauxita cortada pulida",
"block.createindustry.polished_cut_bauxite_wall": "Muro de bauxita cortada pulida",
"block.createindustry.pumpjack_base": "Base de Pumpjack",
"block.createindustry.pumpjack_crank": "Manivela de Pumpjack",
"block.createindustry.pumpjack_hammer_holder": "Soporte de Pumpjack",
"block.createindustry.purple_concrete": "Hormigón morado",
"block.createindustry.purple_concrete_slab": "Losa de hormigón morado",
"block.createindustry.purple_concrete_stairs": "Escaleras de hormigón morado",
"block.createindustry.purple_concrete_wall": "Muro de hormigón morado",
"block.createindustry.rebar_concrete": "Hormigón reforzado",
"block.createindustry.rebar_concrete_slab": "Losa de hormigón con barras de refuerzo",
"block.createindustry.rebar_concrete_stairs": "Escaleras de hormigón con barras de refuerzo",
"block.createindustry.rebar_concrete_wall": "Muro de hormigón con barras de refuerzo",
"block.createindustry.rebar_formwork_block": "Bloque de encofrado de barras de refuerzo",
"block.createindustry.red_caution_block": "Bloque de precaución rojo",
"block.createindustry.red_concrete": "Hormigón rojo",
"block.createindustry.red_concrete_slab": "Losa de hormigón rojo",
"block.createindustry.red_concrete_stairs": "Escaleras de hormigón rojo",
"block.createindustry.red_concrete_wall": "Muro de hormigón rojo",
"block.createindustry.small_bauxite_brick_slab": "Pequeña losa de ladrillos de bauxita",
"block.createindustry.small_bauxite_brick_stairs": "Escaleras pequeñas de ladrillos de bauxita",
"block.createindustry.small_bauxite_brick_wall": "Pequeño muro de ladrillos de bauxita",
"block.createindustry.small_bauxite_bricks": "Pequeños ladrillos de bauxita",
"block.createindustry.steel_bars": "Barras de acero",
"block.createindustry.steel_block": "Bloque de acero",
"block.createindustry.steel_casing": "Carcasa de acero",
"block.createindustry.steel_distillation_controller": "Controlador de destilación de acero",
"block.createindustry.steel_distillation_output": "Salida de destilación de acero",
"block.createindustry.steel_door": "Puerta de acero",
"block.createindustry.steel_fluid_tank": "Tanque de fluidos de acero",
"block.createindustry.steel_fluid_valve": "Válvula de fluidos de acero",
"block.createindustry.steel_flywheel": "Rueda de inercia de acero",
"block.createindustry.steel_ladder": "Escalera de acero",
"block.createindustry.steel_mechanical_pump": "Bomba mecánica de acero",
"block.createindustry.steel_pipe": "Tubería de acero",
"block.createindustry.steel_scaffolding": "Andamios de acero",
"block.createindustry.steel_smart_fluid_pipe": "Tubería de fluidos inteligente de acero",
"block.createindustry.steel_truss": "Armazón de acero",
"block.createindustry.sulfur": "Azufre",
"block.createindustry.surface_scanner": "Escáner de superficie",
"block.createindustry.turbine_engine": "Motor de turbina",
"block.createindustry.turbine_engine_back": "Motor de turbina trasero",
"block.createindustry.white_concrete": "Hormigón blanco",
"block.createindustry.white_concrete_slab": "Losa de hormigón blanco",
"block.createindustry.white_concrete_stairs": "Escaleras de hormigón blanco",
"block.createindustry.white_concrete_wall": "Muro de hormigón blanco",
"block.createindustry.Yellow_concrete": "Hormigón amarillo",
"block.createindustry.Yellow_concrete_slab": "Losa de hormigón amarillo",
"block.createindustry.Yellow_concrete_stairs": "Escaleras de hormigón amarillo",
"block.createindustry.Yellow_concrete_wall": "Muro de hormigón amarillo",
"entity.createindustry.blue_spark": "Chispa azul",
"entity.createindustry.copper_grenade": "Granada de cobre",
"entity.createindustry.green_spark": "Chispa verde",
"entity.createindustry.napalm_bomb_entity": "Entidad de la bomba de napalm",
"entity.createindustry.spark": "Chispa",
"entity.createindustry.thermite_grenade": "Granada termita",
"entity.createindustry.zin_grenade": "Granada zin",
"fluid.createindustry.air": "Aire",
"fluid.createindustry.butane": "Butano",
"fluid.createindustry.carbon_dioxide": "Dióxido de carbono",
"fluid.createindustry.cooling_fluid": "Líquido refrigerante",
"fluid.createindustry.creosote": "Creosota",
"fluid.createindustry.crude_oil_fluid": "Petróleo crudo",
"fluid.createindustry.diesel": "Diésel",
"fluid.createindustry.etileno": "Etileno",
"fluid.createindustry.gasoline": "Gasolina",
"fluid.createindustry.heavy_oil": "Aceite pesado",
"fluid.createindustry.kerosene": "Queroseno",
"fluid.createindustry.liquid_asphalt": "Asfalto líquido",
"fluid.createindustry.liquid_concrete": "Hormigón líquido",
"fluid.createindustry.liquid_plastic": "Plástico líquido",
"fluid.createindustry.lpg": "GLP",
"fluid.createindustry.lubrication_oil": "Aceite lubricante",
"fluid.createindustry.molten_slag": "Escoria fundida",
"fluid.createindustry.molten_steel": "Acero fundido",
"fluid.createindustry.napalm": "Napalm",
"fluid.createindustry.nafta": "Nafta",
"fluid.createindustry.propane": "Propano",
"fluid.createindustry.propylene": "Propileno",
"item.createindustry.aluminum_ingot": "Lingote de aluminio",
"item.createindustry.bitumen": "Betún",
"item.createindustry.blasting_mixture": "Mezcla de voladura",
"item.createindustry.block_mold": "Molde de bloque",
"item.createindustry.cast_iron_ingot": "Lingote de hierro fundido",
"item.createindustry.charcoal_dust": "Polvo de carbón",
"item.createindustry.coal_coke": "Coque de carbón",
"item.createindustry.coal_coke_dust": "Polvo de coque de carbón",
"item.createindustry.cooling_fluid_bucket": "Cubo de líquido refrigerante",
"item.createindustry.copper_grenade": "Granada de cobre",
"item.createindustry.creosote_bucket": "Cubo de creosota",
"item.createindustry.crude_oil_fluid_bucket": "Cubo de petróleo crudo",
"item.createindustry.diesel_bucket": "Cubo de diésel",
"item.createindustry.engine_base": "Base de motor",
"item.createindustry.engine_chamber": "Cámara de motor",
"item.createindustry.fireclay_ball": "Bola de arcilla refractaria",
"item.createindustry.fireproof_brick": "Ladrillo ignífugo",
"item.createindustry.gasoline_bucket": "Cubo de gasolina",
"item.createindustry.heavy_oil_bucket": "Cubo de petróleo pesado",
"item.createindustry.heavy_plate": "Placa pesada",
"item.createindustry.ingot_mold": "Lingoteador",
"item.createindustry.kerosene_bucket": "Cubo de queroseno",
"item.createindustry.liquid_asphalt_bucket": "Cubo de asfalto líquido",
"item.createindustry.liquid_concrete_bucket": "Cubo de Hormigón líquido",
"item.createindustry.liquid_plastic_bucket": "Cubo de plástico líquido",
"item.createindustry.lubrication_oil_bucket": "Cubo de aceite lubricante",
"item.createindustry.molten_slag_bucket": "Cubo para escoria fundida",
"item.createindustry.molten_steel_bucket": "Cubo de acero fundido",
"item.createindustry.napalm_bucket": "Cubo de napalm",
"item.createindustry.naphtha_bucket": "Cubo de nafta",
"item.createindustry.nitrate_dust": "Polvo de nitrato",
"item.createindustry.plastic_sheet": "Hoja de plástico",
"item.createindustry.quad_potato_cannon": "Cañón de patatas cuádruple",
"item.createindustry.rebar": "Barra de refuerzo",
"item.createindustry.screw": "Tornillo",
"item.createindustry.screwdriver": "Destornillador",
"item.createindustry.slag": "Escoria",
"item.createindustry.spark_plug": "Bujía",
"item.createindustry.steel_ingot": "Lingote de acero",
"item.createindustry.steel_mechanism": "Mecanismo de acero",
"item.createindustry.sulfur_dust": "Polvo de azufre",
"item.createindustry.thermite_grenade": "Granada termita",
"item.createindustry.thermite_powder": "Polvo de termita",
"item.createindustry.turbine_blade": "Hélice de turbina",
"item.createindustry.unfinished_gasoline_engine": "Motor de gasolina sin terminar",
"item.createindustry.unfinished_lpg_engine": "Motor de GLP sin terminar",
"item.createindustry.unfinished_steel_mechanism": "Mecanismo de acero sin terminar",
"item.createindustry.unfinished_turbine_engine": "Motor de turbina sin terminar",
"item.createindustry.unprocessed_heavy_plate": "Placa pesada sin procesar",
"item.createindustry.zinc_grenade": "Granada de zinc",
"itemGroup.createindustry.base": "Create: The Factory Must Grow",
"itemGroup.createindustry.building": "Create: TFMG Building Blocks",
"create.goggles.misc.number": "%1$s",
"create.goggles.misc.percent_symbol": "%",
"create.goggles.misc.dot_one": ".",
"create.goggles.misc.dot_two": "..",
"create.goggles.misc.dot_tres": "...",
"create.goggles.misc.storage_info": "Información de almacenamiento:",
"create.goggles.fluid_in_tank": "Contenido del tanque:",
"create.goggles.surface_scanner.no_rotation": "Máquina apagada",
"create.goggles.surface_scanner.no_deposit": "No se encontró ningún depósito",
"create.goggles.surface_scanner.deposit_found": "¡Depósito ubicado!",
"create.goggles.surface_scanner.distance": "Distancia: %1$s Bloques",
"create.goggles.surface_scanner.scanning_surface": "Escaneando la superficie...",
"create.goggles.distillation_tower.status": "Información de la torre de destilación:",
"create.goggles.distillation_tower.tank_not_found": "Tanque de fluidos de acero no encontrado",
"create.goggles.distillation_tower.not_tall_enough": "El tanque de fluidos es demasiado corto",
"create.goggles.distillation_tower.level": "Nivel de la torre de destilación: %1$s",
"create.goggles.distillation_tower.found_outputs": "Número de salidas: %1$s",
"create.goggles.distillation_tower.no_outputs": "No se encontraron bloques de salida",
"create.goggles.blast_furnace.stats": "Alto Horno:",
"create.goggles.blast_furnace.size_stats": "Tamaño:",
"create.goggles.blast_furnace.fuel_amount": "Cantidad de combustible: %1$s",
"create.goggles.blast_furnace.item_count": "Recuento de artículos: %1$s",
"create.goggles.blast_furnace.height": "Altura: %1$s",
"create.goggles.blast_furnace.nothing_lol": "",
"create.goggles.blast_furnace.status.off": "Estado: Inactivo",
"create.goggles.blast_furnace.status.running": "Estado: En ejecución",
"create.goggles.blast_furnace.diameter.one": "Diámetro: 1",
"create.goggles.blast_furnace.diameter.two": "Diámetro: 2",
"create.goggles.blast_furnace.invalid": "Alto horno no válido",
"create.goggles.coke_oven.status": "Horno de coque:",
"create.goggles.coke_oven.fluid_amount_output": "Contenido interno del tanque: %1$s mb",
"create.goggles.coke_oven.fluid_amount_exhaust": "Dióxido de carbono: %1$s mb",
"create.goggles.coke_oven.item_count": "Recuento de elementos de almacenamiento interno: %1$s",
"create.goggles.coke_oven.invalid": "Horno de coque no válido",
"create.goggles.coke_oven.tank_full": "Un tanque interno está lleno",
"create.goggles.coke_oven.progress": "Progreso: %1$s",
"create.goggles.engine_stats": "Estadísticas del motor:",
"create.goggles.engine_exhaust_stats": "Estadísticas de salida de gases del motor:",
"create.goggles.fuel_container": "Almacenamiento de fluidos",
"create.goggles.engine.backpartmissing": "Falta la parte trasera:",
"create.goggles.engine_redstone_input": "Velocidad:",
"create.goggles.engine.efficiency": "Eficiencia:",
"create.tooltip.engine_analog_strength": "%1$s/15",
"create.goggles.get_engine_efficiency": "%1$s",
"create.goggles.engine.stress": "%1$ssu",
"create.goggles.diesel_engine.info": "Motor diésel:",
"create.goggles.pumpjack_info": "Información de Pumpjack:",
"create.goggles.pumpjack.part_missing": "Falta el martillo o la manivela",
"create.goggles.pumpjack.wrong_rotation1": "La base del Pumpjack está orientada incorrectamente, el marcador rojo debe",
"create.goggles.pumpjack.wrong_rotation2": "estar de espaldas al soporte del martillo Pumpjack",
"create.goggles.pumpjack_fluid_storage": "Información del tanque de fluido:",
"create.pumpjack_deposit_amount": "%1$s cubos",
"create.goggles.pumpjack.deposit_info": "Información del depósito:",
"create.goggles.zero": "No se encontró ningún depósito",
"create.goggles.pumpjack.fluid_amount": "Cantidad de líquido:",
"create.goggles.machine_input.info": "Información de entrada de la máquina",
"create.goggles.machine_input.no_rot": "¡No se ha proporcionado rotación!",
"create.goggles.machine_input.power_level": "Nivel de potencia: ",
"create.recipe.distillation": "Destilación",
"create.recipe.advanced_distillation": "Destilación avanzada",
"create.recipe.industrial_blasting": "Voladuras industriales",
"create.recipe.casting": "Transmisión",
"create.recipe.coking": "Coquización",
"createindustry.subtitle.engine_sounds": "Sonidos de motor",
"createindustry.subtitle.diesel_engine_sounds": "Sonidos de motor diésel",
"_": "->------------------------] UI & Messages [------------------------<-",
"create.distillation_tower.size": "Tamaño",
"create.distillation_tower.heat": "Calor",
"_": "->------------------------] Ponders [------------------------<-",
"createindustry.ponder.small_engines.text_1": "Para crear un motor pequeño, coloque las partes delantera y trasera una al lado de la otra",
"createindustry.ponder.small_engines.text_2": "El combustible se introduce en la parte delantera y los gases deben eliminarse desde la parte trasera utilizando tubos de escape",
"createindustry.ponder.small_engines.text_3": "Aplicar una señal de redstone a la parte delantera para arranca el motor",
"createindustry.ponder.small_engines.text_4": "Los motores pequeños pueden ser de GLP, queroseno y gasolina",
"createindustry.ponder.diesel_engine.text_1": "Los motores diésel se ensamblan colocando un eje delante de un bloque de motor diésel",
"createindustry.ponder.diesel_engine.text_2": "El motor produce gases que deben eliminarse con tubos de escape",
"createindustry.ponder.diesel_engine.text_3": "Se necesita aire para que el motor funcione, por lo que se requiere una entrada de aire",
"createindustry.ponder.diesel_engine_expansion.text_1": "Las expansiones de motor diésel pueden darle a un motor diésel dos nuevas ranuras de entrada, para lubricación y líquido refrigerante",
"createindustry.ponder.surface_scanner.text_1": "El escáner de superficie se utiliza para localizar depósitos de petróleo crudo",
"createindustry.ponder.surface_scanner.text_2": "Proporcionar a la máquina rotación hace que busque el depósito más cercano",
"createindustry.ponder.surface_scanner.text_3": "Si se encuentra un depósito, la brújula señalará su ubicación",
"createindustry.ponder.pumpjack.text_1": "Para comenzar a extraer petróleo, primero debes construir un oleoducto encima de un depósito utilizando tuberías industriales",
"createindustry.ponder.pumpjack.text_2": "Luego, construye un Pumpjack encima de la tubería colocando primero una base de Pumpjack...",
"createindustry.ponder.pumpjack.text_3": "Colocando el martillo detrás...",
"createindustry.ponder.pumpjack.text_4": "Y finalmente, colocando la entrada de rotación con una manivela Pumpjack encima, como se muestra en la escena",
"createindustry.ponder.distillation_tower.text_1": "Un tanque de fluidos de acero suficientemente grande se puede convertir en una torre de destilación",
"createindustry.ponder.distillation_tower.text_2": "La torre se ensambla colocando primero un controlador de torre de destilación de acero al lado del tanque...",
"createindustry.ponder.distillation_tower.text_3": "Y colocando hasta 6 salidas de torre de destilación, todas conectadas con tuberías industriales",
"createindustry.ponder.distillation_tower.text_4": "Se requieren quemadores Blaze para hacer funcionar la torre de destilación. El dial muestra los niveles de potencia actuales",
"createindustry.ponder.distillation_tower.text_5": "Para ingresar petróleo crudo, se debe bombear al bloque controlador",
"createindustry.ponder.distillation_tower.text_6": "Cada bloque de salida proporciona uno de los subproductos del petróleo",
"createindustry.ponder.distillation_tower.text_7": "GLP",
"createindustry.ponder.distillation_tower.text_8": "Gasolina",
"createindustry.ponder.distillation_tower.text_9": "Nafta",
"createindustry.ponder.distillation_tower.text_10": "Queroseno",
"createindustry.ponder.distillation_tower.text_11": "Diésel",
"createindustry.ponder.distillation_tower.text_12": "Petróleo pesado",
"createindustry.ponder.blast_furnace.text_1": "La base del Alto Horno es un bloque de salida del alto horno",
"createindustry.ponder.blast_furnace.text_2": "Para ensamblar un Alto Horno, construye una chimenea usando ladrillos ignífugos como se muestra en la escena",
"createindustry.ponder.blast_furnace.text_3": "Es necesario reforzar la mitad inferior de la chimenea",
"createindustry.ponder.blast_furnace.text_4": "El combustible y otros artículos se insertan a través de la abertura en la parte superior",
"createindustry.ponder.coke_oven.text_1": "El horno de coque se construye colocando bloques de horno de coque como se muestra en la escena y haciendo clic en su costado con una llave",
"createindustry.ponder.coke_oven.text_2": "El proceso de coquización es lento, por lo que es más eficiente tener largas filas de hornos funcionando simultáneamente",
"createindustry.ponder.coke_oven.text_3": "El carbón se puede introducir por cualquier lado",
"createindustry.ponder.coke_oven.text_4": "Mientras está en funcionamiento, el horno produce creosota y CO2 que deben ser expulsados para que funcione",
"createindustry.ponder.coke_oven.text_5": "Una vez hecho esto, el coque de carbón saldrá de la abertura",
"createindustry.ponder.casting.text_1": "La fundición es el proceso de verter metal líquido en un recipiente de fundición utilizando un caño de fundición",
"createindustry.ponder.casting.text_2": "La cuenca de fundición, obviamente, requiere un molde para funcionar",
"createindustry.ponder.distillation_tower.header": "Configuración de la torre de destilación",
"createindustry.ponder.pumpjack.header": "Construyendo Pumpjacks",
"createindustry.ponder.surface_scanner.header": "Localización de petróleo",
"createindustry.ponder.diesel_engine.header": "Construcción de un motor diésel",
"createindustry.ponder.diesel_engine_expansion.header": "Motores diésel en expansión",
"createindustry.ponder.small_engines.header": "Construcción de motores pequeños",
"createindustry.ponder.coke_oven.header": "Construcción de un horno de coque",
"createindustry.ponder.blast_furnace": "Construcción de un alto horno",
"createindustry.ponder.casting.header": "Fundición de metal",
"createindustry.ponder.tag.oil": "Máquinas relacionadas con el petróleo",
"createindustry.ponder.tag.metallurgy": "Máquinas para trabajar metales",
"createindustry.ponder.tag.oil.description": "Máquinas que extraen, procesan o utilizan petróleo crudo y sus derivados",
"createindustry.ponder.tag.metallurgy.description": "Máquinas que producen, procesan o utilizan metal y materias primas como tales",
"_": "Thank you for translating Create: The Factory Must Grow!"
}

View File

@@ -0,0 +1,432 @@
{
"_": "->------------------------] Game Elements [------------------------<-",
"block.createindustry.air_intake": "Wlot Powietrza",
"block.createindustry.aluminum_bars": "Aluminiowe Kraty",
"block.createindustry.aluminum_block": "Blok Aluminium",
"block.createindustry.aluminum_fluid_valve": "Aluminiowy Zawór",
"block.createindustry.aluminum_flywheel": "Aluminiowe Koło Zamachowe",
"block.createindustry.aluminum_ladder": "Aluminiowa Drabina",
"block.createindustry.aluminum_mechanical_pump": "Aluminiowa Pompa",
"block.createindustry.aluminum_pipe": "Aluminiowa Rura",
"block.createindustry.aluminum_scaffolding": "Aluminiowe Rusztowanie",
"block.createindustry.aluminum_smart_fluid_pipe": "Aluminiowa Inteligenta Rura",
"block.createindustry.aluminum_truss": "Aluminiowa Kratownica",
"block.createindustry.asphalt": "Asfalt",
"block.createindustry.bauxite": "Boksyt",
"block.createindustry.bauxite_pillar": "Boksytowy Filar",
"block.createindustry.black_concrete": "Czarny Beton",
"block.createindustry.black_concrete_slab": "Czarna Betonowa Płyta",
"block.createindustry.black_concrete_stairs": "Czarne Betonowe Schody",
"block.createindustry.black_concrete_wall": "Czarny Betonowy Murek",
"block.createindustry.blast_furnace_output": "Wyjście Pieca Hutniczego",
"block.createindustry.blue_concrete": "Niebieski Beton",
"block.createindustry.blue_concrete_slab": "Niebieska Betonowa Płyta",
"block.createindustry.blue_concrete_stairs": "Niebieskie Betonowe Schody",
"block.createindustry.blue_concrete_wall": "Niebieski Betonowy Murek",
"block.createindustry.brass_fluid_valve": "Mosiężny Zawór",
"block.createindustry.brass_mechanical_pump": "Mosiężna Pompa",
"block.createindustry.brass_pipe": "Mosiężna Rura",
"block.createindustry.brass_smart_fluid_pipe": "Mosiężna Inteligentna Rura",
"block.createindustry.brown_concrete": "Brązowy Beton",
"block.createindustry.brown_concrete_slab": "Brązowa Betonowa Płyta",
"block.createindustry.brown_concrete_stairs": "Brązowe Betonowe Schody",
"block.createindustry.brown_concrete_wall": "Brązowy Betonowy Murek",
"block.createindustry.cast_iron_block": "Blok Żeliwa",
"block.createindustry.cast_iron_distillation_controller": "Żeliwny Kontroler Destylacji",
"block.createindustry.cast_iron_distillation_output": "Żeliwne Wyjście Destylatora",
"block.createindustry.cast_iron_fluid_valve": "Żeliwny Zawór",
"block.createindustry.cast_iron_flywheel": "Żeliwne Koło Zamachowe",
"block.createindustry.cast_iron_mechanical_pump": "Żeliwna Pompa",
"block.createindustry.cast_iron_pipe": "Żeliwna Rura",
"block.createindustry.cast_iron_smart_fluid_pipe": "Żeliwna Inteligentna Rura",
"block.createindustry.casting_basin": "Tygiel Odlewniczy",
"block.createindustry.casting_spout": "Napełniacz Odlewniczy",
"block.createindustry.caution_block": "Blok Ostrzeżenia",
"block.createindustry.cement": "Cement",
"block.createindustry.coal_coke_block": "Blok Koksu Węglowego",
"block.createindustry.coke_oven": "Piec Koksowniczy",
"block.createindustry.concrete": "Beton",
"block.createindustry.concrete_slab": "Betonowa Płyta",
"block.createindustry.concrete_stairs": "Betonowe Schody",
"block.createindustry.concrete_wall": "Betonowy Murek",
"block.createindustry.cooling_fluid": "Płyn Chłodzący",
"block.createindustry.copper_encased_aluminum_pipe": "Copper Encased Aluminum Pipe",
"block.createindustry.copper_encased_brass_pipe": "Copper Encased Brass Pipe",
"block.createindustry.copper_encased_cast_iron_pipe": "Copper Encased Cast Iron Pipe",
"block.createindustry.copper_encased_plastic_pipe": "Copper Encased Plastic Pipe",
"block.createindustry.copper_encased_steel_pipe": "Copper Encased Steel Pipe",
"block.createindustry.creosote": "Kreozot",
"block.createindustry.crude_oil_fluid": "Ropa Naftowa",
"block.createindustry.cut_bauxite": "Przycięty Boksyt",
"block.createindustry.cut_bauxite_brick_slab": "Przycięta Wypolerowana Buksytowa Płyta",
"block.createindustry.cut_bauxite_brick_stairs": "Przycięte Buksytowe Ceglane Schody",
"block.createindustry.cut_bauxite_brick_wall": "Przycięty Buksytowy Ceglany Murek",
"block.createindustry.cut_bauxite_bricks": "Przycięte Buksytowe Cegły",
"block.createindustry.cut_bauxite_slab": "Przycięta Buksytowa Płyta",
"block.createindustry.cut_bauxite_stairs": "Przycięte Buksytowe Schody",
"block.createindustry.cut_bauxite_wall": "Przycięty Buksytowy Murek",
"block.createindustry.cyan_concrete": "Błękitny Beton",
"block.createindustry.cyan_concrete_slab": "Błękitna Betonowa Płyta",
"block.createindustry.cyan_concrete_stairs": "Błękitne Betonowe Schody",
"block.createindustry.cyan_concrete_wall": "Błękitny Betonowy Murek",
"block.createindustry.diesel": "Olej Napędowy",
"block.createindustry.diesel_engine": "Silnik Wysokoprężny",
"block.createindustry.diesel_engine_expansion": "Rozszerzenie Silnika Wysokoprężnego",
"block.createindustry.exhaust": "Wydech",
"block.createindustry.factory_floor": "Podłoga Fabryczna",
"block.createindustry.factory_floor_slab": "Płyta Podłogi Fabrycznej",
"block.createindustry.factory_floor_stairs": "Schody Podłogi Fabrycznej",
"block.createindustry.fireclay": "Szamot",
"block.createindustry.fireproof_brick_reinforcement": "Podpora z Cegieł Ognioodpornych",
"block.createindustry.fireproof_bricks": "Ognioodporne Cegły",
"block.createindustry.flarestack": "Flara Gazowa",
"block.createindustry.formwork_block": "Formwork Block",
"block.createindustry.fossilstone": "Skamieniały Blok",
"block.createindustry.gasoline": "Benzyna",
"block.createindustry.gasoline_engine": "Silnik Benzynowy",
"block.createindustry.gasoline_engine_back": "Tył Silnika Benzynowego",
"block.createindustry.glass_aluminum_pipe": "Glass Aluminum Pipe",
"block.createindustry.glass_brass_pipe": "Glass Brass Pipe",
"block.createindustry.glass_cast_iron_pipe": "Glass Cast Iron Pipe",
"block.createindustry.glass_plastic_pipe": "Glass Plastic Pipe",
"block.createindustry.glass_steel_pipe": "Glass Steel Pipe",
"block.createindustry.gray_concrete": "Szary Beton",
"block.createindustry.gray_concrete_slab": "Szara Betonowa Płyta",
"block.createindustry.gray_concrete_stairs": "Szare Betonowe Schody",
"block.createindustry.gray_concrete_wall": "Szary Betonowy Murek",
"block.createindustry.green_concrete": "Zielony Beton",
"block.createindustry.green_concrete_slab": "Zielona Betonowa Płyta",
"block.createindustry.green_concrete_stairs": "Zielone Betonowe Schody",
"block.createindustry.green_concrete_wall": "Zielony Betonowy Murek",
"block.createindustry.hardened_planks": "Utwardzone Deski",
"block.createindustry.heavy_casing_door": "Ciężkie Obudowane Drzwi",
"block.createindustry.heavy_machinery_casing": "Ciężka Obudowa Maszynowa",
"block.createindustry.heavy_oil": "Ciężki Olej",
"block.createindustry.industrial_pipe": "Przemysłowa Rura",
"block.createindustry.kerosene": "Nafta",
"block.createindustry.layered_bauxite": "Warstwowy Boksyt",
"block.createindustry.light_blue_concrete": "Jasnoniebieski Beton",
"block.createindustry.light_blue_concrete_slab": "Jasnoniebieska Betonowa Płyta",
"block.createindustry.light_blue_concrete_stairs": "Jasnoniebieskie Betonowe Schody",
"block.createindustry.light_blue_concrete_wall": "Jasnoniebieski Betonowy Murek",
"block.createindustry.light_gray_concrete": "Jasnoszary Beton",
"block.createindustry.light_gray_concrete_slab": "Jasnoniebieska Betonowa Płyta",
"block.createindustry.light_gray_concrete_stairs": "Jasnoszare Betonowe Schody",
"block.createindustry.light_gray_concrete_wall": "Jasnoszary Betonowy Murek",
"block.createindustry.lignite": "Węgiel Brunatny",
"block.createindustry.lime_concrete": "Jasnozielony Beton",
"block.createindustry.lime_concrete_slab": "Jasnozielona Betonowa Płyta",
"block.createindustry.lime_concrete_stairs": "Jasnozielone Betonowe Schody",
"block.createindustry.lime_concrete_wall": "Jasnozielony Betonowy Murek",
"block.createindustry.limesand": "Piasek Wapienny",
"block.createindustry.liquid_asphalt": "Płynny Asfalt",
"block.createindustry.liquid_concrete": "Płynny Beton",
"block.createindustry.liquid_plastic": "Płynny Plastik",
"block.createindustry.lpg_engine": "Silnik LPG",
"block.createindustry.lpg_engine_back": "Tył Silnika LPG",
"block.createindustry.lubrication_oil": "Smar",
"block.createindustry.machine_input": "Wejście Maszyny",
"block.createindustry.magenta_concrete": "Karmazynowy Beton",
"block.createindustry.magenta_concrete_slab": "Karmazynowa Betonowa Płyta",
"block.createindustry.magenta_concrete_stairs": "Karmazynowe Betonowe Schody",
"block.createindustry.magenta_concrete_wall": "Karmazynowy Betonowy Murek",
"block.createindustry.molten_metal": "Stopiony Metal",
"block.createindustry.molten_slag": "Stopiony Żużel",
"block.createindustry.molten_steel": "Stopiona Stal",
"block.createindustry.napalm": "Napalm",
"block.createindustry.napalm_bomb": "Bomba Napalmowa",
"block.createindustry.naphtha": "Benzyna Surowa",
"block.createindustry.oil_deposit": "Złoże Ropy Naftowej",
"block.createindustry.orange_concrete": "Pomarańczowy Beton",
"block.createindustry.orange_concrete_slab": "Pomarańczowa Betonowa Płyta",
"block.createindustry.orange_concrete_stairs": "Pomarańczowe Betonowe Schody",
"block.createindustry.orange_concrete_wall": "Pomarańczowy Betonowy Murek",
"block.createindustry.pink_concrete": "Różowy Beton",
"block.createindustry.pink_concrete_slab": "Różowa Betonowa Płyta",
"block.createindustry.pink_concrete_stairs": "Różowe Betonowe Schody",
"block.createindustry.pink_concrete_wall": "Różowy Betonowy Murek",
"block.createindustry.plastic_block": "Blok Plastiku",
"block.createindustry.plastic_fluid_valve": "Plastikowy Zawór",
"block.createindustry.plastic_mechanical_pump": "Plastikowa Pompa",
"block.createindustry.plastic_pipe": "Plastikowa Pompa",
"block.createindustry.plastic_smart_fluid_pipe": "Plastikowa Inteligentna Rura",
"block.createindustry.polished_cut_bauxite": "Przycięty Wypolerowany Boksyt",
"block.createindustry.polished_cut_bauxite_slab": "Przycięta Wypolerowana Buksytowa Płyta",
"block.createindustry.polished_cut_bauxite_stairs": "Przycięte Wypolerowane Buksytowe schody",
"block.createindustry.polished_cut_bauxite_wall": "Przycięty Wypolerowany Buksytowy Murek",
"block.createindustry.pumpjack_base": "Podstawa Pompy Żerdziowej",
"block.createindustry.pumpjack_crank": "Korba Pompy Żerdziowej",
"block.createindustry.pumpjack_hammer_holder": "Uchwyt Ramienia Pompy Żerdziowej",
"block.createindustry.purple_concrete": "Fioletowy Beton",
"block.createindustry.purple_concrete_slab": "Fioletowa Betonowa Płyta",
"block.createindustry.purple_concrete_stairs": "Fioletowe Betonowe Schody",
"block.createindustry.purple_concrete_wall": "Fioletowy Betonowy Murek",
"block.createindustry.rebar_concrete": "Zbrojony Beton",
"block.createindustry.rebar_concrete_slab": "Zbrojona Betonowa Płyta",
"block.createindustry.rebar_concrete_stairs": "Zbrojone Betonowe Schody",
"block.createindustry.rebar_concrete_wall": "Zbrojony Betonowy Murek",
"block.createindustry.rebar_formwork_block": "Szalunek Zbrojeniowy",
"block.createindustry.red_caution_block": "Czerwony Blok Ostrzeżenia",
"block.createindustry.red_concrete": "Czerwony Beton",
"block.createindustry.red_concrete_slab": "Czerwona Betonowa Płyta",
"block.createindustry.red_concrete_stairs": "Czerwone Betonowe Schody",
"block.createindustry.red_concrete_wall": "Czerwony Betonowy Murek",
"block.createindustry.small_bauxite_brick_slab": "Płyta z Małych Buksytowych Cegieł",
"block.createindustry.small_bauxite_brick_stairs": "Schody z Małych Buksytowych Cegieł",
"block.createindustry.small_bauxite_brick_wall": "Murek z Małych Buksytowych Cegieł",
"block.createindustry.small_bauxite_bricks": "Małe Buksytowe Cegły",
"block.createindustry.steel_bars": "Stalowe Kraty",
"block.createindustry.steel_block": "Blok Stali",
"block.createindustry.steel_casing": "Stalowa Obudowa",
"block.createindustry.steel_distillation_controller": "Stalowy Kontroler Destylacji",
"block.createindustry.steel_distillation_output": "Stalowe Wyjście Wierzy Destylacyjnej",
"block.createindustry.steel_door": "Stalowe Drzwi",
"block.createindustry.steel_fluid_tank": "Stalowy Zbiornik",
"block.createindustry.steel_fluid_valve": "Stalowy Zawór",
"block.createindustry.steel_flywheel": "Stalowe Koło Zamachowe",
"block.createindustry.steel_ladder": "Stalowa Drabina",
"block.createindustry.steel_mechanical_pump": "Stalowa Pompa",
"block.createindustry.steel_pipe": "Stalowa Rura",
"block.createindustry.steel_scaffolding": "Stalowe Rusztowanie",
"block.createindustry.steel_smart_fluid_pipe": "Stalowa Inteligentna Rura",
"block.createindustry.steel_truss": "Stalowa Kratownica",
"block.createindustry.sulfur": "Siarka",
"block.createindustry.surface_scanner": "Skaner Powierzchniowy",
"block.createindustry.turbine_engine": "Silnik Turbinowy",
"block.createindustry.turbine_engine_back": "Tył Silnika Turbinowego",
"block.createindustry.white_concrete": "Biały Beton",
"block.createindustry.white_concrete_slab": "Biała Betonowa Płyta",
"block.createindustry.white_concrete_stairs": "Białe Betonowe Schody",
"block.createindustry.white_concrete_wall": "Biały Betonowy Murek",
"block.createindustry.yellow_concrete": "Żółty Beton",
"block.createindustry.yellow_concrete_slab": "Żółta Betonowa Płyta",
"block.createindustry.yellow_concrete_stairs": "Żółte Betonowe Schody",
"block.createindustry.yellow_concrete_wall": "Żółty Betonowy Murek",
"entity.createindustry.blue_spark": "Niebieska Iskra",
"entity.createindustry.copper_grenade": "Granat Miedziany",
"entity.createindustry.green_spark": "Zielona Iskra",
"entity.createindustry.napalm_bomb_entity": "Byt Bomby Napalmowej",
"entity.createindustry.spark": "Iskra",
"entity.createindustry.thermite_grenade": "Granat Termitowy",
"entity.createindustry.zin_grenade": "Granat Cynkowy",
"fluid.createindustry.air": "Powietrze",
"fluid.createindustry.butane": "Butan",
"fluid.createindustry.carbon_dioxide": "Dwutlenek Węgla",
"fluid.createindustry.cooling_fluid": "Płyn Chłodzący",
"fluid.createindustry.creosote": "Kreozot",
"fluid.createindustry.crude_oil_fluid": "Ropa Naftowa",
"fluid.createindustry.diesel": "Olej Napędowy",
"fluid.createindustry.ethylene": "Etylen",
"fluid.createindustry.gasoline": "Benzyna",
"fluid.createindustry.heavy_oil": "Ciężki Olej",
"fluid.createindustry.kerosene": "Nafta",
"fluid.createindustry.liquid_asphalt": "Płynny Asfalt",
"fluid.createindustry.liquid_concrete": "Płynny Beton",
"fluid.createindustry.liquid_plastic": "Płynny Plastik",
"fluid.createindustry.lpg": "LPG",
"fluid.createindustry.lubrication_oil": "Smar",
"fluid.createindustry.molten_slag": "Płynny Żużel",
"fluid.createindustry.molten_steel": "Płynna Stal",
"fluid.createindustry.napalm": "Napalm",
"fluid.createindustry.naphtha": "Benzyna Surowa",
"fluid.createindustry.propane": "Propan",
"fluid.createindustry.propylene": "Propylen",
"item.createindustry.aluminum_ingot": "Sztabka Aluminium",
"item.createindustry.bitumen": "Bitumen",
"item.createindustry.blasting_mixture": "Mieszanka Wytopnicza",
"item.createindustry.block_mold": "Forma w Kształcie Bloku",
"item.createindustry.cast_iron_ingot": "Sztabka Żeliwa",
"item.createindustry.charcoal_dust": "Pył z Węgla Drzewnego",
"item.createindustry.coal_coke": "Koks Węglowy",
"item.createindustry.coal_coke_dust": "Pył z Koksu Węglowego",
"item.createindustry.cooling_fluid_bucket": "Wiadro Płynu Chłodzącego",
"item.createindustry.copper_grenade": "Granat Miedziany",
"item.createindustry.creosote_bucket": "Wiadro Kreozytu",
"item.createindustry.crude_oil_fluid_bucket": "Wiadro Ropy Naftowej",
"item.createindustry.diesel_bucket": "Wiadro Oleju Napędowego",
"item.createindustry.engine_base": "Podstawa Silnika",
"item.createindustry.engine_chamber": "Komora Silnika",
"item.createindustry.fireclay_ball": "Kulka Szamotu",
"item.createindustry.fireproof_brick": "Ognioodporna Cegła",
"item.createindustry.gasoline_bucket": "Wiadro Benzyny",
"item.createindustry.heavy_oil_bucket": "Wiadro Ciężkiego Oleju",
"item.createindustry.heavy_plate": "Ciężka Płyta",
"item.createindustry.ingot_mold": "Forma Odlewnicza w Kształcie Sztabki",
"item.createindustry.kerosene_bucket": "Wiadro Nafty",
"item.createindustry.liquid_asphalt_bucket": "Wiadro Płynnego Asfaltu",
"item.createindustry.liquid_concrete_bucket": "Wiadro Płynnego Betonu",
"item.createindustry.liquid_plastic_bucket": "Wiadro Płynnego Plastiku",
"item.createindustry.lubrication_oil_bucket": "Wiadro Smaru",
"item.createindustry.molten_slag_bucket": "Wiadro Stopionego Żużlu",
"item.createindustry.molten_steel_bucket": "Wiadro Stopionej Stali",
"item.createindustry.napalm_bucket": "Wiadro Napalmu",
"item.createindustry.naphtha_bucket": "Wiadro Benzyny Surowej",
"item.createindustry.nitrate_dust": "Pył Saletrzany",
"item.createindustry.plastic_sheet": "Arkusz Plastiku",
"item.createindustry.quad_potato_cannon": "Poczwórna Armata Na Ziemniaki",
"item.createindustry.rebar": "Pręt Zbrojeniowy",
"item.createindustry.screw": "Śruba",
"item.createindustry.screwdriver": "Śrubokręt",
"item.createindustry.slag": "Żużel",
"item.createindustry.spark_plug": "Świeca Zapłonowa",
"item.createindustry.steel_ingot": "Sztabka Stali",
"item.createindustry.steel_mechanism": "Stalowy Mechanizm",
"item.createindustry.sulfur_dust": "Pył Śarkowy",
"item.createindustry.thermite_grenade": "Granat Termitowy",
"item.createindustry.thermite_powder": "Proch Termitowy",
"item.createindustry.turbine_blade": "Łopata Turbiny",
"item.createindustry.unfinished_gasoline_engine": "Niedokończony Silnik Benzynowy",
"item.createindustry.unfinished_lpg_engine": "Niedokończony Silnik LPG",
"item.createindustry.unfinished_steel_mechanism": "Niedokończony Stalowy Mechanizm",
"item.createindustry.unfinished_turbine_engine": "Niedokończony Silnik Turbinowy",
"item.createindustry.unprocessed_heavy_plate": "Nieprzerobiona Ciężka Płyta",
"item.createindustry.zinc_grenade": "Granat Cynkowy",
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.createindustry.base": "Create: The Factory Must Grow",
"itemGroup.createindustry.building": "Create: TFMG Bloki Budowlane",
"create.goggles.misc.number": "%1$s",
"create.goggles.misc.percent_symbol": "%",
"create.goggles.misc.dot_one": ".",
"create.goggles.misc.dot_two": "..",
"create.goggles.misc.dot_three": "...",
"create.goggles.misc.storage_info": "Informacje o Zawartości:",
"create.goggles.fluid_in_tank": "Zawartość Zbiornika:",
"create.goggles.surface_scanner.no_rotation": "Brak Siły Obrotowej!",
"create.goggles.surface_scanner.no_deposit": "Brak Pobliskich Złoż",
"create.goggles.surface_scanner.deposit_found": "Złoże Ropy Naftowej Znalezione!",
"create.goggles.surface_scanner.distance": "Odległość: %1$s Bloki",
"create.goggles.surface_scanner.scanning_surface": "Skanowanie Powierzchni...",
"create.goggles.distillation_tower.status": "Distillation Tower Info:",
"create.goggles.distillation_tower.tank_not_found": "Nie Znaleziono Stalowego Zbiornika",
"create.goggles.distillation_tower.not_tall_enough": "Zbiornik Jest Za Niski",
"create.goggles.distillation_tower.level": "Poziom Wierzy Destylacyjnej: %1$s",
"create.goggles.distillation_tower.found_outputs": "Ilość Wyjść: %1$s",
"create.goggles.distillation_tower.no_outputs": "Nie Znaleziono Wyjść",
"create.goggles.blast_furnace.stats": "Piec Hutniczy:",
"create.goggles.blast_furnace.size_stats": "Wielkość:",
"create.goggles.blast_furnace.fuel_amount": "Ilość Paliwa: %1$s",
"create.goggles.blast_furnace.item_count": "Ilość Przedmiotów: %1$s",
"create.goggles.blast_furnace.height": "Wysokość: %1$s",
"create.goggles.blast_furnace.nothing_lol": "",
"create.goggles.blast_furnace.status.off": "Stan: Bezczynny",
"create.goggles.blast_furnace.status.running": "Status: Działa",
"create.goggles.blast_furnace.diameter.one": "Średnica: 1",
"create.goggles.blast_furnace.diameter.two": "Średnica: 2",
"create.goggles.blast_furnace.invalid": "Piec Hutniczy Nieprawidłowy",
"create.goggles.coke_oven.status": "Piec Koksowniczy:",
"create.goggles.coke_oven.fluid_amount_output": "Zawartość Wewnętrznego Zbiornika: %1$s mb",
"create.goggles.coke_oven.fluid_amount_exhaust": "Dwutlenek Węgla: %1$s mb",
"create.goggles.coke_oven.item_count": "W Wewnętrznym Magazynie: %1$s",
"create.goggles.coke_oven.invalid": "Piec Koksowniczy Nieprawidłowy",
"create.goggles.coke_oven.tank_full": "Wewnętrzny Zbiornik Jest Pełny",
"create.goggles.coke_oven.progress": "Postęp: %1$s",
"create.goggles.engine_stats": "Statystyki Silnika:",
"create.goggles.engine_exhaust_stats": "Statystyki Wydechu Silnika:",
"create.goggles.fuel_container": "Paliwo",
"create.goggles.engine.backpartmissing": "Brakuje Tylnej Części:",
"create.goggles.engine_redstone_input": "Prędkość:",
"create.goggles.engine.efficiency": "Efektywność:",
"create.distillation_tower.size": "Wielkość:",
"create.distillation_tower.heat": "Temperatura:",
"create.tooltip.engine_analog_strength": "%1$s/15",
"create.goggles.get_engine_efficiency": "%1$s",
"create.goggles.engine.stress": "%1$ssu",
"create.goggles.diesel_engine.info": "Silnik Wysokoprężny:",
"create.goggles.pumpjack_info": "Informacje o Pompie Żerdziowej:",
"create.goggles.pumpjack.part_missing": "Brakująca Korba lub Ramię Pompy Żerdziowej",
"create.goggles.pumpjack.wrong_rotation1": "Podstawa Pompy Żerdziowej jest skierowana nieprawidłowo, czerwony znacznik musi",
"create.goggles.pumpjack.wrong_rotation2": "być skierowany odwrotnie od Uchwytu Ramienia Pompy Żerdziowej",
"create.goggles.pumpjack_fluid_storage": "Informacje o Zbiorniku:",
"create.pumpjack_deposit_amount": "%1$s Wiader",
"create.goggles.pumpjack.deposit_info": "Informacje o Złożu:",
"create.goggles.zero": "Nie Znaleziono Złoża",
"create.goggles.pumpjack.fluid_amount": "Ilość Cieczy:",
"create.goggles.machine_input.info": "Informacje Wejścia Maszynowego",
"create.goggles.machine_input.no_rot": "Brak Siły Obrotowej!",
"create.goggles.machine_input.power_level": "Poziom Mocy: ",
"create.recipe.distillation": "Destylacja",
"create.recipe.advanced_distillation": "Zaawansowana Destylacja",
"create.recipe.industrial_blasting": "Wytapianie Przemysłowe",
"create.recipe.casting": "Odlewanie",
"create.recipe.coking": "Spiekanie",
"_": "->------------------------] Ponders [------------------------<-",
"createindustry.ponder.small_engines.text_1": "Aby stworzyć mały silnik, umieść przednią i tylną część obok siebie",
"createindustry.ponder.small_engines.text_2": "Paliwo podawane jest do przedniej części, a spaliny odprowadzane są z tylnej części za pomocą rur i pompy",
"createindustry.ponder.small_engines.text_3": "Silnik uruchomi się po podaniu sygnału redstone na przednią część",
"createindustry.ponder.small_engines.text_4": "Istnieją silniki zasilane Benzyną, LPG i Naftą",
"createindustry.ponder.diesel_engine.text_1": "Silnik Wysokoprężny jest montowany poprzez umieszczenie Wału nad blokiem Silnika Wysokoprężnego",
"createindustry.ponder.diesel_engine.text_2": "Dwutlenek Węgla musi być odprowadzany Rurami i Wydechem",
"createindustry.ponder.diesel_engine.text_3": "Powietrze jest potrzebne do funkcjonowania silnika, więc Wlot Powietrza jest wymagany",
"createindustry.ponder.diesel_engine_expansion.text_1": "Rozszerzenia Silnika Wysokoprężniowego umożliwiają wprowadzenie dwóch nowych cieczy: Smaru i Płynu Chłodzącego",
"createindustry.ponder.surface_scanner.text_1": "Skaner Powierzchniowy służy do wyszukiwania złóż ropy naftowej",
"createindustry.ponder.surface_scanner.text_2": "Po podaniu Siły Obrotowej maszyna zaczyna szukać najbliższego złoża ropy",
"createindustry.ponder.surface_scanner.text_3": "Po znalezieniu złoża, wbudowany w blok kompas wskaże w jego kierunku",
"createindustry.ponder.pumpjack.text_1": "Pierwszym etapem wydobycia Ropy Naftowej jest budowa Rur Przemysłowych od złoża do powierzchni",
"createindustry.ponder.pumpjack.text_2": "Następnie należy zbudować Pompę Żerdiową na szczycie odwertu poprzez postawienie Podstawy Pompy Żerdziowej...",
"createindustry.ponder.pumpjack.text_3": "Postawienie Uchwytu Ramienia Pompy Żerdiowej za nią...",
"createindustry.ponder.pumpjack.text_4": "I wreszcie, postawienie Wejścia Maszyny i Korby Pompy Żerdziowej na Wejściu, tak jak pokazano na tej Analizie",
"createindustry.ponder.distillation_tower.text_1": "Podstawą Wieży Destylacyjnej są Stalowe Zbiorniki",
"createindustry.ponder.distillation_tower.text_2": "Wieżę montuje się, umieszczając Stalowy Kontroler Destylacji obok Zbiorników...",
"createindustry.ponder.distillation_tower.text_3": "I umieszczenie do 6 Wyjść Wierzy Destylacyjnej, oraz połączenie ich Rurami Przemysłowymi",
"createindustry.ponder.distillation_tower.text_4": "Umieść Płomienne Palniki (lub inne źródło ciepła) pod zbiornikami, aby je zasilić, Wskaźnik na Wieży pokazuje poziom mocy konstrukcji",
"createindustry.ponder.distillation_tower.text_5": "Ropa Naftowa jest wprowadzana do bloku Kontrolera Destylacji",
"createindustry.ponder.distillation_tower.text_6": "Każdy Blok Wyjściowy wyprowadza jeden z produktów Destylacji naftowej",
"createindustry.ponder.distillation_tower.text_7": "LPG",
"createindustry.ponder.distillation_tower.text_8": "Benzyna",
"createindustry.ponder.distillation_tower.text_9": "Benzyna Surowa",
"createindustry.ponder.distillation_tower.text_10": "Nafta",
"createindustry.ponder.distillation_tower.text_11": "Olej Napędowy",
"createindustry.ponder.distillation_tower.text_12": "Ciężki Olej",
"createindustry.ponder.blast_furnace.text_1": "Podstawą Pieca Hutniczego jest Wyjście Pieca Hutniczego",
"createindustry.ponder.blast_furnace.text_2": "Żeby Zbudować Piec Hutniczy, Należy zbudować komin z Cegieł Ognioodpornych, tak jak pokazano w Analizie",
"createindustry.ponder.blast_furnace.text_3": "Dolna połowa komina musi być wzmocniona (tak jak pokazano)",
"createindustry.ponder.blast_furnace.text_4": "Paliwo i inne przedmioty są podawane przez górny otwór",
"createindustry.ponder.coke_oven.text_1": "Piec Koksowniczy jest konstruowany przez stawianie bloków Pieca Koksowniczego tak jak w analizie, i użyciem klucz na jego boku",
"createindustry.ponder.coke_oven.text_2": "Proces spiekania jest powolny, więc bardziej efektywne jest mieć kilka długich szyków tych pieców pracujących w tym samym czasie",
"createindustry.ponder.coke_oven.text_3": "Węgiel może być dostarczany z każdej strony",
"createindustry.ponder.coke_oven.text_4": "Kiedy aktywny, Piec produkuje Kreozot i CO2, które muszą być odpompowywane z niego żeby piec mógł działać",
"createindustry.ponder.coke_oven.text_5": "Gdy proces się skończy, Koks węglowy wypadnie z przodu",
"createindustry.ponder.casting.text_1": "Odlewanie, jest to proces wlewania stopionego metalu w Tygiel Odlewniczy używając Napełniacza Odlewniczego",
"createindustry.ponder.casting.text_2": "Tygiel Odlewniczy, oczywiście, potrzebuje formy do funkcjonowania",
"createindustry.ponder.distillation_tower.header": "Konfiguracja Wieży Destylacyjnej",
"createindustry.ponder.pumpjack.header": "Budowa Pompy Żerdziowej",
"createindustry.ponder.surface_scanner.header": "Znajdowanie Ropy Naftowej",
"createindustry.ponder.diesel_engine.header": "Budowa Silników Wysokoprężnych",
"createindustry.ponder.diesel_engine_expansion.header": "Rozszeżanie Silników Wysokoprężnych",
"createindustry.ponder.small_engines.header": "Budowa Małych Silników",
"createindustry.ponder.coke_oven.header": "Budowa a Piecu Koksowniczego",
"createindustry.ponder.blast_furnace": "Budowa Pieca Hutniczego",
"createindustry.ponder.casting.header": "Odlewanie Metalu",
"createindustry.ponder.tag.oil": "Maszyny związane z Ropą Naftową",
"createindustry.ponder.tag.metallurgy": "Maszyny do Obróbki Metalu",
"createindustry.ponder.tag.oil.description": "Maszyny, które wydobywają, przetwarzają lub wykorzystują Ropę Naftową i wytworzone z niej produkty",
"createindustry.ponder.tag.metallurgy.description": "Maszyny, które produkują, przetwarzają lub wykorzystują Metal i związane z nim surowce",
"createindustry.subtitle.engine_sounds": "Odgłosy Silnika",
"createindustry.subtitle.diesel_engine_sounds": "Odgłosy Silnika Wysokoprężnego",
"_": "Thank you for translating Create: The Factory Must Grow!"
}

View File

@@ -0,0 +1,572 @@
{
"_": "->------------------------] Game Elements [------------------------<-",
"block.createindustry.air_intake": "Воздухозаборник",
"block.createindustry.aluminum_bars": "Алюминиевый столб",
"block.createindustry.aluminum_block": "Блок алюминия",
"block.createindustry.aluminum_fluid_valve": "Алюминиевый жидкостный вентиль",
"block.createindustry.aluminum_flywheel": "Алюминиевый маховик",
"block.createindustry.aluminum_ladder": "Алюминиевая лестница",
"block.createindustry.aluminum_mechanical_pump": "Алюминиевая механическая помпа",
"block.createindustry.aluminum_pipe": "Алюминиевая жидкостная труба",
"block.createindustry.aluminum_scaffolding": "Алюминиевые подмостки",
"block.createindustry.aluminum_smart_fluid_pipe": "Умная алюминиевая умная труба",
"block.createindustry.aluminum_truss": "Алюминиевые балки",
"block.createindustry.asphalt": "Асфальт",
"block.createindustry.bauxite": "Боксит",
"block.createindustry.bauxite_pillar": "Бокситовая колонна",
"block.createindustry.black_concrete": "Черный бетон",
"block.createindustry.black_concrete_slab": "Черная бетонная плита",
"block.createindustry.black_concrete_stairs": "Черные бетонные ступеньки",
"block.createindustry.black_concrete_wall": "Черная бетонная ограда",
"block.createindustry.blast_furnace_output": "Выход доменной печи",
"block.createindustry.blue_concrete": "Синий бетон",
"block.createindustry.blue_concrete_slab": "Синяя бетонная плита",
"block.createindustry.blue_concrete_stairs": "Синие бетонные ступеньки",
"block.createindustry.blue_concrete_wall": "Синяя бетонная ограда",
"block.createindustry.brass_fluid_valve": "Латунный жидкостный вентиль",
"block.createindustry.brass_mechanical_pump": "Латунная механическая помпа",
"block.createindustry.brass_pipe": "Латунная жидкостная труба",
"block.createindustry.brass_smart_fluid_pipe": "Умная латунная жидкостная труба",
"block.createindustry.brown_concrete": "Коричневый бетон",
"block.createindustry.brown_concrete_slab": "Коричневая бетонная плита",
"block.createindustry.brown_concrete_stairs": "Коричневые бетонные ступеньки",
"block.createindustry.brown_concrete_wall": "Коричневая бетонная ограда",
"block.createindustry.cast_iron_block": "Чугунный блок",
"block.createindustry.cast_iron_distillation_controller": "Чугунный контроллер дистиллятора",
"block.createindustry.cast_iron_distillation_output": "Чугунный выход дистиллятора",
"block.createindustry.cast_iron_fluid_valve": "Чугунный жидкостный вентиль",
"block.createindustry.cast_iron_flywheel": "Чугунный маховик",
"block.createindustry.cast_iron_mechanical_pump": "Чугунная механическая помпа",
"block.createindustry.cast_iron_pipe": "Чугунная жидкостная труба",
"block.createindustry.cast_iron_smart_fluid_pipe": "Умная чугунная жидкостная труба",
"block.createindustry.casting_basin": "Литейная чаша",
"block.createindustry.casting_spout": "Литейный дозатор",
"block.createindustry.caution_block": "Желтый сигнальный блок",
"block.createindustry.cement": "Цемент",
"block.createindustry.coal_coke_block": "Блок коксового угля",
"block.createindustry.coke_oven": "Коксовая печь",
"block.createindustry.concrete": "Бетон",
"block.createindustry.concrete_slab": "Бетонная плита",
"block.createindustry.concrete_stairs": "Бетонные ступеньки",
"block.createindustry.concrete_wall": "Бетонная ограда",
"block.createindustry.cooling_fluid": "Охлаждающая жидкость",
"block.createindustry.copper_encased_aluminum_pipe": "Алюминиевая труба в медном корпусе",
"block.createindustry.copper_encased_brass_pipe": "Латунная труба в медном корпусе",
"block.createindustry.copper_encased_cast_iron_pipe": "Чугунная труба в медном корпусе",
"block.createindustry.copper_encased_plastic_pipe": "Пластиковая труба в медном корпусе",
"block.createindustry.copper_encased_steel_pipe": "Стальная труба в медном корпусе",
"block.createindustry.creosote": "Креозот",
"block.createindustry.crude_oil_fluid": "Сырая нефть",
"block.createindustry.cut_bauxite": "Резной боксит",
"block.createindustry.cut_bauxite_brick_slab": "Плита из резного бокситового кирпича",
"block.createindustry.cut_bauxite_brick_stairs": "Ступеньки из резного бокситового кирпича",
"block.createindustry.cut_bauxite_brick_wall": "Ограда из резного бокситового кирпича",
"block.createindustry.cut_bauxite_bricks": "Резный бокситовый кирпич",
"block.createindustry.cut_bauxite_slab": "Плита из резного боксита",
"block.createindustry.cut_bauxite_stairs": "Ступеньки из резного боксита",
"block.createindustry.cut_bauxite_wall": "Ограда из резного боксита",
"block.createindustry.cyan_concrete": "Бирюзовый бетон",
"block.createindustry.cyan_concrete_slab": "Бирюзовая бетонная плита",
"block.createindustry.cyan_concrete_stairs": "Бирюзовые бетонные ступеньки",
"block.createindustry.cyan_concrete_wall": "Бирюзовая бетонная ограда",
"block.createindustry.diesel": "Дизель",
"block.createindustry.diesel_engine": "Дизельный двигатель",
"block.createindustry.diesel_engine_expansion": "Расширенный ввод для дизельного двигателя",
"block.createindustry.exhaust": "Выхлопная труба",
"block.createindustry.factory_floor": "Заводской пол",
"block.createindustry.factory_floor_slab": "Плита из заводского пола",
"block.createindustry.factory_floor_stairs": "Ступеньки из заводского пола",
"block.createindustry.fireclay": "Огнеупорная глина",
"block.createindustry.fireproof_brick_reinforcement": "Огнеупорное кирпичное укрепление",
"block.createindustry.fireproof_bricks": "Огнеупорные кирпичи",
"block.createindustry.flarestack": "Факельная труба",
"block.createindustry.formwork_block": "Опалубка",
"block.createindustry.fossilstone": "Окаменелость",
"block.createindustry.gasoline": "Бензин",
"block.createindustry.gasoline_engine": "Бензиновый двигатель",
"block.createindustry.gasoline_engine_back": "Задняя часть бензинового двигателя",
"block.createindustry.glass_aluminum_pipe": "Застекленная алюминиевая жидкостная труба",
"block.createindustry.glass_brass_pipe": "Застекленная латунная жидкостная труба",
"block.createindustry.glass_cast_iron_pipe": "Застекленная чугунная жидкостная труба",
"block.createindustry.glass_plastic_pipe": "Застекленная пластиковая жидкостная труба",
"block.createindustry.glass_steel_pipe": "Застекленная стальная жидкостная труба",
"block.createindustry.gray_concrete": "Серый бетон",
"block.createindustry.gray_concrete_slab": "Серая бетонная плита",
"block.createindustry.gray_concrete_stairs": "Серые бетонные ступеньки",
"block.createindustry.gray_concrete_wall": "Серая бетонная ограда",
"block.createindustry.green_concrete": "Зеленый бетон",
"block.createindustry.green_concrete_slab": "Зеленая бетонная плита",
"block.createindustry.green_concrete_stairs": "Зеленые бетонные ступеньки",
"block.createindustry.green_concrete_wall": "Зеленая бетонная ограда",
"block.createindustry.hardened_planks": "Закаленные доски",
"block.createindustry.heavy_casing_door": "Тяжёлая стальная дверь",
"block.createindustry.heavy_machinery_casing": "Тяжёлый машинный корпус",
"block.createindustry.heavy_oil": "Мазут",
"block.createindustry.industrial_pipe": "Промышленная труба",
"block.createindustry.kerosene": "Керосин",
"block.createindustry.layered_bauxite": "Слоистый боксит",
"block.createindustry.light_blue_concrete": "Голубой бетон",
"block.createindustry.light_blue_concrete_slab": "Голубая бетонная плита",
"block.createindustry.light_blue_concrete_stairs": "Голубые бетонный ступеньки",
"block.createindustry.light_blue_concrete_wall": "Голубая бетонная ограда",
"block.createindustry.light_gray_concrete": "Светло-серый бетон",
"block.createindustry.light_gray_concrete_slab": "Светло-серая бетонная плита",
"block.createindustry.light_gray_concrete_stairs": "Светло-серые бетонные ступеньки",
"block.createindustry.light_gray_concrete_wall": "Светло-серая бетонная ограда",
"block.createindustry.lignite": "Бурый уголь",
"block.createindustry.lime_concrete": "Лаймовый бетон",
"block.createindustry.lime_concrete_slab": "Лаймовая бетонная плита",
"block.createindustry.lime_concrete_stairs": "Лаймовые бетонные ступеньки",
"block.createindustry.lime_concrete_wall": "Лаймовая бетонная ограда",
"block.createindustry.limesand": "Известняковый песок",
"block.createindustry.liquid_asphalt": "Жидкий асфальт",
"block.createindustry.liquid_concrete": "Жидкий бетон",
"block.createindustry.liquid_plastic": "Жидкий пластик",
"block.createindustry.lpg_engine": "СНГ двигатель",
"block.createindustry.lpg_engine_back": "Задняя часть СНГ двигателя",
"block.createindustry.lubrication_oil": "Смазочное масло",
"block.createindustry.machine_input": "Машинный ввод",
"block.createindustry.magenta_concrete": "Пурпурный бетон",
"block.createindustry.magenta_concrete_slab": "Пурпурная бетонная плита",
"block.createindustry.magenta_concrete_stairs": "Пурпурные бетонные ступеньки",
"block.createindustry.magenta_concrete_wall": "Пурпурная бетонная ограда",
"block.createindustry.molten_metal": "Расплавленный металл",
"block.createindustry.molten_slag": "расплавленный шлак",
"block.createindustry.molten_steel": "Расплавленная сталь",
"block.createindustry.napalm": "Напалм",
"block.createindustry.napalm_bomb": "Напалмовая бомба",
"block.createindustry.naphtha": "Лигроин",
"block.createindustry.oil_deposit": "Месторождение нефти",
"block.createindustry.orange_concrete": "Оранжевый бетон",
"block.createindustry.orange_concrete_slab": "Оранжевая бетонная плита",
"block.createindustry.orange_concrete_stairs": "Оранжевая бетонные ступеньки",
"block.createindustry.orange_concrete_wall": "Оранжевая бетонная ограда",
"block.createindustry.pink_concrete": "Розовый бетон",
"block.createindustry.pink_concrete_slab": "Розовая бетонная плита",
"block.createindustry.pink_concrete_stairs": "Розовая бетонные ступеньки",
"block.createindustry.pink_concrete_wall": "Розовая бетонная ограда",
"block.createindustry.plastic_block": "Блок пластика",
"block.createindustry.plastic_fluid_valve": "Пластиковый жидкостный вентиль",
"block.createindustry.plastic_mechanical_pump": "Пластиковая механическая помпа",
"block.createindustry.plastic_pipe": "Пластиковая жидкостная труба",
"block.createindustry.plastic_smart_fluid_pipe": "Умная пластиковая жидкостная труба",
"block.createindustry.polished_cut_bauxite": "Полированный резной боксит",
"block.createindustry.polished_cut_bauxite_slab": "Полированная плита из боксита",
"block.createindustry.polished_cut_bauxite_stairs": "Полированные ступеньки из боксита",
"block.createindustry.polished_cut_bauxite_wall": "Полированная ограда из боксита",
"block.createindustry.pumpjack_base": "Основа нефтяного насоса",
"block.createindustry.pumpjack_crank": "Нефтяной насос",
"block.createindustry.pumpjack_hammer_holder": "Балансир нефтяного насоса",
"block.createindustry.purple_concrete": "Фиолетовый бетон",
"block.createindustry.purple_concrete_slab": "Фиолетовая бетонная плита",
"block.createindustry.purple_concrete_stairs": "Фиолетовые бетонные ступеньки",
"block.createindustry.purple_concrete_wall": "Фиолетовая бетонная ограда",
"block.createindustry.rebar_concrete": "Армированный бетон",
"block.createindustry.rebar_concrete_slab": "Армированная бетонная плита",
"block.createindustry.rebar_concrete_stairs": "Армированные бетонные ступеньки",
"block.createindustry.rebar_concrete_wall": "Армированная бетонная плита",
"block.createindustry.rebar_formwork_block": "Арматурная опалубка",
"block.createindustry.red_caution_block": "Красный сигнальный блок",
"block.createindustry.red_concrete": "Красный бетон",
"block.createindustry.red_concrete_slab": "Красная бетонная плита",
"block.createindustry.red_concrete_stairs": "Красные бетонные ступеньки",
"block.createindustry.red_concrete_wall": "Красная бетонная ограда",
"block.createindustry.small_bauxite_brick_slab": "Плита из мелкого бокситового кирпича",
"block.createindustry.small_bauxite_brick_stairs": "Ступеньки из мелкого бокситового кирпича",
"block.createindustry.small_bauxite_brick_wall": "Ограда из мелкого бокситового кирпича",
"block.createindustry.small_bauxite_bricks": "Мелкие кирпичи из боксита",
"block.createindustry.steel_bars": "Стальные прутья",
"block.createindustry.steel_block": "Блок стали",
"block.createindustry.steel_casing": "Стальной корпус",
"block.createindustry.steel_distillation_controller": "Стальной контроллер дистилляционной башни",
"block.createindustry.steel_distillation_output": "Стальной выход дистилляционной дистилляции башни",
"block.createindustry.steel_door": "Стальная дверь",
"block.createindustry.steel_fluid_tank": "Стальной жидкостный бак",
"block.createindustry.steel_fluid_valve": "Стальной жидкостный вентиль",
"block.createindustry.steel_flywheel": "Стальной маховик",
"block.createindustry.steel_ladder": "Стальная лестница",
"block.createindustry.steel_mechanical_pump": "Стальная механическая помпа",
"block.createindustry.steel_pipe": "Стальная жидкостная труба",
"block.createindustry.steel_scaffolding": "Стальные подмостки",
"block.createindustry.steel_smart_fluid_pipe": "Умная стальная жидкостная труба",
"block.createindustry.steel_truss": "Стальные балки",
"block.createindustry.sulfur": "Сера",
"block.createindustry.surface_scanner": "Сканер поверхности",
"block.createindustry.turbine_engine": "Турбинный двигатель",
"block.createindustry.turbine_engine_back": "Задняя часть турбинного двигатель",
"block.createindustry.white_concrete": "Белый бетон",
"block.createindustry.white_concrete_slab": "Белая бетонная плита",
"block.createindustry.white_concrete_stairs": "Белые бетонные ступеньки",
"block.createindustry.white_concrete_wall": "Белая бетонная ограда",
"block.createindustry.yellow_concrete": "Желтый бетон",
"block.createindustry.yellow_concrete_slab": "Желтая бетонная плита",
"block.createindustry.yellow_concrete_stairs": "Желтые бетонные ступеньки",
"block.createindustry.yellow_concrete_wall": "Желтая бетонная ограда",
"entity.createindustry.blue_spark": "Голубая искра",
"entity.createindustry.copper_grenade": "Медная граната",
"entity.createindustry.green_spark": "Зеленая искра",
"entity.createindustry.napalm_bomb_entity": "Активированная напалмовая бомба",
"entity.createindustry.spark": "Искра",
"entity.createindustry.thermite_grenade": "Термитная граната",
"entity.createindustry.zinc_grenade": "Цинковая граната",
"fluid.createindustry.air": "Воздух",
"fluid.createindustry.butane": "Бутан",
"fluid.createindustry.carbon_dioxide": "Углекислый газ",
"fluid.createindustry.cooling_fluid": "Охлаждающая жидкость",
"fluid.createindustry.creosote": "Креозот",
"fluid.createindustry.crude_oil_fluid": "Сырая нефть",
"fluid.createindustry.diesel": "Дизель",
"fluid.createindustry.ethylene": "Этилен",
"fluid.createindustry.gasoline": "Бензин",
"fluid.createindustry.heavy_oil": "Мазут",
"fluid.createindustry.kerosene": "Керосин",
"fluid.createindustry.liquid_asphalt": "Жидкий асфальт",
"fluid.createindustry.liquid_concrete": "Жидкий бетон",
"fluid.createindustry.liquid_plastic": "Жидкий пластик",
"fluid.createindustry.lpg": "СНГ",
"fluid.createindustry.lubrication_oil": "Смазочное масло",
"fluid.createindustry.molten_slag": "Расплавленный шлак",
"fluid.createindustry.molten_steel": "Расплавленная сталь",
"fluid.createindustry.napalm": "Напалм",
"fluid.createindustry.naphtha": "Лигроин",
"fluid.createindustry.propane": "Пропан",
"fluid.createindustry.propylene": "Пропилен",
"item.createindustry.aluminum_ingot": "Алюминиевый слиток",
"item.createindustry.bitumen": "Битум",
"item.createindustry.blasting_mixture": "Смесь для плавки",
"item.createindustry.block_mold": "Форма блока для выплавки",
"item.createindustry.cast_iron_ingot": "Чугунный слиток",
"item.createindustry.charcoal_dust": "Пыль древесного угля",
"item.createindustry.coal_coke": "Коксовый уголь",
"item.createindustry.coal_coke_dust": "Коксовая пыль",
"item.createindustry.cooling_fluid_bucket": "Ведро охлаждающей жидкости",
"item.createindustry.copper_grenade": "Медная граната",
"item.createindustry.creosote_bucket": "Ведро креозота",
"item.createindustry.crude_oil_fluid_bucket": "Ведро сырой нефти",
"item.createindustry.diesel_bucket": "Ведро дизеля",
"item.createindustry.engine_base": "Основа двигателя",
"item.createindustry.engine_chamber": "Камера сгорания",
"item.createindustry.fireclay_ball": "Шарик из огнеупорной глины",
"item.createindustry.fireproof_brick": "Огнеупорный кирпич",
"item.createindustry.gasoline_bucket": "Ведро бензина",
"item.createindustry.heavy_oil_bucket": "Ведро мазута",
"item.createindustry.heavy_plate": "Тяжёлая пластина",
"item.createindustry.ingot_mold": "Форма слитка для выплавки",
"item.createindustry.kerosene_bucket": "Ведро керосина",
"item.createindustry.liquid_asphalt_bucket": "Ведро жидкого асфальта",
"item.createindustry.liquid_concrete_bucket": "Ведро жидкого бетона",
"item.createindustry.liquid_plastic_bucket": "Ведро расплавленного пластика",
"item.createindustry.lubrication_oil_bucket": "Ведро смазочного масла",
"item.createindustry.molten_slag_bucket": "Ведро расплавленного шлака",
"item.createindustry.molten_steel_bucket": "Ведро расплавленной стали",
"item.createindustry.napalm_bucket": "Ведро напалма",
"item.createindustry.naphtha_bucket": "Ведро лигроина",
"item.createindustry.nitrate_dust": "Нитратная пыль",
"item.createindustry.plastic_sheet": "Пластиковый лист",
"item.createindustry.quad_potato_cannon": "Четырёхствольная картофельная пушка",
"item.createindustry.rebar": "Арматура",
"item.createindustry.screw": "Винты",
"item.createindustry.screwdriver": "Отвёртка",
"item.createindustry.slag": "Шлак",
"item.createindustry.spark_plug": "Свеча зажигания",
"item.createindustry.steel_ingot": "Стальной слиток",
"item.createindustry.steel_mechanism": "Стальной механизм",
"item.createindustry.sulfur_dust": "Серная пыль",
"item.createindustry.thermite_grenade": "Термитная граната",
"item.createindustry.thermite_powder": "Термитный порошок",
"item.createindustry.turbine_blade": "Лопасти турбины",
"item.createindustry.unfinished_gasoline_engine": "Незаконченный бензиновый двигатель",
"item.createindustry.unfinished_lpg_engine": "Незаконченный СНГ двигатель",
"item.createindustry.unfinished_steel_mechanism": "Незаконченный стальной механизм",
"item.createindustry.unfinished_turbine_engine": "Незаконченный турбинный двигатель",
"item.createindustry.unprocessed_heavy_plate": "Незаконченная тяжёлая плита",
"item.createindustry.zinc_grenade": "Цинковая граната",
"itemGroup.createindustry.base": "Create: The Factory Must Grow",
"itemGroup.createindustry.building": "Create: TFMG Building Blocks",
"create.goggles.misc.number": "%1$s",
"create.goggles.misc.percent_symbol": "%",
"create.goggles.misc.dot_one": ".",
"create.goggles.misc.dot_two": "..",
"create.goggles.misc.dot_three": "...",
"create.goggles.misc.storage_info": "Информация о хранилище:",
"create.goggles.fluid_in_tank": "Содержимое бака:",
"create.goggles.surface_scanner.no_rotation": "Подключите вращение",
"create.goggles.surface_scanner.no_deposit": "Месторождений нефти не найдено",
"create.goggles.surface_scanner.deposit_found": "Найдено месторождение нефти!",
"create.goggles.surface_scanner.distance": "Дистанция: %1$s блоков",
"create.goggles.surface_scanner.scanning_surface": "Сканирование поверхности...",
"create.goggles.distillation_tower.status": "Информация о дистилляционной башне:",
"create.goggles.distillation_tower.tank_not_found": "Стальной жидкостный бак не найден",
"create.goggles.distillation_tower.not_tall_enough": "Жидкостный бак слишком низкий",
"create.goggles.distillation_tower.level": "Уровень дистилляционной башни: %1$s",
"create.goggles.distillation_tower.found_outputs": "Количество выходов: %1$s",
"create.goggles.distillation_tower.no_outputs": "Блоки вывода не найдены",
"create.goggles.blast_furnace.stats": "Доменная печь:",
"create.goggles.blast_furnace.size_stats": "Размер:",
"create.goggles.blast_furnace.fuel_amount": "Количество топлива: %1$s",
"create.goggles.blast_furnace.item_count": "Количество предметов: %1$s",
"create.goggles.blast_furnace.height": "Высота: %1$s",
"create.goggles.blast_furnace.nothing_lol": "",
"create.goggles.blast_furnace.status.off": "Статус: Неактивена",
"create.goggles.blast_furnace.status.running": "Статус: Работает",
"create.goggles.blast_furnace.diameter.one": "Диаметр: 1",
"create.goggles.blast_furnace.diameter.two": "Диаметр: 2",
"create.goggles.blast_furnace.invalid": "Доменная печь недействительна",
"create.goggles.coke_oven.status": "Коксовая печь:",
"create.goggles.coke_oven.fluid_amount_output": "Внутреннее содержимое резервуара: %1$s mb",
"create.goggles.coke_oven.fluid_amount_exhaust": "Углекислый газ: %1$s mb",
"create.goggles.coke_oven.item_count": "Внутренне содержимое: %1$s",
"create.goggles.coke_oven.invalid": "Коксовая печь недействительна",
"create.goggles.coke_oven.tank_full": "Внутренний резервуар заполнен",
"create.goggles.coke_oven.progress": "Коксование: %1$s",
"create.goggles.engine_stats": "Статистика двигателя:",
"create.goggles.engine_exhaust_stats": "Статистика выхлопа двигателя:",
"create.goggles.fuel_container": "Хранение жидкости",
"create.goggles.engine.backpartmissing": "Задняя часть отсутствует:",
"create.goggles.engine_redstone_input": "Скорость:",
"create.goggles.engine.efficiency": "Эффективность:",
"create.tooltip.engine_analog_strength": "%1$s/15",
"create.goggles.get_engine_efficiency": "%1$s",
"create.goggles.engine.stress": "%1$sЕН",
"create.goggles.diesel_engine.info": "Дизельный двигатель:",
"create.goggles.pumpjack_info": "Информация о нефтяном насосе:",
"create.goggles.pumpjack.part_missing": "Насос или балансир отсутствует",
"create.goggles.pumpjack.wrong_rotation1": "Основа повёрнута неправильно, красный маркер должен",
"create.goggles.pumpjack.wrong_rotation2": "смотреть ОТ балансира",
"create.goggles.pumpjack_fluid_storage": "Информация о жидкостном баке:",
"create.pumpjack_deposit_amount": "%1$s Buckets",
"create.goggles.pumpjack.deposit_info": "Информация о месторождении:",
"create.goggles.zero": "Месторождение не найдено",
"create.goggles.pumpjack.fluid_amount": "Количество жидкости:",
"create.goggles.machine_input.info": "Информация о машинном вводе",
"create.goggles.machine_input.no_rot": "Подключите вращение!",
"create.goggles.machine_input.power_level": "Уровень мощности: ",
"create.recipe.distillation": "Дистилляция",
"create.recipe.advanced_distillation": "Расширенная дистилляция",
"create.recipe.industrial_blasting": "Промышленная плавка",
"create.recipe.casting": "Литьё",
"create.recipe.coking": "Коксование",
"createindustry.ponder.small_engines.text_1": "Чтобы создать небольшой двигатель, расположите переднюю и заднюю части рядом друг с другом",
"createindustry.ponder.small_engines.text_2": "Топливо подается в переднюю часть, а выхлопные газы необходимо отводить из задней части с помощью труб и Выхлопной трубы",
"createindustry.ponder.small_engines.text_3": "Подача сигнала редстоуна на переднюю часть запускает двигатель",
"createindustry.ponder.small_engines.text_4": "К малогабаритным двигателям относятся двигатели, работающие на Сжиженном Нефтяном Газе, Керосине и Бензине",
"createindustry.ponder.diesel_engine.text_1": "Дизельные двигатели собираются путем размещения Вала перед блоком Дизельного двигателя",
"createindustry.ponder.diesel_engine.text_2": "Двигатель вырабатывает выхлопные газы, которые необходимо отводить с помощью труб и Выхлопной трубы",
"createindustry.ponder.diesel_engine.text_3": "Для работы двигателя необходим Воздух, поэтому нужен Воздухозаборник",
"createindustry.ponder.diesel_engine_expansion.text_1": "Расширенный ввод дизельного двигателя может предоставить Дизельному двигателю два новых входных слота для Смазочного масла и Охлаждающей жидкости",
"createindustry.ponder.surface_scanner.text_1": "Сканер поверхности используется для обнаружения Месторождений сырой нефти",
"createindustry.ponder.surface_scanner.text_2": "Подача вращения к Сканеру позволяет ему сканировать ближайшее месторождение",
"createindustry.ponder.surface_scanner.text_3": "Если месторождение обнаружено, компас на Сканере укажет на его местонахождение",
"createindustry.ponder.pumpjack.text_1": "Чтобы начать добывать Нефть, вы должны сначала построить трубопровод поверх Месторождения, используя Промышленные трубы",
"createindustry.ponder.pumpjack.text_2": "Затем постройте Нефтяной насос поверх трубопровода, Сначала установив основу....",
"createindustry.ponder.pumpjack.text_3": "Поставьте за ним Балансир....",
"createindustry.ponder.pumpjack.text_4": "И, наконец, разместите Машинный ввод с Насосом над ним, как показано на экране",
"createindustry.ponder.distillation_tower.text_1": "Достаточно большой Стальной бак можно превратить в Дистилляционную башню",
"createindustry.ponder.distillation_tower.text_2": "Башня собирается путем размещения Стального контроллера дистилляционной башни рядом с резервуаром....",
"createindustry.ponder.distillation_tower.text_3": "И размещения до 6 Выходов дистилляционной башни, соединенных Промышленными трубами",
"createindustry.ponder.distillation_tower.text_4": "Горелки всполоха необходимы для работы дистилляционной башни. На индикаторе снизу башни отображается текущий уровень мощности.",
"createindustry.ponder.distillation_tower.text_5": "Что бы ввести Сырую нефть, её необходимо закачать в блок Контроллера",
"createindustry.ponder.distillation_tower.text_6": "Каждый Выходной блок обеспечивает выход одного из побочных продуктов нефти",
"createindustry.ponder.distillation_tower.text_7": "СНГ",
"createindustry.ponder.distillation_tower.text_8": "Бензин",
"createindustry.ponder.distillation_tower.text_9": "Лигроин",
"createindustry.ponder.distillation_tower.text_10": "Керосин",
"createindustry.ponder.distillation_tower.text_11": "Дизель",
"createindustry.ponder.distillation_tower.text_12": "Мазут",
"createindustry.ponder.blast_furnace.text_1": "Основой Доменной печи является блок Вывода доменной печи.",
"createindustry.ponder.blast_furnace.text_2": "Чтобы собрать Доменную печь, постройте дымоход из Огнеупорных кирпичей, как показано на экране.",
"createindustry.ponder.blast_furnace.text_3": "Нижнюю половину дымохода необходимо укрепить.",
"createindustry.ponder.blast_furnace.text_4": "Топливо и другие предметы вводятся через отверстие вверху.",
"createindustry.ponder.coke_oven.text_1": "Коксовая печь строится путем размещения блоков Коксовой печи, как показано на экране, включая направление блоков, и клика Гаечным ключём по узкой стороне.",
"createindustry.ponder.coke_oven.text_2": "Процесс коксования достаточно медленный, поэтому эффективнее иметь длинные ряды одновременно работающих печей.",
"createindustry.ponder.coke_oven.text_3": "Уголь может быть введён через любую из сторон",
"createindustry.ponder.coke_oven.text_4": "Во время работы печь вырабатывает Креозот и Углекислый газ, которые необходимо откачивать для продолжения работы.",
"createindustry.ponder.coke_oven.text_5": "После этого Коксовый уголь выпадет из отверстия.",
"createindustry.ponder.casting.text_1": "Литье — это процесс заливки Жидкого металла в Литейную форму с помощью Литейного дозатора.",
"createindustry.ponder.casting.text_2": "Литейная чаша, очевидно, требует Формы литья для работы.",
"createindustry.ponder.distillation_tower.header": "Установка дистилляционной башни",
"createindustry.ponder.pumpjack.header": "Строительство нефтяных насосов",
"createindustry.ponder.surface_scanner.header": "Поиск нефти",
"createindustry.ponder.diesel_engine.header": "Сборка дизельного двигателя",
"createindustry.ponder.diesel_engine_expansion.header": "Расширение дизельных двигателей",
"createindustry.ponder.small_engines.header": "Создание небольших двигателей",
"createindustry.ponder.coke_oven.header": "Строительство коксовой печи",
"createindustry.ponder.blast_furnace": "Строительство доменной печи",
"createindustry.ponder.casting.header": "Литье металла",
"createindustry.ponder.tag.oil": "Машины, связанные с нефтью",
"createindustry.ponder.tag.metallurgy": "Металлообрабатывающие машины",
"createindustry.ponder.tag.oil.description": "Машины, которые добывают, перерабатывают или используют сырую нефть и ее побочные продукты.",
"createindustry.ponder.tag.metallurgy.description": "Машины, которые производят, обрабатывают или используют металл и сырье как таковое.",
"createindustry.subtitle.engine_sounds": "Звуки двигателя",
"createindustry.subtitle.diesel_engine_sounds": "Звуки дизельного двигателя",
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.createindustry.base": "Create: The Factory Must Grow",
"itemGroup.createindustry.building": "Create: TFMG Строительные блоки",
"create.goggles.misc.number": "%1$s",
"create.goggles.misc.percent_symbol": "%",
"create.goggles.misc.dot_one": ".",
"create.goggles.misc.dot_two": "..",
"create.goggles.misc.dot_three": "...",
"create.goggles.misc.storage_info": "Информация о хранилище:",
"create.goggles.fluid_in_tank": "Содержимое бака:",
"create.goggles.surface_scanner.no_rotation": "Подключите вращение",
"create.goggles.surface_scanner.no_deposit": "Месторождений нефти не найдено",
"create.goggles.surface_scanner.deposit_found": "Найдено месторождение нефти!",
"create.goggles.surface_scanner.distance": "Дистанция: %1$s блоков",
"create.goggles.surface_scanner.scanning_surface": "Сканирование поверхности...",
"create.goggles.distillation_tower.status": "Информация о дистилляционной башне:",
"create.goggles.distillation_tower.tank_not_found": "Стальной жидкостный бак не найден",
"create.goggles.distillation_tower.not_tall_enough": "Жидкостный бак слишком низкий",
"create.goggles.distillation_tower.level": "Уровень дистилляционной башни: %1$s",
"create.goggles.distillation_tower.found_outputs": "Количество выходов: %1$s",
"create.goggles.distillation_tower.no_outputs": "Блоки вывода не найдены",
"create.goggles.blast_furnace.stats": "Доменная печь:",
"create.distillation_tower.size": "Размер",
"create.distillation_tower.heat": "Нагрев",
"create.goggles.blast_furnace.fuel_amount": "Количество топлива: %1$s",
"create.goggles.blast_furnace.item_count": "Количество предметов: %1$s",
"create.goggles.blast_furnace.height": "Высота: %1$s",
"create.goggles.blast_furnace.nothing_lol": "",
"create.goggles.blast_furnace.status.off": "Статус: Неактивена",
"create.goggles.blast_furnace.status.running": "Статус: Работает",
"create.goggles.blast_furnace.diameter.one": "Диаметр: 1",
"create.goggles.blast_furnace.diameter.two": "Диаметр: 2",
"create.goggles.blast_furnace.invalid": "Доменная печь недействительна",
"create.goggles.coke_oven.status": "Коксовая печь:",
"create.goggles.coke_oven.fluid_amount_output": "Внутреннее содержимое резервуара: %1$s mb",
"create.goggles.coke_oven.fluid_amount_exhaust": "Углекислый газ: %1$s mb",
"create.goggles.coke_oven.item_count": "Внутренне содержимое: %1$s",
"create.goggles.coke_oven.invalid": "Коксовая печь недействительна",
"create.goggles.coke_oven.tank_full": "Внутренний резервуар заполнен",
"create.goggles.coke_oven.progress": "Коксование: %1$s",
"create.goggles.engine_stats": "Статистика двигателя:",
"create.goggles.engine_exhaust_stats": "Статистика выхлопа двигателя:",
"create.goggles.fuel_container": "Хранение жидкости",
"create.goggles.engine.backpartmissing": "Задняя часть отсутствует:",
"create.goggles.engine_redstone_input": "Скорость:",
"create.goggles.engine.efficiency": "Эффективность:",
"create.tooltip.engine_analog_strength": "%1$s/15",
"create.goggles.get_engine_efficiency": "%1$s",
"create.goggles.engine.stress": "%1$sЕН",
"create.goggles.diesel_engine.info": "Дизельный двигатель:",
"create.goggles.pumpjack_info": "Информация о нефтяном насосе:",
"create.goggles.pumpjack.part_missing": "Насос или балансир отсутствует",
"create.goggles.pumpjack.wrong_rotation1": "Основа повёрнута неправильно, красный маркер должен",
"create.goggles.pumpjack.wrong_rotation2": "смотреть ОТ балансира",
"create.goggles.pumpjack_fluid_storage": "Информация о жидкостном баке:",
"create.pumpjack_deposit_amount": "%1$s Buckets",
"create.goggles.pumpjack.deposit_info": "Информация о месторождении:",
"create.goggles.zero": "Месторождение не найдено",
"create.goggles.pumpjack.fluid_amount": "Количество жидкости:",
"create.goggles.machine_input.info": "Информация о машинном вводе",
"create.goggles.machine_input.no_rot": "Подключите вращение!",
"create.goggles.machine_input.power_level": "Уровень мощности: ",
"create.recipe.distillation": "Дистилляция",
"create.recipe.advanced_distillation": "Расширенная дистилляция",
"create.recipe.industrial_blasting": "Промышленная плавка",
"create.recipe.casting": "Литьё",
"create.recipe.coking": "Коксование",
"createindustry.subtitle.engine_sounds": "Звуки двигателя",
"createindustry.subtitle.diesel_engine_sounds": "Звуки дизельного двигателя",
"_": "->------------------------] Ponders [------------------------<-",
"createindustry.ponder.small_engines.text_1": "Чтобы создать небольшой двигатель, расположите переднюю и заднюю части рядом друг с другом",
"createindustry.ponder.small_engines.text_2": "Топливо подается в переднюю часть, а выхлопные газы необходимо отводить из задней части с помощью труб и Выхлопной трубы",
"createindustry.ponder.small_engines.text_3": "Подача сигнала редстоуна на переднюю часть запускает двигатель",
"createindustry.ponder.small_engines.text_4": "К малогабаритным двигателям относятся двигатели, работающие на Сжиженном Нефтяном Газе, Керосине и Кензине",
"createindustry.ponder.diesel_engine.text_1": "Дизельные двигатели собираются путем размещения Вала перед блоком дизельного Двигателя",
"createindustry.ponder.diesel_engine.text_2": "Двигатель вырабатывает выхлопные газы, которые необходимо отводить с помощью труб и Выхлопной трубы",
"createindustry.ponder.diesel_engine.text_3": "Для работы двигателя необходим Воздух, поэтому нужен Воздухозаборник",
"createindustry.ponder.diesel_engine_expansion.text_1": "Расширенный ввод дизельного двигателя может предоставить Дизельному двигателю два новых входных слота для Смазочного масла и Охлаждающей жидкости",
"createindustry.ponder.surface_scanner.text_1": "Сканер поверхности используется для обнаружения Месторождений сырой нефти",
"createindustry.ponder.surface_scanner.text_2": "Подача вращения к Сканеру позволяет ему сканировать ближайшее месторождение",
"createindustry.ponder.surface_scanner.text_3": "Если месторождение обнаружено, компас на Сканере укажет на его местонахождение",
"createindustry.ponder.pumpjack.text_1": "Чтобы начать добывать Нефть, вы должны сначала построить трубопровод поверх Месторождения, используя Промышленные трубы",
"createindustry.ponder.pumpjack.text_2": "Затем постройте Нефтяной насос поверх трубопровода, сначала установив Основу...",
"createindustry.ponder.pumpjack.text_3": "За ним поставьте Балансир...",
"createindustry.ponder.pumpjack.text_4": "И, наконец, разместите Машинный ввод с Насосом над ним, как показано на экране",
"createindustry.ponder.distillation_tower.text_1": "Достаточно большой Стальной бак можно превратить в Дистилляционную башню",
"createindustry.ponder.distillation_tower.text_2": "Башня собирается путем размещения Стального контроллера дистилляционной башни рядом с резервуаром...",
"createindustry.ponder.distillation_tower.text_3": "И размещения до 6 Выходов дистилляционной башни, соединенных Промышленными трубами",
"createindustry.ponder.distillation_tower.text_4": "Горелки всполоха необходимы для работы Дистилляционной башни. На индикаторе снизу башни отображается текущий уровень мощности",
"createindustry.ponder.distillation_tower.text_5": "Что бы закачать Сырую нефть в башню, её необходимо ввести в блок Контроллера",
"createindustry.ponder.distillation_tower.text_6": "Каждый Выходной блок обеспечивает выход одного из побочных продуктов нефти",
"createindustry.ponder.distillation_tower.text_7": "СНГ",
"createindustry.ponder.distillation_tower.text_8": "Безнин",
"createindustry.ponder.distillation_tower.text_9": "Лигроин",
"createindustry.ponder.distillation_tower.text_10": "Керосин",
"createindustry.ponder.distillation_tower.text_11": "Дизель",
"createindustry.ponder.distillation_tower.text_12": "Мазут",
"createindustry.ponder.blast_furnace.text_1": "Основой Доменной печи является блок Вывода доменной печи",
"createindustry.ponder.blast_furnace.text_2": "Чтобы собрать Доменную печь, постройте дымоход из Огнеупорных кирпичей, как показано на экране",
"createindustry.ponder.blast_furnace.text_3": "Нижнюю половину дымохода необходимо укрепить",
"createindustry.ponder.blast_furnace.text_4": "Топливо и другие предметы вводятся через отверстие вверху",
"createindustry.ponder.coke_oven.text_1": "Коксовая печь строится путем размещения блоков Коксовой печи, как показано на экране, включая направление блоков, и клика Гаечным ключём по узкой стороне",
"createindustry.ponder.coke_oven.text_2": "Процесс коксования достаточно медленный, поэтому эффективнее иметь длинные ряды одновременно работающих печей",
"createindustry.ponder.coke_oven.text_3": "Уголь может быть введён через любую из сторон",
"createindustry.ponder.coke_oven.text_4": "Во время работы Печь вырабатывает Креозот и Углекислый газ, которые необходимо откачивать для продолжения работы",
"createindustry.ponder.coke_oven.text_5": "После этого Коксовый уголь выпадет из отверстия",
"createindustry.ponder.casting.text_1": "Литье — это процесс заливки Жидкого металла в Литейную форму с помощью Литейного дозатора",
"createindustry.ponder.casting.text_2": "Литейная чаша, очевидно, требует Формы литья для работы",
"createindustry.ponder.distillation_tower.header": "Установка дистилляционной башни",
"createindustry.ponder.pumpjack.header": "Строительство нефтяных насосов",
"createindustry.ponder.surface_scanner.header": "Поиск нефти",
"createindustry.ponder.diesel_engine.header": "Сборка дизельного двигателя",
"createindustry.ponder.diesel_engine_expansion.header": "Расширение дизельных двигателей",
"createindustry.ponder.small_engines.header": "Создание небольших двигателей",
"createindustry.ponder.coke_oven.header": "Строительство коксовой печи",
"createindustry.ponder.blast_furnace": "Строительство доменной печи",
"createindustry.ponder.casting.header": "Литье металла",
"createindustry.ponder.tag.oil": "Машины, связанные с нефтью",
"createindustry.ponder.tag.metallurgy": "Металлообрабатывающие машины",
"createindustry.ponder.tag.oil.description": "Машины, которые добывают, перерабатывают или используют сырую нефть и ее побочные продукты",
"createindustry.ponder.tag.metallurgy.description": "Машины, которые производят, обрабатывают или используют металл и сырье как таковое",
"_": "Thank you for translating Create: The Factory Must Grow!" ,
"_": "No Problem))))))spend 4 hours........"
}

View File

@@ -0,0 +1,437 @@
{
"_": "->------------------------] Game Elements [------------------------<-",
"block.createindustry.air_intake": "进气扇",
"block.createindustry.aluminum_bars": "铝栏杆",
"block.createindustry.aluminum_block": "铝块",
"block.createindustry.aluminum_fluid_valve": "铝流体阀门",
"block.createindustry.aluminum_flywheel": "铝飞轮",
"block.createindustry.aluminum_ladder": "铝梯子",
"block.createindustry.aluminum_mechanical_pump": "铝动力泵",
"block.createindustry.aluminum_pipe": "铝流体管道",
"block.createindustry.aluminum_scaffolding": "铝脚手架",
"block.createindustry.aluminum_smart_fluid_pipe": "铝智能流体管道",
"block.createindustry.aluminum_truss": "铝桁架",
"block.createindustry.asphalt": "沥青",
"block.createindustry.bauxite": "铝土矿",
"block.createindustry.bauxite_pillar": "竖纹铝土矿",
"block.createindustry.black_concrete": "黑色混凝土",
"block.createindustry.black_concrete_slab": "黑色混凝土台阶",
"block.createindustry.black_concrete_stairs": "黑色混凝土楼梯",
"block.createindustry.black_concrete_wall": "黑色混凝土墙",
"block.createindustry.blast_furnace_output": "高炉输出口",
"block.createindustry.blue_concrete": "蓝色混凝土",
"block.createindustry.blue_concrete_slab": "蓝色混凝土台阶",
"block.createindustry.blue_concrete_stairs": "蓝色混凝土楼梯",
"block.createindustry.blue_concrete_wall": "蓝色混凝土墙",
"block.createindustry.brass_fluid_valve": "黄铜流体阀门",
"block.createindustry.brass_mechanical_pump": "黄铜动力泵",
"block.createindustry.brass_pipe": "黄铜流体管道",
"block.createindustry.brass_smart_fluid_pipe": "黄铜智能流体管道",
"block.createindustry.brown_concrete": "棕色混凝土",
"block.createindustry.brown_concrete_slab": "棕色混凝土台阶",
"block.createindustry.brown_concrete_stairs": "棕色混凝土楼梯",
"block.createindustry.brown_concrete_wall": "棕色混凝土墙",
"block.createindustry.cast_iron_block": "铸铁块",
"block.createindustry.cast_iron_distillation_controller": "铸铁分馏塔控制器",
"block.createindustry.cast_iron_distillation_output": "铸铁分馏塔输出口",
"block.createindustry.cast_iron_fluid_valve": "铸铁流体阀门",
"block.createindustry.cast_iron_flywheel": "铸铁飞轮",
"block.createindustry.cast_iron_mechanical_pump": "铸铁动力泵",
"block.createindustry.cast_iron_pipe": "铸铁流体管道",
"block.createindustry.cast_iron_smart_fluid_pipe": "铸铁智能流体管道",
"block.createindustry.casting_basin": "铸造盆",
"block.createindustry.casting_spout": "注模器",
"block.createindustry.caution_block": "警示方块",
"block.createindustry.cement": "水泥",
"block.createindustry.coal_coke_block": "焦煤块",
"block.createindustry.coke_oven": "焦炉",
"block.createindustry.concrete": "混凝土",
"block.createindustry.concrete_slab": "混凝土台阶",
"block.createindustry.concrete_stairs": "混凝土楼梯",
"block.createindustry.concrete_wall": "混凝土墙",
"block.createindustry.cooling_fluid": "冷却液",
"block.createindustry.copper_encased_aluminum_pipe": "铝流体管道箱",
"block.createindustry.copper_encased_brass_pipe": "黄铜流体管道箱",
"block.createindustry.copper_encased_cast_iron_pipe": "铸铁流体管道箱",
"block.createindustry.copper_encased_plastic_pipe": "塑料流体管道箱",
"block.createindustry.copper_encased_steel_pipe": "钢流体管道箱",
"block.createindustry.creosote": "杂酚油",
"block.createindustry.crude_oil_fluid": "原油",
"block.createindustry.cut_bauxite": "切制铝土矿",
"block.createindustry.cut_bauxite_brick_slab": "切制铝土砖块台阶",
"block.createindustry.cut_bauxite_brick_stairs": "切制铝土砖块楼梯",
"block.createindustry.cut_bauxite_brick_wall": "切制铝土砖块墙",
"block.createindustry.cut_bauxite_bricks": "切制铝土砖块",
"block.createindustry.cut_bauxite_slab": "切制铝土台阶",
"block.createindustry.cut_bauxite_stairs": "切制铝土楼梯",
"block.createindustry.cut_bauxite_wall": "切制铝土墙",
"block.createindustry.cyan_concrete": "青色混凝土",
"block.createindustry.cyan_concrete_slab": "青色混凝土台阶",
"block.createindustry.cyan_concrete_stairs": "青色混凝土楼梯",
"block.createindustry.cyan_concrete_wall": "青色混凝土墙",
"block.createindustry.diesel": "柴油",
"block.createindustry.diesel_engine": "柴油引擎",
"block.createindustry.diesel_engine_expansion": "柴油引擎扩充件",
"block.createindustry.exhaust": "排气管",
"block.createindustry.factory_floor": "工厂地板",
"block.createindustry.factory_floor_slab": "工厂地板台阶",
"block.createindustry.factory_floor_stairs": "工厂地板楼梯",
"block.createindustry.fireclay": "耐火黏土",
"block.createindustry.fireproof_brick_reinforcement": "耐火砖固墙",
"block.createindustry.fireproof_bricks": "耐火砖",
"block.createindustry.flarestack": "焚油火炬",
"block.createindustry.formwork_block": "浇筑模板",
"block.createindustry.fossilstone": "化石",
"block.createindustry.gasoline": "汽油",
"block.createindustry.gasoline_engine": "汽油引擎",
"block.createindustry.gasoline_engine_back": "汽油引擎机尾",
"block.createindustry.glass_aluminum_pipe": "玻璃铝流体管道",
"block.createindustry.glass_brass_pipe": "玻璃黄铜流体管道",
"block.createindustry.glass_cast_iron_pipe": "玻璃铸铁流体管道",
"block.createindustry.glass_plastic_pipe": "玻璃塑料流体管道",
"block.createindustry.glass_steel_pipe": "玻璃钢流体管道",
"block.createindustry.gray_concrete": "灰色混凝土",
"block.createindustry.gray_concrete_slab": "灰色混凝土台阶",
"block.createindustry.gray_concrete_stairs": "灰色混凝土楼梯",
"block.createindustry.gray_concrete_wall": "灰色混凝土墙",
"block.createindustry.green_concrete": "绿色混凝土",
"block.createindustry.green_concrete_slab": "绿色混凝土台阶",
"block.createindustry.green_concrete_stairs": "绿色混凝土楼梯",
"block.createindustry.green_concrete_wall": "绿色混凝土墙",
"block.createindustry.hardened_planks": "硬化木板",
"block.createindustry.heavy_casing_door": "坚固门",
"block.createindustry.heavy_machinery_casing": "重型机械机壳",
"block.createindustry.heavy_oil": "重油",
"block.createindustry.industrial_pipe": "工业级流体管道",
"block.createindustry.kerosene": "煤油",
"block.createindustry.layered_bauxite": "层叠铝土矿",
"block.createindustry.light_blue_concrete": "淡蓝色混凝土",
"block.createindustry.light_blue_concrete_slab": "淡蓝色混凝土台阶",
"block.createindustry.light_blue_concrete_stairs": "淡蓝色混凝土楼梯",
"block.createindustry.light_blue_concrete_wall": "淡蓝色混凝土墙",
"block.createindustry.light_gray_concrete": "淡灰色混凝土",
"block.createindustry.light_gray_concrete_slab": "淡灰色混凝土台阶",
"block.createindustry.light_gray_concrete_stairs": "淡灰色混凝土楼梯",
"block.createindustry.light_gray_concrete_wall": "淡灰色混凝土墙",
"block.createindustry.lignite": "褐煤",
"block.createindustry.lime_concrete": "黄绿色混凝土",
"block.createindustry.lime_concrete_slab": "黄绿色混凝土台阶",
"block.createindustry.lime_concrete_stairs": "黄绿色混凝土楼梯",
"block.createindustry.lime_concrete_wall": "黄绿色混凝土墙",
"block.createindustry.limesand": "石灰砂",
"block.createindustry.liquid_asphalt": "液态沥青",
"block.createindustry.liquid_concrete": "液态混凝土",
"block.createindustry.liquid_plastic": "液态塑料",
"block.createindustry.lpg_engine": "液化石油气引擎",
"block.createindustry.lpg_engine_back": "液化石油气引擎机尾",
"block.createindustry.lubrication_oil": "润滑油",
"block.createindustry.machine_input": "动力输入口",
"block.createindustry.magenta_concrete": "品红色混凝土",
"block.createindustry.magenta_concrete_slab": "品红色混凝土台阶",
"block.createindustry.magenta_concrete_stairs": "品红色混凝土楼梯",
"block.createindustry.magenta_concrete_wall": "品红色混凝土墙",
"block.createindustry.molten_metal": "熔融金属",
"block.createindustry.molten_slag": "熔融炉渣",
"block.createindustry.molten_steel": "熔融钢",
"block.createindustry.napalm": "凝固汽油",
"block.createindustry.napalm_bomb": "凝固汽油弹",
"block.createindustry.naphtha": "石脑油",
"block.createindustry.oil_deposit": "油田",
"block.createindustry.orange_concrete": "橙色混凝土",
"block.createindustry.orange_concrete_slab": "橙色混凝土台阶",
"block.createindustry.orange_concrete_stairs": "橙色混凝土楼梯",
"block.createindustry.orange_concrete_wall": "橙色混凝土墙",
"block.createindustry.pink_concrete": "粉红色混凝土",
"block.createindustry.pink_concrete_slab": "粉红色混凝土台阶",
"block.createindustry.pink_concrete_stairs": "粉红色混凝土楼梯",
"block.createindustry.pink_concrete_wall": "粉红色混凝土墙",
"block.createindustry.plastic_block": "塑料块",
"block.createindustry.plastic_fluid_valve": "塑料流体阀门",
"block.createindustry.plastic_mechanical_pump": "塑料动力泵",
"block.createindustry.plastic_pipe": "塑料流体管道",
"block.createindustry.plastic_smart_fluid_pipe": "塑料智能流体管道",
"block.createindustry.polished_cut_bauxite": "磨制切制铝土矿",
"block.createindustry.polished_cut_bauxite_slab": "磨制切制铝土台阶",
"block.createindustry.polished_cut_bauxite_stairs": "磨制切制铝土楼梯",
"block.createindustry.polished_cut_bauxite_wall": "磨制切制铝土墙",
"block.createindustry.pumpjack_base": "抽油机油泵",
"block.createindustry.pumpjack_crank": "抽油机曲柄",
"block.createindustry.pumpjack_hammer_holder": "抽油机游梁架",
"block.createindustry.purple_concrete": "紫色混凝土",
"block.createindustry.purple_concrete_slab": "紫色混凝土台阶",
"block.createindustry.purple_concrete_stairs": "紫色混凝土楼梯",
"block.createindustry.purple_concrete_wall": "紫色混凝土墙",
"block.createindustry.rebar_concrete": "钢筋混凝土",
"block.createindustry.rebar_concrete_slab": "钢筋混凝土台阶",
"block.createindustry.rebar_concrete_stairs": "钢筋混凝土楼梯",
"block.createindustry.rebar_concrete_wall": "钢筋混凝土墙",
"block.createindustry.rebar_formwork_block": "钢筋浇筑模板",
"block.createindustry.red_caution_block": "红色警示方块",
"block.createindustry.red_concrete": "红色混凝土",
"block.createindustry.red_concrete_slab": "红色混凝土台阶",
"block.createindustry.red_concrete_stairs": "红色混凝土楼梯",
"block.createindustry.red_concrete_wall": "红色混凝土墙",
"block.createindustry.small_bauxite_brick_slab": "铝土小砖块台阶",
"block.createindustry.small_bauxite_brick_stairs": "铝土小砖块楼梯",
"block.createindustry.small_bauxite_brick_wall": "铝土小砖块墙",
"block.createindustry.small_bauxite_bricks": "铝土小砖块",
"block.createindustry.steel_bars": "钢筋",
"block.createindustry.steel_block": "钢块",
"block.createindustry.steel_casing": "钢机壳",
"block.createindustry.steel_distillation_controller": "钢分馏塔控制器",
"block.createindustry.steel_distillation_output": "钢分馏塔输出口",
"block.createindustry.steel_door": "钢门",
"block.createindustry.steel_fluid_tank": "钢流体储罐",
"block.createindustry.steel_fluid_valve": "钢流体阀门",
"block.createindustry.steel_flywheel": "钢飞轮",
"block.createindustry.steel_ladder": "钢梯子",
"block.createindustry.steel_mechanical_pump": "钢动力泵",
"block.createindustry.steel_pipe": "钢流体管道",
"block.createindustry.steel_scaffolding": "钢脚手架",
"block.createindustry.steel_smart_fluid_pipe": "钢智能流体管道",
"block.createindustry.steel_truss": "钢桁架",
"block.createindustry.sulfur": "硫磺",
"block.createindustry.surface_scanner": "原油探测器",
"block.createindustry.turbine_engine": "涡轮引擎",
"block.createindustry.turbine_engine_back": "涡轮引擎机尾",
"block.createindustry.white_concrete": "白色混凝土",
"block.createindustry.white_concrete_slab": "白色混凝土台阶",
"block.createindustry.white_concrete_stairs": "白色混凝土楼梯",
"block.createindustry.white_concrete_wall": "白色混凝土墙",
"block.createindustry.yellow_concrete": "黄色混凝土",
"block.createindustry.yellow_concrete_slab": "黄色混凝土台阶",
"block.createindustry.yellow_concrete_stairs": "黄色混凝土楼梯",
"block.createindustry.yellow_concrete_wall": "黄色混凝土墙",
"entity.createindustry.blue_spark": "蓝火花",
"entity.createindustry.copper_grenade": "铜焰铝热弹",
"entity.createindustry.green_spark": "绿火花",
"entity.createindustry.napalm_bomb_entity": "凝固汽油弹",
"entity.createindustry.spark": "火花",
"entity.createindustry.thermite_grenade": "铝热弹",
"entity.createindustry.zin_grenade": "锌焰铝热弹",
"fluid.createindustry.air": "空气",
"fluid.createindustry.butane": "丁烷",
"fluid.createindustry.carbon_dioxide": "二氧化碳",
"fluid.createindustry.cooling_fluid": "冷却液",
"fluid.createindustry.creosote": "杂酚油",
"fluid.createindustry.crude_oil_fluid": "原油",
"fluid.createindustry.diesel": "柴油",
"fluid.createindustry.ethylene": "乙烯",
"fluid.createindustry.gasoline": "汽油",
"fluid.createindustry.heavy_oil": "重油",
"fluid.createindustry.kerosene": "煤油",
"fluid.createindustry.liquid_asphalt": "液态沥青",
"fluid.createindustry.liquid_concrete": "液态混凝土",
"fluid.createindustry.liquid_plastic": "液态塑料",
"fluid.createindustry.lpg": "液化石油气",
"fluid.createindustry.lubrication_oil": "润滑油",
"fluid.createindustry.molten_slag": "熔融炉渣",
"fluid.createindustry.molten_steel": "熔融钢",
"fluid.createindustry.napalm": "凝固汽油",
"fluid.createindustry.naphtha": "石脑油",
"fluid.createindustry.propane": "丙烷",
"fluid.createindustry.propylene": "丙烯",
"item.createindustry.aluminum_ingot": "铝锭",
"item.createindustry.bitumen": "沥青",
"item.createindustry.blasting_mixture": "铁矿混合粉",
"item.createindustry.block_mold": "块状铸模",
"item.createindustry.cast_iron_ingot": "铸铁锭",
"item.createindustry.charcoal_dust": "木炭粉",
"item.createindustry.coal_coke": "焦煤",
"item.createindustry.coal_coke_dust": "焦煤粉",
"item.createindustry.cooling_fluid_bucket": "冷却液桶",
"item.createindustry.copper_grenade": "铜焰铝热弹",
"item.createindustry.creosote_bucket": "杂酚油桶",
"item.createindustry.crude_oil_fluid_bucket": "原油桶",
"item.createindustry.diesel_bucket": "柴油桶",
"item.createindustry.engine_base": "引擎基座",
"item.createindustry.engine_chamber": "引擎燃烧室",
"item.createindustry.fireclay_ball": "耐火黏土球",
"item.createindustry.fireproof_brick": "耐火砖",
"item.createindustry.gasoline_bucket": "汽油桶",
"item.createindustry.heavy_oil_bucket": "重油桶",
"item.createindustry.heavy_plate": "厚钢板",
"item.createindustry.ingot_mold": "锭状铸模",
"item.createindustry.kerosene_bucket": "煤油桶",
"item.createindustry.liquid_asphalt_bucket": "液态沥青桶",
"item.createindustry.liquid_concrete_bucket": "液态混凝土桶",
"item.createindustry.liquid_plastic_bucket": "液态塑料桶",
"item.createindustry.lubrication_oil_bucket": "润滑油桶",
"item.createindustry.molten_slag_bucket": "熔融炉渣桶",
"item.createindustry.molten_steel_bucket": "熔融钢桶",
"item.createindustry.napalm_bucket": "凝固汽油桶",
"item.createindustry.naphtha_bucket": "石脑油桶",
"item.createindustry.nitrate_dust": "硝酸盐粉",
"item.createindustry.plastic_sheet": "塑料板",
"item.createindustry.quad_potato_cannon": "四管土豆加农炮",
"item.createindustry.rebar": "钢筋",
"item.createindustry.screw": "螺丝",
"item.createindustry.screwdriver": "螺丝刀",
"item.createindustry.slag": "炉渣",
"item.createindustry.spark_plug": "火花塞",
"item.createindustry.steel_ingot": "钢锭",
"item.createindustry.steel_mechanism": "钢铁构件",
"item.createindustry.sulfur_dust": "硫磺粉",
"item.createindustry.thermite_grenade": "铝热弹",
"item.createindustry.thermite_powder": "铝热粉",
"item.createindustry.turbine_blade": "涡轮叶片",
"item.createindustry.unfinished_gasoline_engine": "汽油引擎(半成品)",
"item.createindustry.unfinished_lpg_engine": "液化石油气引擎(半成品)",
"item.createindustry.unfinished_steel_mechanism": "钢铁构件(半成品)",
"item.createindustry.unfinished_turbine_engine": "涡轮引擎(半成品)",
"item.createindustry.unprocessed_heavy_plate": "未加工的厚钢板",
"item.createindustry.zinc_grenade": "锌焰铝热弹",
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.createindustry.base": "机械动力:工业长路",
"itemGroup.createindustry.building": "机械动力:工业长路丨建筑方块",
"create.goggles.misc.number": "%1$s",
"create.goggles.misc.percent_symbol": "%",
"create.goggles.misc.dot_one": ".",
"create.goggles.misc.dot_two": "..",
"create.goggles.misc.dot_three": "...",
"create.goggles.misc.storage_info": "存储容器信息:",
"create.goggles.fluid_in_tank": "储罐内容物:",
"create.goggles.surface_scanner.no_rotation": "未提供旋转力",
"create.goggles.surface_scanner.no_deposit": "没有找到油田",
"create.goggles.surface_scanner.deposit_found": "发现油田!",
"create.goggles.surface_scanner.distance": "距离:%1$s 格",
"create.goggles.surface_scanner.scanning_surface": "探测油田中",
"create.goggles.distillation_tower.status": "分馏塔信息:",
"create.goggles.distillation_tower.tank_not_found": "缺失钢流体储罐",
"create.goggles.distillation_tower.not_tall_enough": "流体储罐高度不足",
"create.goggles.distillation_tower.level": "分馏塔等级:%1$s",
"create.goggles.distillation_tower.found_outputs": "输出口数量:%1$s",
"create.goggles.distillation_tower.no_outputs": "没有找到输出口",
"create.goggles.blast_furnace.stats": "高炉信息:",
"create.distillation_tower.size": "尺寸",
"create.distillation_tower.heat": "热量",
"create.goggles.blast_furnace.size_stats": "尺寸:",
"create.goggles.blast_furnace.fuel_amount": "燃料储量:%1$s",
"create.goggles.blast_furnace.item_count": "原料储量:%1$s",
"create.goggles.blast_furnace.height": "高度:%1$s",
"create.goggles.blast_furnace.nothing_lol": "",
"create.goggles.blast_furnace.status.off": "状态:空闲",
"create.goggles.blast_furnace.status.running": "状态:运行",
"create.goggles.blast_furnace.diameter.one": "内径1",
"create.goggles.blast_furnace.diameter.two": "内径2",
"create.goggles.blast_furnace.invalid": "高炉结构无效",
"create.goggles.coke_oven.status": "焦炉:",
"create.goggles.coke_oven.fluid_amount_output": "内部流体储量:%1$s mb",
"create.goggles.coke_oven.fluid_amount_exhaust": "二氧化碳:%1$s mb",
"create.goggles.coke_oven.item_count": "内部物品储量:%1$s",
"create.goggles.coke_oven.invalid": "焦炉结构无效",
"create.goggles.coke_oven.tank_full": "内部储量已满",
"create.goggles.coke_oven.progress": "进度:%1$s",
"create.goggles.engine_stats": "引擎状态:",
"create.goggles.engine_exhaust_stats": "引擎废气状态:",
"create.goggles.fuel_container": "燃料:",
"create.goggles.engine.backpartmissing": "引擎缺失机尾:",
"create.goggles.engine_redstone_input": "转速:",
"create.goggles.engine.efficiency": "效率:",
"create.tooltip.engine_analog_strength": "%1$s/15",
"create.goggles.get_engine_efficiency": "%1$s",
"create.goggles.engine.stress": "%1$ssu",
"create.goggles.diesel_engine.info": "柴油引擎信息:",
"create.goggles.pumpjack_info": "抽油机信息:",
"create.goggles.pumpjack.part_missing": "缺失抽油机曲柄或游梁",
"create.goggles.pumpjack.wrong_rotation1": "抽油机油泵放置方向有误,顶端的红色标记需要",
"create.goggles.pumpjack.wrong_rotation2": "指向远离抽油机游梁的方向",
"create.goggles.pumpjack_fluid_storage": "流体容器信息:",
"create.pumpjack_deposit_amount": "%1$s桶",
"create.goggles.pumpjack.deposit_info": "油田信息:",
"create.goggles.zero": "未找到油田",
"create.goggles.pumpjack.fluid_amount": "原油储量:",
"create.goggles.machine_input.info": "动力输入口信息:",
"create.goggles.machine_input.no_rot": "未提供旋转力",
"create.goggles.machine_input.power_level": "功率等级:",
"create.recipe.distillation": "分馏",
"create.recipe.advanced_distillation": "大型分馏",
"create.recipe.industrial_blasting": "工业烧炼",
"create.recipe.casting": "铸造",
"create.recipe.coking": "焦化",
"createindustry.subtitle.engine_sounds": "引擎轰鸣",
"createindustry.subtitle.diesel_engine_sounds": "柴油引擎轰鸣",
"_": "->------------------------] Ponders [------------------------<-",
"createindustry.ponder.small_engines.text_1": "要搭建一个小型引擎,需要同时放置它的头部和尾部",
"createindustry.ponder.small_engines.text_2": "使用时要从引擎的头部输入燃料,并用管道或排气管从尾部排出废气",
"createindustry.ponder.small_engines.text_3": "提供了红石信号后,引擎才会开始工作",
"createindustry.ponder.small_engines.text_4": "这里有以汽油、液化石油气和煤油为燃料的引擎",
"createindustry.ponder.diesel_engine.text_1": "手执传动杆点击引擎来创建应力输出",
"createindustry.ponder.diesel_engine.text_2": "燃料燃烧产生的二氧化碳需要通过管道或排气管排出",
"createindustry.ponder.diesel_engine.text_3": "引擎需要消耗空气,所以还需要放置一个进气扇",
"createindustry.ponder.diesel_engine_expansion.text_1": "柴油引擎扩充件为引擎提供了两个新的输入口,可以通入给引擎润滑或降温的液体",
"createindustry.ponder.surface_scanner.text_1": "原油探测器是用来探测油田的器械",
"createindustry.ponder.surface_scanner.text_2": "为探测器提供旋转力时,它会寻找距离最近的油田",
"createindustry.ponder.surface_scanner.text_3": "检测到油田后,顶部的指针会指向具体的方位",
"createindustry.ponder.pumpjack.text_1": "要开采石油,先用工业级流体管道连接油田和地表",
"createindustry.ponder.pumpjack.text_2": "再在管道顶部放置一个抽油机油泵……",
"createindustry.ponder.pumpjack.text_3": "然后在油泵后放置游梁架……",
"createindustry.ponder.pumpjack.text_4": "最后,就像展示的一样,放置一个上方置有抽油机曲柄的动力输入口",
"createindustry.ponder.distillation_tower.text_1": "组装分馏塔需要一个足够大的钢流体储罐",
"createindustry.ponder.distillation_tower.text_2": "组装时,先将一个钢分馏塔控制器放置在储罐旁……",
"createindustry.ponder.distillation_tower.text_3": "再在上方放置总共六个输出口,并用工业级流体管道连接",
"createindustry.ponder.distillation_tower.text_4": "在流体储罐下放置烈焰人燃烧室来提供热量,塔上的仪表盘会显示分馏塔的供能等级",
"createindustry.ponder.distillation_tower.text_5": "原油需要泵入分馏塔控制器",
"createindustry.ponder.distillation_tower.text_6": "每个输出口会输出一种分馏产物",
"createindustry.ponder.distillation_tower.text_7": "液化石油气",
"createindustry.ponder.distillation_tower.text_8": "汽油",
"createindustry.ponder.distillation_tower.text_9": "石脑油",
"createindustry.ponder.distillation_tower.text_10": "煤油",
"createindustry.ponder.distillation_tower.text_11": "柴油",
"createindustry.ponder.distillation_tower.text_12": "重油",
"createindustry.ponder.blast_furnace.text_1": "高炉输出口是搭建高炉的基础",
"createindustry.ponder.blast_furnace.text_2": "组装高炉,需要用耐火砖搭建起烟囱",
"createindustry.ponder.blast_furnace.text_3": "还需要用加固墙加固烟囱的下半部分",
"createindustry.ponder.blast_furnace.text_4": "需要从顶部投入燃料和原料",
"createindustry.ponder.coke_oven.text_1": "用焦炉块搭建如图所示的结构后,持扳手右击可以组装成焦炉",
"createindustry.ponder.coke_oven.text_2": "煤炭的焦化是一个缓慢的过程,可以堆叠焦炉阵列来提高效率",
"createindustry.ponder.coke_oven.text_3": "可以从任意位置输入煤炭",
"createindustry.ponder.coke_oven.text_4": "焦炉会在工作时产出杂酚油和二氧化碳,这些产物需要及时排出焦炉",
"createindustry.ponder.coke_oven.text_5": "完成后,焦煤就会从开口中掉出来",
"createindustry.ponder.casting.text_1": "铸造是用注模器将熔融金属注入铸造盆的工序",
"createindustry.ponder.casting.text_2": "显然,铸造盆需要放入一个模具",
"createindustry.ponder.distillation_tower.header": "搭建分馏塔",
"createindustry.ponder.pumpjack.header": "搭建抽油机",
"createindustry.ponder.surface_scanner.header": "定位油田",
"createindustry.ponder.diesel_engine.header": "组装柴油引擎",
"createindustry.ponder.diesel_engine_expansion.header": "引擎扩充件",
"createindustry.ponder.small_engines.header": "组装小型引擎",
"createindustry.ponder.coke_oven.header": "搭建焦炉",
"createindustry.ponder.blast_furnace.header": "搭建高炉",
"createindustry.ponder.casting.header": "铸造金属",
"createindustry.ponder.tag.oil": "原油相关器械",
"createindustry.ponder.tag.metallurgy": "金属加工器械",
"createindustry.ponder.tag.oil.description": "这些组件与原油及其副产品的生产,处理和运用有关",
"createindustry.ponder.tag.metallurgy.description": "用于生产和处理金属及金属原料的组件",
"_": "Thank you for translating Create: The Factory Must Grow!"
}

View File

@@ -3,7 +3,7 @@
"parent": "block/block",
"textures": {
"12": "createindustry:block/casting_basin",
"particle": "createindustry:block/industrial_iron_block"
"particle": "create:block/industrial_iron_block"
},
"elements": [
{

View File

@@ -4,7 +4,7 @@
"texture_size": [32, 32],
"textures": {
"1": "createindustry:block/casting_spout",
"particle": "createindustry:block/industrial_iron_block"
"particle": "create:block/industrial_iron_block"
},
"elements": [
{

View File

@@ -0,0 +1,94 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/engines/compact",
"particle": "createindustry:block/engines/compact"
},
"elements": [
{
"from": [3, 3, 2],
"to": [13, 13, 14],
"faces": {
"north": {"uv": [0, 5, 2.5, 7.5], "texture": "#0"},
"east": {"uv": [0, 0, 3, 2.5], "texture": "#0"},
"south": {"uv": [0, 5, 2.5, 7.5], "texture": "#0"},
"west": {"uv": [0, 2.5, 3, 5], "texture": "#0"},
"up": {"uv": [5.5, 3, 3, 0], "texture": "#0"},
"down": {"uv": [5.5, 0, 3, 3], "texture": "#0"}
}
},
{
"from": [4, 4, 14],
"to": [12, 12, 15],
"faces": {
"north": {"uv": [8, 0, 10, 2], "texture": "#0"},
"east": {"uv": [12.75, 13, 13, 15], "texture": "#0"},
"south": {"uv": [8, 7.5, 10, 9.5], "texture": "#0"},
"west": {"uv": [10, 13, 10.25, 15], "texture": "#0"},
"up": {"uv": [12.5, 13, 10.5, 12.75], "texture": "#0"},
"down": {"uv": [12.5, 15, 10.5, 15.25], "texture": "#0"}
}
},
{
"from": [0, 6, 3],
"to": [16, 10, 7],
"faces": {
"north": {"uv": [0, 7.5, 4, 8.5], "texture": "#0"},
"east": {"uv": [1, 10.5, 2, 11.5], "texture": "#0"},
"south": {"uv": [0, 7.5, 4, 8.5], "texture": "#0"},
"west": {"uv": [2, 10.5, 3, 11.5], "texture": "#0"},
"up": {"uv": [4, 8.5, 0, 7.5], "texture": "#0"},
"down": {"uv": [4, 7.5, 0, 8.5], "texture": "#0"}
}
},
{
"from": [0, 6, 9],
"to": [16, 10, 13],
"faces": {
"north": {"uv": [0, 7.5, 4, 8.5], "texture": "#0"},
"east": {"uv": [10, 8.25, 11, 9.25], "texture": "#0"},
"south": {"uv": [0, 7.5, 4, 8.5], "texture": "#0"},
"west": {"uv": [9.5, 10.25, 10.5, 11.25], "texture": "#0"},
"up": {"uv": [4, 8.5, 0, 7.5], "texture": "#0"},
"down": {"uv": [4, 7.5, 0, 8.5], "texture": "#0"}
}
},
{
"from": [1, 0, 1],
"to": [5, 4, 15],
"faces": {
"north": {"uv": [10.5, 4, 11.5, 5], "texture": "#0"},
"east": {"uv": [1, 9.5, 4.5, 10.5], "texture": "#0"},
"south": {"uv": [10.5, 4, 11.5, 5], "texture": "#0"},
"west": {"uv": [1, 9.5, 4.5, 10.5], "texture": "#0"},
"up": {"uv": [8, 12, 7, 8.5], "texture": "#0"},
"down": {"uv": [1, 9.5, 0, 13], "texture": "#0"}
}
},
{
"from": [5, 0, 4],
"to": [11, 3, 12],
"faces": {
"north": {"uv": [10, 0.75, 11.5, 1.5], "texture": "#0"},
"east": {"uv": [9.5, 9.5, 11.5, 10.25], "texture": "#0"},
"south": {"uv": [10, 0.75, 11.5, 1.5], "texture": "#0"},
"west": {"uv": [10, 0, 12, 0.75], "texture": "#0"},
"up": {"uv": [7, 11.5, 5.5, 9.5], "texture": "#0"},
"down": {"uv": [9.5, 9.5, 8, 11.5], "texture": "#0"}
}
},
{
"from": [11, 0, 1],
"to": [15, 4, 15],
"faces": {
"north": {"uv": [10.5, 4, 11.5, 5], "texture": "#0"},
"east": {"uv": [1, 9.5, 4.5, 10.5], "texture": "#0"},
"south": {"uv": [10.5, 4, 11.5, 5], "texture": "#0"},
"west": {"uv": [1, 9.5, 4.5, 10.5], "texture": "#0"},
"up": {"uv": [8, 15.5, 7, 12], "texture": "#0"},
"down": {"uv": [5.5, 9.5, 4.5, 13], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,108 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/engines/compact",
"particle": "createindustry:block/engines/compact",
"1_0": "create:block/axis"
},
"elements": [
{
"from": [3, 3, 2],
"to": [13, 13, 14],
"faces": {
"north": {"uv": [0, 5, 2.5, 7.5], "texture": "#0"},
"east": {"uv": [0, 0, 3, 2.5], "texture": "#0"},
"south": {"uv": [0, 5, 2.5, 7.5], "texture": "#0"},
"west": {"uv": [0, 2.5, 3, 5], "texture": "#0"},
"up": {"uv": [5.5, 3, 3, 0], "texture": "#0"},
"down": {"uv": [5.5, 0, 3, 3], "texture": "#0"}
}
},
{
"from": [4, 4, 14],
"to": [12, 12, 15],
"faces": {
"north": {"uv": [8, 0, 10, 2], "texture": "#0"},
"east": {"uv": [12.75, 13, 13, 15], "texture": "#0"},
"south": {"uv": [8, 7.5, 10, 9.5], "texture": "#0"},
"west": {"uv": [10, 13, 10.25, 15], "texture": "#0"},
"up": {"uv": [12.5, 13, 10.5, 12.75], "texture": "#0"},
"down": {"uv": [12.5, 15, 10.5, 15.25], "texture": "#0"}
}
},
{
"from": [0, 6, 3],
"to": [16, 10, 7],
"faces": {
"north": {"uv": [0, 7.5, 4, 8.5], "texture": "#0"},
"east": {"uv": [1, 10.5, 2, 11.5], "texture": "#0"},
"south": {"uv": [0, 7.5, 4, 8.5], "texture": "#0"},
"west": {"uv": [2, 10.5, 3, 11.5], "texture": "#0"},
"up": {"uv": [4, 8.5, 0, 7.5], "texture": "#0"},
"down": {"uv": [4, 7.5, 0, 8.5], "texture": "#0"}
}
},
{
"from": [0, 6, 9],
"to": [16, 10, 13],
"faces": {
"north": {"uv": [0, 7.5, 4, 8.5], "texture": "#0"},
"east": {"uv": [10, 8.25, 11, 9.25], "texture": "#0"},
"south": {"uv": [0, 7.5, 4, 8.5], "texture": "#0"},
"west": {"uv": [9.5, 10.25, 10.5, 11.25], "texture": "#0"},
"up": {"uv": [4, 8.5, 0, 7.5], "texture": "#0"},
"down": {"uv": [4, 7.5, 0, 8.5], "texture": "#0"}
}
},
{
"from": [1, 0, 1],
"to": [5, 4, 15],
"faces": {
"north": {"uv": [10.5, 4, 11.5, 5], "texture": "#0"},
"east": {"uv": [1, 9.5, 4.5, 10.5], "texture": "#0"},
"south": {"uv": [10.5, 4, 11.5, 5], "texture": "#0"},
"west": {"uv": [1, 9.5, 4.5, 10.5], "texture": "#0"},
"up": {"uv": [8, 12, 7, 8.5], "texture": "#0"},
"down": {"uv": [1, 9.5, 0, 13], "texture": "#0"}
}
},
{
"from": [5, 0, 4],
"to": [11, 3, 12],
"faces": {
"north": {"uv": [10, 0.75, 11.5, 1.5], "texture": "#0"},
"east": {"uv": [9.5, 9.5, 11.5, 10.25], "texture": "#0"},
"south": {"uv": [10, 0.75, 11.5, 1.5], "texture": "#0"},
"west": {"uv": [10, 0, 12, 0.75], "texture": "#0"},
"up": {"uv": [7, 11.5, 5.5, 9.5], "texture": "#0"},
"down": {"uv": [9.5, 9.5, 8, 11.5], "texture": "#0"}
}
},
{
"from": [11, 0, 1],
"to": [15, 4, 15],
"faces": {
"north": {"uv": [10.5, 4, 11.5, 5], "texture": "#0"},
"east": {"uv": [1, 9.5, 4.5, 10.5], "texture": "#0"},
"south": {"uv": [10.5, 4, 11.5, 5], "texture": "#0"},
"west": {"uv": [1, 9.5, 4.5, 10.5], "texture": "#0"},
"up": {"uv": [8, 15.5, 7, 12], "texture": "#0"},
"down": {"uv": [5.5, 9.5, 4.5, 13], "texture": "#0"}
}
},
{
"name": "Axis",
"from": [6, 6, 0],
"to": [10, 10, 10],
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_0"},
"east": {"uv": [6, 0, 10, 10], "rotation": 270, "texture": "#1_0"},
"west": {"uv": [6, 0, 10, 10], "rotation": 90, "texture": "#1_0"},
"up": {"uv": [6, 0, 10, 10], "rotation": 180, "texture": "#1_0"},
"down": {"uv": [6, 0, 10, 10], "texture": "#1_0"}
}
}
]
}

View File

@@ -0,0 +1,35 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/large_pumpjack_hammer_part",
"2": "createindustry:block/pumpjack_hammer_connector",
"particle": "createindustry:block/large_pumpjack_hammer_part"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [8, 0, 16, 8], "texture": "#0"},
"east": {"uv": [0, 0, 8, 8], "texture": "#0"},
"south": {"uv": [8, 0.05, 16, 8.05], "texture": "#0"},
"west": {"uv": [0, 0.05, 8, 8.05], "texture": "#0"},
"up": {"uv": [8, 8, 16, 16], "texture": "#0"},
"down": {"uv": [8, 8, 16, 16], "texture": "#0"}
}
},
{
"from": [-1, 6, 6],
"to": [17, 10, 10],
"faces": {
"north": {"uv": [0, 9, 9, 11], "texture": "#2"},
"east": {"uv": [0, 12, 2, 14], "texture": "#2"},
"south": {"uv": [0, 9, 9, 11], "texture": "#2"},
"west": {"uv": [0, 12, 2, 14], "texture": "#2"},
"up": {"uv": [0, 9, 9, 11], "texture": "#2"},
"down": {"uv": [0, 9, 9, 11], "texture": "#2"}
}
}
]
}

View File

@@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/large_pumpjack_hammer_head",
"particle": "createindustry:block/large_pumpjack_hammer_head"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 8, 8, 16], "texture": "#0"},
"east": {"uv": [8, 0, 16, 8], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 8, 8, 16], "rotation": 180, "texture": "#0"},
"west": {"uv": [8, 0, 16, 8], "rotation": 270, "texture": "#0"},
"up": {"uv": [0, 0, 8, 8], "texture": "#0"},
"down": {"uv": [0, 0, 8, 8], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,34 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/large_pumpjack_hammer_part",
"particle": "createindustry:block/large_pumpjack_hammer_part"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [8, 0, 16, 8], "texture": "#0"},
"east": {"uv": [0, 0, 8, 8], "texture": "#0"},
"south": {"uv": [8, 0.05, 16, 8.05], "texture": "#0"},
"west": {"uv": [0, 0.05, 8, 8.05], "texture": "#0"},
"up": {"uv": [8, 8, 16, 16], "texture": "#0"},
"down": {"uv": [8, 8, 16, 16], "texture": "#0"}
}
},
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [8, 0, 16, 8], "texture": "#0"},
"east": {"uv": [0, 0, 8, 8], "texture": "#0"},
"south": {"uv": [8, 0.05, 16, 8.05], "texture": "#0"},
"west": {"uv": [0, 0.05, 8, 8.05], "texture": "#0"},
"up": {"uv": [8, 8, 16, 16], "texture": "#0"},
"down": {"uv": [8, 8, 16, 16], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,139 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [128, 128],
"textures": {
"0": "createindustry:block/large_radial_engine",
"particle": "createindustry:block/large_radial_engine"
},
"elements": [
{
"from": [-3, -3, 3],
"to": [19, 19, 13],
"faces": {
"north": {"uv": [0, 0, 5.5, 5.5], "texture": "#0"},
"east": {"uv": [7, 4, 9.5, 9.5], "texture": "#0"},
"south": {"uv": [0, 0, 5.5, 5.5], "texture": "#0"},
"west": {"uv": [7, 4, 9.5, 9.5], "texture": "#0"},
"up": {"uv": [7, 4, 9.5, 9.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [7, 4, 9.5, 9.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [0, 0, 2],
"to": [16, 16, 14],
"faces": {
"north": {"uv": [0, 5.5, 4, 9.5], "texture": "#0"},
"east": {"uv": [4, 5.5, 7, 9.5], "texture": "#0"},
"south": {"uv": [0, 5.5, 4, 9.5], "texture": "#0"},
"west": {"uv": [4, 5.5, 7, 9.5], "texture": "#0"},
"up": {"uv": [4, 5.5, 7, 9.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [4, 5.5, 7, 9.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-12, 5, 5],
"to": [28, 11, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 2, 15.5, 3.5], "texture": "#0"},
"east": {"uv": [15, 7, 13.5, 5.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [15, 5.5, 13.5, 7], "rotation": 90, "texture": "#0"},
"up": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"},
"down": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [5, -12, 5],
"to": [11, 28, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"east": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"south": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"west": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"up": {"uv": [15, 5.5, 13.5, 7], "rotation": 180, "texture": "#0"},
"down": {"uv": [15, 7, 13.5, 5.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [-12, 5, 5],
"to": [28, 11, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 2, 15.5, 3.5], "texture": "#0"},
"east": {"uv": [15, 7, 13.5, 5.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [15, 5.5, 13.5, 7], "rotation": 90, "texture": "#0"},
"up": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"},
"down": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [5, -12, 5],
"to": [11, 28, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"east": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"south": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"west": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"up": {"uv": [15, 5.5, 13.5, 7], "rotation": 180, "texture": "#0"},
"down": {"uv": [15, 7, 13.5, 5.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [4, -12, 4],
"to": [12, 28, 12],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"east": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"west": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"up": {"uv": [15.5, 5.5, 13.5, 3.5], "texture": "#0"},
"down": {"uv": [15.5, 3.5, 13.5, 5.5], "texture": "#0"}
}
},
{
"from": [-12, 4, 4],
"to": [28, 12, 12],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 0, 15.5, 2], "texture": "#0"},
"east": {"uv": [15.5, 5.5, 13.5, 3.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 0, 15.5, 2], "rotation": 180, "texture": "#0"},
"west": {"uv": [15.5, 3.5, 13.5, 5.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [5.5, 0, 15.5, 2], "rotation": 180, "texture": "#0"},
"down": {"uv": [5.5, 0, 15.5, 2], "rotation": 180, "texture": "#0"}
}
},
{
"from": [4, -12, 4],
"to": [12, 28, 12],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"east": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"west": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"up": {"uv": [15.5, 5.5, 13.5, 3.5], "texture": "#0"},
"down": {"uv": [15.5, 3.5, 13.5, 5.5], "texture": "#0"}
}
},
{
"from": [-12, 4, 4],
"to": [28, 12, 12],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 0, 15.5, 2], "texture": "#0"},
"east": {"uv": [13.5, 3.5, 15.5, 5.5], "texture": "#0"},
"south": {"uv": [5.5, 0, 15.5, 2], "texture": "#0"},
"west": {"uv": [13.5, 3.5, 15.5, 5.5], "texture": "#0"},
"up": {"uv": [15.5, 2, 5.5, 0], "texture": "#0"},
"down": {"uv": [15.5, 0, 5.5, 2], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,159 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [64, 64],
"textures": {
"0": "createindustry:block/large_radial_engine",
"particle": "createindustry:block/large_radial_engine"
},
"elements": [
{
"from": [-3, -3, 3],
"to": [19, 19, 13],
"faces": {
"north": {"uv": [0, 0, 5.5, 5.5], "texture": "#0"},
"east": {"uv": [7, 4, 9.5, 9.5], "texture": "#0"},
"south": {"uv": [0, 0, 5.5, 5.5], "texture": "#0"},
"west": {"uv": [7, 4, 9.5, 9.5], "texture": "#0"},
"up": {"uv": [7, 4, 9.5, 9.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [7, 4, 9.5, 9.5], "rotation": 90, "texture": "#0"}
}
},
{
"name": "shaft",
"from": [6, 6, 0],
"to": [10, 10, 16],
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [6, 11.25, 7, 12.25], "texture": "#0"},
"east": {"uv": [2, 11, 3, 15], "rotation": 90, "texture": "#0"},
"south": {"uv": [6, 11.25, 7, 12.25], "texture": "#0"},
"west": {"uv": [2, 11, 3, 15], "rotation": 90, "texture": "#0"},
"up": {"uv": [3, 15, 2, 11], "texture": "#0"},
"down": {"uv": [3, 11, 2, 15], "texture": "#0"}
}
},
{
"from": [0, 0, 2],
"to": [16, 16, 14],
"faces": {
"north": {"uv": [0, 5.5, 4, 9.5], "texture": "#0"},
"east": {"uv": [4, 5.5, 7, 9.5], "texture": "#0"},
"south": {"uv": [0, 5.5, 4, 9.5], "texture": "#0"},
"west": {"uv": [4, 5.5, 7, 9.5], "texture": "#0"},
"up": {"uv": [4, 5.5, 7, 9.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [4, 5.5, 7, 9.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-12, 5, 5],
"to": [28, 11, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 2, 15.5, 3.5], "texture": "#0"},
"east": {"uv": [15, 7, 13.5, 5.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [15, 5.5, 13.5, 7], "rotation": 90, "texture": "#0"},
"up": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"},
"down": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [5, -12, 5],
"to": [11, 28, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"east": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"south": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"west": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"up": {"uv": [15, 5.5, 13.5, 7], "rotation": 180, "texture": "#0"},
"down": {"uv": [15, 7, 13.5, 5.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [-12, 5, 5],
"to": [28, 11, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 2, 15.5, 3.5], "texture": "#0"},
"east": {"uv": [15, 7, 13.5, 5.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"},
"west": {"uv": [15, 5.5, 13.5, 7], "rotation": 90, "texture": "#0"},
"up": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"},
"down": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [5, -12, 5],
"to": [11, 28, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"east": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"south": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"west": {"uv": [5.5, 2, 15.5, 3.5], "rotation": 270, "texture": "#0"},
"up": {"uv": [15, 5.5, 13.5, 7], "rotation": 180, "texture": "#0"},
"down": {"uv": [15, 7, 13.5, 5.5], "rotation": 180, "texture": "#0"}
}
},
{
"from": [4, -12, 4],
"to": [12, 28, 12],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"east": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"west": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"up": {"uv": [15.5, 5.5, 13.5, 3.5], "texture": "#0"},
"down": {"uv": [15.5, 3.5, 13.5, 5.5], "texture": "#0"}
}
},
{
"from": [-12, 4, 4],
"to": [28, 12, 12],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 0, 15.5, 2], "texture": "#0"},
"east": {"uv": [15.5, 5.5, 13.5, 3.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 0, 15.5, 2], "rotation": 180, "texture": "#0"},
"west": {"uv": [15.5, 3.5, 13.5, 5.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [5.5, 0, 15.5, 2], "rotation": 180, "texture": "#0"},
"down": {"uv": [5.5, 0, 15.5, 2], "rotation": 180, "texture": "#0"}
}
},
{
"from": [4, -12, 4],
"to": [12, 28, 12],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"east": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"west": {"uv": [5.5, 0, 15.5, 2], "rotation": 90, "texture": "#0"},
"up": {"uv": [15.5, 5.5, 13.5, 3.5], "texture": "#0"},
"down": {"uv": [15.5, 3.5, 13.5, 5.5], "texture": "#0"}
}
},
{
"from": [-12, 4, 4],
"to": [28, 12, 12],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [5.5, 0, 15.5, 2], "texture": "#0"},
"east": {"uv": [13.5, 3.5, 15.5, 5.5], "texture": "#0"},
"south": {"uv": [5.5, 0, 15.5, 2], "texture": "#0"},
"west": {"uv": [13.5, 3.5, 15.5, 5.5], "texture": "#0"},
"up": {"uv": [15.5, 2, 5.5, 0], "texture": "#0"},
"down": {"uv": [15.5, 0, 5.5, 2], "texture": "#0"}
}
}
],
"display": {
"gui": {
"rotation": [36, 41, 0],
"scale": [0.4, 0.4, 0.4]
}
}
}

View File

@@ -1,34 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "minecraft:block/block",
"textures": {
"0": "createindustry:block/pumpjack_base",
"particle": "createindustry:block/pumpjack_base"
},
"elements": [
{
"from": [3, 0, 3],
"to": [13, 14, 13],
"faces": {
"north": {"uv": [0, 2, 5, 9], "texture": "#0"},
"east": {"uv": [0, 2, 5, 9], "texture": "#0"},
"south": {"uv": [0, 2, 5, 9], "texture": "#0"},
"west": {"uv": [0, 2, 5, 9], "texture": "#0"},
"up": {"uv": [10.5, 0, 14, 4], "texture": "#0"},
"down": {"uv": [0, 11, 5, 16], "texture": "#0"}
}
},
{
"from": [2, 14, 2],
"to": [14, 16, 14],
"faces": {
"north": {"uv": [10, 0, 16, 1], "texture": "#0"},
"east": {"uv": [10, 0, 16, 1], "texture": "#0"},
"south": {"uv": [10, 0, 16, 1], "texture": "#0"},
"west": {"uv": [10, 0, 16, 1], "texture": "#0"},
"up": {"uv": [10, 0, 16, 6], "texture": "#0"},
"down": {"uv": [10, 0, 16, 6], "texture": "#0"}
}
}
]
}

View File

@@ -1,6 +1,7 @@
{
"credit": "Made with Blockbench",
"parent": "minecraft:block/block",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"0": "createindustry:block/pumpjack_crank",
"1": "createindustry:block/heavy_machinery_casing",
@@ -8,158 +9,100 @@
},
"elements": [
{
"from": [-2, 2, 6],
"to": [18, 6, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"from": [0, 0, 0],
"to": [16, 14, 16],
"faces": {
"north": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"},
"east": {"uv": [2.5, 12.5, 4.5, 14.5], "texture": "#0"},
"south": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"},
"west": {"uv": [2.5, 12.5, 4.5, 14.5], "texture": "#0"},
"up": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"},
"down": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"}
"north": {"uv": [0, 9, 8, 16], "texture": "#0"},
"east": {"uv": [0, 0, 8, 7], "texture": "#0"},
"south": {"uv": [0, 9, 8, 16], "texture": "#0"},
"west": {"uv": [0, 0, 8, 7], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#1"}
}
},
{
"from": [-3, 13, 2],
"to": [0, 14, 14],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"from": [0, 6, 6],
"to": [16, 10, 10],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2.5, 11.5, 4, 12], "texture": "#0"},
"east": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"},
"south": {"uv": [2.5, 11.5, 4, 12], "texture": "#0"},
"west": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"},
"up": {"uv": [0.5, 9, 6.5, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 3, 12], "texture": "#0"}
}
},
{
"from": [-2, 6, 6],
"to": [0, 9, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"},
"east": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"},
"south": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"},
"west": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"},
"up": {"uv": [0, 0, 2, 4], "texture": "#0"},
"down": {"uv": [0, 0, 2, 4], "texture": "#0"}
"north": {"uv": [8.5, 3.5, 10.5, 11.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [8.5, 4.5, 10.5, 10.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [8.5, 4.5, 10.5, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [8.5, 4.5, 10.5, 10.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-2, 0, 6],
"to": [0, 2, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"to": [0, 17, 10],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"},
"east": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"},
"south": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"},
"west": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"},
"up": {"uv": [0, 0, 2, 4], "texture": "#0"},
"down": {"uv": [2.5, 11.5, 4.5, 12.5], "rotation": 90, "texture": "#0"}
"north": {"uv": [12, 2.5, 13, 11], "texture": "#0"},
"east": {"uv": [11.5, 2.5, 13.5, 11], "texture": "#0"},
"south": {"uv": [12, 2.5, 13, 11], "texture": "#0"},
"west": {"uv": [11.5, 2.5, 13.5, 11], "texture": "#0"},
"down": {"uv": [12, 3, 13, 5], "texture": "#0"}
}
},
{
"from": [16, 14, 6],
"to": [18, 16, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"from": [-3, 17, 1],
"to": [0, 21, 15],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"},
"east": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"},
"west": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"},
"up": {"uv": [2.5, 11, 4.5, 12.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"}
}
},
{
"from": [16, 13, 2],
"to": [19, 14, 14],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [3, 11.5, 4.5, 12], "texture": "#0"},
"east": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"},
"south": {"uv": [3, 11.5, 4.5, 12], "texture": "#0"},
"west": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"},
"up": {"uv": [0.5, 9, 6.5, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 3, 12], "rotation": 180, "texture": "#0"}
}
},
{
"from": [16, 9, 1],
"to": [19, 13, 15],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"},
"east": {"uv": [0, 9, 7, 11], "texture": "#0"},
"south": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"},
"west": {"uv": [0, 9, 7, 11], "texture": "#0"},
"up": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [16, 6, 6],
"to": [18, 9, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"},
"east": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"},
"south": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"},
"west": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"},
"up": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"}
"north": {"uv": [14, 6, 15.5, 8], "texture": "#0"},
"east": {"uv": [9, 0.5, 16, 2.5], "texture": "#0"},
"south": {"uv": [14, 6, 15.5, 8], "texture": "#0"},
"west": {"uv": [9, 0.5, 16, 2.5], "texture": "#0"},
"up": {"uv": [14, 2.5, 15.5, 9.5], "texture": "#0"},
"down": {"uv": [14, 2.5, 15.5, 9.5], "texture": "#0"}
}
},
{
"from": [16, 0, 6],
"to": [18, 2, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"to": [18, 17, 10],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"},
"east": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"},
"south": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"},
"west": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"},
"up": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"},
"down": {"uv": [2.5, 11.5, 4.5, 12.5], "rotation": 90, "texture": "#0"}
"north": {"uv": [12, 2.5, 13, 11], "texture": "#0"},
"east": {"uv": [11.5, 2.5, 13.5, 11], "texture": "#0"},
"south": {"uv": [12, 2.5, 13, 11], "texture": "#0"},
"west": {"uv": [11.5, 2.5, 13.5, 11], "texture": "#0"},
"down": {"uv": [12, 3, 13, 5], "texture": "#0"}
}
},
{
"from": [-2, 14, 6],
"to": [0, 16, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"from": [16, 17, 1],
"to": [19, 21, 15],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"},
"east": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"},
"west": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"},
"up": {"uv": [2.5, 11, 4.5, 12.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 2, 4], "texture": "#0"}
"north": {"uv": [14, 6, 15.5, 8], "texture": "#0"},
"east": {"uv": [9, 0.5, 16, 2.5], "texture": "#0"},
"south": {"uv": [14, 6, 15.5, 8], "texture": "#0"},
"west": {"uv": [9, 0.5, 16, 2.5], "texture": "#0"},
"up": {"uv": [14, 2.5, 15.5, 9.5], "texture": "#0"},
"down": {"uv": [14, 2.5, 15.5, 9.5], "texture": "#0"}
}
},
{
"from": [-3, 9, 1],
"to": [0, 13, 15],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"from": [16, 21, 2],
"to": [19, 22, 14],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"},
"east": {"uv": [0, 9, 7, 11], "texture": "#0"},
"south": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"},
"west": {"uv": [0, 9, 7, 11], "texture": "#0"},
"up": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"}
"north": {"uv": [14, 5.5, 14.5, 7], "texture": "#0"},
"east": {"uv": [9.5, 0, 15.5, 0.5], "texture": "#0"},
"south": {"uv": [14, 5.5, 14.5, 7], "texture": "#0"},
"west": {"uv": [9.5, 0, 15.5, 0.5], "texture": "#0"},
"up": {"uv": [14, 3, 15.5, 9], "texture": "#0"}
}
},
{
"from": [0, 0, 0],
"to": [16, 8, 16],
"from": [-3, 21, 2],
"to": [0, 22, 14],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 8, 8]},
"faces": {
"north": {"uv": [0, 4, 8, 8], "texture": "#0"},
"east": {"uv": [0, 0, 8, 4], "texture": "#0"},
"south": {"uv": [0, 4, 8, 8], "texture": "#0"},
"west": {"uv": [0, 0, 8, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#1"}
"north": {"uv": [14, 4.5, 14.5, 6], "texture": "#0"},
"east": {"uv": [9.5, 0, 15.5, 0.5], "texture": "#0"},
"south": {"uv": [14, 4.5, 14.5, 6], "texture": "#0"},
"west": {"uv": [9.5, 0, 15.5, 0.5], "texture": "#0"},
"up": {"uv": [14, 3, 15.5, 9], "texture": "#0"}
}
}
]

View File

@@ -1,3 +1,23 @@
{
"parent": "block/air"
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/pumpjack_crank",
"1": "createindustry:block/heavy_machinery_casing",
"particle": "createindustry:block/pumpjack_crank"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 14, 16],
"faces": {
"north": {"uv": [0, 9, 8, 16], "texture": "#0"},
"east": {"uv": [0, 0, 8, 7], "texture": "#0"},
"south": {"uv": [0, 9, 8, 16], "texture": "#0"},
"west": {"uv": [0, 0, 8, 7], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#1"}
}
}
]
}

View File

@@ -1,35 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/pumpjack_crank",
"1": "createindustry:block/heavy_machinery_casing",
"particle": "createindustry:block/pumpjack_crank"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 8, 16],
"faces": {
"north": {"uv": [0, 4, 8, 8], "texture": "#0"},
"east": {"uv": [0, 0, 8, 4], "texture": "#0"},
"south": {"uv": [0, 4, 8, 8], "texture": "#0"},
"west": {"uv": [0, 0, 8, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#1"}
}
},
{
"from": [7, 8.01, 1],
"to": [9, 8.01, 2],
"faces": {
"north": {"uv": [0, 0, 4, 0], "texture": "#missing"},
"east": {"uv": [0, 0, 2, 0], "texture": "#missing"},
"south": {"uv": [0, 0, 4, 0], "texture": "#0"},
"west": {"uv": [0, 0, 2, 0], "texture": "#missing"},
"up": {"uv": [9.5, 3, 10.5, 3.5], "texture": "#0"},
"down": {"uv": [0, 0, 4, 2], "texture": "#missing"}
}
}
]
}

View File

@@ -0,0 +1,88 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "createindustry:block/pumpjack_crank",
"particle": "createindustry:block/pumpjack_crank"
},
"elements": [
{
"from": [0, 6, 6],
"to": [16, 10, 10],
"faces": {
"north": {"uv": [8.5, 3.5, 10.5, 11.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [8.5, 4.5, 10.5, 10.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [8.5, 4.5, 10.5, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [8.5, 4.5, 10.5, 10.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-2, 0, 6],
"to": [0, 17, 10],
"faces": {
"north": {"uv": [12, 2.5, 13, 11], "texture": "#0"},
"east": {"uv": [11.5, 2.5, 13.5, 11], "texture": "#0"},
"south": {"uv": [12, 2.5, 13, 11], "texture": "#0"},
"west": {"uv": [11.5, 2.5, 13.5, 11], "texture": "#0"},
"down": {"uv": [12, 3, 13, 5], "texture": "#0"}
}
},
{
"from": [-3, 17, 1],
"to": [0, 21, 15],
"faces": {
"north": {"uv": [14, 6, 15.5, 8], "texture": "#0"},
"east": {"uv": [9, 0.5, 16, 2.5], "texture": "#0"},
"south": {"uv": [14, 6, 15.5, 8], "texture": "#0"},
"west": {"uv": [9, 0.5, 16, 2.5], "texture": "#0"},
"up": {"uv": [14, 2.5, 15.5, 9.5], "texture": "#0"},
"down": {"uv": [14, 2.5, 15.5, 9.5], "texture": "#0"}
}
},
{
"from": [16, 0, 6],
"to": [18, 17, 10],
"faces": {
"north": {"uv": [12, 2.5, 13, 11], "texture": "#0"},
"east": {"uv": [11.5, 2.5, 13.5, 11], "texture": "#0"},
"south": {"uv": [12, 2.5, 13, 11], "texture": "#0"},
"west": {"uv": [11.5, 2.5, 13.5, 11], "texture": "#0"},
"down": {"uv": [12, 3, 13, 5], "texture": "#0"}
}
},
{
"from": [16, 17, 1],
"to": [19, 21, 15],
"faces": {
"north": {"uv": [14, 6, 15.5, 8], "texture": "#0"},
"east": {"uv": [9, 0.5, 16, 2.5], "texture": "#0"},
"south": {"uv": [14, 6, 15.5, 8], "texture": "#0"},
"west": {"uv": [9, 0.5, 16, 2.5], "texture": "#0"},
"up": {"uv": [14, 2.5, 15.5, 9.5], "texture": "#0"},
"down": {"uv": [14, 2.5, 15.5, 9.5], "texture": "#0"}
}
},
{
"from": [-3, 21, 2],
"to": [0, 22, 14],
"faces": {
"north": {"uv": [14, 4.5, 14.5, 6], "texture": "#0"},
"east": {"uv": [9.5, 0, 15.5, 0.5], "texture": "#0"},
"south": {"uv": [14, 4.5, 14.5, 6], "texture": "#0"},
"west": {"uv": [9.5, 0, 15.5, 0.5], "texture": "#0"},
"up": {"uv": [14, 3, 15.5, 9], "texture": "#0"}
}
},
{
"from": [16, 21, 2],
"to": [19, 22, 14],
"faces": {
"north": {"uv": [14, 5.5, 14.5, 7], "texture": "#0"},
"east": {"uv": [9.5, 0, 15.5, 0.5], "texture": "#0"},
"south": {"uv": [14, 5.5, 14.5, 7], "texture": "#0"},
"west": {"uv": [9.5, 0, 15.5, 0.5], "texture": "#0"},
"up": {"uv": [14, 3, 15.5, 9], "texture": "#0"}
}
}
]
}

View File

@@ -1,166 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "minecraft:block/block",
"textures": {
"0": "createindustry:block/pumpjack_crank",
"1": "createindustry:block/heavy_machinery_casing",
"particle": "createindustry:block/pumpjack_crank"
},
"elements": [
{
"from": [-2, 2, 6],
"to": [18, 6, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"},
"east": {"uv": [2.5, 12.5, 4.5, 14.5], "texture": "#0"},
"south": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"},
"west": {"uv": [2.5, 12.5, 4.5, 14.5], "texture": "#0"},
"up": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"},
"down": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-3, 13, 2],
"to": [0, 14, 14],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 11.5, 4, 12], "texture": "#0"},
"east": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"},
"south": {"uv": [2.5, 11.5, 4, 12], "texture": "#0"},
"west": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"},
"up": {"uv": [0.5, 9, 6.5, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 3, 12], "texture": "#0"}
}
},
{
"from": [-2, 6, 6],
"to": [0, 9, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"},
"east": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"},
"south": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"},
"west": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"},
"up": {"uv": [0, 0, 2, 4], "texture": "#0"},
"down": {"uv": [0, 0, 2, 4], "texture": "#0"}
}
},
{
"from": [-2, 0, 6],
"to": [0, 2, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"},
"east": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"},
"south": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"},
"west": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"},
"up": {"uv": [0, 0, 2, 4], "texture": "#0"},
"down": {"uv": [2.5, 11.5, 4.5, 12.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [16, 14, 6],
"to": [18, 16, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"},
"east": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"},
"west": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"},
"up": {"uv": [2.5, 11, 4.5, 12.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"}
}
},
{
"from": [16, 13, 2],
"to": [19, 14, 14],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [3, 11.5, 4.5, 12], "texture": "#0"},
"east": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"},
"south": {"uv": [3, 11.5, 4.5, 12], "texture": "#0"},
"west": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"},
"up": {"uv": [0.5, 9, 6.5, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 3, 12], "rotation": 180, "texture": "#0"}
}
},
{
"from": [16, 9, 1],
"to": [19, 13, 15],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"},
"east": {"uv": [0, 9, 7, 11], "texture": "#0"},
"south": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"},
"west": {"uv": [0, 9, 7, 11], "texture": "#0"},
"up": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [16, 6, 6],
"to": [18, 9, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"},
"east": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"},
"south": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"},
"west": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"},
"up": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"}
}
},
{
"from": [16, 0, 6],
"to": [18, 2, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"},
"east": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"},
"south": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"},
"west": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"},
"up": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"},
"down": {"uv": [2.5, 11.5, 4.5, 12.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [-2, 14, 6],
"to": [0, 16, 10],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"},
"east": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"},
"south": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"},
"west": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"},
"up": {"uv": [2.5, 11, 4.5, 12.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 2, 4], "texture": "#0"}
}
},
{
"from": [-3, 9, 1],
"to": [0, 13, 15],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]},
"faces": {
"north": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"},
"east": {"uv": [0, 9, 7, 11], "texture": "#0"},
"south": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"},
"west": {"uv": [0, 9, 7, 11], "texture": "#0"},
"up": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"}
}
},
{
"from": [0, 0, 0],
"to": [16, 8, 16],
"faces": {
"north": {"uv": [0, 4, 8, 8], "texture": "#0"},
"east": {"uv": [0, 0, 8, 4], "texture": "#0"},
"south": {"uv": [0, 4, 8, 8], "texture": "#0"},
"west": {"uv": [0, 0, 8, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,143 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [128, 128],
"textures": {
"0": "createindustry:block/modular_pumpjack",
"particle": "createindustry:block/modular_pumpjack"
},
"elements": [
{
"from": [0, 7, 2],
"to": [2, 9, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#0"},
"east": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 0, 0], "texture": "#0"},
"west": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [2.25, 1.5, 2, 0], "texture": "#0"},
"down": {"uv": [2.25, 0, 2, 1.5], "texture": "#0"}
}
},
{
"from": [14, 7, 2],
"to": [16, 9, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#0"},
"east": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 0, 0], "texture": "#0"},
"west": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [2.25, 1.5, 2, 0], "texture": "#0"},
"down": {"uv": [2.25, 0, 2, 1.5], "texture": "#0"}
}
},
{
"from": [15, 0, 2],
"to": [15, 7, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
"east": {"uv": [0, 4, 1.5, 4.875], "texture": "#0"},
"south": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
"west": {"uv": [0, 4, 1.5, 4.875], "texture": "#0"},
"up": {"uv": [0, 1.5, 0, 0], "texture": "#0"},
"down": {"uv": [0, 0, 0, 1.5], "texture": "#0"}
}
},
{
"from": [2, 0, 1],
"to": [14, 32, 1],
"faces": {
"north": {"uv": [0, 0, 1.5, 4], "texture": "#0"},
"east": {"uv": [0, 0, 0, 4], "texture": "#0"},
"south": {"uv": [0, 0, 1.5, 4], "texture": "#0"},
"west": {"uv": [0, 0, 0, 4], "texture": "#0"},
"up": {"uv": [1.5, 0, 0, 0], "texture": "#0"},
"down": {"uv": [1.5, 0, 0, 0], "texture": "#0"}
}
},
{
"from": [14, 0, 0],
"to": [16, 32, 2],
"faces": {
"north": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"east": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"south": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"west": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#0"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#0"}
}
},
{
"from": [0, 0, 0],
"to": [2, 32, 2],
"faces": {
"north": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"east": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"south": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"west": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#0"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#0"}
}
},
{
"from": [1, 0, 2],
"to": [1, 7, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
"east": {"uv": [0, 4, 1.5, 4.875], "texture": "#0"},
"south": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
"west": {"uv": [0, 4, 1.5, 4.875], "texture": "#0"},
"up": {"uv": [0, 1.5, 0, 0], "texture": "#0"},
"down": {"uv": [0, 0, 0, 1.5], "texture": "#0"}
}
},
{
"from": [0, 0, 14],
"to": [2, 32, 16],
"faces": {
"north": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"east": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"south": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"west": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#0"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#0"}
}
},
{
"from": [2, 0, 15],
"to": [14, 32, 15],
"faces": {
"north": {"uv": [0, 0, 1.5, 4], "texture": "#0"},
"east": {"uv": [0, 0, 0, 4], "texture": "#0"},
"south": {"uv": [0, 0, 1.5, 4], "texture": "#0"},
"west": {"uv": [0, 0, 0, 4], "texture": "#0"},
"up": {"uv": [1.5, 0, 0, 0], "texture": "#0"},
"down": {"uv": [1.5, 0, 0, 0], "texture": "#0"}
}
},
{
"from": [14, 0, 14],
"to": [16, 32, 16],
"faces": {
"north": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"east": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"south": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"west": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#0"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#0"}
}
},
{
"from": [6, 22, -3],
"to": [10, 26, 19],
"faces": {
"north": {"uv": [2.375, 2.375, 2.875, 2.875], "texture": "#0"},
"east": {"uv": [2.375, 0, 2.875, 2.25], "rotation": 90, "texture": "#0"},
"south": {"uv": [2.375, 2.375, 2.875, 2.875], "texture": "#0"},
"west": {"uv": [2.375, 0, 2.875, 2.25], "rotation": 90, "texture": "#0"},
"up": {"uv": [2.875, 2.25, 2.375, 0], "texture": "#0"},
"down": {"uv": [2.875, 0, 2.375, 2.25], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,211 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [128, 128],
"textures": {
"1": "createindustry:block/modular_pumpjack",
"particle": "createindustry:block/modular_pumpjack"
},
"elements": [
{
"from": [0, 7, -2],
"to": [2, 32, 0],
"faces": {
"north": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"east": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"south": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"west": {"uv": [1.875, 0.875, 1.625, 4], "texture": "#1"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#1"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#1"}
}
},
{
"from": [0, 7, 16],
"to": [2, 32, 18],
"faces": {
"north": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"east": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"south": {"uv": [1.875, 0.875, 1.625, 4], "texture": "#1"},
"west": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#1"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#1"}
}
},
{
"from": [14, 0, 0],
"to": [16, 11, 2],
"faces": {
"north": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"east": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"south": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"west": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#1"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#1"}
}
},
{
"from": [2, 0, 1],
"to": [14, 11, 1],
"faces": {
"north": {"uv": [0, 2.625, 1.5, 4], "texture": "#1"},
"east": {"uv": [0, 0, 0, 4], "texture": "#1"},
"south": {"uv": [0, 0, 1.5, 4], "texture": "#1"},
"west": {"uv": [0, 0, 0, 4], "texture": "#1"},
"up": {"uv": [1.5, 0, 0, 0], "texture": "#1"},
"down": {"uv": [1.5, 0, 0, 0], "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [2, 11, 2],
"faces": {
"north": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"east": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"south": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"west": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#1"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#1"}
}
},
{
"from": [14, 0, 14],
"to": [16, 11, 16],
"faces": {
"north": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"east": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"south": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"west": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#1"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#1"}
}
},
{
"from": [2, 0, 15],
"to": [14, 11, 15],
"faces": {
"north": {"uv": [0, 0, 1.5, 4], "texture": "#1"},
"east": {"uv": [0, 0, 0, 4], "texture": "#1"},
"south": {"uv": [0, 0, 1.5, 4], "texture": "#1"},
"west": {"uv": [0, 0, 0, 4], "texture": "#1"},
"up": {"uv": [1.5, 0, 0, 0], "texture": "#1"},
"down": {"uv": [1.5, 0, 0, 0], "texture": "#1"}
}
},
{
"from": [0, 0, 14],
"to": [2, 11, 16],
"faces": {
"north": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"east": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"south": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"west": {"uv": [1.625, 0.625, 1.875, 2], "texture": "#1"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#1"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#1"}
}
},
{
"from": [0, 7, 2],
"to": [2, 9, 14],
"faces": {
"east": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#1"},
"west": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#1"},
"up": {"uv": [2.25, 1.5, 2, 0], "texture": "#1"},
"down": {"uv": [2.25, 0, 2, 1.5], "texture": "#1"}
}
},
{
"from": [14, 7, 2],
"to": [16, 9, 14],
"faces": {
"east": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#1"},
"west": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#1"},
"up": {"uv": [2.25, 1.5, 2, 0], "texture": "#1"},
"down": {"uv": [2.25, 0, 2, 1.5], "texture": "#1"}
}
},
{
"from": [14, 7, -2],
"to": [16, 32, 0],
"faces": {
"north": {"uv": [1.875, 0.875, 1.625, 4], "texture": "#1"},
"east": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"south": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"west": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#1"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#1"}
}
},
{
"from": [14, 7, 16],
"to": [16, 32, 18],
"faces": {
"north": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"east": {"uv": [1.875, 0.875, 1.625, 4], "texture": "#1"},
"south": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"west": {"uv": [1.625, 0.875, 1.875, 4], "texture": "#1"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#1"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#1"}
}
},
{
"from": [6, 22, -3],
"to": [10, 26, 19],
"faces": {
"north": {"uv": [2.375, 2.375, 2.875, 2.875], "texture": "#1"},
"east": {"uv": [2.375, 0, 2.875, 2.25], "rotation": 90, "texture": "#1"},
"south": {"uv": [2.375, 2.375, 2.875, 2.875], "texture": "#1"},
"west": {"uv": [2.375, 0, 2.875, 2.25], "rotation": 90, "texture": "#1"},
"up": {"uv": [2.875, 2.25, 2.375, 0], "texture": "#1"},
"down": {"uv": [2.875, 0, 2.375, 2.25], "texture": "#1"}
}
},
{
"from": [1, 0, 2],
"to": [1, 7, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0.875], "texture": "#1"},
"east": {"uv": [0, 4, 1.5, 4.875], "texture": "#1"},
"south": {"uv": [0, 0, 0, 0.875], "texture": "#1"},
"west": {"uv": [0, 4, 1.5, 4.875], "texture": "#1"},
"up": {"uv": [0, 1.5, 0, 0], "texture": "#1"},
"down": {"uv": [0, 0, 0, 1.5], "texture": "#1"}
}
},
{
"from": [15, 0, 2],
"to": [15, 7, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0.875], "texture": "#1"},
"east": {"uv": [0, 4, 1.5, 4.875], "texture": "#1"},
"south": {"uv": [0, 0, 0, 0.875], "texture": "#1"},
"west": {"uv": [0, 4, 1.5, 4.875], "texture": "#1"},
"up": {"uv": [0, 1.5, 0, 0], "texture": "#1"},
"down": {"uv": [0, 0, 0, 1.5], "texture": "#1"}
}
},
{
"from": [2, 7, 17],
"to": [14, 32, 17],
"faces": {
"north": {"uv": [0, 0, 1.5, 4], "texture": "#1"},
"east": {"uv": [0, 0, 0, 4], "texture": "#1"},
"south": {"uv": [0, 0, 1.5, 4], "texture": "#1"},
"west": {"uv": [0, 0, 0, 4], "texture": "#1"},
"up": {"uv": [1.5, 0, 0, 0], "texture": "#1"},
"down": {"uv": [1.5, 0, 0, 0], "texture": "#1"}
}
},
{
"from": [2, 9, -1],
"to": [14, 32, -1],
"faces": {
"north": {"uv": [0, 0, 1.5, 2.875], "texture": "#1"},
"east": {"uv": [0, 0, 0, 4], "texture": "#1"},
"south": {"uv": [0, 0, 1.5, 2.875], "texture": "#1"},
"west": {"uv": [0, 0, 0, 4], "texture": "#1"},
"up": {"uv": [1.5, 0, 0, 0], "texture": "#1"},
"down": {"uv": [1.5, 0, 0, 0], "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,150 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [128, 128],
"textures": {
"0": "createindustry:block/modular_pumpjack",
"particle": "createindustry:block/modular_pumpjack"
},
"elements": [
{
"from": [0, 7, 2],
"to": [2, 9, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#0"},
"east": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 0, 0], "texture": "#0"},
"west": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [2.25, 1.5, 2, 0], "texture": "#0"},
"down": {"uv": [2.25, 0, 2, 1.5], "texture": "#0"}
}
},
{
"from": [14, 7, 2],
"to": [16, 9, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#0"},
"east": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#0"},
"south": {"uv": [0, 0, 0, 0], "texture": "#0"},
"west": {"uv": [2, 0, 2.25, 1.5], "rotation": 90, "texture": "#0"},
"up": {"uv": [2.25, 1.5, 2, 0], "texture": "#0"},
"down": {"uv": [2.25, 0, 2, 1.5], "texture": "#0"}
}
},
{
"from": [15, 0, 2],
"to": [15, 7, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
"east": {"uv": [0, 4, 1.5, 4.875], "texture": "#0"},
"south": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
"west": {"uv": [0, 4, 1.5, 4.875], "texture": "#0"},
"up": {"uv": [0, 1.5, 0, 0], "texture": "#0"},
"down": {"uv": [0, 0, 0, 1.5], "texture": "#0"}
}
},
{
"from": [2, 0, 1],
"to": [14, 32, 1],
"faces": {
"north": {"uv": [0, 0, 1.5, 4], "texture": "#0"},
"east": {"uv": [0, 0, 0, 4], "texture": "#0"},
"south": {"uv": [0, 0, 1.5, 4], "texture": "#0"},
"west": {"uv": [0, 0, 0, 4], "texture": "#0"},
"up": {"uv": [1.5, 0, 0, 0], "texture": "#0"},
"down": {"uv": [1.5, 0, 0, 0], "texture": "#0"}
}
},
{
"from": [14, 0, 0],
"to": [16, 32, 2],
"faces": {
"north": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"east": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"south": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"west": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#0"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#0"}
}
},
{
"from": [0, 0, 0],
"to": [2, 32, 2],
"faces": {
"north": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"east": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"south": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"west": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#0"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#0"}
}
},
{
"from": [1, 0, 2],
"to": [1, 7, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
"east": {"uv": [0, 4, 1.5, 4.875], "texture": "#0"},
"south": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
"west": {"uv": [0, 4, 1.5, 4.875], "texture": "#0"},
"up": {"uv": [0, 1.5, 0, 0], "texture": "#0"},
"down": {"uv": [0, 0, 0, 1.5], "texture": "#0"}
}
},
{
"from": [0, 0, 14],
"to": [2, 32, 16],
"faces": {
"north": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"east": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"south": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"west": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#0"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#0"}
}
},
{
"from": [2, 0, 15],
"to": [14, 32, 15],
"faces": {
"north": {"uv": [0, 0, 1.5, 4], "texture": "#0"},
"east": {"uv": [0, 0, 0, 4], "texture": "#0"},
"south": {"uv": [0, 0, 1.5, 4], "texture": "#0"},
"west": {"uv": [0, 0, 0, 4], "texture": "#0"},
"up": {"uv": [1.5, 0, 0, 0], "texture": "#0"},
"down": {"uv": [1.5, 0, 0, 0], "texture": "#0"}
}
},
{
"from": [14, 0, 14],
"to": [16, 32, 16],
"faces": {
"north": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"east": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"south": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"west": {"uv": [1.625, 0, 1.875, 4], "texture": "#0"},
"up": {"uv": [1.875, 4.375, 1.625, 4.125], "texture": "#0"},
"down": {"uv": [1.875, 4.125, 1.625, 4.375], "texture": "#0"}
}
},
{
"from": [6, 22, -3],
"to": [10, 26, 19],
"faces": {
"north": {"uv": [2.375, 2.375, 2.875, 2.875], "texture": "#0"},
"east": {"uv": [2.375, 0, 2.875, 2.25], "rotation": 90, "texture": "#0"},
"south": {"uv": [2.375, 2.375, 2.875, 2.875], "texture": "#0"},
"west": {"uv": [2.375, 0, 2.875, 2.25], "rotation": 90, "texture": "#0"},
"up": {"uv": [2.875, 2.25, 2.375, 0], "texture": "#0"},
"down": {"uv": [2.875, 0, 2.375, 2.25], "texture": "#0"}
}
}
],
"display": {
"gui": {
"rotation": [24, -45, 0],
"translation": [0, -2.75, 0],
"scale": [0.4, 0.4, 0.4]
}
}
}

View File

@@ -0,0 +1,34 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"1": "createindustry:block/pumpjack_hammer_part",
"particle": "createindustry:block/pumpjack_hammer_part"
},
"elements": [
{
"from": [2, 0, 0],
"to": [14, 16, 16],
"faces": {
"north": {"uv": [9, 0, 15, 8], "texture": "#1"},
"east": {"uv": [0, 0, 8, 8], "texture": "#1"},
"south": {"uv": [9, 0, 15, 8], "texture": "#1"},
"west": {"uv": [0, 0, 8, 8], "texture": "#1"},
"up": {"uv": [9, 8, 15, 16], "texture": "#1"},
"down": {"uv": [9, 8, 15, 16], "texture": "#1"}
}
},
{
"from": [-1, 6, 6],
"to": [17, 10, 10],
"faces": {
"north": {"uv": [0, 9, 8.9375, 11], "texture": "#1"},
"east": {"uv": [0, 12, 2, 14], "texture": "#1"},
"south": {"uv": [0, 9, 9, 11], "texture": "#1"},
"west": {"uv": [0, 12, 2, 14], "texture": "#1"},
"up": {"uv": [0, 9, 9, 11], "texture": "#1"},
"down": {"uv": [0, 9, 9, 11], "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,29 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/pumpjack_hammer_head",
"particle": "createindustry:block/pumpjack_hammer_head"
},
"elements": [
{
"from": [1, -8, 2],
"to": [15, 20, 16],
"faces": {
"north": {"uv": [0, 0, 8, 14], "texture": "#0"},
"east": {"uv": [0, 0, 8, 14], "texture": "#0"},
"south": {"uv": [0, 0, 8, 14], "texture": "#0"},
"west": {"uv": [0, 0, 8, 14], "texture": "#0"},
"up": {"uv": [8, 0, 15, 7], "rotation": 270, "texture": "#0"},
"down": {"uv": [8, 0, 15, 7], "rotation": 270, "texture": "#0"}
}
}
],
"display": {
"gui": {
"rotation": [18, 28, 0],
"translation": [-0.25, 1, 0],
"scale": [0.4, 0.4, 0.4]
}
}
}

View File

@@ -1,112 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "minecraft:block/block",
"texture_size": [32, 32],
"textures": {
"0": "createindustry:block/aluminum_post",
"1": "createindustry:block/steel_truss",
"particle": "createindustry:block/aluminum_post"
},
"elements": [
{
"from": [0, 6, 6],
"to": [16, 10, 10],
"faces": {
"north": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#0"},
"east": {"uv": [8, 0, 10, 2], "texture": "#0"},
"south": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#0"},
"west": {"uv": [8, 0, 10, 2], "texture": "#0"},
"up": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#0"}
}
},
{
"from": [1, 0, 2],
"to": [1, 16, 14],
"faces": {
"north": {"uv": [0, 0, 0, 8], "texture": "#1"},
"east": {"uv": [2, 0, 14, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 8], "texture": "#1"},
"west": {"uv": [2, 0, 14, 16], "texture": "#1"},
"up": {"uv": [0, 0, 6, 0], "rotation": 90, "texture": "#1"},
"down": {"uv": [0, 0, 6, 0], "rotation": 270, "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [2, 16, 2],
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#1"},
"east": {"uv": [0, 0, 3, 16], "texture": "#1"},
"south": {"uv": [0, 0, 2, 16], "texture": "#1"},
"west": {"uv": [0, 0, 2, 16], "texture": "#1"},
"up": {"uv": [0, 0, 2, 2], "texture": "#1"},
"down": {"uv": [0, 0, 2, 2], "texture": "#1"}
}
},
{
"from": [14, 0, 0],
"to": [16, 16, 2],
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#1"},
"east": {"uv": [0, 0, 2, 16], "texture": "#1"},
"south": {"uv": [0, 0, 2, 16], "texture": "#1"},
"west": {"uv": [0, 0, 2, 16], "texture": "#1"},
"up": {"uv": [0, 0, 2, 2], "texture": "#1"},
"down": {"uv": [0, 0, 2, 2], "texture": "#1"}
}
},
{
"from": [0, 0, 14],
"to": [2, 16, 16],
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#1"},
"east": {"uv": [0, 0, 2, 16], "texture": "#1"},
"south": {"uv": [0, 0, 2, 16], "texture": "#1"},
"west": {"uv": [0, 0, 2, 16], "texture": "#1"},
"up": {"uv": [0, 0, 2, 2], "texture": "#1"},
"down": {"uv": [0, 0, 2, 2], "texture": "#1"}
}
},
{
"from": [14, 0, 14],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 1, 8], "texture": "#1"},
"east": {"uv": [0, 0, 2, 16], "texture": "#1"},
"south": {"uv": [0, 0, 2, 16], "texture": "#1"},
"west": {"uv": [0, 0, 2, 16], "texture": "#1"},
"up": {"uv": [0, 0, 2, 2], "texture": "#1"},
"down": {"uv": [0, 0, 2, 2], "texture": "#1"}
}
},
{
"from": [15, 0, 2],
"to": [15, 16, 14],
"faces": {
"north": {"uv": [0, 0, 0, 8], "texture": "#1"},
"east": {"uv": [2, 0, 14, 16], "texture": "#1"},
"south": {"uv": [0, 0, 0, 8], "texture": "#1"},
"west": {"uv": [2, 0, 14, 16], "texture": "#1"},
"up": {"uv": [0, 0, 6, 0], "rotation": 90, "texture": "#1"},
"down": {"uv": [0, 0, 6, 0], "rotation": 270, "texture": "#1"}
}
}
],
"groups": [
{
"name": "bone",
"origin": [0, 0, 0],
"color": 0,
"nbt": "{}",
"children": []
},
0,
1,
2,
3,
4,
5,
6
]
}

View File

@@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/pumpjack_hammer_part",
"particle": "createindustry:block/pumpjack_hammer_part"
},
"elements": [
{
"from": [2, 0, 0],
"to": [14, 16, 16],
"faces": {
"north": {"uv": [9, 0, 15, 8], "texture": "#0"},
"east": {"uv": [0, 0, 8, 8], "texture": "#0"},
"south": {"uv": [9, 0, 15, 8], "texture": "#0"},
"west": {"uv": [0, 0, 8, 8], "texture": "#0"},
"up": {"uv": [9, 8, 15, 16], "texture": "#0"},
"down": {"uv": [9, 8, 15, 16], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,136 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [128, 128],
"textures": {
"1": "createindustry:block/radial_engine",
"particle": "createindustry:block/steel_block"
},
"elements": [
{
"from": [5, 5, 3],
"to": [11, 11, 13],
"faces": {
"north": {"uv": [6.25, 2.875, 7, 3.625], "texture": "#1"},
"east": {"uv": [6.125, 0.875, 7.375, 1.625], "texture": "#1"},
"south": {"uv": [6.25, 2.875, 7, 3.625], "texture": "#1"},
"west": {"uv": [6.125, 0.875, 7.375, 1.625], "texture": "#1"},
"up": {"uv": [7.375, 1.625, 6.125, 0.875], "rotation": 90, "texture": "#1"},
"down": {"uv": [6.125, 1.625, 7.375, 0.875], "rotation": 90, "texture": "#1"}
}
},
{
"from": [1, 1, 4],
"to": [15, 15, 12],
"faces": {
"north": {"uv": [0, 0, 1.75, 1.75], "texture": "#1"},
"east": {"uv": [6, 1.75, 7.75, 2.75], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 1.75, 1.75, 3.5], "texture": "#1"},
"west": {"uv": [6, 1.75, 7.75, 2.75], "rotation": 90, "texture": "#1"},
"up": {"uv": [7.75, 2.75, 6, 1.75], "texture": "#1"},
"down": {"uv": [7.75, 1.75, 6, 2.75], "texture": "#1"}
}
},
{
"from": [6, -6, 6],
"to": [10, 22, 10],
"faces": {
"north": {"uv": [1.75, 2.375, 5.25, 2.875], "rotation": 90, "texture": "#1"},
"east": {"uv": [1.75, 3.375, 5.25, 3.875], "rotation": 90, "texture": "#1"},
"south": {"uv": [1.75, 2.875, 5.25, 3.375], "rotation": 90, "texture": "#1"},
"west": {"uv": [1.75, 3.375, 5.25, 3.875], "rotation": 90, "texture": "#1"},
"up": {"uv": [5.75, 3.375, 5.25, 2.875], "texture": "#1"},
"down": {"uv": [5.75, 2.875, 5.25, 3.375], "texture": "#1"}
}
},
{
"from": [-6, 6, 6],
"to": [22, 10, 10],
"faces": {
"north": {"uv": [1.75, 2.375, 5.25, 2.875], "texture": "#1"},
"east": {"uv": [5.25, 2.875, 5.75, 3.375], "texture": "#1"},
"south": {"uv": [1.75, 2.875, 5.25, 3.375], "texture": "#1"},
"west": {"uv": [5.25, 2.875, 5.75, 3.375], "texture": "#1"},
"up": {"uv": [5.25, 3.875, 1.75, 3.375], "texture": "#1"},
"down": {"uv": [5.25, 3.375, 1.75, 3.875], "texture": "#1"}
}
},
{
"from": [6, -6, 6],
"to": [10, 22, 10],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 2.375, 5.25, 2.875], "rotation": 90, "texture": "#1"},
"east": {"uv": [1.75, 3.375, 5.25, 3.875], "rotation": 90, "texture": "#1"},
"south": {"uv": [1.75, 2.875, 5.25, 3.375], "rotation": 90, "texture": "#1"},
"west": {"uv": [1.75, 3.375, 5.25, 3.875], "rotation": 90, "texture": "#1"},
"up": {"uv": [5.75, 3.375, 5.25, 2.875], "texture": "#1"},
"down": {"uv": [5.75, 2.875, 5.25, 3.375], "texture": "#1"}
}
},
{
"from": [-6, 6, 6],
"to": [22, 10, 10],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 2.375, 5.25, 2.875], "texture": "#1"},
"east": {"uv": [5.25, 2.875, 5.75, 3.375], "texture": "#1"},
"south": {"uv": [1.75, 2.875, 5.25, 3.375], "texture": "#1"},
"west": {"uv": [5.25, 2.875, 5.75, 3.375], "texture": "#1"},
"up": {"uv": [5.25, 3.875, 1.75, 3.375], "texture": "#1"},
"down": {"uv": [5.25, 3.375, 1.75, 3.875], "texture": "#1"}
}
},
{
"from": [5, -6, 5],
"to": [11, 22, 11],
"faces": {
"north": {"uv": [1.75, 0, 5.25, 0.75], "rotation": 90, "texture": "#1"},
"east": {"uv": [1.75, 1.5, 5.25, 2.25], "rotation": 90, "texture": "#1"},
"south": {"uv": [1.75, 0.75, 5.25, 1.5], "rotation": 90, "texture": "#1"},
"west": {"uv": [1.75, 1.5, 5.25, 2.25], "rotation": 90, "texture": "#1"},
"up": {"uv": [6, 1.5, 5.25, 0.75], "texture": "#1"},
"down": {"uv": [6, 0.75, 5.25, 1.5], "texture": "#1"}
}
},
{
"from": [-6, 5, 5],
"to": [22, 11, 11],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 0, 5.25, 0.75], "texture": "#1"},
"east": {"uv": [5.25, 0.75, 6, 1.5], "texture": "#1"},
"south": {"uv": [1.75, 0.75, 5.25, 1.5], "texture": "#1"},
"west": {"uv": [5.25, 0.75, 6, 1.5], "texture": "#1"},
"up": {"uv": [5.25, 2.25, 1.75, 1.5], "texture": "#1"},
"down": {"uv": [5.25, 1.5, 1.75, 2.25], "texture": "#1"}
}
},
{
"from": [5, -6, 5],
"to": [11, 22, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 0, 5.25, 0.75], "rotation": 90, "texture": "#1"},
"east": {"uv": [1.75, 1.5, 5.25, 2.25], "rotation": 90, "texture": "#1"},
"south": {"uv": [1.75, 0.75, 5.25, 1.5], "rotation": 90, "texture": "#1"},
"west": {"uv": [1.75, 1.5, 5.25, 2.25], "rotation": 90, "texture": "#1"},
"up": {"uv": [6, 1.5, 5.25, 0.75], "texture": "#1"},
"down": {"uv": [6, 0.75, 5.25, 1.5], "texture": "#1"}
}
},
{
"from": [-6, 5, 5],
"to": [22, 11, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 0, 5.25, 0.75], "texture": "#1"},
"east": {"uv": [5.25, 0.75, 6, 1.5], "texture": "#1"},
"south": {"uv": [1.75, 0.75, 5.25, 1.5], "texture": "#1"},
"west": {"uv": [5.25, 0.75, 6, 1.5], "texture": "#1"},
"up": {"uv": [5.25, 2.25, 1.75, 1.5], "texture": "#1"},
"down": {"uv": [5.25, 1.5, 1.75, 2.25], "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,150 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [128, 128],
"textures": {
"1": "createindustry:block/radial_engine",
"particle": "createindustry:block/steel_block"
},
"elements": [
{
"name": "shaft",
"from": [6, 6, 0],
"to": [10, 10, 16],
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [3, 5.625, 3.5, 6.125], "texture": "#1"},
"east": {"uv": [1, 5.5, 1.5, 7.5], "rotation": 90, "texture": "#1"},
"south": {"uv": [3, 5.625, 3.5, 6.125], "texture": "#1"},
"west": {"uv": [1, 5.5, 1.5, 7.5], "rotation": 90, "texture": "#1"},
"up": {"uv": [1.5, 7.5, 1, 5.5], "texture": "#1"},
"down": {"uv": [1.5, 5.5, 1, 7.5], "texture": "#1"}
}
},
{
"from": [5, 5, 3],
"to": [11, 11, 13],
"faces": {
"north": {"uv": [6.25, 2.875, 7, 3.625], "texture": "#1"},
"east": {"uv": [6.125, 0.875, 7.375, 1.625], "texture": "#1"},
"south": {"uv": [6.25, 2.875, 7, 3.625], "texture": "#1"},
"west": {"uv": [6.125, 0.875, 7.375, 1.625], "texture": "#1"},
"up": {"uv": [7.375, 1.625, 6.125, 0.875], "rotation": 90, "texture": "#1"},
"down": {"uv": [6.125, 1.625, 7.375, 0.875], "rotation": 90, "texture": "#1"}
}
},
{
"from": [1, 1, 4],
"to": [15, 15, 12],
"faces": {
"north": {"uv": [0, 0, 1.75, 1.75], "texture": "#1"},
"east": {"uv": [6, 1.75, 7.75, 2.75], "rotation": 90, "texture": "#1"},
"south": {"uv": [0, 1.75, 1.75, 3.5], "texture": "#1"},
"west": {"uv": [6, 1.75, 7.75, 2.75], "rotation": 90, "texture": "#1"},
"up": {"uv": [7.75, 2.75, 6, 1.75], "texture": "#1"},
"down": {"uv": [7.75, 1.75, 6, 2.75], "texture": "#1"}
}
},
{
"from": [6, -6, 6],
"to": [10, 22, 10],
"faces": {
"north": {"uv": [1.75, 2.375, 5.25, 2.875], "rotation": 90, "texture": "#1"},
"east": {"uv": [1.75, 3.375, 5.25, 3.875], "rotation": 90, "texture": "#1"},
"south": {"uv": [1.75, 2.875, 5.25, 3.375], "rotation": 90, "texture": "#1"},
"west": {"uv": [1.75, 3.375, 5.25, 3.875], "rotation": 90, "texture": "#1"},
"up": {"uv": [5.75, 3.375, 5.25, 2.875], "texture": "#1"},
"down": {"uv": [5.75, 2.875, 5.25, 3.375], "texture": "#1"}
}
},
{
"from": [-6, 6, 6],
"to": [22, 10, 10],
"faces": {
"north": {"uv": [1.75, 2.375, 5.25, 2.875], "texture": "#1"},
"east": {"uv": [5.25, 2.875, 5.75, 3.375], "texture": "#1"},
"south": {"uv": [1.75, 2.875, 5.25, 3.375], "texture": "#1"},
"west": {"uv": [5.25, 2.875, 5.75, 3.375], "texture": "#1"},
"up": {"uv": [5.25, 3.875, 1.75, 3.375], "texture": "#1"},
"down": {"uv": [5.25, 3.375, 1.75, 3.875], "texture": "#1"}
}
},
{
"from": [6, -6, 6],
"to": [10, 22, 10],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 2.375, 5.25, 2.875], "rotation": 90, "texture": "#1"},
"east": {"uv": [1.75, 3.375, 5.25, 3.875], "rotation": 90, "texture": "#1"},
"south": {"uv": [1.75, 2.875, 5.25, 3.375], "rotation": 90, "texture": "#1"},
"west": {"uv": [1.75, 3.375, 5.25, 3.875], "rotation": 90, "texture": "#1"},
"up": {"uv": [5.75, 3.375, 5.25, 2.875], "texture": "#1"},
"down": {"uv": [5.75, 2.875, 5.25, 3.375], "texture": "#1"}
}
},
{
"from": [-6, 6, 6],
"to": [22, 10, 10],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 2.375, 5.25, 2.875], "texture": "#1"},
"east": {"uv": [5.25, 2.875, 5.75, 3.375], "texture": "#1"},
"south": {"uv": [1.75, 2.875, 5.25, 3.375], "texture": "#1"},
"west": {"uv": [5.25, 2.875, 5.75, 3.375], "texture": "#1"},
"up": {"uv": [5.25, 3.875, 1.75, 3.375], "texture": "#1"},
"down": {"uv": [5.25, 3.375, 1.75, 3.875], "texture": "#1"}
}
},
{
"from": [5, -6, 5],
"to": [11, 22, 11],
"faces": {
"north": {"uv": [1.75, 0, 5.25, 0.75], "rotation": 90, "texture": "#1"},
"east": {"uv": [1.75, 1.5, 5.25, 2.25], "rotation": 90, "texture": "#1"},
"south": {"uv": [1.75, 0.75, 5.25, 1.5], "rotation": 90, "texture": "#1"},
"west": {"uv": [1.75, 1.5, 5.25, 2.25], "rotation": 90, "texture": "#1"},
"up": {"uv": [6, 1.5, 5.25, 0.75], "texture": "#1"},
"down": {"uv": [6, 0.75, 5.25, 1.5], "texture": "#1"}
}
},
{
"from": [-6, 5, 5],
"to": [22, 11, 11],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 0, 5.25, 0.75], "texture": "#1"},
"east": {"uv": [5.25, 0.75, 6, 1.5], "texture": "#1"},
"south": {"uv": [1.75, 0.75, 5.25, 1.5], "texture": "#1"},
"west": {"uv": [5.25, 0.75, 6, 1.5], "texture": "#1"},
"up": {"uv": [5.25, 2.25, 1.75, 1.5], "texture": "#1"},
"down": {"uv": [5.25, 1.5, 1.75, 2.25], "texture": "#1"}
}
},
{
"from": [5, -6, 5],
"to": [11, 22, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 0, 5.25, 0.75], "rotation": 90, "texture": "#1"},
"east": {"uv": [1.75, 1.5, 5.25, 2.25], "rotation": 90, "texture": "#1"},
"south": {"uv": [1.75, 0.75, 5.25, 1.5], "rotation": 90, "texture": "#1"},
"west": {"uv": [1.75, 1.5, 5.25, 2.25], "rotation": 90, "texture": "#1"},
"up": {"uv": [6, 1.5, 5.25, 0.75], "texture": "#1"},
"down": {"uv": [6, 0.75, 5.25, 1.5], "texture": "#1"}
}
},
{
"from": [-6, 5, 5],
"to": [22, 11, 11],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [1.75, 0, 5.25, 0.75], "texture": "#1"},
"east": {"uv": [5.25, 0.75, 6, 1.5], "texture": "#1"},
"south": {"uv": [1.75, 0.75, 5.25, 1.5], "texture": "#1"},
"west": {"uv": [5.25, 0.75, 6, 1.5], "texture": "#1"},
"up": {"uv": [5.25, 2.25, 1.75, 1.5], "texture": "#1"},
"down": {"uv": [5.25, 1.5, 1.75, 2.25], "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,23 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [128, 128],
"textures": {
"0": "createindustry:block/radial_engine",
"particle": "createindustry:block/radial_engine"
},
"elements": [
{
"from": [6, 5.01, 6],
"to": [10, 16.01, 10],
"faces": {
"north": {"uv": [6.125, 4.25, 6.625, 5.625], "texture": "#0"},
"east": {"uv": [6.125, 4.25, 6.625, 5.625], "texture": "#0"},
"south": {"uv": [6.125, 4.25, 6.625, 5.625], "texture": "#0"},
"west": {"uv": [6.125, 4.25, 6.625, 5.625], "texture": "#0"},
"up": {"uv": [6.75, 4.25, 7.25, 4.75], "texture": "#0"},
"down": {"uv": [6.75, 4.25, 7.25, 4.75], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [128, 128],
"textures": {
"0": "createindustry:block/radial_engine",
"particle": "createindustry:block/radial_engine"
},
"elements": [
{
"from": [6, 5, 6.01],
"to": [10, 9, 17.01],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 7, 8]},
"faces": {
"north": {"uv": [6.75, 4.25, 7.25, 4.75], "rotation": 180, "texture": "#0"},
"east": {"uv": [6.125, 4.25, 6.625, 5.625], "rotation": 270, "texture": "#0"},
"south": {"uv": [6.75, 4.25, 7.25, 4.75], "texture": "#0"},
"west": {"uv": [6.125, 4.25, 6.625, 5.625], "rotation": 90, "texture": "#0"},
"up": {"uv": [6.125, 4.25, 6.625, 5.625], "rotation": 180, "texture": "#0"},
"down": {"uv": [6.125, 4.25, 6.625, 5.625], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [128, 128],
"textures": {
"0": "createindustry:block/radial_engine",
"particle": "createindustry:block/radial_engine"
},
"elements": [
{
"from": [6, 5, 6.01],
"to": [10, 9, 17.01],
"rotation": {"angle": 0, "axis": "x", "origin": [0, 7, 8]},
"faces": {
"north": {"uv": [6.75, 4.25, 7.25, 4.75], "rotation": 180, "texture": "#0"},
"east": {"uv": [6.125, 4.25, 6.625, 5.625], "rotation": 270, "texture": "#0"},
"south": {"uv": [6.75, 4.25, 7.25, 4.75], "texture": "#0"},
"west": {"uv": [6.125, 4.25, 6.625, 5.625], "rotation": 90, "texture": "#0"},
"up": {"uv": [6.125, 4.25, 6.625, 5.625], "rotation": 180, "texture": "#0"},
"down": {"uv": [6.125, 4.25, 6.625, 5.625], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,166 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/steel_frame_2",
"particle": "createindustry:block/steel_frame_2"
},
"elements": [
{
"from": [0, 0, 0],
"to": [2, 16, 2],
"faces": {
"north": {"uv": [14, 0, 16, 16], "texture": "#0"},
"east": {"uv": [0, 0, 2, 16], "texture": "#0"},
"south": {"uv": [0, 0, 2, 16], "texture": "#0"},
"west": {"uv": [0, 0, 2, 16], "texture": "#0"},
"up": {"uv": [0, 0, 2, 2], "texture": "#0"},
"down": {"uv": [0, 14, 2, 16], "texture": "#0"}
}
},
{
"from": [14, 0, 0],
"to": [16, 16, 2],
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#0"},
"east": {"uv": [14, 0, 16, 16], "texture": "#0"},
"south": {"uv": [0, 0, 2, 16], "texture": "#0"},
"west": {"uv": [0, 0, 2, 16], "texture": "#0"},
"up": {"uv": [14, 0, 16, 2], "texture": "#0"},
"down": {"uv": [14, 14, 16, 16], "texture": "#0"}
}
},
{
"from": [0, 0, 14],
"to": [2, 16, 16],
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#0"},
"east": {"uv": [0, 0, 2, 16], "texture": "#0"},
"south": {"uv": [0, 0, 2, 16], "texture": "#0"},
"west": {"uv": [14, 0, 16, 16], "texture": "#0"},
"up": {"uv": [0, 14, 2, 16], "texture": "#0"},
"down": {"uv": [0, 0, 2, 2], "texture": "#0"}
}
},
{
"from": [14, 0, 14],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#0"},
"east": {"uv": [0, 0, 2, 16], "texture": "#0"},
"south": {"uv": [14, 0, 16, 16], "texture": "#0"},
"west": {"uv": [0, 0, 2, 16], "texture": "#0"},
"up": {"uv": [14, 14, 16, 16], "texture": "#0"},
"down": {"uv": [14, 0, 16, 2], "texture": "#0"}
}
},
{
"from": [14, 14, 2],
"to": [16, 16, 14],
"faces": {
"north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [14, 2, 16, 14], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 2, 2], "texture": "#0"},
"west": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 2, 2, 14], "texture": "#0"}
}
},
{
"from": [0, 14, 2],
"to": [2, 16, 14],
"faces": {
"north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 2, 12], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 2, 2], "texture": "#0"},
"west": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"},
"up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 0, 2, 12], "texture": "#0"}
}
},
{
"from": [0, 0, 2],
"to": [2, 2, 14],
"faces": {
"north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 2, 12], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 2, 2], "texture": "#0"},
"west": {"uv": [14, 2, 16, 14], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 0, 2, 12], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 2, 2, 14], "texture": "#0"}
}
},
{
"from": [14, 0, 2],
"to": [16, 2, 14],
"faces": {
"north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 2, 2], "texture": "#0"},
"west": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#0"},
"down": {"uv": [14, 2, 16, 14], "texture": "#0"}
}
},
{
"from": [2, 14, 0],
"to": [14, 16, 2],
"faces": {
"north": {"uv": [14, 2, 16, 14], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 2, 2], "texture": "#0"},
"south": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"}
}
},
{
"from": [2, 14, 14],
"to": [14, 16, 16],
"faces": {
"north": {"uv": [0, 0, 2, 12], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 2, 2], "texture": "#0"},
"south": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [14, 2, 16, 14], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"}
}
},
{
"from": [2, 0, 14],
"to": [14, 2, 16],
"faces": {
"north": {"uv": [0, 0, 2, 12], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 2, 2], "texture": "#0"},
"south": {"uv": [14, 2, 16, 14], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"}
}
},
{
"from": [2, 0, 0],
"to": [14, 2, 2],
"faces": {
"north": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 2, 2], "texture": "#0"},
"south": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"},
"down": {"uv": [14, 2, 16, 14], "rotation": 90, "texture": "#0"}
}
},
{
"from": [1, 1, 1],
"to": [15, 15, 15],
"faces": {
"north": {"uv": [1, 1, 15, 15], "texture": "#0"},
"east": {"uv": [1, 1, 15, 15], "texture": "#0"},
"south": {"uv": [1, 1, 15, 15], "texture": "#0"},
"west": {"uv": [1, 1, 15, 15], "texture": "#0"},
"up": {"uv": [1, 1, 15, 15], "texture": "#0"},
"down": {"uv": [1, 1, 15, 15], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,166 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "createindustry:block/steel_frame_2",
"particle": "createindustry:block/steel_frame_2"
},
"elements": [
{
"from": [0, 0, 0],
"to": [2, 16, 2],
"faces": {
"north": {"uv": [14, 0, 16, 16], "texture": "#0"},
"east": {"uv": [0, 0, 2, 16], "texture": "#0"},
"south": {"uv": [0, 0, 2, 16], "texture": "#0"},
"west": {"uv": [0, 0, 2, 16], "texture": "#0"},
"up": {"uv": [0, 0, 2, 2], "texture": "#0"},
"down": {"uv": [0, 14, 2, 16], "texture": "#0"}
}
},
{
"from": [14, 0, 0],
"to": [16, 16, 2],
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#0"},
"east": {"uv": [14, 0, 16, 16], "texture": "#0"},
"south": {"uv": [0, 0, 2, 16], "texture": "#0"},
"west": {"uv": [0, 0, 2, 16], "texture": "#0"},
"up": {"uv": [14, 0, 16, 2], "texture": "#0"},
"down": {"uv": [14, 14, 16, 16], "texture": "#0"}
}
},
{
"from": [0, 0, 14],
"to": [2, 16, 16],
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#0"},
"east": {"uv": [0, 0, 2, 16], "texture": "#0"},
"south": {"uv": [0, 0, 2, 16], "texture": "#0"},
"west": {"uv": [14, 0, 16, 16], "texture": "#0"},
"up": {"uv": [0, 14, 2, 16], "texture": "#0"},
"down": {"uv": [0, 0, 2, 2], "texture": "#0"}
}
},
{
"from": [14, 0, 14],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#0"},
"east": {"uv": [0, 0, 2, 16], "texture": "#0"},
"south": {"uv": [14, 0, 16, 16], "texture": "#0"},
"west": {"uv": [0, 0, 2, 16], "texture": "#0"},
"up": {"uv": [14, 14, 16, 16], "texture": "#0"},
"down": {"uv": [14, 0, 16, 2], "texture": "#0"}
}
},
{
"from": [14, 14, 2],
"to": [16, 16, 14],
"faces": {
"north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [14, 2, 16, 14], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 2, 2], "texture": "#0"},
"west": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 2, 2, 14], "texture": "#0"}
}
},
{
"from": [0, 14, 2],
"to": [2, 16, 14],
"faces": {
"north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 2, 12], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 2, 2], "texture": "#0"},
"west": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"},
"up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 0, 2, 12], "texture": "#0"}
}
},
{
"from": [0, 0, 2],
"to": [2, 2, 14],
"faces": {
"north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 0, 2, 12], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 2, 2], "texture": "#0"},
"west": {"uv": [14, 2, 16, 14], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 0, 2, 12], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 2, 2, 14], "texture": "#0"}
}
},
{
"from": [14, 0, 2],
"to": [16, 2, 14],
"faces": {
"north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"east": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#0"},
"south": {"uv": [0, 0, 2, 2], "texture": "#0"},
"west": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#0"},
"down": {"uv": [14, 2, 16, 14], "texture": "#0"}
}
},
{
"from": [2, 14, 0],
"to": [14, 16, 2],
"faces": {
"north": {"uv": [14, 2, 16, 14], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 2, 2], "texture": "#0"},
"south": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"}
}
},
{
"from": [2, 14, 14],
"to": [14, 16, 16],
"faces": {
"north": {"uv": [0, 0, 2, 12], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 2, 2], "texture": "#0"},
"south": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [14, 2, 16, 14], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"}
}
},
{
"from": [2, 0, 14],
"to": [14, 2, 16],
"faces": {
"north": {"uv": [0, 0, 2, 12], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 2, 2], "texture": "#0"},
"south": {"uv": [14, 2, 16, 14], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"}
}
},
{
"from": [2, 0, 0],
"to": [14, 2, 2],
"faces": {
"north": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#0"},
"east": {"uv": [0, 0, 2, 2], "texture": "#0"},
"south": {"uv": [0, 0, 2, 12], "rotation": 90, "texture": "#0"},
"west": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#0"},
"up": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#0"},
"down": {"uv": [14, 2, 16, 14], "rotation": 90, "texture": "#0"}
}
},
{
"from": [1, 1, 1],
"to": [15, 15, 15],
"faces": {
"north": {"uv": [1, 1, 15, 15], "texture": "#0"},
"east": {"uv": [1, 1, 15, 15], "texture": "#0"},
"south": {"uv": [1, 1, 15, 15], "texture": "#0"},
"west": {"uv": [1, 1, 15, 15], "texture": "#0"},
"up": {"uv": [1, 1, 15, 15], "texture": "#0"},
"down": {"uv": [1, 1, 15, 15], "texture": "#0"}
}
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 873 B

After

Width:  |  Height:  |  Size: 964 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 727 B

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 B

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 B

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 B

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 B

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 B

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 386 B

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 B

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 455 B

After

Width:  |  Height:  |  Size: 426 B

Some files were not shown because too many files have changed in this diff Show More