diff --git a/build.gradle b/build.gradle index 4d1269e..5ed9943 100644 --- a/build.gradle +++ b/build.gradle @@ -2,14 +2,17 @@ buildscript { repositories { // These repositories are only for Gradle plugins, put any other repositories in the repository block further below maven { url = 'https://maven.minecraftforge.net' } + maven { url = 'https://repo.spongepowered.org/repository/maven-public/' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'org.spongepowered.mixin' group = 'com.teammoeg' version = '1.16.5-0.1.0' @@ -41,6 +44,7 @@ minecraft { client { property 'mixin.env.remapRefMap', 'true' property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg" + arg "-mixin.config=" + "steampowered.mixins.json" workingDirectory project.file('run') @@ -66,6 +70,7 @@ minecraft { server { property 'mixin.env.remapRefMap', 'true' property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg" + arg "-mixin.config=" + "steampowered.mixins.json" workingDirectory project.file('run') @@ -163,6 +168,8 @@ dependencies { compileOnly fg.deobf("mezz.jei:jei-1.16.5:7.6.4.88") runtimeOnly fg.deobf("mezz.jei:jei-1.16.5:7.6.4.88") + annotationProcessor "org.spongepowered:mixin:0.8.2:processor" + testAnnotationProcessor "org.spongepowered:mixin:0.8.2:processor" // Real mod deobf dependency examples - these get remapped to your current mappings // compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // Adds JEI API as a compile dependency @@ -187,7 +194,8 @@ jar { "Implementation-Title" : project.name, "Implementation-Version" : project.jar.archiveVersion, "Implementation-Vendor" : "YueSha", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + "MixinConfigs": "steampowered.mixins.json" ]) } } diff --git a/src/main/java/com/teammoeg/steampowered/SPBlockPartials.java b/src/main/java/com/teammoeg/steampowered/SPBlockPartials.java new file mode 100644 index 0000000..209ee08 --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/SPBlockPartials.java @@ -0,0 +1,31 @@ +package com.teammoeg.steampowered; + +import com.jozufozu.flywheel.core.PartialModel; +import net.minecraft.util.ResourceLocation; + +public class SPBlockPartials { + public static final PartialModel BRONZE_FLYWHEEL = get("bronze_flywheel/wheel"); + public static final PartialModel BRONZE_FLYWHEEL_UPPER_ROTATING = get("bronze_flywheel/upper_rotating_connector"); + public static final PartialModel BRONZE_FLYWHEEL_LOWER_ROTATING = get("bronze_flywheel/lower_rotating_connector"); + public static final PartialModel BRONZE_FLYWHEEL_UPPER_SLIDING = get("bronze_flywheel/upper_sliding_connector"); + public static final PartialModel BRONZE_FLYWHEEL_LOWER_SLIDING = get("bronze_flywheel/lower_sliding_connector"); + + public static final PartialModel CAST_IRON_FLYWHEEL = get("cast_iron_flywheel/wheel"); + public static final PartialModel CAST_IRON_FLYWHEEL_UPPER_ROTATING = get("cast_iron_flywheel/upper_rotating_connector"); + public static final PartialModel CAST_IRON_FLYWHEEL_LOWER_ROTATING = get("cast_iron_flywheel/lower_rotating_connector"); + public static final PartialModel CAST_IRON_FLYWHEEL_UPPER_SLIDING = get("cast_iron_flywheel/upper_sliding_connector"); + public static final PartialModel CAST_IRON_FLYWHEEL_LOWER_SLIDING = get("cast_iron_flywheel/lower_sliding_connector"); + + public static final PartialModel STEEL_FLYWHEEL = get("steel_flywheel/wheel"); + public static final PartialModel STEEL_FLYWHEEL_UPPER_ROTATING = get("steel_flywheel/upper_rotating_connector"); + public static final PartialModel STEEL_FLYWHEEL_LOWER_ROTATING = get("steel_flywheel/lower_rotating_connector"); + public static final PartialModel STEEL_FLYWHEEL_UPPER_SLIDING = get("steel_flywheel/upper_sliding_connector"); + public static final PartialModel STEEL_FLYWHEEL_LOWER_SLIDING = get("steel_flywheel/lower_sliding_connector"); + + private static PartialModel get(String path) { + return new PartialModel(new ResourceLocation("steampowered", "block/" + path)); + } + + public static void clientInit() { + } +} diff --git a/src/main/java/com/teammoeg/steampowered/SteamPowered.java b/src/main/java/com/teammoeg/steampowered/SteamPowered.java index 9ba9bc9..974a81b 100644 --- a/src/main/java/com/teammoeg/steampowered/SteamPowered.java +++ b/src/main/java/com/teammoeg/steampowered/SteamPowered.java @@ -36,7 +36,7 @@ public class SteamPowered { @Override @Nonnull public ItemStack makeIcon() { - return new ItemStack(SPBlocks.STEAM_ENGINE.get()); + return new ItemStack(SPBlocks.BRONZE_STEAM_ENGINE.get()); } }; @@ -50,6 +50,9 @@ public class SteamPowered { FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff); MinecraftForge.EVENT_BUS.register(this); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, + () -> () -> SteamPoweredClient.addClientListeners(MinecraftForge.EVENT_BUS, FMLJavaModLoadingContext.get().getModEventBus())); + FluidRegistry.FLUIDS.register(FMLJavaModLoadingContext.get().getModEventBus()); BlockRegistry.BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus()); ItemRegistry.ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); @@ -59,9 +62,6 @@ public class SteamPowered { SPItems.register(); PacketHandler.register(); - - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> SteamPoweredClient.addClientListeners(MinecraftForge.EVENT_BUS, FMLJavaModLoadingContext.get().getModEventBus())); } private void setup(final FMLCommonSetupEvent event) { diff --git a/src/main/java/com/teammoeg/steampowered/block/BronzeSteamEngineBlock.java b/src/main/java/com/teammoeg/steampowered/block/BronzeSteamEngineBlock.java new file mode 100644 index 0000000..864991d --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/block/BronzeSteamEngineBlock.java @@ -0,0 +1,47 @@ +package com.teammoeg.steampowered.block; + +import com.jozufozu.flywheel.core.PartialModel; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllShapes; +import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock; +import com.simibubi.create.foundation.block.ITE; +import com.teammoeg.steampowered.registrate.SPTiles; +import com.teammoeg.steampowered.tileentity.BronzeSteamEngineTileEntity; +import com.teammoeg.steampowered.tileentity.SteamEngineTileEntity; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import javax.annotation.Nullable; +import java.util.Random; + +public class BronzeSteamEngineBlock extends SteamEngineBlock implements ITE { + public BronzeSteamEngineBlock(Properties builder) { + super(builder); + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return SPTiles.BRONZE_STEAM_ENGINE.create(); + } + + @Override + public Class getTileEntityClass() { + return BronzeSteamEngineTileEntity.class; + } +} diff --git a/src/main/java/com/teammoeg/steampowered/block/CastIronSteamEngineBlock.java b/src/main/java/com/teammoeg/steampowered/block/CastIronSteamEngineBlock.java new file mode 100644 index 0000000..3869d4f --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/block/CastIronSteamEngineBlock.java @@ -0,0 +1,25 @@ +package com.teammoeg.steampowered.block; + +import com.simibubi.create.foundation.block.ITE; +import com.teammoeg.steampowered.registrate.SPTiles; +import com.teammoeg.steampowered.tileentity.BronzeSteamEngineTileEntity; +import com.teammoeg.steampowered.tileentity.CastIronSteamEngineTileEntity; +import net.minecraft.block.BlockState; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockReader; + +public class CastIronSteamEngineBlock extends SteamEngineBlock implements ITE { + public CastIronSteamEngineBlock(Properties builder) { + super(builder); + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return SPTiles.CAST_IRON_STEAM_ENGINE.create(); + } + + @Override + public Class getTileEntityClass() { + return CastIronSteamEngineTileEntity.class; + } +} diff --git a/src/main/java/com/teammoeg/steampowered/block/SteamEngineBlock.java b/src/main/java/com/teammoeg/steampowered/block/SteamEngineBlock.java index 663e269..1573adb 100644 --- a/src/main/java/com/teammoeg/steampowered/block/SteamEngineBlock.java +++ b/src/main/java/com/teammoeg/steampowered/block/SteamEngineBlock.java @@ -4,9 +4,9 @@ import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock; -import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineTileEntity; import com.simibubi.create.foundation.block.ITE; import com.teammoeg.steampowered.registrate.SPTiles; +import com.teammoeg.steampowered.tileentity.SteamEngineTileEntity; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.BlockItemUseContext; @@ -29,7 +29,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import javax.annotation.Nullable; import java.util.Random; -public class SteamEngineBlock extends EngineBlock implements ITE { +public class SteamEngineBlock extends EngineBlock { public static final BooleanProperty LIT = BlockStateProperties.LIT; public SteamEngineBlock(Properties builder) { @@ -48,7 +48,7 @@ public class SteamEngineBlock extends EngineBlock implements ITE getTileEntityClass() { - return FurnaceEngineTileEntity.class; - } - @OnlyIn(Dist.CLIENT) public void animateTick(BlockState p_180655_1_, World p_180655_2_, BlockPos p_180655_3_, Random p_180655_4_) { if (p_180655_1_.getValue(LIT)) { diff --git a/src/main/java/com/teammoeg/steampowered/block/SteamFlywheelBlock.java b/src/main/java/com/teammoeg/steampowered/block/SteamFlywheelBlock.java new file mode 100644 index 0000000..2fa5b4b --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/block/SteamFlywheelBlock.java @@ -0,0 +1,18 @@ +package com.teammoeg.steampowered.block; + +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; +import com.teammoeg.steampowered.registrate.SPTiles; +import net.minecraft.block.BlockState; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockReader; + +public class SteamFlywheelBlock extends FlywheelBlock { + public SteamFlywheelBlock(Properties properties) { + super(properties); + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return SPTiles.STEAM_FLYWHEEL.create(); + } +} diff --git a/src/main/java/com/teammoeg/steampowered/block/SteelSteamEngineBlock.java b/src/main/java/com/teammoeg/steampowered/block/SteelSteamEngineBlock.java new file mode 100644 index 0000000..b378a77 --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/block/SteelSteamEngineBlock.java @@ -0,0 +1,25 @@ +package com.teammoeg.steampowered.block; + +import com.simibubi.create.foundation.block.ITE; +import com.teammoeg.steampowered.registrate.SPTiles; +import com.teammoeg.steampowered.tileentity.BronzeSteamEngineTileEntity; +import com.teammoeg.steampowered.tileentity.SteelSteamEngineTileEntity; +import net.minecraft.block.BlockState; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockReader; + +public class SteelSteamEngineBlock extends SteamEngineBlock implements ITE { + public SteelSteamEngineBlock(Properties builder) { + super(builder); + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return SPTiles.STEEL_STEAM_ENGINE.create(); + } + + @Override + public Class getTileEntityClass() { + return SteelSteamEngineTileEntity.class; + } +} diff --git a/src/main/java/com/teammoeg/steampowered/client/SteamPoweredClient.java b/src/main/java/com/teammoeg/steampowered/client/SteamPoweredClient.java index 7f17677..29aa611 100644 --- a/src/main/java/com/teammoeg/steampowered/client/SteamPoweredClient.java +++ b/src/main/java/com/teammoeg/steampowered/client/SteamPoweredClient.java @@ -1,5 +1,6 @@ package com.teammoeg.steampowered.client; +import com.teammoeg.steampowered.SPBlockPartials; import com.teammoeg.steampowered.ponder.SPPonderIndex; import com.teammoeg.steampowered.registrate.SPBlocks; import com.teammoeg.steampowered.registrate.SPItems; @@ -17,6 +18,7 @@ public class SteamPoweredClient { } public static void clientInit(FMLClientSetupEvent event) { + SPBlockPartials.clientInit(); SPPonderIndex.register(); } diff --git a/src/main/java/com/teammoeg/steampowered/client/render/BronzeFlywheelRenderer.java b/src/main/java/com/teammoeg/steampowered/client/render/BronzeFlywheelRenderer.java new file mode 100644 index 0000000..3cf94bf --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/client/render/BronzeFlywheelRenderer.java @@ -0,0 +1,102 @@ +package com.teammoeg.steampowered.client.render; + +import com.jozufozu.flywheel.backend.Backend; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; +import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.teammoeg.steampowered.SPBlockPartials; +import com.teammoeg.steampowered.mixin.FlywheelTileEntityAccess; +import net.minecraft.block.BlockState; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.util.Direction; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.MathHelper; + +public class BronzeFlywheelRenderer extends KineticTileEntityRenderer { + public BronzeFlywheelRenderer(TileEntityRendererDispatcher dispatcher) { + super(dispatcher); + } + + protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { + super.renderSafe(te, partialTicks, ms, buffer, light, overlay); + if (!Backend.getInstance().canUseInstancing(te.getLevel())) { + BlockState blockState = te.getBlockState(); + FlywheelTileEntity wte = (FlywheelTileEntity)te; + // Mixin starts + FlywheelTileEntityAccess access = (FlywheelTileEntityAccess) wte; + float speed = access.getVisualSpeed().get(partialTicks) * 3.0F / 10.0F; + float angle = access.getAngle() + speed * partialTicks; + // Mixin ends + IVertexBuilder vb = buffer.getBuffer(RenderType.solid()); + if (FlywheelBlock.isConnected(blockState)) { + Direction connection = FlywheelBlock.getConnection(blockState); + light = WorldRenderer.getLightColor(te.getLevel(), blockState, te.getBlockPos().relative(connection)); + float rotation = connection.getAxis() == Direction.Axis.X ^ connection.getAxisDirection() == Direction.AxisDirection.NEGATIVE ? -angle : angle; + boolean flip = blockState.getValue(FlywheelBlock.CONNECTION) == FlywheelBlock.ConnectionState.LEFT; + this.transformConnector(this.rotateToFacing(PartialBufferer.get(SPBlockPartials.BRONZE_FLYWHEEL_UPPER_ROTATING, blockState), connection), true, true, rotation, flip).light(light).renderInto(ms, vb); + this.transformConnector(this.rotateToFacing(PartialBufferer.get(SPBlockPartials.BRONZE_FLYWHEEL_LOWER_ROTATING, blockState), connection), false, true, rotation, flip).light(light).renderInto(ms, vb); + this.transformConnector(this.rotateToFacing(PartialBufferer.get(SPBlockPartials.BRONZE_FLYWHEEL_UPPER_SLIDING, blockState), connection), true, false, rotation, flip).light(light).renderInto(ms, vb); + this.transformConnector(this.rotateToFacing(PartialBufferer.get(SPBlockPartials.BRONZE_FLYWHEEL_LOWER_SLIDING, blockState), connection), false, false, rotation, flip).light(light).renderInto(ms, vb); + } + + this.renderFlywheel(te, ms, light, blockState, angle, vb); + } + } + + private void renderFlywheel(KineticTileEntity te, MatrixStack ms, int light, BlockState blockState, float angle, IVertexBuilder vb) { + BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); + Direction facing = (Direction)referenceState.getValue(BlockStateProperties.HORIZONTAL_FACING); + SuperByteBuffer wheel = PartialBufferer.getFacing(SPBlockPartials.BRONZE_FLYWHEEL, referenceState, facing); + kineticRotationTransform(wheel, te, ((Direction)blockState.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)).getAxis(), AngleHelper.rad((double)angle), light); + wheel.renderInto(ms, vb); + } + + protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { + return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), ((Direction)te.getBlockState().getValue(BlockStateProperties.HORIZONTAL_FACING)).getOpposite()); + } + + protected SuperByteBuffer transformConnector(SuperByteBuffer buffer, boolean upper, boolean rotating, float angle, boolean flip) { + float shift = upper ? 0.25F : -0.125F; + float offset = upper ? 0.25F : 0.25F; + float radians = (float)((double)(angle / 180.0F) * 3.141592653589793D); + float shifting = MathHelper.sin(radians) * shift + offset; + float maxAngle = upper ? -5.0F : -15.0F; + float minAngle = upper ? -45.0F : 5.0F; + float barAngle = 0.0F; + if (rotating) { + barAngle = MathHelper.lerp((MathHelper.sin((float)((double)radians + 1.5707963267948966D)) + 1.0F) / 2.0F, minAngle, maxAngle); + } + + float pivotX = (upper ? 8.0F : 3.0F) / 16.0F; + float pivotY = (upper ? 8.0F : 2.0F) / 16.0F; + float pivotZ = (upper ? 23.0F : 21.5F) / 16.0F; + buffer.translate(pivotX, pivotY, pivotZ + shifting); + if (rotating) { + buffer.rotate(Direction.EAST, AngleHelper.rad((double)barAngle)); + } + + buffer.translate(-pivotX, -pivotY, -pivotZ); + if (flip && !upper) { + buffer.translate(0.5625F, 0.0F, 0.0F); + } + + return buffer; + } + + protected SuperByteBuffer rotateToFacing(SuperByteBuffer buffer, Direction facing) { + buffer.rotateCentered(Direction.UP, AngleHelper.rad((double)AngleHelper.horizontalAngle(facing))); + return buffer; + } +} diff --git a/src/main/java/com/teammoeg/steampowered/instance/BronzeFlywheelInstance.java b/src/main/java/com/teammoeg/steampowered/instance/BronzeFlywheelInstance.java new file mode 100644 index 0000000..1d61eec --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/instance/BronzeFlywheelInstance.java @@ -0,0 +1,203 @@ +package com.teammoeg.steampowered.instance; + +import com.google.common.collect.Lists; +import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; +import com.jozufozu.flywheel.backend.instancing.InstanceData; +import com.jozufozu.flywheel.backend.instancing.Instancer; +import com.jozufozu.flywheel.backend.material.InstanceMaterial; +import com.jozufozu.flywheel.backend.material.MaterialManager; +import com.jozufozu.flywheel.core.materials.ModelData; +import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticTileInstance; +import com.simibubi.create.content.contraptions.base.RotatingData; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.teammoeg.steampowered.SPBlockPartials; +import com.teammoeg.steampowered.mixin.FlywheelTileEntityAccess; +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.MathHelper; + +import java.util.Collections; +import java.util.List; + +import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; + +public class BronzeFlywheelInstance extends KineticTileInstance implements IDynamicInstance { + protected final Direction facing; + protected final Direction connection; + + protected boolean connectedLeft; + protected float connectorAngleMult; + + protected final RotatingData shaft; + + protected final ModelData wheel; + + protected List connectors; + protected ModelData upperRotating; + protected ModelData lowerRotating; + protected ModelData upperSliding; + protected ModelData lowerSliding; + + protected float lastAngle = Float.NaN; + + public BronzeFlywheelInstance(MaterialManager modelManager, FlywheelTileEntity tile) { + super(modelManager, tile); + + facing = blockState.getValue(HORIZONTAL_FACING); + + shaft = setup(shaftModel().createInstance()); + + BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); + wheel = getTransformMaterial().getModel(SPBlockPartials.BRONZE_FLYWHEEL, referenceState, referenceState.getValue(HORIZONTAL_FACING)).createInstance(); + + connection = FlywheelBlock.getConnection(blockState); + if (connection != null) { + connectedLeft = blockState.getValue(FlywheelBlock.CONNECTION) == FlywheelBlock.ConnectionState.LEFT; + + boolean flipAngle = connection.getAxis() == Direction.Axis.X ^ connection.getAxisDirection() == Direction.AxisDirection.NEGATIVE; + + connectorAngleMult = flipAngle ? -1 : 1; + + InstanceMaterial mat = getTransformMaterial(); + + upperRotating = mat.getModel(SPBlockPartials.BRONZE_FLYWHEEL_UPPER_ROTATING, blockState).createInstance(); + lowerRotating = mat.getModel(SPBlockPartials.BRONZE_FLYWHEEL_LOWER_ROTATING, blockState).createInstance(); + upperSliding = mat.getModel(SPBlockPartials.BRONZE_FLYWHEEL_UPPER_SLIDING, blockState).createInstance(); + lowerSliding = mat.getModel(SPBlockPartials.BRONZE_FLYWHEEL_LOWER_SLIDING, blockState).createInstance(); + + connectors = Lists.newArrayList(upperRotating, lowerRotating, upperSliding, lowerSliding); + } else { + connectors = Collections.emptyList(); + } + + // Mixin + FlywheelTileEntityAccess access = (FlywheelTileEntityAccess) tile; + animate(access.getAngle()); + } + + @Override + public void beginFrame() { + + float partialTicks = AnimationTickHolder.getPartialTicks(); + + // Mixin + FlywheelTileEntityAccess access = (FlywheelTileEntityAccess) tile; + float speed = access.getVisualSpeed().get(partialTicks) * 3 / 10f; + float angle = access.getAngle() + speed * partialTicks; + + if (Math.abs(angle - lastAngle) < 0.001) return; + + animate(angle); + + lastAngle = angle; + } + + private void animate(float angle) { + MatrixStack ms = new MatrixStack(); + MatrixTransformStack msr = MatrixTransformStack.of(ms); + + msr.translate(getInstancePosition()); + + if (connection != null) { + float rotation = angle * connectorAngleMult; + + ms.pushPose(); + rotateToFacing(msr, connection); + + ms.pushPose(); + transformConnector(msr, true, true, rotation, connectedLeft); + upperRotating.setTransform(ms); + ms.popPose(); + + ms.pushPose(); + transformConnector(msr, false, true, rotation, connectedLeft); + lowerRotating.setTransform(ms); + ms.popPose(); + + ms.pushPose(); + transformConnector(msr, true, false, rotation, connectedLeft); + upperSliding.setTransform(ms); + ms.popPose(); + + ms.pushPose(); + transformConnector(msr, false, false, rotation, connectedLeft); + lowerSliding.setTransform(ms); + ms.popPose(); + + ms.popPose(); + } + + msr.centre() + .rotate(Direction.get(Direction.AxisDirection.POSITIVE, facing.getAxis()), AngleHelper.rad(angle)) + .unCentre(); + + wheel.setTransform(ms); + } + + @Override + public void update() { + updateRotation(shaft); + } + + @Override + public void updateLight() { + relight(pos, shaft, wheel); + + if (connection != null) { + relight(this.pos.relative(connection), connectors.stream()); + } + } + + @Override + public void remove() { + shaft.delete(); + wheel.delete(); + + connectors.forEach(InstanceData::delete); + connectors.clear(); + } + + protected Instancer shaftModel() { + Direction opposite = facing.getOpposite(); + return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite); + } + + protected void transformConnector(MatrixTransformStack ms, boolean upper, boolean rotating, float angle, boolean flip) { + float shift = upper ? 1 / 4f : -1 / 8f; + float offset = upper ? 1 / 4f : 1 / 4f; + float radians = (float) (angle / 180 * Math.PI); + float shifting = MathHelper.sin(radians) * shift + offset; + + float maxAngle = upper ? -5 : -15; + float minAngle = upper ? -45 : 5; + float barAngle = 0; + + if (rotating) + barAngle = MathHelper.lerp((MathHelper.sin((float) (radians + Math.PI / 2)) + 1) / 2, minAngle, maxAngle); + + float pivotX = (upper ? 8f : 3f) / 16; + float pivotY = (upper ? 8f : 2f) / 16; + float pivotZ = (upper ? 23f : 21.5f) / 16f; + + ms.translate(pivotX, pivotY, pivotZ + shifting); + if (rotating) + ms.rotate(Direction.EAST, AngleHelper.rad(barAngle)); + ms.translate(-pivotX, -pivotY, -pivotZ); + + if (flip && !upper) + ms.translate(9 / 16f, 0, 0); + } + + protected void rotateToFacing(MatrixTransformStack buffer, Direction facing) { + buffer.centre() + .rotate(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing))) + .unCentre(); + } +} diff --git a/src/main/java/com/teammoeg/steampowered/mixin/FlywheelTileEntityAccess.java b/src/main/java/com/teammoeg/steampowered/mixin/FlywheelTileEntityAccess.java new file mode 100644 index 0000000..decd01d --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/mixin/FlywheelTileEntityAccess.java @@ -0,0 +1,15 @@ +package com.teammoeg.steampowered.mixin; + +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; +import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(FlywheelTileEntity.class) +public interface FlywheelTileEntityAccess { + @Accessor(remap = false) + InterpolatedChasingValue getVisualSpeed(); + + @Accessor(remap = false) + float getAngle(); +} diff --git a/src/main/java/com/teammoeg/steampowered/ponder/SPPonderIndex.java b/src/main/java/com/teammoeg/steampowered/ponder/SPPonderIndex.java index c51f4a0..1f7b56c 100644 --- a/src/main/java/com/teammoeg/steampowered/ponder/SPPonderIndex.java +++ b/src/main/java/com/teammoeg/steampowered/ponder/SPPonderIndex.java @@ -12,7 +12,7 @@ public class SPPonderIndex { static final PonderRegistrationHelper CREATE_HELPER = new PonderRegistrationHelper(Create.ID); static final PonderRegistrationHelper STEAM_HELPER = new PonderRegistrationHelper(SteamPowered.MODID); - public static final PonderTag STEAM = new PonderTag(new ResourceLocation(SteamPowered.MODID, "steam")).item(SPBlocks.STEAM_ENGINE.get(), true, false) + public static final PonderTag STEAM = new PonderTag(new ResourceLocation(SteamPowered.MODID, "steam")).item(SPBlocks.BRONZE_STEAM_ENGINE.get(), true, false) .defaultLang("Steam", "Components related to steam production and usage"); public static void register() { @@ -24,7 +24,7 @@ public class SPPonderIndex { .addStoryBoard(new ResourceLocation("create", "cog/speedup"), KineticsScenes::cogsSpeedUp) .addStoryBoard(new ResourceLocation("create", "cog/large"), KineticsScenes::largeCogAsRelay, PonderTag.KINETIC_RELAYS); - STEAM_HELPER.forComponents(SPBlocks.STEAM_ENGINE) + STEAM_HELPER.forComponents(SPBlocks.BRONZE_STEAM_ENGINE) .addStoryBoard("steam_engine", SPScenes::steamEngine, PonderTag.KINETIC_SOURCES, STEAM); STEAM_HELPER.forComponents(SPBlocks.ALTERNATOR) diff --git a/src/main/java/com/teammoeg/steampowered/ponder/SPScenes.java b/src/main/java/com/teammoeg/steampowered/ponder/SPScenes.java index 7d42099..4023e8f 100644 --- a/src/main/java/com/teammoeg/steampowered/ponder/SPScenes.java +++ b/src/main/java/com/teammoeg/steampowered/ponder/SPScenes.java @@ -9,7 +9,6 @@ import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; import com.teammoeg.steampowered.block.SteamEngineBlock; import com.teammoeg.steampowered.registrate.SPBlocks; import net.minecraft.block.BlockState; -import net.minecraft.block.FurnaceBlock; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; @@ -54,7 +53,7 @@ public class SPScenes { scene.world.hideSection(furnaceSelect, Direction.NORTH); scene.idle(15); // Change engine - scene.world.setBlock(enginePos, (BlockState) ((BlockState) SPBlocks.STEAM_ENGINE.get().defaultBlockState().setValue(FurnaceBlock.FACING, Direction.NORTH)).setValue(SteamEngineBlock.LIT, true), false); + scene.world.setBlock(enginePos, (BlockState) ((BlockState) SPBlocks.BRONZE_STEAM_ENGINE.get().defaultBlockState().setValue(SteamEngineBlock.FACING, Direction.NORTH)).setValue(SteamEngineBlock.LIT, true), false); scene.world.showSection(furnaceSelect, Direction.NORTH); scene.idle(10); scene.world.moveSection(engine, util.vector.of(0.0D, -1.0D, 0.0D), 15); diff --git a/src/main/java/com/teammoeg/steampowered/registrate/SPBlocks.java b/src/main/java/com/teammoeg/steampowered/registrate/SPBlocks.java index dce347a..138b327 100644 --- a/src/main/java/com/teammoeg/steampowered/registrate/SPBlocks.java +++ b/src/main/java/com/teammoeg/steampowered/registrate/SPBlocks.java @@ -3,6 +3,8 @@ package com.teammoeg.steampowered.registrate; import com.simibubi.create.AllTags; import com.simibubi.create.Create; import com.simibubi.create.content.AllSections; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelGenerator; import com.simibubi.create.content.contraptions.relays.elementary.BracketedKineticBlockModel; import com.simibubi.create.content.contraptions.relays.elementary.CogwheelBlockItem; import com.simibubi.create.foundation.block.BlockStressDefaults; @@ -11,25 +13,40 @@ import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.data.SharedProperties; import com.simibubi.create.repack.registrate.util.entry.BlockEntry; import com.teammoeg.steampowered.SteamPowered; -import com.teammoeg.steampowered.block.AlternatorBlock; -import com.teammoeg.steampowered.block.MetalCogwheelBlock; -import com.teammoeg.steampowered.block.SteamEngineBlock; +import com.teammoeg.steampowered.block.*; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.Blocks; import net.minecraft.block.SoundType; +import javax.annotation.Nonnull; + import static com.simibubi.create.foundation.data.ModelGen.customItemModel; public class SPBlocks { private static final CreateRegistrate REGISTRATE = SteamPowered.registrate.get() .itemGroup(() -> SteamPowered.itemGroup); - public static final BlockEntry STEAM_ENGINE = REGISTRATE.block("steam_engine", SteamEngineBlock::new) - .initialProperties(SharedProperties::stone) + public static final BlockEntry BRONZE_STEAM_ENGINE = REGISTRATE.block("bronze_steam_engine", BronzeSteamEngineBlock::new) + .initialProperties(SharedProperties::softMetal) + .item() + .transform(customItemModel()) + .register(); + + public static final BlockEntry CAST_IRON_STEAM_ENGINE = REGISTRATE.block("cast_iron_steam_engine", CastIronSteamEngineBlock::new) + .initialProperties(SPBlocks::hardMetal) + .item() + .transform(customItemModel()) + .register(); + + public static final BlockEntry STEEL_STEAM_ENGINE = REGISTRATE.block("steel_steam_engine", SteelSteamEngineBlock::new) + .initialProperties(SPBlocks::hardMetal) .item() .transform(customItemModel()) .register(); public static final BlockEntry STEEL_COGWHEEL = REGISTRATE.block("steel_cogwheel", MetalCogwheelBlock::small) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SPBlocks::hardMetal) .transform(BlockStressDefaults.setImpact(0.1)) .properties(p -> p.sound(SoundType.METAL)) .blockstate(BlockStateGen.axisBlockProvider(false)) @@ -39,7 +56,7 @@ public class SPBlocks { .register(); public static final BlockEntry STEEL_LARGE_COGWHEEL = REGISTRATE.block("steel_large_cogwheel", MetalCogwheelBlock::large) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SPBlocks::hardMetal) .transform(BlockStressDefaults.setImpact(0.1)) .properties(p -> p.sound(SoundType.METAL)) .blockstate(BlockStateGen.axisBlockProvider(false)) @@ -49,7 +66,7 @@ public class SPBlocks { .register(); public static final BlockEntry CAST_IRON_COGWHEEL = REGISTRATE.block("cast_iron_cogwheel", MetalCogwheelBlock::small) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SPBlocks::hardMetal) .transform(BlockStressDefaults.setImpact(0.2)) .properties(p -> p.sound(SoundType.METAL)) .blockstate(BlockStateGen.axisBlockProvider(false)) @@ -59,7 +76,7 @@ public class SPBlocks { .register(); public static final BlockEntry CAST_IRON_LARGE_COGWHEEL = REGISTRATE.block("cast_iron_large_cogwheel", MetalCogwheelBlock::large) - .initialProperties(SharedProperties::softMetal) + .initialProperties(SPBlocks::hardMetal) .transform(BlockStressDefaults.setImpact(0.2)) .properties(p -> p.sound(SoundType.METAL)) .blockstate(BlockStateGen.axisBlockProvider(false)) @@ -89,20 +106,57 @@ public class SPBlocks { .register(); public static final BlockEntry ALTERNATOR = REGISTRATE.block("alternator", AlternatorBlock::new) - .initialProperties(SharedProperties::stone) + .initialProperties(SPBlocks::hardMetal) .transform(BlockStressDefaults.setImpact(4.0)) .tag(AllTags.AllBlockTags.SAFE_NBT.tag) //Dono what this tag means (contraption safe?). .item() .transform(customItemModel()) .register(); + public static final BlockEntry BRONZE_FLYWHEEL = REGISTRATE.block("bronze_flywheel", SteamFlywheelBlock::new) + .initialProperties(SharedProperties::softMetal) + .properties(AbstractBlock.Properties::noOcclusion) + .transform(BlockStressDefaults.setNoImpact()) + .blockstate(new FlywheelGenerator()::generate) + .item() + .transform(customItemModel()) + .register(); + + public static final BlockEntry CAST_IRON_FLYWHEEL = REGISTRATE.block("cast_iron_flywheel", SteamFlywheelBlock::new) + .initialProperties(SPBlocks::hardMetal) + .properties(AbstractBlock.Properties::noOcclusion) + .transform(BlockStressDefaults.setNoImpact()) + .blockstate(new FlywheelGenerator()::generate) + .item() + .transform(customItemModel()) + .register(); + + public static final BlockEntry STEEL_FLYWHEEL = REGISTRATE.block("steel_flywheel", SteamFlywheelBlock::new) + .initialProperties(SPBlocks::hardMetal) + .properties(AbstractBlock.Properties::noOcclusion) + .transform(BlockStressDefaults.setNoImpact()) + .blockstate(new FlywheelGenerator()::generate) + .item() + .transform(customItemModel()) + .register(); + public static void register() { - Create.registrate().addToSection(STEAM_ENGINE, AllSections.KINETICS); + Create.registrate().addToSection(BRONZE_STEAM_ENGINE, AllSections.KINETICS); + Create.registrate().addToSection(CAST_IRON_STEAM_ENGINE, AllSections.KINETICS); + Create.registrate().addToSection(STEEL_STEAM_ENGINE, AllSections.KINETICS); Create.registrate().addToSection(STEEL_COGWHEEL, AllSections.KINETICS); Create.registrate().addToSection(STEEL_LARGE_COGWHEEL, AllSections.KINETICS); Create.registrate().addToSection(CAST_IRON_COGWHEEL, AllSections.KINETICS); Create.registrate().addToSection(CAST_IRON_LARGE_COGWHEEL, AllSections.KINETICS); Create.registrate().addToSection(BRONZE_COGWHEEL, AllSections.KINETICS); Create.registrate().addToSection(BRONZE_LARGE_COGWHEEL, AllSections.KINETICS); + Create.registrate().addToSection(BRONZE_FLYWHEEL, AllSections.KINETICS); + Create.registrate().addToSection(CAST_IRON_FLYWHEEL, AllSections.KINETICS); + Create.registrate().addToSection(STEEL_FLYWHEEL, AllSections.KINETICS); + } + + @Nonnull + public static Block hardMetal() { + return Blocks.IRON_BLOCK; } } diff --git a/src/main/java/com/teammoeg/steampowered/registrate/SPTiles.java b/src/main/java/com/teammoeg/steampowered/registrate/SPTiles.java index 6d37ba7..c644e14 100644 --- a/src/main/java/com/teammoeg/steampowered/registrate/SPTiles.java +++ b/src/main/java/com/teammoeg/steampowered/registrate/SPTiles.java @@ -3,21 +3,34 @@ package com.teammoeg.steampowered.registrate; import com.simibubi.create.content.contraptions.base.HalfShaftInstance; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; +import com.simibubi.create.content.contraptions.components.flywheel.FlyWheelInstance; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelRenderer; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.repack.registrate.util.entry.TileEntityEntry; import com.teammoeg.steampowered.SteamPowered; import com.teammoeg.steampowered.client.render.AlternatorRenderer; -import com.teammoeg.steampowered.tileentity.AlternatorTileEntity; -import com.teammoeg.steampowered.tileentity.MetalCogwheelTileEntity; -import com.teammoeg.steampowered.tileentity.SteamEngineTileEntity; +import com.teammoeg.steampowered.client.render.BronzeFlywheelRenderer; +import com.teammoeg.steampowered.instance.BronzeFlywheelInstance; +import com.teammoeg.steampowered.tileentity.*; public class SPTiles { private static final CreateRegistrate REGISTRATE = SteamPowered.registrate.get() .itemGroup(() -> SteamPowered.itemGroup); - public static final TileEntityEntry STEAM_ENGINE = REGISTRATE - .tileEntity("steam_engine", SteamEngineTileEntity::new) - .validBlocks(SPBlocks.STEAM_ENGINE) + public static final TileEntityEntry BRONZE_STEAM_ENGINE = REGISTRATE + .tileEntity("bronze_steam_engine", BronzeSteamEngineTileEntity::new) + .validBlocks(SPBlocks.BRONZE_STEAM_ENGINE) + .register(); + + public static final TileEntityEntry CAST_IRON_STEAM_ENGINE = REGISTRATE + .tileEntity("cast_iron_steam_engine", CastIronSteamEngineTileEntity::new) + .validBlocks(SPBlocks.CAST_IRON_STEAM_ENGINE) + .register(); + + public static final TileEntityEntry STEEL_STEAM_ENGINE = REGISTRATE + .tileEntity("steel_steam_engine", SteelSteamEngineTileEntity::new) + .validBlocks(SPBlocks.STEEL_STEAM_ENGINE) .register(); public static final TileEntityEntry METAL_COGWHEEL = REGISTRATE @@ -34,6 +47,13 @@ public class SPTiles { .renderer(() -> AlternatorRenderer::new) .register(); + public static final TileEntityEntry STEAM_FLYWHEEL = REGISTRATE + .tileEntity("steam_flywheel", FlywheelTileEntity::new) + .instance(() -> BronzeFlywheelInstance::new) + .validBlocks(SPBlocks.BRONZE_FLYWHEEL, SPBlocks.CAST_IRON_FLYWHEEL, SPBlocks.STEEL_FLYWHEEL) + .renderer(() -> BronzeFlywheelRenderer::new) + .register(); + public static void register() { } } diff --git a/src/main/java/com/teammoeg/steampowered/tileentity/BronzeSteamEngineTileEntity.java b/src/main/java/com/teammoeg/steampowered/tileentity/BronzeSteamEngineTileEntity.java new file mode 100644 index 0000000..55ce33b --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/tileentity/BronzeSteamEngineTileEntity.java @@ -0,0 +1,36 @@ +package com.teammoeg.steampowered.tileentity; + +import com.teammoeg.steampowered.registrate.SPBlocks; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntityType; + +public class BronzeSteamEngineTileEntity extends SteamEngineTileEntity { + public BronzeSteamEngineTileEntity(TileEntityType type) { + super(type); + } + + @Override + public Block getFlywheel() { + return SPBlocks.BRONZE_FLYWHEEL.get(); + } + + @Override + public float getGeneratingCapacity() { + return 32F; + } + + @Override + public float getGeneratingSpeed() { + return 32F; + } + + @Override + public int getSteamConsumptionPerTick() { + return 32; + } + + @Override + public int getSteamStorage() { + return 32000; + } +} diff --git a/src/main/java/com/teammoeg/steampowered/tileentity/CastIronSteamEngineTileEntity.java b/src/main/java/com/teammoeg/steampowered/tileentity/CastIronSteamEngineTileEntity.java new file mode 100644 index 0000000..f5a4aa1 --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/tileentity/CastIronSteamEngineTileEntity.java @@ -0,0 +1,36 @@ +package com.teammoeg.steampowered.tileentity; + +import com.teammoeg.steampowered.registrate.SPBlocks; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntityType; + +public class CastIronSteamEngineTileEntity extends SteamEngineTileEntity { + public CastIronSteamEngineTileEntity(TileEntityType type) { + super(type); + } + + @Override + public Block getFlywheel() { + return SPBlocks.CAST_IRON_FLYWHEEL.get(); + } + + @Override + public float getGeneratingCapacity() { + return 64F; + } + + @Override + public float getGeneratingSpeed() { + return 32F; + } + + @Override + public int getSteamConsumptionPerTick() { + return 64; + } + + @Override + public int getSteamStorage() { + return 64000; + } +} diff --git a/src/main/java/com/teammoeg/steampowered/tileentity/SteamEngineTileEntity.java b/src/main/java/com/teammoeg/steampowered/tileentity/SteamEngineTileEntity.java index 1ae90d7..e229903 100644 --- a/src/main/java/com/teammoeg/steampowered/tileentity/SteamEngineTileEntity.java +++ b/src/main/java/com/teammoeg/steampowered/tileentity/SteamEngineTileEntity.java @@ -1,15 +1,21 @@ package com.teammoeg.steampowered.tileentity; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; +import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; +import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock; import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineTileEntity; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.teammoeg.steampowered.FluidRegistry; import com.teammoeg.steampowered.block.SteamEngineBlock; import com.teammoeg.steampowered.network.PacketHandler; import com.teammoeg.steampowered.network.TileSyncPacket; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; @@ -22,44 +28,21 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.List; -public class SteamEngineTileEntity extends EngineTileEntity implements IHaveGoggleInformation { - - private static final float GENERATING_CAPACITY = 32F; - private static final float GENERATING_SPEED = 32F; - private static final int CONSUMING_STEAM_MB_PER_TICK = 30; - private static final int STEAM_STORAGE_MAXIMUM = 100000; - - protected FluidTank tank = new FluidTank(STEAM_STORAGE_MAXIMUM, fluidStack -> { - return fluidStack.getFluid() == FluidRegistry.steam.get(); - }) { - protected void onContentsChanged() { - syncFluidContent(); - } - }; - - public void syncFluidContent() { - CompoundNBT nbt = new CompoundNBT(); - nbt.put("tank", tank.writeToNBT(new CompoundNBT())); - PacketHandler.send(PacketDistributor.TRACKING_CHUNK.with(() -> { - return this.level.getChunkAt(this.worldPosition); - }), new TileSyncPacket(this, nbt)); - } - - public void receiveFromServer(CompoundNBT message) { - if (message.contains("tank", 10)) { - this.tank.readFromNBT(message.getCompound("tank")); - } - } - - public void receiveFromClient(CompoundNBT message) { - - } +public abstract class SteamEngineTileEntity extends EngineTileEntity implements IHaveGoggleInformation { + private FluidTank tank; private LazyOptional holder = LazyOptional.of(() -> tank); public SteamEngineTileEntity(TileEntityType type) { super(type); this.refreshCapability(); + this.tank = new FluidTank(this.getSteamStorage(), fluidStack -> { + return fluidStack.getFluid() == FluidRegistry.steam.get(); + }) { + protected void onContentsChanged() { + syncFluidContent(); + } + }; } @Override @@ -68,13 +51,13 @@ public class SteamEngineTileEntity extends EngineTileEntity implements IHaveGogg if (level != null && !level.isClientSide) { BlockState state = this.level.getBlockState(this.worldPosition); if (!tank.isEmpty()) { - if (tank.getFluidAmount() < CONSUMING_STEAM_MB_PER_TICK) { + if (tank.getFluidAmount() < this.getSteamConsumptionPerTick()) { tank.drain(tank.getFluidAmount(), IFluidHandler.FluidAction.EXECUTE); } else { - tank.drain(CONSUMING_STEAM_MB_PER_TICK, IFluidHandler.FluidAction.EXECUTE); + tank.drain(this.getSteamConsumptionPerTick(), IFluidHandler.FluidAction.EXECUTE); this.level.setBlockAndUpdate(this.worldPosition, state.setValue(SteamEngineBlock.LIT, true)); - this.appliedCapacity = GENERATING_CAPACITY; - this.appliedSpeed = GENERATING_SPEED; + this.appliedCapacity = this.getGeneratingCapacity(); + this.appliedSpeed = this.getGeneratingSpeed(); this.refreshWheelSpeed(); } } else { @@ -116,4 +99,57 @@ public class SteamEngineTileEntity extends EngineTileEntity implements IHaveGogg }); oldCap.invalidate(); } + + public void syncFluidContent() { + CompoundNBT nbt = new CompoundNBT(); + nbt.put("tank", tank.writeToNBT(new CompoundNBT())); + PacketHandler.send(PacketDistributor.TRACKING_CHUNK.with(() -> { + return this.level.getChunkAt(this.worldPosition); + }), new TileSyncPacket(this, nbt)); + } + + public void receiveFromServer(CompoundNBT message) { + if (message.contains("tank", 10)) { + this.tank.readFromNBT(message.getCompound("tank")); + } + } + + public void receiveFromClient(CompoundNBT message) { + + } + + public void attachWheel() { + Direction engineFacing = (Direction)this.getBlockState().getValue(EngineBlock.FACING); + BlockPos wheelPos = this.worldPosition.relative(engineFacing, 2); + BlockState wheelState = this.level.getBlockState(wheelPos); + if (this.getFlywheel() == wheelState.getBlock()) { + Direction wheelFacing = (Direction)wheelState.getValue(FlywheelBlock.HORIZONTAL_FACING); + if (wheelFacing.getAxis() == engineFacing.getClockWise().getAxis()) { + if (!FlywheelBlock.isConnected(wheelState) || FlywheelBlock.getConnection(wheelState) == engineFacing.getOpposite()) { + TileEntity te = this.level.getBlockEntity(wheelPos); + if (!te.isRemoved()) { + if (te instanceof FlywheelTileEntity) { + if (!FlywheelBlock.isConnected(wheelState)) { + FlywheelBlock.setConnection(this.level, te.getBlockPos(), te.getBlockState(), engineFacing.getOpposite()); + } + + this.poweredWheel = (FlywheelTileEntity)te; + this.refreshWheelSpeed(); + } + + } + } + } + } + } + + public abstract Block getFlywheel(); + + public abstract float getGeneratingCapacity(); + + public abstract float getGeneratingSpeed(); + + public abstract int getSteamConsumptionPerTick(); + + public abstract int getSteamStorage(); } diff --git a/src/main/java/com/teammoeg/steampowered/tileentity/SteelSteamEngineTileEntity.java b/src/main/java/com/teammoeg/steampowered/tileentity/SteelSteamEngineTileEntity.java new file mode 100644 index 0000000..582a363 --- /dev/null +++ b/src/main/java/com/teammoeg/steampowered/tileentity/SteelSteamEngineTileEntity.java @@ -0,0 +1,36 @@ +package com.teammoeg.steampowered.tileentity; + +import com.teammoeg.steampowered.registrate.SPBlocks; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntityType; + +public class SteelSteamEngineTileEntity extends SteamEngineTileEntity { + public SteelSteamEngineTileEntity(TileEntityType type) { + super(type); + } + + @Override + public Block getFlywheel() { + return SPBlocks.STEEL_FLYWHEEL.get(); + } + + @Override + public float getGeneratingCapacity() { + return 96F; + } + + @Override + public float getGeneratingSpeed() { + return 32F; + } + + @Override + public int getSteamConsumptionPerTick() { + return 96; + } + + @Override + public int getSteamStorage() { + return 96000; + } +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 2739768..dc1f8b2 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -11,22 +11,29 @@ description = ''' Steam Age with Create ''' [[dependencies.steampowered]] -modId = "forge" -mandatory = true -versionRange = "[36,)" -ordering = "NONE" -side = "BOTH" + modId = "forge" + mandatory = true + versionRange = "[36,)" + ordering = "NONE" + side = "BOTH" [[dependencies.steampowered]] -modId = "minecraft" -mandatory = true -versionRange = "[1.16.5,1.17)" -ordering = "NONE" -side = "BOTH" + modId = "minecraft" + mandatory = true + versionRange = "[1.16.5,1.17)" + ordering = "NONE" + side = "BOTH" [[dependencies.steampowered]] -modId="create" -mandatory=true -versionRange="[v0.3.2d,)" -ordering="BEFORE" -side="BOTH" + modId="create" + mandatory=true + versionRange="[v0.3.2d,)" + ordering="NONE" + side="BOTH" + +[[dependencies.steampowered]] + modId="flywheel" + mandatory=true + versionRange="[1.16-0.2.3,1.16-0.3)" + ordering="AFTER" + side="CLIENT" diff --git a/src/main/resources/assets/steampowered/blockstates/bronze_flywheel.json b/src/main/resources/assets/steampowered/blockstates/bronze_flywheel.json new file mode 100644 index 0000000..038c024 --- /dev/null +++ b/src/main/resources/assets/steampowered/blockstates/bronze_flywheel.json @@ -0,0 +1,49 @@ +{ + "variants": { + "connection=none,facing=north": { + "model": "steampowered:block/bronze_flywheel/casing_none", + "y": 270 + }, + "connection=left,facing=north": { + "model": "steampowered:block/bronze_flywheel/casing_left", + "y": 270 + }, + "connection=right,facing=north": { + "model": "steampowered:block/bronze_flywheel/casing_right", + "y": 270 + }, + "connection=none,facing=south": { + "model": "steampowered:block/bronze_flywheel/casing_none", + "y": 90 + }, + "connection=left,facing=south": { + "model": "steampowered:block/bronze_flywheel/casing_left", + "y": 90 + }, + "connection=right,facing=south": { + "model": "steampowered:block/bronze_flywheel/casing_right", + "y": 90 + }, + "connection=none,facing=west": { + "model": "steampowered:block/bronze_flywheel/casing_none", + "y": 180 + }, + "connection=left,facing=west": { + "model": "steampowered:block/bronze_flywheel/casing_left", + "y": 180 + }, + "connection=right,facing=west": { + "model": "steampowered:block/bronze_flywheel/casing_right", + "y": 180 + }, + "connection=none,facing=east": { + "model": "steampowered:block/bronze_flywheel/casing_none" + }, + "connection=left,facing=east": { + "model": "steampowered:block/bronze_flywheel/casing_left" + }, + "connection=right,facing=east": { + "model": "steampowered:block/bronze_flywheel/casing_right" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/steampowered/blockstates/bronze_steam_engine.json b/src/main/resources/assets/steampowered/blockstates/bronze_steam_engine.json new file mode 100644 index 0000000..9a12f32 --- /dev/null +++ b/src/main/resources/assets/steampowered/blockstates/bronze_steam_engine.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "steampowered:block/bronze_steam_engine/block" + }, + "facing=south": { + "model": "steampowered:block/bronze_steam_engine/block", + "y": 180 + }, + "facing=west": { + "model": "steampowered:block/bronze_steam_engine/block", + "y": 270 + }, + "facing=east": { + "model": "steampowered:block/bronze_steam_engine/block", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/steampowered/blockstates/steam_engine.json b/src/main/resources/assets/steampowered/blockstates/steam_engine.json deleted file mode 100644 index 6d10935..0000000 --- a/src/main/resources/assets/steampowered/blockstates/steam_engine.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/furnace_engine/block" - }, - "facing=south": { - "model": "create:block/furnace_engine/block", - "y": 180 - }, - "facing=west": { - "model": "create:block/furnace_engine/block", - "y": 270 - }, - "facing=east": { - "model": "create:block/furnace_engine/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/steampowered/lang/en_us.json b/src/main/resources/assets/steampowered/lang/en_us.json index c8b323d..2f54e53 100644 --- a/src/main/resources/assets/steampowered/lang/en_us.json +++ b/src/main/resources/assets/steampowered/lang/en_us.json @@ -2,7 +2,12 @@ "itemGroup.steampowered": "Create: Steam Powered", "item.steampowered.pressurized_gas_container": "Pressurized Gas Container", "item.steampowered.pressurized_steam_container": "Pressurized Steam Container", - "block.steampowered.steam_engine": "Steam Engine", + "block.steampowered.bronze_steam_engine": "Bronze Steam Engine", + "block.steampowered.cast_iron_steam_engine": "Cast Iron Steam Engine", + "block.steampowered.steel_steam_engine": "Cast Iron Steam Engine", + "block.steampowered.bronze_flywheel": "Bronze Flywheel", + "block.steampowered.cast_iron_flywheel": "Cast Iron Flywheel", + "block.steampowered.steel_flywheel": "Steel Flywheel", "block.steampowered.bronze_cogwheel": "Bronze Cogwheel", "block.steampowered.cast_iron_cogwheel": "Cast Iron Cogwheel", "block.steampowered.steel_cogwheel": "Steel Cogwheel", diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/casing_left.json b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/casing_left.json similarity index 93% rename from src/main/resources/assets/steampowered/models/block/flywheel/casing_left.json rename to src/main/resources/assets/steampowered/models/block/bronze_flywheel/casing_left.json index dac4931..5d1e289 100644 --- a/src/main/resources/assets/steampowered/models/block/flywheel/casing_left.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/casing_left.json @@ -1,10 +1,10 @@ { "credit": "Made with Blockbench", "textures": { - "0": "create:block/steam_engine_wheel", - "5": "create:block/brass_casing", - "7": "create:block/brass_gearbox", - "particle": "create:block/steam_engine_wheel" + "0": "steampowered:block/flywheel/bronze_steam_engine_wheel", + "5": "steampowered:block/casing/bronze_casing", + "7": "steampowered:block/gearbox/bronze_gearbox", + "particle": "steampowered:block/flywheel/bronze_steam_engine_wheel" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/casing_none.json b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/casing_none.json similarity index 93% rename from src/main/resources/assets/steampowered/models/block/flywheel/casing_none.json rename to src/main/resources/assets/steampowered/models/block/bronze_flywheel/casing_none.json index ff52149..4bb66b3 100644 --- a/src/main/resources/assets/steampowered/models/block/flywheel/casing_none.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/casing_none.json @@ -1,10 +1,10 @@ { "credit": "Made with Blockbench", "textures": { - "0": "create:block/steam_engine_wheel", - "5": "create:block/brass_casing", - "7": "create:block/brass_gearbox", - "particle": "create:block/steam_engine_wheel" + "0": "steampowered:block/flywheel/bronze_steam_engine_wheel", + "5": "steampowered:block/casing/bronze_casing", + "7": "steampowered:block/gearbox/bronze_gearbox", + "particle": "steampowered:block/flywheel/bronze_steam_engine_wheel" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/casing_right.json b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/casing_right.json similarity index 93% rename from src/main/resources/assets/steampowered/models/block/flywheel/casing_right.json rename to src/main/resources/assets/steampowered/models/block/bronze_flywheel/casing_right.json index 706c951..b065163 100644 --- a/src/main/resources/assets/steampowered/models/block/flywheel/casing_right.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/casing_right.json @@ -1,10 +1,10 @@ { "credit": "Made with Blockbench", "textures": { - "0": "create:block/steam_engine_wheel", - "5": "create:block/brass_casing", - "7": "create:block/brass_gearbox", - "particle": "create:block/steam_engine_wheel" + "0": "steampowered:block/flywheel/bronze_steam_engine_wheel", + "5": "steampowered:block/casing/bronze_casing", + "7": "steampowered:block/gearbox/bronze_gearbox", + "particle": "steampowered:block/flywheel/bronze_steam_engine_wheel" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/item.json b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/item.json similarity index 98% rename from src/main/resources/assets/steampowered/models/block/flywheel/item.json rename to src/main/resources/assets/steampowered/models/block/bronze_flywheel/item.json index 8d77ecb..88cbc46 100644 --- a/src/main/resources/assets/steampowered/models/block/flywheel/item.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/item.json @@ -1,10 +1,10 @@ { "credit": "Made with Blockbench", "textures": { - "0": "create:block/steam_engine_wheel", - "5": "create:block/brass_casing", - "7": "create:block/brass_gearbox", - "particle": "create:block/steam_engine_wheel" + "0": "steampowered:block/flywheel/bronze_steam_engine_wheel", + "5": "steampowered:block/casing/bronze_casing", + "7": "steampowered:block/gearbox/bronze_gearbox", + "particle": "steampowered:block/flywheel/bronze_steam_engine_wheel" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/lower_rotating_connector.json b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/lower_rotating_connector.json similarity index 81% rename from src/main/resources/assets/steampowered/models/block/flywheel/lower_rotating_connector.json rename to src/main/resources/assets/steampowered/models/block/bronze_flywheel/lower_rotating_connector.json index 835b0cb..facb4d7 100644 --- a/src/main/resources/assets/steampowered/models/block/flywheel/lower_rotating_connector.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/lower_rotating_connector.json @@ -1,8 +1,8 @@ { "credit": "Made with Blockbench", "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" + "0": "steampowered:block/flywheel/bronze_steam_engine_wheel", + "particle": "steampowered:block/flywheel/bronze_steam_engine_wheel" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/lower_sliding_connector.json b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/lower_sliding_connector.json similarity index 84% rename from src/main/resources/assets/steampowered/models/block/flywheel/lower_sliding_connector.json rename to src/main/resources/assets/steampowered/models/block/bronze_flywheel/lower_sliding_connector.json index 1619401..fd20c7e 100644 --- a/src/main/resources/assets/steampowered/models/block/flywheel/lower_sliding_connector.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/lower_sliding_connector.json @@ -1,8 +1,8 @@ { "credit": "Made with Blockbench", "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" + "0": "steampowered:block/flywheel/bronze_steam_engine_wheel", + "particle": "steampowered:block/flywheel/bronze_steam_engine_wheel" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/upper_rotating_connector.json b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/upper_rotating_connector.json similarity index 81% rename from src/main/resources/assets/steampowered/models/block/flywheel/upper_rotating_connector.json rename to src/main/resources/assets/steampowered/models/block/bronze_flywheel/upper_rotating_connector.json index a6e4b99..11dc4c9 100644 --- a/src/main/resources/assets/steampowered/models/block/flywheel/upper_rotating_connector.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/upper_rotating_connector.json @@ -1,8 +1,8 @@ { "credit": "Made with Blockbench", "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" + "0": "steampowered:block/flywheel/bronze_steam_engine_wheel", + "particle": "steampowered:block/flywheel/bronze_steam_engine_wheel" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/upper_sliding_connector.json b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/upper_sliding_connector.json similarity index 82% rename from src/main/resources/assets/steampowered/models/block/flywheel/upper_sliding_connector.json rename to src/main/resources/assets/steampowered/models/block/bronze_flywheel/upper_sliding_connector.json index 1771507..a34a419 100644 --- a/src/main/resources/assets/steampowered/models/block/flywheel/upper_sliding_connector.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/upper_sliding_connector.json @@ -1,8 +1,8 @@ { "credit": "Made with Blockbench", "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" + "0": "steampowered:block/flywheel/bronze_steam_engine_wheel", + "particle": "steampowered:block/flywheel/bronze_steam_engine_wheel" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/wheel.json b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/wheel.json similarity index 98% rename from src/main/resources/assets/steampowered/models/block/flywheel/wheel.json rename to src/main/resources/assets/steampowered/models/block/bronze_flywheel/wheel.json index 997dd77..ff6083e 100644 --- a/src/main/resources/assets/steampowered/models/block/flywheel/wheel.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_flywheel/wheel.json @@ -1,8 +1,8 @@ { "credit": "Made with Blockbench", "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" + "0": "steampowered:block/flywheel/bronze_steam_engine_wheel", + "particle": "steampowered:block/flywheel/bronze_steam_engine_wheel" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/furnace_engine/block.json b/src/main/resources/assets/steampowered/models/block/bronze_steam_engine/block.json similarity index 95% rename from src/main/resources/assets/steampowered/models/block/furnace_engine/block.json rename to src/main/resources/assets/steampowered/models/block/bronze_steam_engine/block.json index dde47cc..80d20ec 100644 --- a/src/main/resources/assets/steampowered/models/block/furnace_engine/block.json +++ b/src/main/resources/assets/steampowered/models/block/bronze_steam_engine/block.json @@ -1,9 +1,9 @@ { "credit": "Made with Blockbench", "textures": { - "5": "create:block/brass_casing", - "1_1": "create:block/furnace_cylinder", - "particle": "create:block/brass_block" + "5": "steampowered:block/casing/bronze_casing", + "1_1": "steampowered:block/steam_engine/bronze_furnace_cylinder", + "particle": "steampowered:block/metal_block/bronze_block" }, "elements": [ { diff --git a/src/main/resources/assets/steampowered/models/block/furnace_engine/frame.json b/src/main/resources/assets/steampowered/models/block/bronze_steam_engine/frame.json similarity index 100% rename from src/main/resources/assets/steampowered/models/block/furnace_engine/frame.json rename to src/main/resources/assets/steampowered/models/block/bronze_steam_engine/frame.json diff --git a/src/main/resources/assets/steampowered/models/block/furnace_engine/item.json b/src/main/resources/assets/steampowered/models/block/bronze_steam_engine/item.json similarity index 100% rename from src/main/resources/assets/steampowered/models/block/furnace_engine/item.json rename to src/main/resources/assets/steampowered/models/block/bronze_steam_engine/item.json diff --git a/src/main/resources/assets/steampowered/models/block/flywheel/flywheel.bbmodel b/src/main/resources/assets/steampowered/models/block/flywheel/flywheel.bbmodel deleted file mode 100644 index a1c9455..0000000 --- a/src/main/resources/assets/steampowered/models/block/flywheel/flywheel.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"item","resolution":{"width":16,"height":16},"elements":[{"name":"cube","from":[22,6,6],"to":[32,10,10],"autouv":0,"color":0,"origin":[-5,8,8],"faces":{"north":{"uv":[2,7,7,9],"texture":0},"east":{"uv":[0,7,2,9],"texture":0},"south":{"uv":[2,7,7,9],"texture":0},"west":{"uv":[0,7,2,9],"texture":0},"up":{"uv":[2,7,7,9],"texture":0},"down":{"uv":[2,7,7,9],"texture":0}},"uuid":"50a686cc-3204-b7bf-1566-d1ef05844c60"},{"name":"cube","from":[7,7,7],"to":[23,9,9],"autouv":0,"color":4,"rotation":[0,0,-22.5],"origin":[23,8,8],"faces":{"north":{"uv":[0,9,8,10],"rotation":180,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[0,9,8,10],"rotation":180,"texture":0},"west":{"uv":[0,0,0,0],"rotation":180,"texture":null},"up":{"uv":[0,9,8,10],"rotation":180,"texture":0},"down":{"uv":[0,9,8,10],"rotation":180,"texture":0}},"uuid":"b575be0b-21f0-8150-9d24-be88ac50d1df"},{"name":"cube","from":[3,3,-3.9000000000000004],"to":[13,13,5.1],"autouv":0,"color":5,"origin":[8,8,1.0999999999999996],"faces":{"north":{"uv":[11,5,16,10],"texture":0},"east":{"uv":[11.5,0,16,5],"texture":0},"south":{"uv":[11,5,16,10],"texture":0},"west":{"uv":[11.5,0,16,5],"rotation":180,"texture":0},"up":{"uv":[11.5,0,16,5],"rotation":270,"texture":0},"down":{"uv":[11.5,0,16,5],"rotation":90,"texture":0}},"uuid":"2f1e2920-2ea2-8af4-3221-eb3bc7043169"},{"name":"cube","from":[0,0,4],"to":[16,16,15],"autouv":0,"color":5,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16],"texture":5},"east":{"uv":[0,15.5,8,10],"rotation":270,"texture":0},"south":{"uv":[0,0,16,16],"texture":5},"west":{"uv":[8,10.5,16,16],"rotation":90,"texture":0},"up":{"uv":[8,10.5,16,16],"rotation":180,"texture":0},"down":{"uv":[8,10.5,16,16],"texture":0}},"uuid":"b0cd1b60-1f63-cbfa-eb62-4b456dfe2734"},{"name":"spoke","from":[6,-8,-0.8999999999999995],"to":[10,3,3.1000000000000005],"autouv":0,"color":0,"rotation":[0,0,-45],"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"east":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"south":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"west":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":270,"texture":null}},"uuid":"cb470bb9-82ea-3186-ac3f-e6cd886649bc"},{"name":"cube","from":[-0.5,23.5,-1.8500000000000005],"to":[16.5,28.5,4.049999999999998],"autouv":0,"color":4,"rotation":[0,0,-45],"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"texture":0},"east":{"uv":[8.5,0,11.5,2.5],"texture":0},"south":{"uv":[0,0,8.5,2.5],"texture":0},"west":{"uv":[8.5,0,11.5,2.5],"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"texture":0}},"uuid":"63aed4d8-2ff2-0746-1545-6a76e0d97a9c"},{"name":"cube","from":[-0.5,23.5,-1.9000000000000012],"to":[16.5,28.5,4.099999999999999],"autouv":0,"color":4,"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"texture":0},"east":{"uv":[8.5,0,11.5,2],"texture":0},"south":{"uv":[0,0,8.5,2.5],"texture":0},"west":{"uv":[8.5,0,11.5,2.5],"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"texture":0}},"uuid":"6fce1c92-91b6-6314-3bcc-81af1da4fcde"},{"name":"cube","from":[14.75,7,11.549999999999997],"to":[30.75,9,13.449999999999996],"autouv":0,"color":7,"rotation":[0,0,-22.5],"origin":[15,8,21],"faces":{"north":{"uv":[0,9,8,10],"rotation":180,"texture":0},"east":{"uv":[0,0,0,0],"rotation":270,"texture":null},"south":{"uv":[0,9,8,10],"rotation":180,"texture":0},"west":{"uv":[0,0,0,0],"rotation":270,"texture":null},"up":{"uv":[0,9,8,10],"rotation":180,"texture":0},"down":{"uv":[0,9,8,10],"rotation":180,"texture":0}},"uuid":"206f3d87-1379-a949-ead0-500086d5bbe2"},{"name":"cube","from":[29,1,11.5],"to":[32,3,13.5],"autouv":0,"color":4,"origin":[8,8,17],"faces":{"north":{"uv":[6.5,9,8,10],"rotation":180,"texture":0},"east":{"uv":[0,9,1.5,10],"rotation":180,"texture":0},"south":{"uv":[0,9,1.5,10],"rotation":180,"texture":0},"west":{"uv":[0,9,1.5,10],"rotation":180,"texture":0},"up":{"uv":[0,9,1.5,10],"rotation":180,"texture":0},"down":{"uv":[0,9,1.5,10],"rotation":180,"texture":0}},"uuid":"0af1e6ff-4a9e-283a-2942-84d3ec8b5836"},{"name":"cube","from":[23.5,-0.5,-1.9000000000000012],"to":[28.5,16.5,4.099999999999999],"autouv":0,"color":4,"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":270,"texture":0},"east":{"uv":[0,2.5,8.5,5.5],"rotation":90,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":90,"texture":0},"west":{"uv":[0,2.5,8.5,5.5],"rotation":90,"texture":0},"up":{"uv":[8.5,0,11.5,2.5],"rotation":90,"texture":0},"down":{"uv":[8.5,0,11.5,2],"rotation":90,"texture":0}},"uuid":"a5520e2b-ba0a-b510-e5ea-f1a950a16250"},{"name":"cube","from":[-0.5,-12.5,-1.8500000000000005],"to":[16.5,-7.5,4.049999999999998],"autouv":0,"color":4,"rotation":[0,0,45],"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"east":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"west":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0}},"uuid":"2f5b7526-cca3-7518-3496-d1b0bbe08e75"},{"name":"cube","from":[-12.5,-0.5,-1.8500000000000005],"to":[-7.5,16.5,4.049999999999998],"autouv":0,"color":4,"rotation":[0,0,-45],"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":90,"texture":0},"east":{"uv":[0,2.5,8.5,5.5],"rotation":270,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":270,"texture":0},"west":{"uv":[0,2.5,8.5,5.5],"rotation":270,"texture":0},"up":{"uv":[8.5,0,11.5,2.5],"rotation":270,"texture":0},"down":{"uv":[8.5,0,11.5,2.5],"rotation":270,"texture":0}},"uuid":"429976b8-16fe-3f5c-55db-9aab4c9fbebc"},{"name":"cube","from":[-12.5,-0.5,-1.9000000000000012],"to":[-7.5,16.5,4.099999999999999],"autouv":0,"color":4,"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":90,"texture":0},"east":{"uv":[0,2.5,8.5,5.5],"rotation":270,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":270,"texture":0},"west":{"uv":[0,2.5,8.5,5.5],"rotation":270,"texture":0},"up":{"uv":[8.5,0,11.5,2],"rotation":270,"texture":0},"down":{"uv":[8.5,0,11.5,2.5],"rotation":270,"texture":0}},"uuid":"50806591-41a8-f2bc-7a1d-e43b23b96408"},{"name":"cube","from":[-0.5,-12.5,-1.8500000000000005],"to":[16.5,-7.5,4.049999999999998],"autouv":0,"color":4,"rotation":[0,0,-45],"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"east":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"west":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0}},"uuid":"801950a3-dd0a-627f-7246-561bcad27e88"},{"name":"cube","from":[-0.5,-12.5,-1.9000000000000012],"to":[16.5,-7.5,4.099999999999999],"autouv":0,"color":4,"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"east":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"west":{"uv":[8.5,0,11.5,2],"rotation":180,"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0}},"uuid":"b991a213-a5c0-1951-d6f3-229a0c14d9c5"},{"name":"cube","from":[0,0,15],"to":[16,2,16],"autouv":0,"color":3,"origin":[24,8,8],"faces":{"north":{"uv":[0,0,16,2],"texture":4},"east":{"uv":[0,14,1,16],"texture":4},"south":{"uv":[0,14,16,16],"texture":4},"west":{"uv":[15,14,16,16],"texture":4},"up":{"uv":[0,1,16,2],"texture":4},"down":{"uv":[0,0,16,1],"texture":4}},"uuid":"7883be7c-2f95-da04-1f6b-6eb29690cc04"},{"name":"cube","from":[0,14,15],"to":[16,16,16],"autouv":0,"color":3,"origin":[8,8,16],"faces":{"north":{"uv":[0,0,16,2],"rotation":180,"texture":4},"east":{"uv":[15,14,16,16],"rotation":180,"texture":4},"south":{"uv":[0,14,16,16],"rotation":180,"texture":4},"west":{"uv":[0,14,1,16],"rotation":180,"texture":4},"up":{"uv":[0,0,16,1],"rotation":180,"texture":4},"down":{"uv":[0,1,16,2],"rotation":180,"texture":4}},"uuid":"af3517df-2487-59e1-2d3b-ac71c65b47eb"},{"name":"cube","from":[0,2,15],"to":[2,14,16],"autouv":0,"color":3,"origin":[8,8,16],"faces":{"north":{"uv":[0,0,12,2],"rotation":270,"texture":4},"east":{"uv":[2,1,14,2],"rotation":90,"texture":4},"south":{"uv":[2,14,14,16],"rotation":90,"texture":4},"west":{"uv":[2,0,14,1],"rotation":90,"texture":4},"up":{"uv":[15,14,16,16],"rotation":90,"texture":4},"down":{"uv":[0,14,1,16],"rotation":90,"texture":4}},"uuid":"3236180d-0eb5-9846-f6df-71338b95b172"},{"name":"cube","from":[14,2,15],"to":[16,14,16],"autouv":0,"color":3,"origin":[8,8,16],"faces":{"north":{"uv":[0,0,12,2],"rotation":90,"texture":4},"east":{"uv":[2,0,14,1],"rotation":270,"texture":4},"south":{"uv":[2,14,14,16],"rotation":270,"texture":4},"west":{"uv":[2,1,14,2],"rotation":270,"texture":4},"up":{"uv":[0,14,1,16],"rotation":270,"texture":4},"down":{"uv":[15,14,16,16],"rotation":270,"texture":4}},"uuid":"ffb4c72b-0971-aa72-e873-312bea4c432f"},{"name":"spoke","from":[-8,6,-0.8999999999999995],"to":[3,10,3.1000000000000005],"autouv":0,"color":0,"rotation":[0,0,-45],"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"down":{"uv":[9,4.5,11,10],"rotation":270,"texture":0}},"uuid":"1dba4685-5282-a030-17a2-2f9374e8c6a1"},{"name":"spoke","from":[-8,6,-0.8999999999999995],"to":[3,10,3.1000000000000005],"autouv":0,"color":0,"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"down":{"uv":[9,4.5,11,10],"rotation":270,"texture":0}},"uuid":"b7cb6152-0be0-b1df-252e-0cab5138efdf"},{"name":"spoke","from":[13,6,-0.8999999999999995],"to":[24,10,3.1000000000000005],"autouv":0,"color":0,"rotation":[0,0,-45],"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"down":{"uv":[9,4.5,11,10],"rotation":90,"texture":0}},"uuid":"1b7cc7a0-6cc9-31a9-143f-94aee22489b4"},{"name":"spoke","from":[6,13,-0.8999999999999995],"to":[10,24,3.1000000000000005],"autouv":0,"color":0,"rotation":[0,0,-45],"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"texture":0},"east":{"uv":[9,4.5,11,10],"texture":0},"south":{"uv":[9,4.5,11,10],"texture":0},"west":{"uv":[9,4.5,11,10],"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":270,"texture":null}},"uuid":"e65ae52f-ddd5-8121-f730-88b35ea0fb5a"},{"name":"spoke","from":[13,6,-0.8999999999999995],"to":[24,10,3.1000000000000005],"autouv":0,"color":0,"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"down":{"uv":[9,4.5,11,10],"rotation":90,"texture":0}},"uuid":"d7980b7f-ef13-e3e1-ab0d-537ffccff639"},{"name":"spoke","from":[6,-8,-0.8999999999999995],"to":[10,3,3.1000000000000005],"autouv":0,"color":0,"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"east":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"south":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"west":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":270,"texture":null}},"uuid":"841862c5-48f4-a81f-17fb-497457cbe793"},{"name":"spoke","from":[6,13,-0.8999999999999995],"to":[10,24,3.1000000000000005],"autouv":0,"color":0,"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"texture":0},"east":{"uv":[9,4.5,11,10],"texture":0},"south":{"uv":[9,4.5,11,10],"texture":0},"west":{"uv":[9,4.5,11,10],"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":270,"texture":null}},"uuid":"29d0cc13-9e08-c9ca-7219-6f1c06816a16"}],"outliner":[{"name":"transmission","uuid":"29aace9e-9299-b75e-5ed5-db8534b5fcbd","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[-8,8,8],"children":["0af1e6ff-4a9e-283a-2942-84d3ec8b5836","206f3d87-1379-a949-ead0-500086d5bbe2","50a686cc-3204-b7bf-1566-d1ef05844c60","b575be0b-21f0-8150-9d24-be88ac50d1df","b0cd1b60-1f63-cbfa-eb62-4b456dfe2734","7883be7c-2f95-da04-1f6b-6eb29690cc04","af3517df-2487-59e1-2d3b-ac71c65b47eb","3236180d-0eb5-9846-f6df-71338b95b172","ffb4c72b-0971-aa72-e873-312bea4c432f"]},{"name":"wheel","uuid":"a3567eb7-af40-11f6-7e9b-dab5508c4ff5","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[24,8,8],"children":["2f1e2920-2ea2-8af4-3221-eb3bc7043169","6fce1c92-91b6-6314-3bcc-81af1da4fcde","b991a213-a5c0-1951-d6f3-229a0c14d9c5","a5520e2b-ba0a-b510-e5ea-f1a950a16250","50806591-41a8-f2bc-7a1d-e43b23b96408","63aed4d8-2ff2-0746-1545-6a76e0d97a9c","801950a3-dd0a-627f-7246-561bcad27e88","2f5b7526-cca3-7518-3496-d1b0bbe08e75","429976b8-16fe-3f5c-55db-9aab4c9fbebc","cb470bb9-82ea-3186-ac3f-e6cd886649bc","e65ae52f-ddd5-8121-f730-88b35ea0fb5a","b7cb6152-0be0-b1df-252e-0cab5138efdf","d7980b7f-ef13-e3e1-ab0d-537ffccff639","1dba4685-5282-a030-17a2-2f9374e8c6a1","841862c5-48f4-a81f-17fb-497457cbe793","1b7cc7a0-6cc9-31a9-143f-94aee22489b4","29d0cc13-9e08-c9ca-7219-6f1c06816a16"]}],"textures":[{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\steam_engine_wheel.png","name":"steam_engine_wheel.png","folder":"block","namespace":"create","id":"0","particle":true,"mode":"bitmap","saved":true,"uuid":"00cbd3bd-665f-44c1-56df-1cd7fc617269","source":"data:image/png;base64,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"},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\axis.png","name":"axis.png","folder":"block","namespace":"create","id":"1","particle":false,"mode":"bitmap","saved":true,"uuid":"11fa98c7-e27a-e24b-c2d5-5354841d3e37","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAo0lEQVQ4T6WTIQ4EIQxFO4IRIECAgLshMBwKO+fCggWDZVOSSVbMJjulkpTH/+X3gB/lvZ/WWhhjQO8drus6nlofD7ExhDCFEOsOGcAYA+cc5JzfK4gxTnxdKQW1VhrgPE/QWu8pQAulFEgpvRvit4XWGg2AFjjnQAJgDqSUawYkC3eQUAEJgEEyxiwLpBxsA/AXMERYW0FCCyTAvUxkwL/r/AGRGnYRGJZooQAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\axis_top.png","name":"axis_top.png","folder":"block","namespace":"create","id":"2","particle":false,"mode":"bitmap","saved":true,"uuid":"279bd0dd-96c2-3792-e8c9-19b78bfa04b1","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA6UlEQVQ4T2NMDFP8z8DAwPDpyzcGPh4uOD1/1X1GkDghwAgywMLIguHtu/cMLEx/Gd58fMPw+u0HBpIMMDc0Y3j16hXDlx8fGGQklRjOXzlHmgGWZg4Md+5eANusp6bOcOnWTeINCPYS/29jZMjw+etPuHcv3rzGsHbbS+LDABaIIBoWkEQbgCuU09LS/gsICDD8+vWL4du3bwyzZs3C6iKcziwoKPgvJSXF8OPHD4YvX74wdHV1kWZAWVnZfx4eHobfv38zfP78mWHChAmkGRAbG/tfUlKSfC8QSoEweaKiCp9howYwMAAAZ+5uEWwI6EAAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\furnace_cylinder.png","name":"furnace_cylinder.png","folder":"block","namespace":"create","id":"1_1","particle":false,"mode":"bitmap","saved":true,"uuid":"22db08fc-cd87-a68b-b384-8c82a249326f","source":"data:image/png;base64,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"},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_casing.png","name":"brass_casing.png","folder":"block","namespace":"create","id":"5","particle":false,"mode":"bitmap","saved":true,"uuid":"03f2b83c-2540-b890-0fa9-1048ec09c3c0","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB0UlEQVQ4T2PMjVf/zwAFrKxMMCZe+vfvf3B5xrQIlf+Brg5wgW8//oLZ3779YODi4gDTIPDj1x+4GiEBHjB75+HDDIwZ0ar/XS2tGJq71oMFudiYwTQLKyPDn9//wTQyAImBQFqqB8OJS2cgBtgamzF0T9jMoCwFMfnPL4QTQfxff/8zsDEjDHr96SfCAFAYWOibMEydto1BlI8drBgfABn0/vsvhoBgG4b7j28yMIIMMNYyZJi3YBeDICcb2ICPX3/BvQF2EdTZ/NxsYJeAXBASYYtqwKzZOxlACkDg+fvvDJKCnCgOARkKkwexMQxAdwFI8ddfv8GGcLOxgtkgmmgvwAwAOR/EhrkApxewuQDZDzAXgMRAhqWlujOcvXYeEoiaSroMSxbvhccCLBC//foLThewtIDshaQEN4QBagpaDKtXHYTHAqFoBMVCfLwzw5U7lyEJSVtZh2H1aogB2BIOzEAWNiZwIoMZcP7GRVQDYEkXFu/4XJKd5cVw+OwpiAF6aroMrCysDKwsjAzffvxi+Pv3PwMzMyOcBucRTnawed++/wTT/LycDAdPnWQA50aIAha4hX///WdgZmJkANEgAMvm//7+h4uBxH/+/MsAAPTFDuFjKTIFAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_gearbox.png","name":"brass_gearbox.png","folder":"block","namespace":"create","id":"7","particle":false,"mode":"bitmap","saved":true,"uuid":"c8e5c536-6dcc-dc5c-680c-9d18e67c9b7d","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACLElEQVQ4T42TzWsTQRjGn9mPfGwToyVtSMEoVivGVtFoP8SCIFURAhY9FDykCA2i+Fd404sXPSiIoCdz8BAQKngoOZjWxqIWURAKKTRYRbGrm+xuNlveWXeTaBQfWN6Zd2Z+O+/HsGuZvTZ+SZYFd/hPa5oNb51lp3bbkxMnPIdWs/hY02pQlAC3pJpR9/Z0bw3x8WyhAHb54h57YuwYrt94wp2KT+RWkhnqps1tq8hHys6cQfHNogMYTw3j5q08+vscct1oXpHmhmXDJzogySeg8qXaBFAORg8ewe07TxGPBvlhrXsQXSEHRmKM4YeqQvm6zOffqgbOnT+OldUPYARIJQ/h/oNn6IkEsBFKolwuQ1VVfFpf5wdivb0Ih8NIJBIc8nlDx4Wp8XbA3XuziHT5IG4/ilelEtYqlbbY++JxDI+MQF95ge8/jT8BdINtQR9YYhT5fB6W5VTDlSiKSKfTsMvFv4fwv4COIbg3EHaMYb5Y7BjC4VQK1upLHkJ25jRK75acJO7bNYRHD5+jZ4ufV6BTEqPRKGKxGE8iVeHS9KkmYGBnErnHczwHJIL4AwEIgsA/KqNpmhDXFvk6hZDJnMTyx7dOI+3vH0Qu1wS0Nk5rIqmJSNRIBFh6/7od4Lau265tZfhtcvXKWRRKCw7gwMAQZEmGLDFoNQOWZUMUmWfprBL0O+FVdW4j4SDmFubBX6OzQfL+YTVsiAIDWZL7zBuW7fnIr+sWNgGA/hThYohg9gAAAABJRU5ErkJggg=="},{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\MC Block Textures\\furnace_front.png","name":"furnace_front.png","folder":"MC Block Textures","namespace":"minecraft","id":"6","particle":false,"mode":"bitmap","saved":true,"uuid":"3895c9c0-992f-69b9-72eb-ef854cb1a475","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABy0lEQVQ4T32Tz0sCURDHx5uw/gITY1MwBEPLW3jQlQhPCWmXJPwD/A/Cq3+Af4EHu0keJbCTRGgepJuldJAEbUlsQV0XvBkzy3uuIM7lvTdv5zMz33lrukml1mCwP0WBA6eTe/DMDP3szL4xIeBQFOkbu91O63w+pz1bd/nk8RhUVQWTFIutj30+ED0eEEURZFkGm80Go9GIILi3WCywXC5pxXsG/ur3gVfg9Xop+3O9Dj+ybOyK749EEa6SSVgsFgT5lWUdcBIMUiYM/uz1dgYz52koBDFJAmzhezjUW0AHEqvVKg92OBxboNlsxs+FQgHeOx0dwCowAjDLLmPVMQAXEStAAd1uN8WZzeadgNVqRf7JZEJivrVamxZQAyaOpqo0FawK94LVujVW9KNxEe/zeZhOp+ByufYKaLzEMT9WKroGd9ksv8PysdTBYLAF8/v91Bre4aooCjyUyzrgOp0GQRCoN1S31W6DUXUk4VSkaBTOIxHSStM0eKrVdMBlIkHZXhoNeG0297ZxEY8DvptAILABoAOngONhtu8dFItFetqYkB7SbSZDYymVSlTqPsPWcrkcVUAaIOAsHIaPbpfHGX9nI8z4a7OYfw4q+2WVMkrOAAAAAElFTkSuQmCC"},{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\MC Block Textures\\furnace_side.png","name":"furnace_side.png","folder":"MC Block Textures","namespace":"minecraft","id":"8","particle":false,"mode":"bitmap","saved":true,"uuid":"178a3ef8-0486-c590-9946-223b61cd6838","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABnElEQVQ4T4VTQUsCURAeb8K6Cm5CLAp2S0lCCC/6F9Iuec//EP4bu0l/QrrYQQskDLfOLktiK+i64M34ZpvXKzTnsm/mffPNzDf7Ylf1+pY0+/R9OrIsFYEvhrj4gomBwDRNMkyTcalUipbLJeVyOVqtVnwWkzv4YRBQEASkCOxslmzbZuzzcMiEAJ0WixwTMhCL/+44EcGxbXNFsUQioUhQFcTr9Zqvp9Opwj4NBr87SCaTit1zXUJXMg5IQfI2maj463hMsVq1uj3J5zlRdJDWJQlV0QkK4PzheYyHoGqEQqHAQc/zVFX4OomIzDjXjUREB9VajdklwXEcNSfEA/iiUlE6iIiP/X5EcFYqcYswzIwRYNBgXzJwGIVHuG23aT6fUyaTUZs4dIAW991uRHDZaJBhGJwTj8dps9nwd5f5vk+WZRG+d51ONMJNqxVt4ZvkUHXcz2Yzeuj1IoLrZpPV1g1kYRjuJEUc/wQTYITzcpnS6bRa2T4yJMlaF4sFvYxGP/+BvmMoLFv5O47+uNQWdNB/zxk4/anD/wJPDv7ZTcB8KgAAAABJRU5ErkJggg=="},{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\MC Block Textures\\furnace_top.png","name":"furnace_top.png","folder":"MC Block Textures","namespace":"minecraft","id":"9","particle":false,"mode":"bitmap","saved":true,"uuid":"467cb437-a46b-4f88-1e88-7b712905e30d","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABdElEQVQ4T5WTMU8CQRCFh1oOCizMBRKs9Ij8AmgMlRTERn4xFqAdhtMacrGQAg5rzLeXtxkIjdPAzr15++bNbO15Mjmai5/t1q5brZjhrCCvszA1CJIkiaCrJLFOpxPO+/3eis3GyBHNZtMajYat12v7LUsry9IiQdpuW5qmAVgURfW72dh9r2f1et0Oh0Mo9ORfeV4R3KSpZVkWQICJ98XCPCk5kaCEiAR3WRak6SYvHbCUeeLdbmcfy6XVhoPB8aHfDz2pV/4jHSKAvv/P1Sqc6R9DowfqNc/z0KdakXQVgiPw47soKgWD4TDKVJ94orhEitGvs1lF8DKd+lWIU9DIzhVRzLe3+bxq4XE0OiGQCpIUI1c7ICDFRCBgCt5p3XDugxaIQgyPU7jtdsPMkSXnvQe61fvDJWEP8OBpPDa5DDNjFKFXIWW+jZMW2D6CYr0BbR15duLiKvOYKAIgs2gFiXzzC8Z/MGDDHvznOaPCP3XOf4rhB+gyEDqQAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_block.png","name":"brass_block.png","folder":"block","namespace":"create","id":"10","particle":false,"mode":"bitmap","saved":true,"uuid":"a8ef7d1b-65c5-0db5-120d-dad3d9c754cf","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVQ4T1WTS2/TQBDH/961Y8dJ6iRqKaAKJApVgYqHeHwWPgEnLtw58a24cagQKg+1oaioFIHEQ6oqItEQ196X0ezETpjLrmZ3fzPzn9ng+dNbFRasKB2EYEcr4o3SDs4BSSyaPfnzM4OAAHc27yMK+XJeWL9qrf1aKAsZMLBQxq/DfhdpIvFie5sBD7Ye4vDbCWxVwdkKa6sZxqc5rOXkSmUgggBRKNHPEu9b7nf+B3w8OvYH9WPaT/ISkZDQjrNaGXSgjfPZZt0OXu68QvDsyVZ1d/Mefp2c+ktJHCIvlH9kTeUBUSRZk5ZEmkRcam6wfzRiwPUrtzH+k/sL1jqfemlZA7JeO/F+Mi6LRfn682AO+HtWeuc0V5Az1ajm2qQUDVxrLuPL9wMW8dL5G9CmQqFUE5lSJ1uEaG29BmRZN8HocDQHjCe5P6AupG2uk7oiA06XHtddGmYdiADY/bTLgOX+BuxM6VosWpWxcNZBSAFnnAd4oVsh0rg1BwyW1oGZNv2lBNpwqiRcrlSjQyyjRp+iNPhx/JkzGPTW4SoaYYFFwHSqAAFEkvWoxZ1MS6+NB1AbV4fX/IRR5Fq4k99TOEpZVsjStofQYNGMUBfXzvXx5sM7Blxc2UCatPxBqQ0oMj2OWyGcc0iSCEoxnMaahqmXxtjZf8+AyxduziIHPkL9B3pdnnvquzYaaTtGPpuXrNfG6723CB4/ulql7bARyjpWOoqEb2ltYjZc5Kvv0Nk/rK1Cjidok2MAAAAASUVORK5CYII="}],"display":{"thirdperson_righthand":{"rotation":[75,-67,0],"translation":[0,2.5,-2],"scale":[0.375,0.375,0.375]},"thirdperson_lefthand":{"rotation":[75,-67,0],"translation":[0,2.5,-2],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,-91,0],"scale":[0.4,0.4,0.4]},"firstperson_lefthand":{"rotation":[0,-91,0],"scale":[0.4,0.4,0.4]},"ground":{"rotation":[90,0,0],"translation":[0,2,0],"scale":[0.25,0.25,0.25]},"gui":{"rotation":[30,225,0],"translation":[-0.25,0.75,0],"scale":[0.35,0.35,0.35]},"fixed":{"scale":[0.45,0.45,0.45]}}} \ No newline at end of file diff --git a/src/main/resources/assets/steampowered/models/item/bronze_flywheel.json b/src/main/resources/assets/steampowered/models/item/bronze_flywheel.json new file mode 100644 index 0000000..fcb149b --- /dev/null +++ b/src/main/resources/assets/steampowered/models/item/bronze_flywheel.json @@ -0,0 +1,3 @@ +{ + "parent": "steampowered:block/bronze_flywheel/item" +} \ No newline at end of file diff --git a/src/main/resources/assets/steampowered/models/item/bronze_steam_engine.json b/src/main/resources/assets/steampowered/models/item/bronze_steam_engine.json new file mode 100644 index 0000000..c90f0d6 --- /dev/null +++ b/src/main/resources/assets/steampowered/models/item/bronze_steam_engine.json @@ -0,0 +1,3 @@ +{ + "parent": "steampowered:block/bronze_steam_engine/item" +} \ No newline at end of file diff --git a/src/main/resources/assets/steampowered/models/item/steam_engine.json b/src/main/resources/assets/steampowered/models/item/steam_engine.json deleted file mode 100644 index c236562..0000000 --- a/src/main/resources/assets/steampowered/models/item/steam_engine.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/furnace_engine/item" -} \ No newline at end of file diff --git a/src/main/resources/assets/steampowered/ponder/steam_engine.nbt b/src/main/resources/assets/steampowered/ponder/steam_engine.nbt index 53a997e..7dd6018 100644 Binary files a/src/main/resources/assets/steampowered/ponder/steam_engine.nbt and b/src/main/resources/assets/steampowered/ponder/steam_engine.nbt differ diff --git a/src/main/resources/assets/steampowered/textures/block/metal_block/bronze_block.png b/src/main/resources/assets/steampowered/textures/block/metal_block/bronze_block.png new file mode 100644 index 0000000..b5c32af Binary files /dev/null and b/src/main/resources/assets/steampowered/textures/block/metal_block/bronze_block.png differ diff --git a/src/main/resources/assets/steampowered/textures/block/metal_block/cast_iron_block.png b/src/main/resources/assets/steampowered/textures/block/metal_block/cast_iron_block.png new file mode 100644 index 0000000..f0105ab Binary files /dev/null and b/src/main/resources/assets/steampowered/textures/block/metal_block/cast_iron_block.png differ diff --git a/src/main/resources/assets/steampowered/textures/block/metal_block/steel_block.png b/src/main/resources/assets/steampowered/textures/block/metal_block/steel_block.png new file mode 100644 index 0000000..ad69812 Binary files /dev/null and b/src/main/resources/assets/steampowered/textures/block/metal_block/steel_block.png differ diff --git a/src/main/resources/steampowered.mixins.json b/src/main/resources/steampowered.mixins.json new file mode 100644 index 0000000..9e5fcf3 --- /dev/null +++ b/src/main/resources/steampowered.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "com.teammoeg.steampowered.mixin", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "FlywheelTileEntityAccess" + ], + "client": [ + ], + "injectors": { + "defaultRequire": 1 + } +}