diff --git a/build.gradle b/build.gradle
index 0a71e6f..740cab6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -18,7 +18,7 @@ apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'org.spongepowered.mixin'
group = 'com.teammoeg'
-version = '1.16.5-1.1.0'
+version = '1.16.5-1.1.1'
java {
archivesBaseName = 'steampowered'
diff --git a/src/main/java/com/teammoeg/steampowered/SPConfig.java b/src/main/java/com/teammoeg/steampowered/SPConfig.java
index 961d724..c02876e 100644
--- a/src/main/java/com/teammoeg/steampowered/SPConfig.java
+++ b/src/main/java/com/teammoeg/steampowered/SPConfig.java
@@ -48,7 +48,6 @@ public class SPConfig {
public final ForgeConfigSpec.IntValue steelBurnerHU;
- public final ForgeConfigSpec.IntValue dynamoFeMaxIn;
public final ForgeConfigSpec.IntValue dynamoFeMaxOut;
public final ForgeConfigSpec.IntValue dynamoFeCapacity;
public final ForgeConfigSpec.IntValue dynamoImpact;
@@ -114,7 +113,6 @@ public class SPConfig {
builder.push("dynamo").comment("If dynamo is disabled in the server config, the following will be ignored!");
{
- dynamoFeMaxIn = builder.defineInRange("dynamoFeMaxIn", 0, 0, 8192);
dynamoFeMaxOut = builder.defineInRange("dynamoFeMaxOut", 256, 0, 8192);
dynamoFeCapacity = builder.defineInRange("dynamoFeCapacity", 2048, 0, 8192);
dynamoImpact = builder.defineInRange("dynamoImpact", 16, 0, 8192);
@@ -136,7 +134,7 @@ public class SPConfig {
public final ForgeConfigSpec.BooleanValue allowUnverifiedContraption;
public final ForgeConfigSpec.BooleanValue allowCartAssembler;
- public final ForgeConfigSpec.BooleanValue disableSteamPoweredDynamo;
+ public final ForgeConfigSpec.BooleanValue disableDynamo;
Server(ForgeConfigSpec.Builder builder) {
builder.push("createmodify");
@@ -147,7 +145,21 @@ public class SPConfig {
builder.pop();
builder.push("dynamo");
{
- disableSteamPoweredDynamo = builder.comment("Set to false to enable this mod's dynamo.").define("disableSteamPoweredDynamo", true);
+ disableDynamo = builder
+ .comment("Set to true to DISABLE the DynamoBlock ONLY when Create: Crafts & Additions is loaded")
+ .comment("Create: Crafts & Additions is a mod which provides a similar electricity generation device called Alternator")
+ .comment("For pack developers who think having two similar devices is superfluous, you have two choices:")
+ .comment("Either you can set this config option to true and remove the DynamoBlock recipe through datapack")
+ .comment("Or if you instead want to use our DynamoBlock, you can remove the Alternator's recipe through datapack")
+ .comment("How to make datapack? Learn it from here: https://minecraft.gamepedia.com/Data_Pack")
+ .comment("However, please refer to the following: ")
+ .comment("We offers a redstone lock mechanism so that you can disconnect the DynamoBlock with redstone signal")
+ .comment("We offers a different model which provides different textures according to redstone status")
+ .comment("Clarification: As of Ver 1.1.1, Create: Steam Powered's DynamoBlock ONLY adapts from")
+ .comment("the code implementation of the Alternator created by MRH0, which is under MIT License")
+ .comment("We acknowledge and appreciate the great work done by MRH0. We learn from his code")
+ .comment("MRH0 is also under our credits list in mods.toml description")
+ .define("disableDynamo", false);
}
builder.pop();
}
diff --git a/src/main/java/com/teammoeg/steampowered/SteamPowered.java b/src/main/java/com/teammoeg/steampowered/SteamPowered.java
index c582914..dd0597c 100644
--- a/src/main/java/com/teammoeg/steampowered/SteamPowered.java
+++ b/src/main/java/com/teammoeg/steampowered/SteamPowered.java
@@ -81,7 +81,7 @@ public class SteamPowered {
SPBlocks.register();
SPTiles.register();
SPItems.register();
- BlockStressDefaults.setDefaultImpact(new ResourceLocation("create","gantry_shaft"),8.0);
+ BlockStressDefaults.setDefaultImpact(new ResourceLocation("create","gantry_shaft"),32.0);
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, SPConfig.COMMON_CONFIG);
ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, SPConfig.SERVER_CONFIG);
PacketHandler.register();
diff --git a/src/main/java/com/teammoeg/steampowered/block/SPBlockPartials.java b/src/main/java/com/teammoeg/steampowered/block/SPBlockPartials.java
index 81f2b28..abd07e7 100644
--- a/src/main/java/com/teammoeg/steampowered/block/SPBlockPartials.java
+++ b/src/main/java/com/teammoeg/steampowered/block/SPBlockPartials.java
@@ -40,6 +40,8 @@ public class SPBlockPartials {
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");
+ public static final PartialModel DYNAMO_SHAFT = get("dynamo/shaft");
+
private static PartialModel get(String path) {
return new PartialModel(new ResourceLocation("steampowered", "block/" + path));
}
diff --git a/src/main/java/com/teammoeg/steampowered/client/render/AlternatorRenderer.java b/src/main/java/com/teammoeg/steampowered/client/render/AlternatorRenderer.java
deleted file mode 100644
index ffdd257..0000000
--- a/src/main/java/com/teammoeg/steampowered/client/render/AlternatorRenderer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Available under MIT the license more info at: https://tldrlegal.com/license/mit-license
- *
- * MIT License
- *
- * Copyright 2021 MRH0
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction,
- * including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom t
- * he Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package com.teammoeg.steampowered.client.render;
-
-import com.simibubi.create.AllBlockPartials;
-import com.simibubi.create.content.contraptions.base.KineticTileEntity;
-import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
-import com.simibubi.create.foundation.render.PartialBufferer;
-import com.simibubi.create.foundation.render.SuperByteBuffer;
-import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
-
-/**
- * Adapted from: Create: Crafts & Additions
- * @author MRH0
- */
-public class AlternatorRenderer extends KineticTileEntityRenderer {
-
- public AlternatorRenderer(TileEntityRendererDispatcher dispatcher) {
- super(dispatcher);
- }
-
- @Override
- protected SuperByteBuffer getRotatedModel(KineticTileEntity te) {
- return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState());
- }
-}
diff --git a/src/main/java/com/teammoeg/steampowered/client/render/DynamoRenderer.java b/src/main/java/com/teammoeg/steampowered/client/render/DynamoRenderer.java
new file mode 100644
index 0000000..f02170a
--- /dev/null
+++ b/src/main/java/com/teammoeg/steampowered/client/render/DynamoRenderer.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2021 TeamMoeg
+ *
+ * This file is part of Steam Powered.
+ *
+ * Steam Powered is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * Steam Powered is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Steam Powered. If not, see .
+ */
+
+package com.teammoeg.steampowered.client.render;
+
+import com.simibubi.create.AllBlockPartials;
+import com.simibubi.create.content.contraptions.base.KineticTileEntity;
+import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
+import com.simibubi.create.foundation.render.PartialBufferer;
+import com.simibubi.create.foundation.render.SuperByteBuffer;
+import com.teammoeg.steampowered.block.SPBlockPartials;
+import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
+
+public class DynamoRenderer extends KineticTileEntityRenderer {
+
+ public DynamoRenderer(TileEntityRendererDispatcher dispatcher) {
+ super(dispatcher);
+ }
+
+ @Override
+ protected SuperByteBuffer getRotatedModel(KineticTileEntity te) {
+ return PartialBufferer.getFacing(SPBlockPartials.DYNAMO_SHAFT, te.getBlockState());
+ }
+}
diff --git a/src/main/java/com/teammoeg/steampowered/content/alternator/AlternatorBlock.java b/src/main/java/com/teammoeg/steampowered/content/alternator/AlternatorBlock.java
deleted file mode 100644
index cf5e2d3..0000000
--- a/src/main/java/com/teammoeg/steampowered/content/alternator/AlternatorBlock.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Available under MIT the license more info at: https://tldrlegal.com/license/mit-license
- *
- * MIT License
- *
- * Copyright 2021 MRH0
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction,
- * including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom t
- * he Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package com.teammoeg.steampowered.content.alternator;
-
-import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock;
-import com.simibubi.create.content.contraptions.base.IRotate;
-import com.simibubi.create.foundation.block.ITE;
-import com.simibubi.create.foundation.utility.VoxelShaper;
-import com.teammoeg.steampowered.SPConfig;
-import com.teammoeg.steampowered.block.SPShapes;
-import com.teammoeg.steampowered.registrate.SPTiles;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.client.util.ITooltipFlag;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.item.ItemGroup;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.NonNullList;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.shapes.ISelectionContext;
-import net.minecraft.util.math.shapes.VoxelShape;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TextFormatting;
-import net.minecraft.util.text.TranslationTextComponent;
-import net.minecraft.world.IBlockReader;
-import net.minecraft.world.IWorldReader;
-import net.minecraft.world.World;
-
-import java.util.List;
-
-/**
- * Adapted from: Create: Crafts & Additions
- * @author MRH0
- */
-public class AlternatorBlock extends DirectionalKineticBlock implements ITE, IRotate {
-
- public static final VoxelShaper ALTERNATOR_SHAPE = SPShapes.shape(0, 3, 0, 16, 13, 16).add(2, 0, 2, 14, 14, 14).forDirectional();
-
- @Override
- public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
- return ALTERNATOR_SHAPE.get(state.getValue(FACING));
- }
-
- @Override
- public BlockState getStateForPlacement(BlockItemUseContext context) {
- Direction preferred = getPreferredFacing(context);
- if ((context.getPlayer() != null && context.getPlayer()
- .isShiftKeyDown()) || preferred == null)
- return super.getStateForPlacement(context);
- return defaultBlockState().setValue(FACING, preferred);
- }
-
- public AlternatorBlock(Properties properties) {
- super(properties);
- }
-
- @Override
- public boolean hasShaftTowards(IWorldReader 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 Class getTileEntityClass() {
- return AlternatorTileEntity.class;
- }
-
- @Override
- public TileEntity createTileEntity(BlockState state, IBlockReader world) {
- return SPTiles.ALTERNATOR.create();
- }
-
- @Override
- public SpeedLevel getMinimumRequiredSpeedLevel() {
- return SpeedLevel.MEDIUM;
- }
-
- @Override
- public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) {
- TileEntity tileentity = state.hasTileEntity() ? worldIn.getBlockEntity(pos) : null;
- if (tileentity != null) {
- if (tileentity instanceof AlternatorTileEntity) {
- ((AlternatorTileEntity) tileentity).updateCache();
- }
- }
- }
-
- @Override
- public void fillItemCategory(ItemGroup group, NonNullList itemStacks) {
- if (SPConfig.SERVER.disableSteamPoweredDynamo.get()) {
- // dynamo disabled
- } else {
- super.fillItemCategory(group, itemStacks);
- }
- }
-
- @Override
- public void appendHoverText(ItemStack i, IBlockReader w, List t, ITooltipFlag f) {
- if (SPConfig.SERVER.disableSteamPoweredDynamo.get()) {
- t.add(new StringTextComponent("Dynamo is disabled in the server config").withStyle(TextFormatting.RED));
- } else {
- t.add(new StringTextComponent("Dynamo adapted from the mod Create: Crafts & Additions. Credits: MRH0").withStyle(TextFormatting.RED));
- t.add(new StringTextComponent("Codes and assets under MIT License").withStyle(TextFormatting.RED));
- t.add(new TranslationTextComponent("block.steampowered.alternator.tooltip.summary").withStyle(TextFormatting.GRAY));
- }
- super.appendHoverText(i,w,t,f);
- }
-}
diff --git a/src/main/java/com/teammoeg/steampowered/content/alternator/DynamoBlock.java b/src/main/java/com/teammoeg/steampowered/content/alternator/DynamoBlock.java
new file mode 100644
index 0000000..7bb96a8
--- /dev/null
+++ b/src/main/java/com/teammoeg/steampowered/content/alternator/DynamoBlock.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2021 TeamMoeg
+ *
+ * This file is part of Steam Powered.
+ *
+ * Steam Powered is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * Steam Powered is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Steam Powered. If not, see .
+ */
+
+package com.teammoeg.steampowered.content.alternator;
+
+import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock;
+import com.simibubi.create.content.contraptions.base.IRotate;
+import com.simibubi.create.foundation.block.ITE;
+import com.simibubi.create.foundation.utility.VoxelShaper;
+import com.teammoeg.steampowered.SPConfig;
+import com.teammoeg.steampowered.block.SPShapes;
+import com.teammoeg.steampowered.registrate.SPTiles;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockState;
+import net.minecraft.client.util.ITooltipFlag;
+import net.minecraft.item.BlockItemUseContext;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.ItemStack;
+import net.minecraft.state.BooleanProperty;
+import net.minecraft.state.StateContainer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.Direction;
+import net.minecraft.util.Direction.Axis;
+import net.minecraft.util.NonNullList;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.math.shapes.ISelectionContext;
+import net.minecraft.util.math.shapes.VoxelShape;
+import net.minecraft.util.text.ITextComponent;
+import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.util.text.TextFormatting;
+import net.minecraft.util.text.TranslationTextComponent;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.world.IWorldReader;
+import net.minecraft.world.World;
+import net.minecraft.world.server.ServerWorld;
+import net.minecraftforge.fml.ModList;
+
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Adapted from: Create: Crafts & Additions
+ * @author MRH0
+ * @author yuesha-yc
+ */
+public class DynamoBlock extends DirectionalKineticBlock implements ITE, IRotate {
+
+ public static final BooleanProperty REDSTONE_LOCKED = BooleanProperty.create("redstone_locked");
+
+ public static final VoxelShaper DYNAMO_SHAPE = SPShapes
+ .shape(0, 0, 0, 16, 3, 16)
+ .add(3, 3, 1, 13, 14, 12)
+ .add(2, 3, 12, 14,15, 16)
+ .forDirectional();
+
+ @Override
+ public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
+ return DYNAMO_SHAPE.get(state.getValue(FACING).getOpposite());
+ }
+
+ @Override
+ public BlockState getStateForPlacement(BlockItemUseContext context) {
+ Direction preferred = getPreferredFacing(context);
+ if ((context.getPlayer() != null && context.getPlayer().isShiftKeyDown()) || preferred == null) {
+ return super.getStateForPlacement(context).setValue(REDSTONE_LOCKED, context.getLevel().hasNeighborSignal(context.getClickedPos()));
+ }
+ return defaultBlockState().setValue(FACING, preferred).setValue(REDSTONE_LOCKED, context.getLevel().hasNeighborSignal(context.getClickedPos()));
+ }
+
+ public DynamoBlock(Properties properties) {
+ super(properties);
+ this.registerDefaultState(this.stateDefinition.any().setValue(REDSTONE_LOCKED, false));
+ }
+
+ protected void createBlockStateDefinition(StateContainer.Builder builder) {
+ super.createBlockStateDefinition(builder.add(REDSTONE_LOCKED));
+ }
+
+ @Override
+ public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) {
+ return face == state.getValue(FACING).getOpposite();
+ }
+
+ @Override
+ public Axis getRotationAxis(BlockState state) {
+ return state.getValue(FACING)
+ .getAxis();
+ }
+
+ @Override
+ public Class getTileEntityClass() {
+ return DynamoTileEntity.class;
+ }
+
+ @Override
+ public TileEntity createTileEntity(BlockState state, IBlockReader world) {
+ return SPTiles.DYNAMO.create();
+ }
+
+ @Override
+ public SpeedLevel getMinimumRequiredSpeedLevel() {
+ return SpeedLevel.MEDIUM;
+ }
+
+ @Override
+ public void fillItemCategory(ItemGroup group, NonNullList itemStacks) {
+ if (ModList.get().isLoaded("createaddition") && SPConfig.SERVER.disableDynamo.get()) {
+ // removes dynamo from creative tab when CC&A is loaded AND config is set to true
+ } else {
+ super.fillItemCategory(group, itemStacks);
+ }
+ }
+
+ @Override
+ public void appendHoverText(ItemStack i, IBlockReader w, List t, ITooltipFlag f) {
+ t.add(new StringTextComponent("We adapt and appreciate MRH0's code").withStyle(TextFormatting.GRAY));
+ if (ModList.get().isLoaded("createaddition")) {
+ if (SPConfig.SERVER.disableDynamo.get()) {
+ t.add(new StringTextComponent("Dynamo is disabled in [save]/serverconfig/steampowered-server.toml").withStyle(TextFormatting.RED));
+ }
+ }
+ super.appendHoverText(i,w,t,f);
+ }
+
+ @Override
+ public void neighborChanged(BlockState state, World world, BlockPos pos, Block block, BlockPos fromPos, boolean flag) {
+ if (!world.isClientSide) {
+ TileEntity tileentity = state.hasTileEntity() ? world.getBlockEntity(pos) : null;
+ if (tileentity != null) {
+ if (tileentity instanceof DynamoTileEntity) {
+ ((DynamoTileEntity) tileentity).updateCache();
+ }
+ }
+
+ boolean isLocked = state.getValue(REDSTONE_LOCKED);
+ if (isLocked != world.hasNeighborSignal(pos)) {
+ if (isLocked) {
+ world.getBlockTicks().scheduleTick(pos, this, 4);
+ } else {
+ world.setBlock(pos, state.cycle(REDSTONE_LOCKED), 2);
+ }
+ }
+
+ }
+ }
+
+ @Override
+ public void tick(BlockState state, ServerWorld serverworld, BlockPos pos, Random random) {
+ if (state.getValue(REDSTONE_LOCKED) && !serverworld.hasNeighborSignal(pos)) {
+ serverworld.setBlock(pos, state.cycle(REDSTONE_LOCKED), 2);
+ }
+ }
+}
diff --git a/src/main/java/com/teammoeg/steampowered/content/alternator/AlternatorTileEntity.java b/src/main/java/com/teammoeg/steampowered/content/alternator/DynamoTileEntity.java
similarity index 67%
rename from src/main/java/com/teammoeg/steampowered/content/alternator/AlternatorTileEntity.java
rename to src/main/java/com/teammoeg/steampowered/content/alternator/DynamoTileEntity.java
index 7e17f8c..95c9c3c 100644
--- a/src/main/java/com/teammoeg/steampowered/content/alternator/AlternatorTileEntity.java
+++ b/src/main/java/com/teammoeg/steampowered/content/alternator/DynamoTileEntity.java
@@ -1,28 +1,19 @@
-/**
- * Available under MIT the license more info at: https://tldrlegal.com/license/mit-license
+/*
+ * Copyright (c) 2021 TeamMoeg
*
- * MIT License
+ * This file is part of Steam Powered.
*
- * Copyright 2021 MRH0
+ * Steam Powered is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3.
*
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction,
- * including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom t
- * he Software is furnished to do so, subject to the following conditions:
+ * Steam Powered is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * You should have received a copy of the GNU General Public License
+ * along with Steam Powered. If not, see .
*/
package com.teammoeg.steampowered.content.alternator;
@@ -31,7 +22,6 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.foundation.utility.Lang;
import com.teammoeg.steampowered.SPConfig;
-import com.teammoeg.steampowered.SteamPowered;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.nbt.CompoundNBT;
@@ -51,34 +41,38 @@ import net.minecraftforge.energy.IEnergyStorage;
import java.util.List;
/**
- * Adapted from: Create: Crafts & Additions
+ * Adapted from: Create: Crafts & Additions under the MIT License
* @author MRH0
+ * @author yuesha-yc
*/
-public class AlternatorTileEntity extends KineticTileEntity {
+public class DynamoTileEntity extends KineticTileEntity {
protected final InternalEnergyStorage energy;
private LazyOptional lazyEnergy;
+ private boolean redstoneLocked = false;
- private static final int
- MAX_FE_IN = SPConfig.COMMON.dynamoFeMaxIn.get(),
- MAX_FE_OUT = SPConfig.COMMON.dynamoFeMaxOut.get(), // FE Output
- FE_CAPACITY = SPConfig.COMMON.dynamoFeCapacity.get(), // FE Storage
- IMPACT = SPConfig.COMMON.dynamoImpact.get(); // Impact on network
- private static final double
- EFFICIENCY = SPConfig.COMMON.dynamoEfficiency.get();
+ public static final int MAX_FE_OUT = SPConfig.COMMON.dynamoFeMaxOut.get(); // FE Output
+ public static final int FE_CAPACITY = SPConfig.COMMON.dynamoFeCapacity.get(); // FE Storage
+ public static final int IMPACT = SPConfig.COMMON.dynamoImpact.get(); // Impact on network
+ public static final double EFFICIENCY = SPConfig.COMMON.dynamoEfficiency.get(); // Efficiency
- public AlternatorTileEntity(TileEntityType> typeIn) {
+ public DynamoTileEntity(TileEntityType> typeIn) {
super(typeIn);
- energy = new InternalEnergyStorage(FE_CAPACITY, MAX_FE_IN, MAX_FE_OUT);
+ energy = new InternalEnergyStorage(FE_CAPACITY, 0, MAX_FE_OUT);
lazyEnergy = LazyOptional.of(() -> energy);
}
@Override
public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) {
- tooltip.add(new StringTextComponent(spacing).append(new TranslationTextComponent(SteamPowered.MODID + ".tooltip.energy.production").withStyle(TextFormatting.GRAY)));
- tooltip.add(new StringTextComponent(spacing).append(new StringTextComponent(" " + format(getEnergyProductionRate((int) (isSpeedRequirementFulfilled() ? getSpeed() : 0))) + "fe/t ") // fix
- .withStyle(TextFormatting.AQUA)).append(Lang.translate("gui.goggles.at_current_speed").withStyle(TextFormatting.DARK_GRAY)));
- return super.addToGoggleTooltip(tooltip, isPlayerSneaking);
+ if (this.getBlockState().getValue(DynamoBlock.REDSTONE_LOCKED)) {
+ tooltip.add(new StringTextComponent(spacing).append(new TranslationTextComponent("tooltip.steampowered.dynamo.locked").withStyle(TextFormatting.RED)));
+ return true;
+ } else {
+ tooltip.add(new StringTextComponent(spacing).append(new TranslationTextComponent("tooltip.steampowered.energy.production").withStyle(TextFormatting.GRAY)));
+ tooltip.add(new StringTextComponent(spacing).append(new StringTextComponent(" " + format(getEnergyProductionRate((int) (isSpeedRequirementFulfilled() ? getSpeed() : 0))) + "fe/t ") // fix
+ .withStyle(TextFormatting.AQUA)).append(Lang.translate("gui.goggles.at_current_speed").withStyle(TextFormatting.DARK_GRAY)));
+ return super.addToGoggleTooltip(tooltip, isPlayerSneaking);
+ }
}
private static String format(int n) {
@@ -91,8 +85,13 @@ public class AlternatorTileEntity extends KineticTileEntity {
@Override
public float calculateStressApplied() {
- this.lastStressApplied = IMPACT;
- return IMPACT;
+ if (getBlockState().getValue(DynamoBlock.REDSTONE_LOCKED)) {
+ this.lastStressApplied = 0;
+ return 0;
+ } else {
+ this.lastStressApplied = IMPACT;
+ return IMPACT;
+ }
}
@Override
@@ -107,19 +106,21 @@ public class AlternatorTileEntity extends KineticTileEntity {
}
public boolean isEnergyOutput(Direction side) {
- return side != getBlockState().getValue(AlternatorBlock.FACING);
+ return side != getBlockState().getValue(DynamoBlock.FACING).getOpposite();
}
@Override
public void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) {
super.fromTag(state, compound, clientPacket);
energy.read(compound);
+ redstoneLocked = compound.getBoolean("redstonelocked");
}
@Override
public void write(CompoundNBT compound, boolean clientPacket) {
super.write(compound, clientPacket);
energy.write(compound);
+ compound.putBoolean("redstonelocked", redstoneLocked);
}
private boolean firstTickState = true;
@@ -129,6 +130,10 @@ public class AlternatorTileEntity extends KineticTileEntity {
super.tick();
if (level != null && level.isClientSide())
return;
+
+ if (this.getBlockState().getValue(DynamoBlock.REDSTONE_LOCKED))
+ return;
+
if (firstTickState)
firstTick();
firstTickState = false;
@@ -152,11 +157,6 @@ public class AlternatorTileEntity extends KineticTileEntity {
return (int) (Math.abs(rpm) * EFFICIENCY);
}
- @Override
- protected Block getStressConfigKey() {
- return AllBlocks.MECHANICAL_MIXER.get();
- }
-
@Override
public void setRemoved() {
super.setRemoved();
@@ -167,8 +167,6 @@ public class AlternatorTileEntity extends KineticTileEntity {
updateCache();
}
- ;
-
public void updateCache() {
if (level.isClientSide())
return;
diff --git a/src/main/java/com/teammoeg/steampowered/ponder/SPPonderIndex.java b/src/main/java/com/teammoeg/steampowered/ponder/SPPonderIndex.java
index e19abdf..30f29a4 100644
--- a/src/main/java/com/teammoeg/steampowered/ponder/SPPonderIndex.java
+++ b/src/main/java/com/teammoeg/steampowered/ponder/SPPonderIndex.java
@@ -54,8 +54,8 @@ public class SPPonderIndex {
STEAM_HELPER.forComponents(SPBlocks.BRONZE_FLYWHEEL, SPBlocks.CAST_IRON_FLYWHEEL, SPBlocks.STEEL_FLYWHEEL)
.addStoryBoard("steam_engine", SPScenes::steamFlywheel, PonderTag.KINETIC_SOURCES, STEAM);
- STEAM_HELPER.forComponents(SPBlocks.ALTERNATOR)
- .addStoryBoard("alternator", SPScenes::alternator, PonderTag.KINETIC_APPLIANCES, STEAM);
+ STEAM_HELPER.forComponents(SPBlocks.DYNAMO)
+ .addStoryBoard("dynamo", SPScenes::dynamo, PonderTag.KINETIC_APPLIANCES, STEAM);
}
}
diff --git a/src/main/java/com/teammoeg/steampowered/ponder/SPScenes.java b/src/main/java/com/teammoeg/steampowered/ponder/SPScenes.java
index 3e7634f..173940a 100644
--- a/src/main/java/com/teammoeg/steampowered/ponder/SPScenes.java
+++ b/src/main/java/com/teammoeg/steampowered/ponder/SPScenes.java
@@ -25,9 +25,13 @@ import com.simibubi.create.foundation.ponder.Selection;
import com.simibubi.create.foundation.ponder.content.PonderPalette;
import com.simibubi.create.foundation.ponder.elements.InputWindowElement;
import com.simibubi.create.foundation.utility.Pointing;
+import com.teammoeg.steampowered.content.alternator.DynamoBlock;
import com.teammoeg.steampowered.content.burner.BurnerBlock;
import com.teammoeg.steampowered.content.engine.SteamEngineBlock;
import com.teammoeg.steampowered.registrate.SPBlocks;
+import net.minecraft.block.LeverBlock;
+import net.minecraft.block.RedstoneBlock;
+import net.minecraft.block.RedstoneWireBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Direction;
@@ -194,37 +198,71 @@ public class SPScenes {
scene.overlay.showText(80).placeNearTarget().colored(PonderPalette.MEDIUM).pointAt(util.vector.topOf(enginePos.west())).text(text3);
}
- public static void alternator(SceneBuilder scene, SceneBuildingUtil util) {
- scene.title("alternator", "Generating Electric energy using a Alternator");
+ public static void dynamo(SceneBuilder scene, SceneBuildingUtil util) {
+ scene.title("dynamo", "Generating Electric energy using a Dynamo");
scene.configureBasePlate(1, 0, 4);
scene.world.showSection(util.select.layer(0), Direction.UP);
+ scene.idle(10);
+ scene.world.showSection(util.select.layer(1), Direction.UP);
+ scene.idle(10);
+ scene.world.showSection(util.select.layer(2), Direction.UP);
+ scene.idle(10);
BlockPos generator = util.grid.at(3, 1, 2);
+ BlockPos shaft = util.grid.at(2, 1, 2);
+ BlockPos gauge = util.grid.at(1, 1, 2);
+ BlockPos cogwheel = util.grid.at(0, 1, 2);
+ BlockPos largecog = util.grid.at(0, 2, 3);
+ BlockPos redstone = util.grid.at(3, 1, 1);
+ BlockPos lever = util.grid.at(3, 1, 0);
- for (int i = 0; i < 6; i++) {
- scene.idle(5);
- scene.world.showSection(util.select.position(i, 1, 2), Direction.DOWN);
- //scene.world.showSection(util.select.position(i, 2, 2), Direction.DOWN);
- }
+ scene.world.setKineticSpeed(util.select.position(largecog), 16.0F);
+ scene.idle(5);
+ scene.world.setKineticSpeed(util.select.position(cogwheel), 32.0F);
+ scene.idle(5);
+ scene.world.setKineticSpeed(util.select.position(shaft), 32.0F);
+ scene.idle(5);
+ scene.world.setKineticSpeed(util.select.position(generator), 32.0F);
+ scene.idle(5);
- scene.idle(10);
scene.overlay.showText(50)
- .text("The Alternator generates electric energy (fe) from rotational force")
+ .attachKeyFrame()
+ .text("The Dynamo generates electric energy (fe) from rotational force")
+ .placeNearTarget()
+ .pointAt(util.vector.topOf(generator));
+ scene.idle(60);
+
+ scene.effects.rotationSpeedIndicator(cogwheel);
+ scene.idle(60);
+
+ scene.overlay.showText(50)
+ .text("It requires at least 32 RPM to operate")
+ .placeNearTarget()
+ .pointAt(util.vector.topOf(cogwheel));
+ scene.idle(60);
+
+ scene.overlay.showText(50)
+ .text("The Dynamos energy production is determined by the input RPM")
.placeNearTarget()
.pointAt(util.vector.topOf(generator));
scene.idle(60);
scene.overlay.showText(50)
- .text("It requires atleast 32 RPM to operate")
+ .text("It has conversion efficiency of 75 Percent")
.placeNearTarget()
.pointAt(util.vector.topOf(generator));
scene.idle(60);
-
scene.overlay.showText(50)
- .text("The Alternators energy production is determined by the input RPM")
+ .attachKeyFrame()
+ .text("You can lock the Dynamo with redstone signal so it will not apply stress to the network")
.placeNearTarget()
- .pointAt(util.vector.topOf(generator));
+ .pointAt(util.vector.centerOf(lever));
+ scene.idle(60);
+
+ scene.world.modifyBlock(lever, s -> s.setValue(LeverBlock.POWERED, true), false);
+ scene.world.modifyBlock(redstone, s -> s.setValue(RedstoneWireBlock.POWER, 15), false);
+ scene.world.modifyBlock(generator, s -> s.setValue(DynamoBlock.REDSTONE_LOCKED, true), false);
scene.idle(60);
}
}
diff --git a/src/main/java/com/teammoeg/steampowered/registrate/SPBlocks.java b/src/main/java/com/teammoeg/steampowered/registrate/SPBlocks.java
index 8d5824c..8c2ce80 100644
--- a/src/main/java/com/teammoeg/steampowered/registrate/SPBlocks.java
+++ b/src/main/java/com/teammoeg/steampowered/registrate/SPBlocks.java
@@ -31,7 +31,7 @@ import com.simibubi.create.foundation.data.SharedProperties;
import com.simibubi.create.repack.registrate.util.entry.BlockEntry;
import com.teammoeg.steampowered.SPConfig;
import com.teammoeg.steampowered.SteamPowered;
-import com.teammoeg.steampowered.content.alternator.AlternatorBlock;
+import com.teammoeg.steampowered.content.alternator.DynamoBlock;
import com.teammoeg.steampowered.content.boiler.CastIronBoilerBlock;
import com.teammoeg.steampowered.content.boiler.SteelBoilerBlock;
import com.teammoeg.steampowered.content.burner.CastIronBurnerBlock;
@@ -172,7 +172,7 @@ public class SPBlocks {
.build()
.register();
- public static final BlockEntry ALTERNATOR = REGISTRATE.block("alternator", AlternatorBlock::new)
+ public static final BlockEntry DYNAMO = REGISTRATE.block("alternator", DynamoBlock::new)
.initialProperties(SPBlocks::hardMetal)
.transform(BlockStressDefaults.setImpact(4.0))
.tag(AllTags.AllBlockTags.SAFE_NBT.tag) //Dono what this tag means (contraption safe?).
diff --git a/src/main/java/com/teammoeg/steampowered/registrate/SPTiles.java b/src/main/java/com/teammoeg/steampowered/registrate/SPTiles.java
index 5943e54..5ee0fad 100644
--- a/src/main/java/com/teammoeg/steampowered/registrate/SPTiles.java
+++ b/src/main/java/com/teammoeg/steampowered/registrate/SPTiles.java
@@ -28,12 +28,11 @@ import com.teammoeg.steampowered.SteamPowered;
import com.teammoeg.steampowered.client.instance.BronzeFlywheelInstance;
import com.teammoeg.steampowered.client.instance.CastIronFlywheelInstance;
import com.teammoeg.steampowered.client.instance.SteelFlywheelInstance;
-import com.teammoeg.steampowered.client.render.AlternatorRenderer;
+import com.teammoeg.steampowered.client.render.DynamoRenderer;
import com.teammoeg.steampowered.client.render.BronzeFlywheelRenderer;
import com.teammoeg.steampowered.client.render.CastIronFlywheelRenderer;
import com.teammoeg.steampowered.client.render.SteelFlywheelRenderer;
-import com.teammoeg.steampowered.content.alternator.AlternatorTileEntity;
-import com.teammoeg.steampowered.content.boiler.CastIronBoilerBlock;
+import com.teammoeg.steampowered.content.alternator.DynamoTileEntity;
import com.teammoeg.steampowered.content.boiler.CastIronBoilerTileEntity;
import com.teammoeg.steampowered.content.boiler.SteelBoilerTileEntity;
import com.teammoeg.steampowered.content.burner.CastIronBurnerTileEntity;
@@ -101,11 +100,11 @@ public class SPTiles {
.renderer(() -> KineticTileEntityRenderer::new)
.register();
- public static final TileEntityEntry ALTERNATOR = REGISTRATE
- .tileEntity("alternator", AlternatorTileEntity::new)
+ public static final TileEntityEntry DYNAMO = REGISTRATE
+ .tileEntity("alternator", DynamoTileEntity::new)
.instance(() -> HalfShaftInstance::new)
- .validBlocks(SPBlocks.ALTERNATOR)
- .renderer(() -> AlternatorRenderer::new)
+ .validBlocks(SPBlocks.DYNAMO)
+ .renderer(() -> DynamoRenderer::new)
.register();
public static final TileEntityEntry BRONZE_STEAM_FLYWHEEL = REGISTRATE
diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml
index b0a662c..29e8658 100644
--- a/src/main/resources/META-INF/mods.toml
+++ b/src/main/resources/META-INF/mods.toml
@@ -4,10 +4,10 @@ license = "GPLv3"
issueTrackerURL = "https://github.com/TeamMoegMC/Steam-Powered/issues"
[[mods]] #mandatory
modId = "steampowered" #mandatory
-version = "1.16.5-1.1.0" #mandatory
+version = "1.16.5-1.1.1" #mandatory
displayName = "Create: Steam Powered" #mandatory
authors = "YueSha, khjxiaogu, goumo_g"
-credits = "MRH0"
+credits = "We appreciate MRH0 for his code on RPM-FE conversion logic which we adapted in Steam Powered"
description = '''
Expanding Create mod to the Steam Age
'''
diff --git a/src/main/resources/assets/steampowered/blockstates/alternator.json b/src/main/resources/assets/steampowered/blockstates/alternator.json
index 88f1572..3e84ca4 100644
--- a/src/main/resources/assets/steampowered/blockstates/alternator.json
+++ b/src/main/resources/assets/steampowered/blockstates/alternator.json
@@ -1,27 +1,51 @@
{
"variants": {
- "facing=down": {
- "model": "steampowered:block/alternator/block",
+ "facing=down,redstone_locked=false": {
+ "model": "steampowered:block/dynamo/block",
"x": 270, "y": 90
},
- "facing=up": {
- "model": "steampowered:block/alternator/block",
+ "facing=up,redstone_locked=false": {
+ "model": "steampowered:block/dynamo/block",
"x": 90, "y": 90
},
- "facing=north": {
- "model": "steampowered:block/alternator/block",
+ "facing=north,redstone_locked=false": {
+ "model": "steampowered:block/dynamo/block",
"y": 180
},
- "facing=south": {
- "model": "steampowered:block/alternator/block",
+ "facing=south,redstone_locked=false": {
+ "model": "steampowered:block/dynamo/block",
"y": 0
},
- "facing=west": {
- "model": "steampowered:block/alternator/block",
+ "facing=west,redstone_locked=false": {
+ "model": "steampowered:block/dynamo/block",
"y": 90
},
- "facing=east": {
- "model": "steampowered:block/alternator/block",
+ "facing=east,redstone_locked=false": {
+ "model": "steampowered:block/dynamo/block",
+ "y": 270
+ },
+ "facing=down,redstone_locked=true": {
+ "model": "steampowered:block/dynamo/block_locked",
+ "x": 270, "y": 90
+ },
+ "facing=up,redstone_locked=true": {
+ "model": "steampowered:block/dynamo/block_locked",
+ "x": 90, "y": 90
+ },
+ "facing=north,redstone_locked=true": {
+ "model": "steampowered:block/dynamo/block_locked",
+ "y": 180
+ },
+ "facing=south,redstone_locked=true": {
+ "model": "steampowered:block/dynamo/block_locked",
+ "y": 0
+ },
+ "facing=west,redstone_locked=true": {
+ "model": "steampowered:block/dynamo/block_locked",
+ "y": 90
+ },
+ "facing=east,redstone_locked=true": {
+ "model": "steampowered:block/dynamo/block_locked",
"y": 270
}
}
diff --git a/src/main/resources/assets/steampowered/lang/en_us.json b/src/main/resources/assets/steampowered/lang/en_us.json
index 56758c4..604b3d7 100644
--- a/src/main/resources/assets/steampowered/lang/en_us.json
+++ b/src/main/resources/assets/steampowered/lang/en_us.json
@@ -36,24 +36,19 @@
"steampowered.ponder.flywheel.text_2": "The provided Rotational Force has a very large stress capacity",
"steampowered.ponder.flywheel.text_3": "Using Flywheels made of Steel or Cast Iron will increase efficiency and generated capacity of the Flywheel",
- "steampowered.tooltip.energy.production": "Energy Generated:",
+ "tooltip.steampowered.energy.production": "Energy Generated:",
"tooltip.steampowered.steam_engine.not_enough_steam": "Status: Not Enough Steam",
"tooltip.steampowered.steam_engine.running": "Status: Running",
+ "tooltip.steampowered.dynamo.locked": "Status: Redstone Locked",
- "item.steampowered.multimeter": "Multimeter",
- "item.steampowered.multimeter.title":"[Multimeter]:",
- "item.steampowered.multimeter.measuring":"[Measuring..]",
- "item.steampowered.multimeter.ticks":"ticks",
- "item.steampowered.multimeter.no_capability":"No Forge Energy capability on this side.",
- "item.steampowered.multimeter.tooltip.summary": "Measures capacity and input/output on any side with a Forge Energy capability.",
+ "block.steampowered.alternator": "Alternating Dynamo",
- "block.steampowered.alternator": "Dynamo",
- "block.steampowered.alternator.tooltip.summary": "Generates FE from SU. The amount of energy produced is based on RPM.",
-
- "steampowered.ponder.alternator.header": "Generating Electric energy using an Alternator",
- "steampowered.ponder.alternator.text_1": "The Alternator requires at least 32 RPM to operate",
- "steampowered.ponder.alternator.text_2": "It generates electric energy (FE) from rotational force",
- "steampowered.ponder.alternator.text_3": "It's energy production is determined by the input RPM",
+ "steampowered.ponder.dynamo.header": "Generating Electric energy using a Dynamo",
+ "steampowered.ponder.dynamo.text_1": "The Dynamo generates electric energy (FE) from rotational force",
+ "steampowered.ponder.dynamo.text_2": "It requires at least 32 RPM to operate",
+ "steampowered.ponder.dynamo.text_3": "It's energy production is determined by the input RPM",
+ "steampowered.ponder.dynamo.text_4": "It has conversion efficiency of 75 Percent",
+ "steampowered.ponder.dynamo.text_5": "You can lock the Dynamo with redstone signal so it will not apply stress to the network",
"steampowered.ponder.tag.steam": "Steam",
"steampowered.ponder.tag.steam.description": "Components related to steam production and usage",
diff --git a/src/main/resources/assets/steampowered/lang/ja_jp.json b/src/main/resources/assets/steampowered/lang/ja_jp.json
index f1629bc..1ebfa48 100644
--- a/src/main/resources/assets/steampowered/lang/ja_jp.json
+++ b/src/main/resources/assets/steampowered/lang/ja_jp.json
@@ -16,12 +16,12 @@
"block.steampowered.bronze_large_cogwheel": "青銅の大きな歯車",
"block.steampowered.cast_iron_large_cogwheel": "鋳鉄の大きな歯車",
"block.steampowered.steel_large_cogwheel": "鋼鉄の大きな歯車",
- "block.steampowered.bronze_boiler" : "Bronze Boiler",
- "block.steampowered.cast_iron_boiler" : "Cast Iron Boiler",
- "block.steampowered.steel_boiler" : "Steel Boiler",
- "block.steampowered.bronze_burner" : "Bronze Burning Chamber",
- "block.steampowered.cast_iron_burner" : "Cast Iron Burning Chamber",
- "block.steampowered.steel_burner" : "Steel Burning Chamber",
+ "block.steampowered.bronze_boiler": "Bronze Boiler",
+ "block.steampowered.cast_iron_boiler": "Cast Iron Boiler",
+ "block.steampowered.steel_boiler": "Steel Boiler",
+ "block.steampowered.bronze_burner": "Bronze Burning Chamber",
+ "block.steampowered.cast_iron_burner": "Cast Iron Burning Chamber",
+ "block.steampowered.steel_burner": "Steel Burning Chamber",
"fluid.steampowered.steam": "蒸気",
"fluid.steampowered.steam_following": "蒸気",
@@ -36,32 +36,38 @@
"steampowered.ponder.flywheel.text_2": "生成される回転力は非常に大きな応力容量を持っています",
"steampowered.ponder.flywheel.text_3": "鋼鉄や鋳鉄の勢車を使うと、勢車の効率や生成される応力容量が向上します",
- "steampowered.tooltip.energy.production": "エネルギー生成量:",
+ "tooltip.steampowered.energy.production": "エネルギー生成量:",
"tooltip.steampowered.steam_engine.not_enough_steam": "状態: 蒸気不足",
"tooltip.steampowered.steam_engine.running": "状態: 稼働中",
+ "tooltip.steampowered.dynamo.locked": "Status: Redstone Locked",
- "item.steampowered.multimeter": "マルチメーター",
- "item.steampowered.multimeter.title":"[マルチメーター]:",
- "item.steampowered.multimeter.measuring":"[計測中..]",
- "item.steampowered.multimeter.ticks":"ticks",
- "item.steampowered.multimeter.no_capability":"この面にはForge Energyの機能はありません",
- "item.steampowered.multimeter.tooltip.summary": "_Forge Energy機能_を持つ任意の面の_容量と_入出力_を計測します",
+ "block.steampowered.alternator": "オルタネーター Dynamo",
- "block.steampowered.alternator": "オルタネーター",
- "block.steampowered.alternator.tooltip.summary": "_su_から_FE_を発電します。発電量は_rpm_で決まります",
-
- "steampowered.ponder.alternator.header": "オルタネーターによる発電",
- "steampowered.ponder.alternator.text_1": "オルタネーターの動作には最低でも32RPMが必要です",
- "steampowered.ponder.alternator.text_2": "回転力で電気(FE)を発電します",
- "steampowered.ponder.alternator.text_3": "発電量は供給される_RPM_(回転速度)で決まります",
+ "steampowered.ponder.dynamo.header": "オルタネーターによる発電",
+ "steampowered.ponder.dynamo.text_1": "回転力で電気(FE)を発電します",
+ "steampowered.ponder.dynamo.text_2": "オルタネーターの動作には最低でも32RPMが必要です",
+ "steampowered.ponder.dynamo.text_3": "発電量は供給される_RPM_(回転速度)で決まります",
+ "steampowered.ponder.dynamo.text_4": "It has conversion efficiency of 75 Percent",
+ "steampowered.ponder.dynamo.text_5": "You can lock the Dynamo with redstone signal so it will not apply stress to the network",
"steampowered.ponder.tag.steam": "蒸気",
"steampowered.ponder.tag.steam.description": "蒸気を生成・利用する機械",
+ "tooltip.steampowered.burner.hu": "Heat Remaining: %s HU",
+ "tooltip.steampowered.burner.item": "Fuel Remaining: %s x %s",
+ "tooltip.steampowered.burner.huproduce": "Generates %s HU/t",
+ "tooltip.steampowered.burner.danger": "Caution! Standing on when burning causes damage!",
+
+ "tooltip.steampowered.boiler.huconsume": "Maximum Heat Intake %s HU/t",
+ "tooltip.steampowered.boiler.waterconsume": "Requires Water %s mb/t",
+ "tooltip.steampowered.boiler.steamproduce": "Maximum Steam Output %s mb/t",
+ "tooltip.steampowered.boiler.danger": "Caution! Standing on when working causes damage!",
+
"steampowered.ponder.boiler.header": "Generating Steam through Boilers and Burning Chambers",
"steampowered.ponder.boiler.text_1": "The Boiler needs water to produce Steam",
"steampowered.ponder.boiler.text_2": "The Burning Chamber needs furnace fuel to heat the Boiler",
"steampowered.ponder.boiler.text_3": "Right click with fuel item such as Coal or Planks to provide it with fuel",
"steampowered.ponder.boiler.text_4": "Right click with empty hand to take out the remaining fuel",
- "steampowered.ponder.boiler.text_5": "Pump the steam out of the boiler to power the Steam Engines"
-}
+ "steampowered.ponder.boiler.text_5": "Pump the steam out of the boiler to power the Steam Engines",
+ "tooltip.steampowered.dynamo.redstone_locked": "状態: Redstone Locked"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/steampowered/lang/zh_cn.json b/src/main/resources/assets/steampowered/lang/zh_cn.json
index 217cce0..7261ea2 100644
--- a/src/main/resources/assets/steampowered/lang/zh_cn.json
+++ b/src/main/resources/assets/steampowered/lang/zh_cn.json
@@ -36,24 +36,19 @@
"steampowered.ponder.flywheel.text_2": "如此产生的旋转力具有非常大的应力值",
"steampowered.ponder.flywheel.text_3": "使用钢或者铸铁制作的的蒸汽飞轮会使得飞轮效率和产能提升",
- "steampowered.tooltip.energy.production": "已产生的能量:",
+ "tooltip.steampowered.energy.production": "已产生的能量:",
"tooltip.steampowered.steam_engine.not_enough_steam": "状态:蒸汽不足",
"tooltip.steampowered.steam_engine.running": "状态:工作中",
+ "tooltip.steampowered.dynamo.locked": "状态: 红石锁定",
- "item.steampowered.multimeter": "万用表",
- "item.steampowered.multimeter.title":"[万用表]:",
- "item.steampowered.multimeter.measuring":"[测量中..]",
- "item.steampowered.multimeter.ticks":"刻",
- "item.steampowered.multimeter.no_capability":"此面不支持 FE 功能",
- "item.steampowered.multimeter.tooltip.summary": "测量任何一个有 FE 功能的面的容量与输入/输出",
+ "block.steampowered.alternator": "交流式发电机",
- "block.steampowered.alternator": "发电机",
- "block.steampowered.alternator.tooltip.summary": "从应力产生 FE 能量,基于转速。",
-
- "steampowered.ponder.alternator.header": "使用交流发电机发电",
- "steampowered.ponder.alternator.text_1": "交流发电机需要至少 32 rpm 的转速才能工作",
- "steampowered.ponder.alternator.text_2": "它从旋转动力中产生电能(FE)",
- "steampowered.ponder.alternator.text_3": "它产生能量的多少是由输入的转速决定的",
+ "steampowered.ponder.dynamo.header": "使用发电机发电",
+ "steampowered.ponder.dynamo.text_1": "发电机从旋转动力中产生电能(FE)",
+ "steampowered.ponder.dynamo.text_2": "它需要至少 32 rpm 的转速才能工作",
+ "steampowered.ponder.dynamo.text_3": "它产生能量的多少是由输入的转速决定的",
+ "steampowered.ponder.dynamo.text_4": "它的能量转化效率是百分之七十五",
+ "steampowered.ponder.dynamo.text_5": "你可以用红石信号锁定发电机,这样它就不会对动力网络造成压力了",
"steampowered.ponder.tag.steam": "蒸汽",
"steampowered.ponder.tag.steam.description": "使用或生产蒸汽的组件",
diff --git a/src/main/resources/assets/steampowered/models/block/alternator/block.json b/src/main/resources/assets/steampowered/models/block/alternator/block.json
deleted file mode 100644
index e8f4376..0000000
--- a/src/main/resources/assets/steampowered/models/block/alternator/block.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "textures": {
- "main": "steampowered:block/alternator/alternator",
- "particle": "steampowered:block/alternator/alternator"
- },
- "elements": [
- {
- "name": "coil",
- "from": [0, 0, 3],
- "to": [16, 16, 13],
- "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
- "faces": {
- "north": {"uv": [8, 8, 16, 16], "texture": "#main"},
- "east": {"uv": [1.5, 0, 6.5, 8], "rotation": 180, "texture": "#main"},
- "south": {"uv": [8, 8, 16, 16], "texture": "#main"},
- "west": {"uv": [1.5, 0, 6.5, 8], "texture": "#main"},
- "up": {"uv": [1.5, 0, 6.5, 8], "rotation": 90, "texture": "#main"},
- "down": {"uv": [1.5, 0, 6.5, 8], "rotation": 270, "texture": "#main"}
- }
- },
- {
- "name": "housing",
- "from": [2, 2, 0],
- "to": [14, 14, 14],
- "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
- "faces": {
- "north": {"uv": [9, 1, 15, 7], "texture": "#main"},
- "east": {"uv": [9, 1, 16, 7], "texture": "#main"},
- "south": {"uv": [1, 9, 7, 15], "texture": "#main"},
- "west": {"uv": [8, 1, 15, 7], "texture": "#main"},
- "up": {"uv": [9, 0, 15, 7], "texture": "#main"},
- "down": {"uv": [9, 1, 15, 8], "texture": "#main"}
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/steampowered/models/block/alternator/block_old.json b/src/main/resources/assets/steampowered/models/block/alternator/block_old.json
deleted file mode 100644
index 36d0dcc..0000000
--- a/src/main/resources/assets/steampowered/models/block/alternator/block_old.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "textures": {
- "0": "steampowered:block/alternator/coil",
- "1": "create:block/depot_top",
- "particle": "steampowered:block/alternator/coil"
- },
- "elements": [
- {
- "name": "coil",
- "from": [0, 0, 1],
- "to": [16, 16, 13],
- "faces": {
- "north": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "east": {"uv": [2, 0, 14, 16], "rotation": 180, "texture": "#0"},
- "south": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "west": {"uv": [2, 0, 14, 16], "texture": "#0"},
- "up": {"uv": [2, 0, 14, 16], "rotation": 90, "texture": "#0"},
- "down": {"uv": [2, 0, 14, 16], "rotation": 270, "texture": "#0"}
- }
- },
- {
- "name": "housing",
- "from": [1, 1, 0],
- "to": [15, 15, 14],
- "faces": {
- "north": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "east": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "south": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "west": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "up": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "down": {"uv": [1, 0, 15, 14], "texture": "#1"}
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/steampowered/models/block/alternator/item.json b/src/main/resources/assets/steampowered/models/block/alternator/item.json
deleted file mode 100644
index 547fb65..0000000
--- a/src/main/resources/assets/steampowered/models/block/alternator/item.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "textures": {
- "main": "steampowered:block/alternator/alternator",
- "particle": "steampowered:block/alternator/alternator",
- "1_0": "create:block/axis",
- "1_1": "create:block/axis_top"
- },
- "elements": [
- {
- "name": "coil",
- "from": [0, 0, 3],
- "to": [16, 16, 13],
- "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
- "faces": {
- "north": {"uv": [8, 8, 16, 16], "texture": "#main"},
- "east": {"uv": [1.5, 0, 6.5, 8], "rotation": 180, "texture": "#main"},
- "south": {"uv": [8, 8, 16, 16], "texture": "#main"},
- "west": {"uv": [1.5, 0, 6.5, 8], "texture": "#main"},
- "up": {"uv": [1.5, 0, 6.5, 8], "rotation": 90, "texture": "#main"},
- "down": {"uv": [1.5, 0, 6.5, 8], "rotation": 270, "texture": "#main"}
- }
- },
- {
- "name": "housing",
- "from": [2, 2, 0],
- "to": [14, 14, 14],
- "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
- "faces": {
- "north": {"uv": [9, 1, 15, 7], "texture": "#main"},
- "east": {"uv": [9, 1, 16, 7], "texture": "#main"},
- "south": {"uv": [1, 9, 7, 15], "texture": "#main"},
- "west": {"uv": [8, 1, 15, 7], "texture": "#main"},
- "up": {"uv": [9, 0, 15, 7], "texture": "#main"},
- "down": {"uv": [9, 1, 15, 8], "texture": "#main"}
- }
- },
- {
- "name": "Axis",
- "from": [6, 6, 6],
- "to": [10, 10, 16],
- "shade": false,
- "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
- "faces": {
- "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"},
- "east": {"uv": [6, 0, 10, 10], "rotation": 270, "texture": "#1_0"},
- "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"},
- "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"}
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/steampowered/models/block/alternator/item_old.json b/src/main/resources/assets/steampowered/models/block/alternator/item_old.json
deleted file mode 100644
index c92b160..0000000
--- a/src/main/resources/assets/steampowered/models/block/alternator/item_old.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "textures": {
- "0": "steampowered:block/alternator/coil",
- "1": "create:block/depot_top",
- "1_0": "create:block/axis",
- "1_1": "create:block/axis_top",
- "particle": "steampowered:block/alternator/coil"
- },
- "elements": [
- {
- "name": "coil",
- "from": [0, 0, 1],
- "to": [16, 16, 13],
- "faces": {
- "north": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "east": {"uv": [2, 0, 14, 16], "rotation": 180, "texture": "#0"},
- "south": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "west": {"uv": [2, 0, 14, 16], "texture": "#0"},
- "up": {"uv": [2, 0, 14, 16], "rotation": 90, "texture": "#0"},
- "down": {"uv": [2, 0, 14, 16], "rotation": 270, "texture": "#0"}
- }
- },
- {
- "name": "housing",
- "from": [1, 1, 0],
- "to": [15, 15, 14],
- "faces": {
- "north": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "east": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "south": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "west": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "up": {"uv": [1, 0, 15, 14], "texture": "#1"},
- "down": {"uv": [1, 0, 15, 14], "texture": "#1"}
- }
- },
- {
- "name": "Axis",
- "from": [6, 6, 6],
- "to": [10, 10, 16],
- "shade": false,
- "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
- "faces": {
- "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"},
- "east": {"uv": [6, 0, 10, 10], "rotation": 270, "texture": "#1_0"},
- "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"},
- "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"}
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/src/main/resources/assets/steampowered/models/block/dynamo/block.json b/src/main/resources/assets/steampowered/models/block/dynamo/block.json
new file mode 100644
index 0000000..6390cb2
--- /dev/null
+++ b/src/main/resources/assets/steampowered/models/block/dynamo/block.json
@@ -0,0 +1,46 @@
+{
+ "credit": "Made with Blockbench, by goumo_g",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "steampowered:block/dynamo/dynamo",
+ "particle": "steampowered:block/dynamo/dynamo"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 0],
+ "to": [16, 3, 16],
+ "faces": {
+ "north": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "east": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "south": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "west": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "up": {"uv": [0, 0, 8, 8], "texture": "#0"},
+ "down": {"uv": [0, 0, 8, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [3, 3, 1],
+ "to": [13, 14, 12],
+ "faces": {
+ "north": {"uv": [10.5, 8, 15.5, 13.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 0, 13.5], "texture": "#0"},
+ "south": {"uv": [10.5, 8, 15.5, 13.5], "texture": "#0"},
+ "west": {"uv": [0, 8, 5.5, 13.5], "texture": "#0"},
+ "up": {"uv": [5.5, 8, 10.5, 13.5], "texture": "#0"},
+ "down": {"uv": [5.5, 8, 10.5, 13.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 3, 12],
+ "to": [14, 15, 16],
+ "faces": {
+ "north": {"uv": [8, 1.5, 14, 7.5], "texture": "#0"},
+ "east": {"uv": [14, 1.5, 16, 7.5], "texture": "#0"},
+ "south": {"uv": [8, 1.5, 14, 7.5], "texture": "#0"},
+ "west": {"uv": [14, 1.5, 16, 7.5], "texture": "#0"},
+ "up": {"uv": [14, 1.5, 16, 7.5], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [14, 1.5, 16, 7.5], "rotation": 90, "texture": "#0"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/steampowered/models/block/dynamo/block_locked.json b/src/main/resources/assets/steampowered/models/block/dynamo/block_locked.json
new file mode 100644
index 0000000..f5c710b
--- /dev/null
+++ b/src/main/resources/assets/steampowered/models/block/dynamo/block_locked.json
@@ -0,0 +1,46 @@
+{
+ "credit": "Made with Blockbench, by goumo_g",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "steampowered:block/dynamo/dynamo_locked",
+ "particle": "steampowered:block/dynamo/dynamo"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 0],
+ "to": [16, 3, 16],
+ "faces": {
+ "north": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "east": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "south": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "west": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "up": {"uv": [0, 0, 8, 8], "texture": "#0"},
+ "down": {"uv": [0, 0, 8, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [3, 3, 1],
+ "to": [13, 14, 12],
+ "faces": {
+ "north": {"uv": [10.5, 8, 15.5, 13.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 0, 13.5], "texture": "#0"},
+ "south": {"uv": [10.5, 8, 15.5, 13.5], "texture": "#0"},
+ "west": {"uv": [0, 8, 5.5, 13.5], "texture": "#0"},
+ "up": {"uv": [5.5, 8, 10.5, 13.5], "texture": "#0"},
+ "down": {"uv": [5.5, 8, 10.5, 13.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 3, 12],
+ "to": [14, 15, 16],
+ "faces": {
+ "north": {"uv": [8, 1.5, 14, 7.5], "texture": "#0"},
+ "east": {"uv": [14, 1.5, 16, 7.5], "texture": "#0"},
+ "south": {"uv": [8, 1.5, 14, 7.5], "texture": "#0"},
+ "west": {"uv": [14, 1.5, 16, 7.5], "texture": "#0"},
+ "up": {"uv": [14, 1.5, 16, 7.5], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [14, 1.5, 16, 7.5], "rotation": 90, "texture": "#0"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/steampowered/models/block/dynamo/item.json b/src/main/resources/assets/steampowered/models/block/dynamo/item.json
new file mode 100644
index 0000000..6219e64
--- /dev/null
+++ b/src/main/resources/assets/steampowered/models/block/dynamo/item.json
@@ -0,0 +1,63 @@
+{
+ "credit": "Made with Blockbench, by goumo_g",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "steampowered:block/dynamo/dynamo",
+ "particle": "steampowered:block/dynamo/dynamo",
+ "2": "create:block/axis",
+ "3": "create:block/axis_top"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 0],
+ "to": [16, 3, 16],
+ "faces": {
+ "north": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "east": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "south": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "west": {"uv": [8, 0, 16, 1.5], "texture": "#0"},
+ "up": {"uv": [0, 0, 8, 8], "texture": "#0"},
+ "down": {"uv": [0, 0, 8, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [3, 3, 1],
+ "to": [13, 14, 12],
+ "faces": {
+ "north": {"uv": [10.5, 8, 15.5, 13.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 0, 13.5], "texture": "#0"},
+ "south": {"uv": [10.5, 8, 15.5, 13.5], "texture": "#0"},
+ "west": {"uv": [0, 8, 5.5, 13.5], "texture": "#0"},
+ "up": {"uv": [5.5, 8, 10.5, 13.5], "texture": "#0"},
+ "down": {"uv": [5.5, 8, 10.5, 13.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [2, 3, 12],
+ "to": [14, 15, 16],
+ "faces": {
+ "north": {"uv": [8, 1.5, 14, 7.5], "texture": "#0"},
+ "east": {"uv": [14, 1.5, 16, 7.5], "texture": "#0"},
+ "south": {"uv": [8, 1.5, 14, 7.5], "texture": "#0"},
+ "west": {"uv": [14, 1.5, 16, 7.5], "texture": "#0"},
+ "up": {"uv": [14, 1.5, 16, 7.5], "rotation": 90, "texture": "#0"},
+ "down": {"uv": [14, 1.5, 16, 7.5], "rotation": 90, "texture": "#0"}
+ }
+ },
+ {
+ "name": "Axis",
+ "from": [6, 6, 6],
+ "to": [10, 10, 16],
+ "shade": false,
+ "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
+ "faces": {
+ "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#3"},
+ "east": {"uv": [6, 0, 10, 10], "rotation": 270, "texture": "#2"},
+ "south": {"uv": [6, 6, 10, 10], "texture": "#3"},
+ "west": {"uv": [6, 0, 10, 10], "rotation": 90, "texture": "#2"},
+ "up": {"uv": [6, 0, 10, 10], "rotation": 180, "texture": "#2"},
+ "down": {"uv": [6, 0, 10, 10], "texture": "#2"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/steampowered/models/block/dynamo/shaft.json b/src/main/resources/assets/steampowered/models/block/dynamo/shaft.json
new file mode 100644
index 0000000..9a34d03
--- /dev/null
+++ b/src/main/resources/assets/steampowered/models/block/dynamo/shaft.json
@@ -0,0 +1,25 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "block/block",
+ "textures": {
+ "0": "create:block/axis",
+ "1": "create:block/axis_top",
+ "particle": "create:block/axis"
+ },
+ "elements": [
+ {
+ "name": "Axis",
+ "from": [6, 6, 0],
+ "to": [10, 10, 8],
+ "shade": false,
+ "faces": {
+ "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1"},
+ "east": {"uv": [6, 0, 10, 8], "rotation": 270, "texture": "#0"},
+ "south": {"uv": [6, 6, 10, 10], "texture": "#1"},
+ "west": {"uv": [6, 0, 10, 8], "rotation": 90, "texture": "#0"},
+ "up": {"uv": [6, 0, 10, 8], "rotation": 180, "texture": "#0"},
+ "down": {"uv": [6, 0, 10, 8], "texture": "#0"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/steampowered/models/item/alternator.json b/src/main/resources/assets/steampowered/models/item/alternator.json
index a87ea01..fb48f29 100644
--- a/src/main/resources/assets/steampowered/models/item/alternator.json
+++ b/src/main/resources/assets/steampowered/models/item/alternator.json
@@ -1,5 +1,5 @@
{
- "parent": "steampowered:block/alternator/item",
+ "parent": "steampowered:block/dynamo/item",
"display": {
"gui": {
"rotation": [ 30, 45, 0 ],
diff --git a/src/main/resources/assets/steampowered/ponder/alternator.nbt b/src/main/resources/assets/steampowered/ponder/alternator.nbt
deleted file mode 100644
index 232d874..0000000
Binary files a/src/main/resources/assets/steampowered/ponder/alternator.nbt and /dev/null differ
diff --git a/src/main/resources/assets/steampowered/ponder/dynamo.nbt b/src/main/resources/assets/steampowered/ponder/dynamo.nbt
new file mode 100644
index 0000000..baa86d7
Binary files /dev/null and b/src/main/resources/assets/steampowered/ponder/dynamo.nbt differ
diff --git a/src/main/resources/assets/steampowered/textures/block/alternator/alternator.png b/src/main/resources/assets/steampowered/textures/block/alternator/alternator.png
deleted file mode 100644
index 08324ab..0000000
Binary files a/src/main/resources/assets/steampowered/textures/block/alternator/alternator.png and /dev/null differ
diff --git a/src/main/resources/assets/steampowered/textures/block/alternator/alternator_old.png b/src/main/resources/assets/steampowered/textures/block/alternator/alternator_old.png
deleted file mode 100644
index 3e47c69..0000000
Binary files a/src/main/resources/assets/steampowered/textures/block/alternator/alternator_old.png and /dev/null differ
diff --git a/src/main/resources/assets/steampowered/textures/block/alternator/coil.png b/src/main/resources/assets/steampowered/textures/block/alternator/coil.png
deleted file mode 100644
index b26d5fe..0000000
Binary files a/src/main/resources/assets/steampowered/textures/block/alternator/coil.png and /dev/null differ
diff --git a/src/main/resources/assets/steampowered/textures/block/dynamo/dynamo.png b/src/main/resources/assets/steampowered/textures/block/dynamo/dynamo.png
new file mode 100644
index 0000000..9449341
Binary files /dev/null and b/src/main/resources/assets/steampowered/textures/block/dynamo/dynamo.png differ
diff --git a/src/main/resources/assets/steampowered/textures/block/dynamo/dynamo_locked.png b/src/main/resources/assets/steampowered/textures/block/dynamo/dynamo_locked.png
new file mode 100644
index 0000000..ba922fa
Binary files /dev/null and b/src/main/resources/assets/steampowered/textures/block/dynamo/dynamo_locked.png differ
diff --git a/src/main/resources/data/steampowered/recipes/alternator.json b/src/main/resources/data/steampowered/recipes/alternator.json
new file mode 100644
index 0000000..0c44ad3
--- /dev/null
+++ b/src/main/resources/data/steampowered/recipes/alternator.json
@@ -0,0 +1,30 @@
+{
+ "type": "create:mechanical_crafting",
+ "pattern": [
+ " IRI ",
+ "ILCLI",
+ "RCSCR",
+ "ILCLI",
+ " IRI "
+ ],
+ "key": {
+ "I": {
+ "tag": "forge:ingots/iron"
+ },
+ "R": {
+ "item": "minecraft:redstone_block"
+ },
+ "S": {
+ "item": "create:shaft"
+ },
+ "C": {
+ "item": "steampowered:cast_iron_cogwheel"
+ },
+ "L": {
+ "item": "steampowered:cast_iron_large_cogwheel"
+ }
+ },
+ "result": {
+ "item": "steampowered:alternator"
+ }
+}
\ No newline at end of file