This commit is contained in:
DrMangoTea
2023-11-04 18:13:21 +01:00
parent 61a76e9b51
commit 17cc2d2e2e
36 changed files with 1325 additions and 20 deletions

View File

@@ -1,4 +1,4 @@
// 1.19.2 2023-11-01T14:33:21.8836334 Registrate Provider for createindustry [Recipes, Advancements, Loot tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
// 1.19.2 2023-11-02T15:43:25.647238 Registrate Provider for createindustry [Recipes, Advancements, Loot tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
50db526af77cf0ead08cadfd3f7daa8b84a40312 assets/createindustry/blockstates/air_intake.json
429437419b2ec98bd716e7ba15583b84da7488d5 assets/createindustry/blockstates/aluminum_bars.json
9e2417e479011e42ebf00685068e6b6f515f0b11 assets/createindustry/blockstates/aluminum_block.json
@@ -1140,6 +1140,7 @@ bb6ed3bebbde28633a04b3c36c5ddfa2b761e2c1 data/forge/tags/items/buckets/naphtha.j
9fbe71f4776547000044bcc08054bb6ab2da4639 data/forge/tags/items/buckets/slag.json
94945bea02cca0bfa9c9c05fa16b5533f47024c0 data/forge/tags/items/buckets/steel.json
ecf1a4c60ac630afe103f9d1c8bfea432158bdf9 data/forge/tags/items/concrete.json
d3d09e8b5b11e9272ed9e56093116cd3d82226f3 data/forge/tags/items/dusts/charcoal.json
8d6fdd619eb49c2a6d8ee3f30138b6aa1c24a9a8 data/forge/tags/items/dusts/coal_coke.json
a5782b1478ab73e6bc6582e4008338de550b3fc6 data/forge/tags/items/factory_floor.json
6f21498ac0f4c376952c9c596a4813ec0919e966 data/forge/tags/items/ingots/aluminum.json

View File

@@ -1,2 +1,2 @@
// 1.19.2 2023-11-01T15:21:42.7803908 Create: The Factory Must Grow's lang merger
03dd999e2b7c33844c23e1c90ffb51f1098b6c7c assets/createindustry/lang/en_us.json
// 1.19.2 2023-11-04T17:59:14.3408431 Create: The Factory Must Grow's lang merger
d1ce4ba37e273babae91e01f54aba93f4014b80b assets/createindustry/lang/en_us.json

View File

@@ -336,6 +336,62 @@
"create.goggles.get_engine_efficiency": "%1$s",
"create.goggles.engine.stress": "%1$ssu",
"create.goggles.blast_furnace.nothing_lol": "",
"create.goggles.diesel_engine.info": "Diesel Engine:",
"create.goggles.pumpjack_info": "Pumpjack Info:",
"create.goggles.pumpjack.part_missing": "Hammer or Crank Missing",
"create.goggles.pumpjack.wrong_rotation1": "The Pumpjack Base is oriented incorrectly, the red marker must",
"create.goggles.pumpjack.wrong_rotation2": "face away from the Pumpjack Hammer Holder",
"create.goggles.pumpjack_fluid_storage": "Fluid Tank Info:",
"create.pumpjack_deposit_amount": "%1$s Buckets",
"create.goggles.pumpjack.deposit_info": "Deposit Info:",
"create.goggles.zero": "No Deposit Found",
"create.goggles.pumpjack.fluid_amount": "Fluid Amount:",
"create.goggles.machine_input.info": "Machine Input Info",
"create.goggles.machine_input.no_rot": "No Rotation Provided!",
"create.goggles.machine_input.power_level": "Power Level: ",
"createindustry.ponder.small_engines.text_1": "To create a small engine, place front part and back part next to each other",
"createindustry.ponder.small_engines.text_2": "Fuel is inputted to the front part and exhaust is removed from the back part using pipes and an exhaust block",
"createindustry.ponder.small_engines.text_3": "Engine will start when redstone signal is applied to the front part",
"createindustry.ponder.small_engines.text_4": "There are engines with Gasoline, LPG and Kerosene as a fuel",
"createindustry.ponder.diesel_engine_small.text_1": "Diesel Engine is assembled by placing a shaft over a diesel engine block",
"createindustry.ponder.diesel_engine_small.text_2": "Carbon Dioxide has to be outputted by pipes and exhaust block",
"createindustry.ponder.diesel_engine_big.text_1": "Diesel engines can be placed next to each other to form bigger ones",
"createindustry.ponder.diesel_engine_big.text_2": "This way, Diesel Engines can have very big output",
"createindustry.ponder.surface_scanner.text_1": "Surface Scanner is use for finding crude oil deposits",
"createindustry.ponder.surface_scanner.text_2": "When rotation is applied, the machine starts to find a nearest oil deposit",
"createindustry.ponder.surface_scanner.text_3": "When a deposit is found, it will write coordinates of it in a goggle tooltip",
"createindustry.ponder.surface_scanner.text_4": "X: 47 Z: 68",
"createindustry.ponder.pumpjack.text_1": "First step of mining oil is building industrial pipes from deposit to surface",
"createindustry.ponder.pumpjack.text_2": "Then pumpjack has to be built on the top of the pipe",
"createindustry.ponder.distillation_tower.text_1": "Base of a distillation tower are steel tanks",
"createindustry.ponder.distillation_tower.text_2": "Tower is assembled by placing Steel Distillation Controller next to the tanks",
"createindustry.ponder.distillation_tower.text_3": "Placing 5 Distillation outputs and 5 Industrial Pipes finishes the structure",
"createindustry.ponder.distillation_tower.text_4": "Place Blaze Burners under the tanks to power it, dial on the tower shows the power level of the structure",
"createindustry.ponder.distillation_tower.text_5": "Oil is inputted into the controller block",
"createindustry.ponder.distillation_tower.text_6": "Every output block outputs one of the oil products",
"createindustry.ponder.distillation_tower.text_7": "LPG",
"createindustry.ponder.distillation_tower.text_8": "Kerosene",
"createindustry.ponder.distillation_tower.text_9": "Gasoline",
"createindustry.ponder.distillation_tower.text_10": "Diesel",
"createindustry.ponder.distillation_tower.text_11": "Heavy Oil",
"createindustry.ponder.distillation_tower.header": "Distillation Tower Setup",
"createindustry.ponder.pumpjack.header": "Building Pumpjack",
"createindustry.ponder.surface_scanner.header": "Finding Oil",
"createindustry.ponder.diesel_engine_big.header": "Making Big Engines",
"createindustry.ponder.diesel_engine_small.header": "Building Diesel Engine",
"createindustry.ponder.small_engines.header": "Building Small Engines",
"createindustry.ponder.tag.oil": "Oil Related Machines",
"createindustry.ponder.tag.oil.description": "Machines that mine, process or use crude oil and fluids created from it",
"_": "->------------------------] UI & Messages [------------------------<-",
@@ -391,6 +447,83 @@
"create.goggles.get_engine_efficiency": "%1$s",
"create.goggles.engine.stress": "%1$ssu",
"create.goggles.diesel_engine.info": "Diesel Engine:",
"create.goggles.pumpjack_info": "Pumpjack Info:",
"create.goggles.pumpjack.part_missing": "Hammer or Crank Missing",
"create.goggles.pumpjack.wrong_rotation1": "The Pumpjack Base is oriented incorrectly, the red marker must",
"create.goggles.pumpjack.wrong_rotation2": "face away from the Pumpjack Hammer Holder",
"create.goggles.pumpjack_fluid_storage": "Fluid Tank Info:",
"create.pumpjack_deposit_amount": "%1$s Buckets",
"create.goggles.pumpjack.deposit_info": "Deposit Info:",
"create.goggles.zero": "No Deposit Found",
"create.goggles.pumpjack.fluid_amount": "Fluid Amount:",
"create.goggles.machine_input.info": "Machine Input Info",
"create.goggles.machine_input.no_rot": "No Rotation Provided!",
"create.goggles.machine_input.power_level": "Power Level: ",
"_": "->------------------------] Ponders [------------------------<-",
"createindustry.ponder.small_engines.text_1": "To create a small engine, place a front part and a back part behind it",
"createindustry.ponder.small_engines.text_2": "Fuel is inputted to the front part and exhaust is removed from the back part using pipes and an exhaust block",
"createindustry.ponder.small_engines.text_3": "Engine will start when redstone signal is applied to the front part",
"createindustry.ponder.small_engines.text_4": "There are engines with Gasoline, LPG and Kerosene as a fuel",
"createindustry.ponder.diesel_engine.text_1": "Diesel Engine is assembled by placing a shaft in the front of a diesel engine block",
"createindustry.ponder.diesel_engine.text_2": "Carbon Dioxide has to be outputted by pipes and exhaust block",
"createindustry.ponder.diesel_engine.text_3": "Diesel engines need air that can be collected with air intakes",
"createindustry.ponder.diesel_engine_expansion.text_1": "Diesel engine expansions give diesel engines 2 new fluid slots, for cooling and lubrication",
"createindustry.ponder.surface_scanner.text_1": "Surface Scanner is used for finding crude oil deposits",
"createindustry.ponder.surface_scanner.text_2": "When rotation is applied, the machine starts to find the nearest oil deposit",
"createindustry.ponder.surface_scanner.text_3": "When a deposit is found, compass at the top will show the direction",
"createindustry.ponder.pumpjack.text_1": "First step of mining oil is building industrial pipes from deposit to surface",
"createindustry.ponder.pumpjack.text_2": "Pumpjack base has to be placed on the top of the pipe",
"createindustry.ponder.pumpjack.text_3": "Pumpjack hammer needs to be placed behind it",
"createindustry.ponder.pumpjack.text_4": "The last step is placing a machine input (which is a power input for the pumpjack) with a pumpjack crank above it",
"createindustry.ponder.distillation_tower.text_1": "Base of a distillation tower are steel tanks",
"createindustry.ponder.distillation_tower.text_2": "Tower is assembled by placing Steel Distillation Controller next to the tanks",
"createindustry.ponder.distillation_tower.text_3": "To finish the multiblock place up to 6 Distillation outputs and Industrial Pipes between them",
"createindustry.ponder.distillation_tower.text_4": "Place Blaze Burners under the tanks to power it, dial on the tower shows the power level of the structure",
"createindustry.ponder.distillation_tower.text_5": "Oil is inserted into the controller block",
"createindustry.ponder.distillation_tower.text_6": "Every output block outputs one of the oil products",
"createindustry.ponder.distillation_tower.text_7": "LPG",
"createindustry.ponder.distillation_tower.text_8": "Gasoline",
"createindustry.ponder.distillation_tower.text_9": "Naphtha",
"createindustry.ponder.distillation_tower.text_10": "Kerosene",
"createindustry.ponder.distillation_tower.text_11": "Diesel",
"createindustry.ponder.distillation_tower.text_12": "Heavy Oil",
"createindustry.ponder.blast_furnace.text_1": "Main part of a blast furnace is a blast furnace output",
"createindustry.ponder.blast_furnace.text_2": "To make a blast furnace, make a cylinder of fireproof bricks around it",
"createindustry.ponder.blast_furnace.text_3": "Blast furnaces need reinforcements that are at least half the total height",
"createindustry.ponder.blast_furnace.text_4": "Everything is inserted through a hole at the top",
"createindustry.ponder.coke_oven.text_1": "Coke Oven is created by placing coke oven block as shown and clicking the front block with a wrench",
"createindustry.ponder.coke_oven.text_2": "Coke Ovens are slow so it is beneficial to have long arrays of them",
"createindustry.ponder.coke_oven.text_3": "Coal can be inserted from anywhere",
"createindustry.ponder.coke_oven.text_4": "Creosote and Carbon Dioxide have to be pumped out of the machine",
"createindustry.ponder.coke_oven.text_5": "After some time, coal coke will fall out of the machine at the front",
"createindustry.ponder.casting.text_1": "Casting is done by pouring liquid metal into a casting basin with a casting spout",
"createindustry.ponder.casting.text_2": "Casting basin needs a mold to function",
"createindustry.ponder.distillation_tower.header": "Distillation Tower Setup",
"createindustry.ponder.pumpjack.header": "Building Pumpjack",
"createindustry.ponder.surface_scanner.header": "Finding Oil",
"createindustry.ponder.diesel_engine.header": "Building Diesel Engine",
"createindustry.ponder.diesel_engine_expansion.header": "Expanding Diesel Engines",
"createindustry.ponder.small_engines.header": "Building Small Engines",
"createindustry.ponder.coke_oven.header": "Building Coke Oven",
"createindustry.ponder.blast_furnace": "Building Blast Furnace",
"createindustry.ponder.casting.header": "Casting Metal",
"createindustry.ponder.tag.oil": "Oil Related Machines",
"createindustry.ponder.tag.metallurgy": "Metal Processing Related Machines",
"createindustry.ponder.tag.oil.description": "Machines that mine, process or use crude oil and fluids created from it",
"createindustry.ponder.tag.metallurgy.description": "Machines that mine, process or use crude oil and fluids created from it",
"_": "Thank you for translating Create: The Factory Must Grow!"

View File

@@ -0,0 +1,34 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_cut_bauxite_bricks": {
"conditions": {
"items": [
{
"items": [
"createindustry:cut_bauxite_bricks"
]
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "createindustry:cut_bauxite_brick_slab"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_cut_bauxite_bricks",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"createindustry:cut_bauxite_brick_slab"
]
}
}

View File

@@ -0,0 +1,34 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_cut_bauxite_bricks": {
"conditions": {
"items": [
{
"items": [
"createindustry:cut_bauxite_bricks"
]
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "createindustry:cut_bauxite_brick_wall"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_cut_bauxite_bricks",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"createindustry:cut_bauxite_brick_wall"
]
}
}

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_stone_types_bauxite": {
"conditions": {
"items": [
{
"tag": "createindustry:stone_types/bauxite"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "createindustry:cut_bauxite_from_stone_types_bauxite_stonecutting"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_stone_types_bauxite",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"createindustry:cut_bauxite_from_stone_types_bauxite_stonecutting"
]
}
}

View File

@@ -0,0 +1,34 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_cut_bauxite": {
"conditions": {
"items": [
{
"items": [
"createindustry:cut_bauxite"
]
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "createindustry:cut_bauxite_wall"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_cut_bauxite",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"createindustry:cut_bauxite_wall"
]
}
}

View File

@@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"group": "cut_bauxite_brick_stairs",
"key": {
"X": {
"item": "createindustry:cut_bauxite_bricks"
}
},
"pattern": [
"X ",
"XX ",
"XXX"
],
"result": {
"count": 4,
"item": "createindustry:cut_bauxite_brick_stairs"
}
}

View File

@@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"group": "cut_bauxite_stairs",
"key": {
"X": {
"item": "createindustry:cut_bauxite"
}
},
"pattern": [
"X ",
"XX ",
"XXX"
],
"result": {
"count": 4,
"item": "createindustry:cut_bauxite_stairs"
}
}

View File

@@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"group": "small_bauxite_brick_slab",
"key": {
"X": {
"item": "createindustry:small_bauxite_bricks"
}
},
"pattern": [
"XXX"
],
"result": {
"count": 6,
"item": "createindustry:small_bauxite_brick_slab"
}
}

View File

@@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"group": "small_bauxite_brick_stairs",
"key": {
"X": {
"item": "createindustry:small_bauxite_bricks"
}
},
"pattern": [
"X ",
"XX ",
"XXX"
],
"result": {
"count": 4,
"item": "createindustry:small_bauxite_brick_stairs"
}
}

View File

@@ -65,6 +65,7 @@ public class CreateTFMG
modEventBus.addListener(this::clientSetup);
MinecraftForge.EVENT_BUS.register(this);
}
@SuppressWarnings("removal")
public static void gatherData(GatherDataEvent event) {
DataGenerator gen = event.getGenerator();
gen.addProvider(true, new LangMerger(gen, MOD_ID, NAME, TFMGLangPartials.values()));

View File

@@ -2,6 +2,7 @@ package com.drmangotea.createindustry;
import com.drmangotea.createindustry.items.gadgets.quad_potato_cannon.QuadPotatoCannonRenderHandler;
import com.drmangotea.createindustry.ponder.TFMGPonderIndex;
import com.drmangotea.createindustry.registry.TFMGPartialModels;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
@@ -19,8 +20,8 @@ public class CreateTFMGClient {
@SubscribeEvent
public void setup(final FMLClientSetupEvent event) {
// CIPonderIndex.register();
//CIPonderIndex.registerTags();
TFMGPonderIndex.register();
TFMGPonderIndex.registerTags();
}

View File

@@ -12,7 +12,8 @@ import com.simibubi.create.foundation.utility.FilesHelper;
import com.simibubi.create.foundation.utility.Lang;
public enum TFMGLangPartials implements LangPartial {
INTERFACE("UI & Messages");
INTERFACE("UI & Messages"),
PONDERS("Ponders");
;

View File

@@ -35,6 +35,12 @@ public class TFMGSpriteShifts {
ALUMINUM_SCAFFOLD_INSIDE = horizontal("scaffold/aluminum_scaffold_inside");
public static final CTSpriteShiftEntry
COKE_OVEN_TOP = getCT(AllCTTypes.RECTANGLE, "coke_oven_top"),
COKE_OVEN_BOTTOM = getCT(AllCTTypes.RECTANGLE, "coke_oven_bottom"),
COKE_OVEN_BACK = getCT(AllCTTypes.RECTANGLE, "coke_oven_back"),
COKE_OVEN_SIDE = getCT(AllCTTypes.RECTANGLE, "coke_oven_side");
public static final CTSpriteShiftEntry
STEEL_ENCASED_COGWHEEL_SIDE = vertical("steel_encased_cogwheel_side"),

View File

@@ -23,7 +23,7 @@ import net.minecraft.world.level.material.Fluids;
import java.util.Random;
public class ExhaustBlock extends RodBlock implements IBE<ExhaustTileEntity>, IWrenchable {
public class ExhaustBlock extends RodBlock implements IBE<ExhaustBlockEntity>, IWrenchable {
public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED;
//Direction facing = this.defaultBlockState().getValue(FACING);
public ExhaustBlock(Properties p_55926_) {
@@ -80,12 +80,12 @@ public class ExhaustBlock extends RodBlock implements IBE<ExhaustTileEntity>, IW
p_153746_.add(FACING, WATERLOGGED);
}
@Override
public Class<ExhaustTileEntity> getBlockEntityClass() {
return ExhaustTileEntity.class;
public Class<ExhaustBlockEntity> getBlockEntityClass() {
return ExhaustBlockEntity.class;
}
@Override
public BlockEntityType<? extends ExhaustTileEntity> getBlockEntityType() {
public BlockEntityType<? extends ExhaustBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.EXHAUST.get();
}
}

View File

@@ -30,7 +30,7 @@ import java.util.List;
import java.util.Optional;
@SuppressWarnings("removal")
public class ExhaustTileEntity extends SmartBlockEntity implements IHaveGoggleInformation {
public class ExhaustBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation {
@@ -46,7 +46,7 @@ public class ExhaustTileEntity extends SmartBlockEntity implements IHaveGoggleIn
public ExhaustTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
public ExhaustBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
tankInventory = createInventory();
fluidCapability = LazyOptional.of(() -> tankInventory);
@@ -171,7 +171,7 @@ public class ExhaustTileEntity extends SmartBlockEntity implements IHaveGoggleIn
int random = Create.RANDOM.nextInt(5);
if(random==0)
tankInventory.drain(20, IFluidHandler.FluidAction.EXECUTE);
tankInventory.drain(35, IFluidHandler.FluidAction.EXECUTE);

View File

@@ -0,0 +1,76 @@
package com.drmangotea.createindustry.blocks.machines.metal_processing.coke_oven;
import com.drmangotea.createindustry.base.TFMGSpriteShifts;
import com.simibubi.create.AllSpriteShifts;
import com.simibubi.create.api.connectivity.ConnectivityHandler;
import com.simibubi.create.content.logistics.vault.ItemVaultBlock;
import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry;
import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;
import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
public class CokeOvenCTBehavior extends ConnectedTextureBehaviour.Base {
@Override
public CTSpriteShiftEntry getShift(BlockState state, Direction direction, @Nullable TextureAtlasSprite sprite) {
Direction cokeOvenDirection = state.getValue(FACING);
boolean small = !ItemVaultBlock.isLarge(state);
if (cokeOvenDirection == null)
return null;
if (direction == cokeOvenDirection.getOpposite())
return TFMGSpriteShifts.COKE_OVEN_BACK;
if (direction == Direction.UP)
return TFMGSpriteShifts.COKE_OVEN_TOP;
if (direction == Direction.DOWN)
return TFMGSpriteShifts.COKE_OVEN_BOTTOM;
return TFMGSpriteShifts.COKE_OVEN_SIDE;
}
@Override
protected Direction getUpDirection(BlockAndTintGetter reader, BlockPos pos, BlockState state, Direction face) {
Direction cokeOvenDirection =state.getValue(FACING);
boolean alongX = cokeOvenDirection.getAxis() == Axis.X;
if (face.getAxis()
.isVertical() && alongX)
return super.getUpDirection(reader, pos, state, face).getClockWise();
if (face.getAxis() == cokeOvenDirection.getAxis() || face.getAxis()
.isVertical())
return super.getUpDirection(reader, pos, state, face);
return Direction.fromAxisAndDirection(cokeOvenDirection.getAxis(), alongX ? AxisDirection.POSITIVE : AxisDirection.NEGATIVE);
}
@Override
protected Direction getRightDirection(BlockAndTintGetter reader, BlockPos pos, BlockState state, Direction face) {
Direction cokeOvenDirection =state.getValue(FACING);
if (face.getAxis()
.isVertical() && cokeOvenDirection.getAxis() == Axis.X)
return super.getRightDirection(reader, pos, state, face).getClockWise();
if (face.getAxis() == cokeOvenDirection.getAxis() || face.getAxis()
.isVertical())
return super.getRightDirection(reader, pos, state, face);
return Direction.fromAxisAndDirection(Axis.Y, face.getAxisDirection());
}
public boolean buildContextForOccludedDirections() {
return super.buildContextForOccludedDirections();
}
@Override
public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos,
BlockPos otherPos, Direction face) {
return state == other && ConnectivityHandler.isConnected(reader, pos, otherPos); //ItemVaultConnectivityHandler.isConnected(reader, pos, otherPos);
}
}

View File

@@ -0,0 +1,81 @@
package com.drmangotea.createindustry.ponder;
import com.drmangotea.createindustry.CreateTFMG;
import com.drmangotea.createindustry.ponder.scenes.MetallurgyScenes;
import com.drmangotea.createindustry.ponder.scenes.OilScenes;
import com.drmangotea.createindustry.registry.TFMGBlocks;
import com.simibubi.create.foundation.ponder.PonderRegistrationHelper;
import com.simibubi.create.foundation.ponder.PonderRegistry;
public class TFMGPonderIndex {
static final PonderRegistrationHelper HELPER = new PonderRegistrationHelper(CreateTFMG.MOD_ID);
public static void register() {
HELPER.forComponents(TFMGBlocks.GASOLINE_ENGINE, TFMGBlocks.GASOLINE_ENGINE_BACK,
TFMGBlocks.LPG_ENGINE, TFMGBlocks.LPG_ENGINE_BACK,
TFMGBlocks.TURBINE_ENGINE, TFMGBlocks.TURBINE_ENGINE_BACK)
.addStoryBoard("small_engines", OilScenes::small_engines, TFMGPonderTag.OIL);
HELPER.forComponents(TFMGBlocks.DIESEL_ENGINE)
.addStoryBoard("diesel_engine", OilScenes::diesel_engine, TFMGPonderTag.OIL)
.addStoryBoard("diesel_engine_expansion", OilScenes::diesel_engine_expansion, TFMGPonderTag.OIL);
HELPER.forComponents(TFMGBlocks.SURFACE_SCANNER)
.addStoryBoard("surface_scanner", OilScenes::surface_scanner, TFMGPonderTag.OIL);
HELPER.forComponents(TFMGBlocks.PUMPJACK_BASE,TFMGBlocks.PUMPJACK_CRANK,TFMGBlocks.PUMPJACK_HAMMER_HOLDER)
.addStoryBoard("pumpjack", OilScenes::pumpjack, TFMGPonderTag.OIL);
HELPER.forComponents(TFMGBlocks.STEEL_DISTILLATION_CONTROLLER,TFMGBlocks.STEEL_DISTILLATION_OUTPUT)
.addStoryBoard("distillation_tower", OilScenes::distillation_tower, TFMGPonderTag.OIL);
/////////////////////////////////////////
HELPER.forComponents(TFMGBlocks.BLAST_FURNACE_OUTPUT)
.addStoryBoard("blast_furnace", MetallurgyScenes::blast_furnace, TFMGPonderTag.METALLURGY);
HELPER.forComponents(TFMGBlocks.COKE_OVEN)
.addStoryBoard("coke_oven", MetallurgyScenes::coke_oven, TFMGPonderTag.METALLURGY);
HELPER.forComponents(TFMGBlocks.CASTING_BASIN,TFMGBlocks.CASTING_SPOUT)
.addStoryBoard("casting", MetallurgyScenes::casting, TFMGPonderTag.METALLURGY);
}
public static void registerTags() {
PonderRegistry.TAGS.forTag(TFMGPonderTag.OIL)
.add(TFMGBlocks.GASOLINE_ENGINE)
.add(TFMGBlocks.GASOLINE_ENGINE_BACK)
.add(TFMGBlocks.LPG_ENGINE)
.add(TFMGBlocks.LPG_ENGINE_BACK)
.add(TFMGBlocks.TURBINE_ENGINE)
.add(TFMGBlocks.TURBINE_ENGINE_BACK)
.add(TFMGBlocks.STEEL_DISTILLATION_OUTPUT)
.add(TFMGBlocks.STEEL_DISTILLATION_CONTROLLER)
.add(TFMGBlocks.PUMPJACK_BASE)
.add(TFMGBlocks.PUMPJACK_HAMMER_HOLDER)
.add(TFMGBlocks.PUMPJACK_CRANK);
PonderRegistry.TAGS.forTag(TFMGPonderTag.METALLURGY)
.add(TFMGBlocks.COKE_OVEN)
.add(TFMGBlocks.CASTING_BASIN)
.add(TFMGBlocks.CASTING_SPOUT)
.add(TFMGBlocks.FIREPROOF_BRICKS)
.add(TFMGBlocks.FIREPROOF_BRICK_REINFORCEMENT)
.add(TFMGBlocks.BLAST_FURNACE_OUTPUT);
}
}

View File

@@ -0,0 +1,29 @@
package com.drmangotea.createindustry.ponder;
import com.drmangotea.createindustry.CreateTFMG;
import com.drmangotea.createindustry.registry.TFMGFluids;
import com.drmangotea.createindustry.registry.TFMGItems;
import com.simibubi.create.foundation.ponder.PonderTag;
import net.minecraft.resources.ResourceLocation;
public class TFMGPonderTag extends PonderTag {
public static final PonderTag OIL = create("oil")
.defaultLang("Oil Related Machines", "Machines used to get, refine and use oil")
.item(TFMGFluids.CRUDE_OIL.getBucket().get(), true, false).addToIndex();
public static final PonderTag METALLURGY = create("metallurgy")
.defaultLang("Metal processing", "Machines related to metal")
.item(TFMGItems.STEEL_INGOT.get(), true, false).addToIndex();
public TFMGPonderTag(ResourceLocation id) {
super(id);
}
private static PonderTag create(String id) {
return new PonderTag(CreateTFMG.asResource(id));
}
}

View File

@@ -0,0 +1,261 @@
package com.drmangotea.createindustry.ponder.scenes;
import com.drmangotea.createindustry.registry.TFMGItems;
import com.simibubi.create.foundation.ponder.*;
import com.simibubi.create.foundation.ponder.element.EntityElement;
import com.simibubi.create.foundation.ponder.element.InputWindowElement;
import com.simibubi.create.foundation.ponder.element.WorldSectionElement;
import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.phys.Vec3;
public class MetallurgyScenes {
public static void blast_furnace(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("blast_furnace", "");
scene.configureBasePlate(0, 0, 5);
scene.scaleSceneView(.7f);
scene.showBasePlate();
//
Selection output = util.select.fromTo(2, 1, 2, 2, 1, 2);
Selection furnace1 = util.select.fromTo(1, 1, 3, 3, 1, 3);
Selection furnace2 = util.select.fromTo(2, 1, 4, 2, 1, 4);
Selection reinforcement1 = util.select.fromTo(3, 1, 2, 3, 2, 2);
Selection reinforcement2 = util.select.fromTo(3, 1, 4, 3, 2, 4);
Selection reinforcement3 = util.select.fromTo(1, 1, 4, 1, 2, 4);
Selection reinforcement4 = util.select.fromTo(1, 1, 2, 1, 2, 2);
Selection furnace3 = util.select.fromTo(1, 2, 3, 3, 2, 3);
Selection furnace4 = util.select.fromTo(2, 2, 2, 2, 2, 4);
Selection furnace5 = util.select.fromTo(0, 3, 0, 4, 4, 4);
Selection pipez = util.select.fromTo(0, 1, 0, 4, 2, 1);
scene.world.setKineticSpeed(pipez, 80);
//
scene.world.showIndependentSection(output, Direction.DOWN);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Main part of a blast furnace is a blast furnace output")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(70);
scene.overlay.showText(50)
.attachKeyFrame()
.text("To make a blast furnace, make a cylinder of fireproof bricks around it");
scene.world.showIndependentSection(furnace1, Direction.DOWN);
scene.world.showIndependentSection(furnace2, Direction.DOWN);
scene.idle(10);
scene.world.showIndependentSection(furnace3, Direction.DOWN);
scene.world.showIndependentSection(furnace4, Direction.DOWN);
scene.idle(10);
scene.world.showIndependentSection(furnace5, Direction.DOWN);
scene.idle(70);
scene.world.showIndependentSection(reinforcement1, Direction.DOWN);
scene.world.showIndependentSection(reinforcement2, Direction.DOWN);
scene.world.showIndependentSection(reinforcement3, Direction.DOWN);
scene.world.showIndependentSection(reinforcement4, Direction.DOWN);
scene.overlay.showText(100)
.attachKeyFrame()
.text("Blast furnaces need reinforcements that are at least half the total height")
.pointAt(util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.WEST))
.placeNearTarget();
scene.idle(70);
scene.world.showIndependentSection(pipez, Direction.DOWN);
scene.idle(20);
scene.overlay.showText(100)
.attachKeyFrame()
.text("Everything is inserted to through a hole at the top");
ItemStack stack1 = new ItemStack(TFMGItems.COAL_COKE_DUST.get());
ItemStack stack2 = new ItemStack(TFMGItems.BLASTING_MIXTURE.get());
scene.world.createItemEntity(util.vector.centerOf(2, 6, 3), util.vector.of(0, 0, 0), stack1);
scene.idle(10);
scene.world.createItemEntity(util.vector.centerOf(2, 6, 3), util.vector.of(0, 0, 0), stack1);
scene.idle(10);
scene.world.createItemEntity(util.vector.centerOf(2, 6, 3), util.vector.of(0, 0, 0), stack1);
scene.idle(10);
scene.world.createItemEntity(util.vector.centerOf(2, 6, 3), util.vector.of(0, 0, 0), stack2);
scene.idle(10);
scene.world.createItemEntity(util.vector.centerOf(2, 6, 3), util.vector.of(0, 0, 0), stack2);
scene.idle(10);
scene.world.createItemEntity(util.vector.centerOf(2, 6, 3), util.vector.of(0, 0, 0), stack2);
scene.idle(10);
}
public static void coke_oven(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("coke_oven", "");
scene.configureBasePlate(0, 0, 7);
scene.scaleSceneView(.7f);
scene.showBasePlate();
Selection coke_oven_middle = util.select.fromTo(3, 1, 2, 3, 3, 4);
Selection coke_oven_right = util.select.fromTo(4, 1, 2, 5, 3, 4);
Selection coke_oven_left = util.select.fromTo(2, 1, 2, 1, 3, 4);
Selection chutes = util.select.fromTo(1, 4, 4, 5, 4, 4);
Selection exhaust = util.select.fromTo(0, 4, 2, 5, 6, 2);
Selection output = util.select.fromTo(1, 4, 3, 5, 5, 3);
Selection tank = util.select.fromTo(6, 1, 3, 6, 5, 3);
ItemStack coal = new ItemStack(Items.COAL, 3);
ItemStack coal_coke = new ItemStack(TFMGItems.COAL_COKE.get(), 10);
scene.world.setKineticSpeed(output, 80);
scene.world.setKineticSpeed(exhaust, 80);
scene.world.showIndependentSection(coke_oven_middle, Direction.DOWN);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Coke Oven is created by placing coke oven block as shown and clicking the front block with a wrench")
.pointAt(util.vector.blockSurface(util.grid.at(3, 2, 2), Direction.WEST))
.placeNearTarget();
scene.idle(90);
scene.world.showIndependentSection(coke_oven_right, Direction.DOWN);
scene.world.showIndependentSection(coke_oven_left, Direction.DOWN);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Coke Ovens are slow so it is beneficial to have long arrays of them")
.pointAt(util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.WEST))
.placeNearTarget();
scene.idle(30);
scene.world.showIndependentSection(chutes, Direction.DOWN);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Coal can be inserted from anywhere");
scene.idle(10);
ElementLink<EntityElement> item = null;
for (int i = 0; i < 3; i++) {
scene.idle(10);
for (int y = 0; y < 5; y++) {
item = scene.world.createItemEntity(util.vector.centerOf(1 + y, 6, 4), util.vector.of(0, 0, 0), coal);
}
}
if (item != null)
scene.world.modifyEntity(item, Entity::discard);
scene.idle(40);
scene.world.showIndependentSection(exhaust, Direction.DOWN);
scene.world.showIndependentSection(tank, Direction.DOWN);
scene.world.showIndependentSection(output, Direction.DOWN);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Creosote and Carbon Dioxide have to be pumped out of the machine")
.pointAt(util.vector.blockSurface(util.grid.at(3, 4, 2), Direction.WEST))
.placeNearTarget();
scene.idle(50);
scene.overlay.showText(70)
.attachKeyFrame()
.text("After some time, coal coke will fall out of the machine at the front");
for (int y = 0; y < 5; y++) {
scene.world.createItemEntity(util.vector.centerOf(1 + y, 2, 1), util.vector.of(0, 0, 0), coal_coke);
}
}
public static void casting(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("casting", "");
scene.configureBasePlate(0, 0, 5);
scene.showBasePlate();
Selection spout = util.select.fromTo(2, 3, 2, 2, 3, 2);
Selection basin_empty = util.select.fromTo(2, 1, 2, 2, 1, 2);
Selection basin_with_mold = util.select.fromTo(2, 1, 4, 2, 1, 4);
Selection chain_drives = util.select.fromTo(5, 0, 3, 5, 3, 3);
Selection pipez = util.select.fromTo(3, 1, 2, 4, 3, 3);
Selection funnel = util.select.fromTo(2, 1, 1, 2, 1, 1);
ItemStack steel_ingot = new ItemStack(TFMGItems.STEEL_INGOT.get());
scene.world.setKineticSpeed(chain_drives, 80);
scene.world.setKineticSpeed(pipez, 80);
ElementLink<WorldSectionElement> emptyBasinElement = scene.world.showIndependentSection(basin_empty,Direction.DOWN);
scene.idle(20);
scene.world.showIndependentSection(spout, Direction.DOWN);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Casting is done by pouring liquid metal into a casting basin with a casting spout")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(20);
scene.world.showIndependentSection(pipez, Direction.DOWN);
scene.world.showIndependentSection(chain_drives, Direction.DOWN);
scene.idle(50);
ElementLink<WorldSectionElement> basinElement = scene.world.showIndependentSection(basin_with_mold,null);
scene.world.hideIndependentSection(emptyBasinElement,null);
scene.world.moveSection(basinElement,new Vec3(0d,0d,-2d),0);
BlockPos basinPos = util.grid.at(2, 1, 2);
Vec3 topOf = util.vector.topOf(basinPos);
scene.overlay.showControls(new InputWindowElement(topOf, Pointing.DOWN).rightClick()
.withItem(new ItemStack(TFMGItems.INGOT_MOLD.get())), 20);
scene.idle(10);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Casting basin needs a mold to function")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(20);
scene.world.showIndependentSection(funnel,Direction.SOUTH);
scene.idle(20);
scene.world.createItemEntity(util.vector.centerOf(2, 1, 1), util.vector.of(0, 0, 0), steel_ingot);
}
}

View File

@@ -0,0 +1,434 @@
package com.drmangotea.createindustry.ponder.scenes;
import com.simibubi.create.foundation.ponder.*;
import com.simibubi.create.foundation.ponder.element.WorldSectionElement;
import net.minecraft.core.Direction;
import net.minecraft.world.phys.Vec3;
public class OilScenes {
public static void small_engines(SceneBuilder scene, SceneBuildingUtil util){
scene.title("small_engines", "");
scene.configureBasePlate(0, 0, 5);
scene.setSceneOffsetY(-2);
scene.idle(10);
scene.showBasePlate();
Selection gasoline_engine = util.select.fromTo(2, 1, 1, 2, 1, 2);
Selection lpg_engine = util.select.fromTo(2, 3, 1, 2, 3, 2);
Selection turbine_engine = util.select.fromTo(2, 5, 1, 2, 5, 2);
Selection engine_lever = util.select.fromTo(1, 1, 1, 1, 1, 1);
Selection exhaust = util.select.fromTo(1, 1, 2, 0, 2, 2);
Selection input_pump = util.select.fromTo(3, 1, 1, 3, 1, 1);
Selection tank_1 = util.select.fromTo(4, 1, 1, 4, 1, 1);
Selection tank_2 = util.select.fromTo(4, 3, 1, 4, 3, 1);
Selection tank_3 = util.select.fromTo(4, 5, 1, 4, 5, 1);
scene.world.setKineticSpeed(gasoline_engine,0);
//scene.world.showSection(util.select.fromTo(0, 2, 0, 4, 2, 4), Direction.UP);
ElementLink<WorldSectionElement> gasolineEngineElement = scene.world.showIndependentSectionImmediately(gasoline_engine);
scene.overlay.showText(50)
.attachKeyFrame()
.text("To create a small engine, place a front part and a back part behind it")
.pointAt(util.vector.blockSurface(util.grid.at(4, 0, 4), Direction.WEST))
.placeNearTarget();
scene.idle(100);
scene.world.setKineticSpeed(exhaust,80);
scene.world.setKineticSpeed(input_pump,80);
ElementLink<WorldSectionElement> exhaustElement = scene.world.showIndependentSection(exhaust,Direction.DOWN);
ElementLink<WorldSectionElement> inputPumpElement = scene.world.showIndependentSection(input_pump,Direction.DOWN);
ElementLink<WorldSectionElement> tankElement1 = scene.world.showIndependentSection(tank_1,Direction.DOWN);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Fuel is inputted to the front part and exhaust is removed from the back part using pipes and an exhaust block")
.pointAt(util.vector.blockSurface(util.grid.at(4, 0, 3), Direction.WEST))
.placeNearTarget();
scene.idle(80);
ElementLink<WorldSectionElement> leverElement = scene.world.showIndependentSection(engine_lever,Direction.DOWN);
scene.world.setKineticSpeed(gasoline_engine,225);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Engine will start when redstone signal is applied to the front part")
.pointAt(util.vector.blockSurface(util.grid.at(1, 1, 1), Direction.WEST))
.placeNearTarget();
scene.idle(100);
scene.world.hideIndependentSection(gasolineEngineElement,Direction.SOUTH);
scene.world.hideIndependentSection(tankElement1,Direction.SOUTH);
scene.idle(50);
ElementLink<WorldSectionElement> lpgEngineElement = scene.world.showIndependentSection(lpg_engine,Direction.DOWN);
ElementLink<WorldSectionElement> tankElement2 = scene.world.showIndependentSection(tank_2,Direction.DOWN);
scene.world.moveSection(lpgEngineElement,new Vec3(0d,-2d,0d),0);
scene.world.moveSection(tankElement2,new Vec3(0d,-2d,0d),0);
scene.overlay.showText(50)
.attachKeyFrame()
.text("There are engines with Gasoline, LPG and Kerosene as a fuel");
scene.idle(50);
scene.world.hideIndependentSection(lpgEngineElement,Direction.SOUTH);
scene.world.hideIndependentSection(tankElement2,Direction.SOUTH);
scene.idle(30);
ElementLink<WorldSectionElement> turbineEngineElement = scene.world.showIndependentSection(turbine_engine,Direction.DOWN);
ElementLink<WorldSectionElement> tankElement3 = scene.world.showIndependentSection(tank_3,Direction.DOWN);
scene.world.moveSection(turbineEngineElement,new Vec3(0d,-4d,0d),0);
scene.world.moveSection(tankElement3,new Vec3(0d,-4d,0d),0);
scene.idle(50);
}
public static void pumpjack(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("pumpjack", "");
scene.configureBasePlate(0, 0, 7);
////
Selection pipez = util.select.fromTo(0, 2, 0, 0, 4, 0);
Selection hammer = util.select.fromTo(3, 1, 2, 3, 3, 2);
Selection base = util.select.fromTo(1, 1, 2, 1, 1, 2);
Selection crank = util.select.fromTo(5, 2, 2, 5, 2, 2);
Selection input = util.select.fromTo(5, 1, 1, 5, 1, 2);
Selection base1 = util.select.fromTo(2, 0, 0, 6, 0, 4);
Selection base2 = util.select.fromTo(0, 0, 0, 1, 0, 4);
Selection deposit = util.select.fromTo(0, 1, 0, 0, 1, 0);
Selection tank = util.select.fromTo(0, 0, 3, 1, 0, 4);
////
// scene.scaleSceneView(.4f);
//scene.removeShadow();
ElementLink<WorldSectionElement> baseElement1 = scene.world.showIndependentSection(base1,Direction.UP);
ElementLink<WorldSectionElement> baseElement2 = scene.world.showIndependentSection(base2,Direction.UP);
scene.idle(20);
scene.world.hideIndependentSection(baseElement2,Direction.UP);
scene.idle(25);
ElementLink<WorldSectionElement> depositElement = scene.world.showIndependentSection(deposit,Direction.UP);
scene.world.moveSection(depositElement,new Vec3(0d,-4d,2d),0);
scene.overlay.showText(50)
.attachKeyFrame()
.text("First step of mining oil is building industrial pipes from deposit to surface");
ElementLink<WorldSectionElement> pipeElement = scene.world.showIndependentSection(pipez,Direction.SOUTH);
scene.world.moveSection(pipeElement,new Vec3(0d,-4d,2d),0);
scene.idle(25);
scene.world.hideIndependentSection(pipeElement,Direction.DOWN);
scene.world.hideIndependentSection(depositElement,Direction.DOWN);
scene.idle(25);
scene.world.showIndependentSection(base2,Direction.SOUTH);
scene.idle(25);
ElementLink<WorldSectionElement> pumpjackBaseElement = scene.world.showIndependentSection(base,Direction.SOUTH);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Pumpjack base has to be placed on the top of the pipe")
.pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(40);
ElementLink<WorldSectionElement> hammerElement1 = scene.world.showIndependentSection(hammer,Direction.UP);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Pumpjack hammer needs to be placed behind it")
.pointAt(util.vector.blockSurface(util.grid.at(3, 3, 2), Direction.WEST))
.placeNearTarget();
scene.idle(40);
scene.world.setKineticSpeed(input,70);
scene.world.setKineticSpeed(base1,-140);
scene.world.showIndependentSection(input,Direction.SOUTH);
scene.idle(10);
scene.world.showIndependentSection(crank,Direction.SOUTH);
scene.overlay.showText(50)
.attachKeyFrame()
.text("The last step is placing a machine input (which is a power input for the pumpjack) with a pumpjack crank above it")
.pointAt(util.vector.blockSurface(util.grid.at(5, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(40);
}
public static void diesel_engine(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("diesel_engine", "");
scene.configureBasePlate(0, 0, 5);
scene.showBasePlate();
Selection engine = util.select.fromTo(2, 1, 0, 2, 1, 2);
Selection exhaust = util.select.fromTo(2, 1, 3, 2, 2, 4);
Selection air = util.select.fromTo(0, 1, 0, 1, 1, 2);
Selection input = util.select.fromTo(3, 1, 0, 4, 1, 2);
scene.idle(30);
ElementLink<WorldSectionElement> engineElement = scene.world.showIndependentSection(engine,Direction.DOWN);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Diesel Engine is assembled by placing a shaft in the front of a diesel engine block");
scene.idle(70);
ElementLink<WorldSectionElement> inputElement = scene.world.showIndependentSection(input,Direction.DOWN);
ElementLink<WorldSectionElement> exhaustElement = scene.world.showIndependentSection(exhaust,Direction.DOWN);
scene.world.setKineticSpeed(input,80);
scene.world.setKineticSpeed(exhaust,80);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Carbon Dioxide has to be outputted by pipes and exhaust block")
.pointAt(util.vector.blockSurface(util.grid.at(2, 2, 4), Direction.WEST))
.placeNearTarget();
scene.idle(40);
ElementLink<WorldSectionElement> airElement = scene.world.showIndependentSection(air,Direction.DOWN);
scene.world.setKineticSpeed(air,80);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Diesel engines need air that can be collected with air intakes")
.pointAt(util.vector.blockSurface(util.grid.at(0, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(10);
scene.world.setKineticSpeed(engine,128);
scene.idle(70);
}
public static void diesel_engine_expansion(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("diesel_engine_expansion", "");
scene.configureBasePlate(0, 0, 6);
scene.showBasePlate();
Selection engine = util.select.fromTo(2, 1, 0, 2, 1, 2);
Selection input = util.select.fromTo(0, 1, 0, 1, 1, 2);
Selection exhaust = util.select.fromTo(3, 1, 0, 4, 2, 2);
Selection expansion = util.select.fromTo(2, 1, 3, 2, 1, 3);
Selection air = util.select.fromTo(2, 1, 4, 2, 1, 5);
Selection coolant = util.select.fromTo(0, 1, 3, 1, 1, 3);
Selection oil = util.select.fromTo(3, 1, 3, 4, 1, 3);
scene.world.setKineticSpeed(input,80);
scene.world.setKineticSpeed(exhaust,80);
scene.world.setKineticSpeed(air,80);
scene.world.setKineticSpeed(coolant,80);
scene.world.setKineticSpeed(oil,80);
scene.world.setKineticSpeed(engine,128);
scene.world.showIndependentSection(engine,Direction.DOWN);
scene.world.showIndependentSection(input,Direction.DOWN);
scene.world.showIndependentSection(exhaust,Direction.DOWN);
ElementLink<WorldSectionElement> airElement = scene.world.showIndependentSection(air,Direction.DOWN);
scene.world.moveSection(airElement,new Vec3(0d,0d,-1d),0);
scene.idle(30);
scene.world.moveSection(airElement,new Vec3(0d,0d,1d),10);
scene.idle(30);
scene.world.showIndependentSection(expansion,Direction.DOWN);
scene.idle(20);
scene.world.showIndependentSection(coolant,Direction.DOWN);
scene.world.showIndependentSection(oil,Direction.DOWN);
scene.overlay.showText(100)
.attachKeyFrame()
.text("Diesel engine expansions give diesel engines 2 new fluid slots, for cooling and lubrication")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 3), Direction.WEST))
.placeNearTarget();
scene.idle(50);
}
public static void surface_scanner(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("surface_scanner", "");
scene.configureBasePlate(0, 0, 5);
scene.showBasePlate();
Selection scanner = util.select.fromTo(0, 1, 0, 5, 1, 5);
scene.world.showSection(util.select.fromTo(0, 1, 0, 5, 1, 5), Direction.UP);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Surface Scanner is used for finding crude oil deposits")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(70);
scene.world.setKineticSpeed(scanner,30);
scene.overlay.showText(50)
.attachKeyFrame()
.text("When rotation is applied, the machine starts to find the nearest oil deposit")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(70);
scene.overlay.showText(50)
.attachKeyFrame()
.text("When a deposit is found, compass at the top will show the direction")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(70);
}
public static void distillation_tower(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("distillation_tower", "");
scene.configureBasePlate(0, 0, 6);
scene.showBasePlate();
scene.scaleSceneView(.4f);
Selection burners = util.select.fromTo(3, 1, 2, 4, 1, 3);
Selection tank = util.select.fromTo(3, 2, 2, 4, 14, 3);
Selection controller = util.select.fromTo(2, 1, 3, 2, 2, 3);
Selection output = util.select.fromTo(2, 3, 3, 2, 13, 3);
Selection oil_tank = util.select.fromTo(0, 1, 4, 2, 3, 4);
scene.world.setKineticSpeed(oil_tank,80);
ElementLink<WorldSectionElement> tankElement = scene.world.showIndependentSection(tank,Direction.DOWN);
scene.overlay.showText(70)
.attachKeyFrame()
.text("Base of a distillation tower are steel tanks")
.pointAt(util.vector.blockSurface(util.grid.at(4, 6, 3), Direction.WEST))
.placeNearTarget();
scene.idle(80);
ElementLink<WorldSectionElement> controllerElement = scene.world.showIndependentSection(controller,Direction.DOWN);
scene.overlay.showText(50)
.attachKeyFrame()
.text("Tower is assembled by placing Steel Distillation Controller next to the tanks")
.pointAt(util.vector.blockSurface(util.grid.at(2, 2, 3), Direction.WEST))
.placeNearTarget();
scene.idle(70);
ElementLink<WorldSectionElement> outputElement = scene.world.showIndependentSection(output,Direction.DOWN);
scene.overlay.showText(60)
.attachKeyFrame()
.text("To finish the multiblock place up to 6 Distillation outputs and Industrial Pipes between them")
.pointAt(util.vector.blockSurface(util.grid.at(2, 7, 3), Direction.WEST))
.placeNearTarget();
scene.idle(70);
ElementLink<WorldSectionElement> burnerElement = scene.world.showIndependentSection(burners,Direction.DOWN);
scene.overlay.showText(60)
.attachKeyFrame()
.text("Place Blaze Burners under the tanks to power it, dial on the tower shows the power level of the structure ")
.pointAt(util.vector.blockSurface(util.grid.at(3, 1, 2), Direction.WEST))
.placeNearTarget();
scene.idle(70);
ElementLink<WorldSectionElement> oilTankElement = scene.world.showIndependentSection(oil_tank,Direction.DOWN);
scene.overlay.showText(60)
.attachKeyFrame()
.text("Oil is inputted into the controller block")
.pointAt(util.vector.blockSurface(util.grid.at(2, 2, 3), Direction.WEST))
.placeNearTarget();
scene.idle(70);
scene.overlay.showText(120)
.attachKeyFrame()
.text("Every output block outputs one of the oil products")
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 3), Direction.WEST))
.placeNearTarget();
///
scene.overlay.showText(120)
.attachKeyFrame()
.text("LPG")
.colored(PonderPalette.BLUE)
.pointAt(util.vector.blockSurface(util.grid.at(2, 13, 3), Direction.WEST))
.placeNearTarget();
scene.overlay.showText(120)
.attachKeyFrame()
.text("Gasoline")
.colored(PonderPalette.BLUE)
.pointAt(util.vector.blockSurface(util.grid.at(2, 11, 3), Direction.WEST))
.placeNearTarget();
scene.overlay.showText(120)
.attachKeyFrame()
.text("Naphtha")
.colored(PonderPalette.BLUE)
.pointAt(util.vector.blockSurface(util.grid.at(2, 9, 3), Direction.WEST))
.placeNearTarget();
scene.overlay.showText(120)
.attachKeyFrame()
.text("Kerosene")
.colored(PonderPalette.BLUE)
.pointAt(util.vector.blockSurface(util.grid.at(2, 7, 3), Direction.WEST))
.placeNearTarget();
scene.overlay.showText(120)
.attachKeyFrame()
.text("Diesel")
.colored(PonderPalette.BLUE)
.pointAt(util.vector.blockSurface(util.grid.at(2, 5, 3), Direction.WEST))
.placeNearTarget();
scene.overlay.showText(120)
.attachKeyFrame()
.text("Heavy Oil")
.colored(PonderPalette.BLUE)
.pointAt(util.vector.blockSurface(util.grid.at(2, 3, 3), Direction.WEST))
.placeNearTarget();
scene.idle(150);
}
}

View File

@@ -24,7 +24,7 @@ import com.drmangotea.createindustry.blocks.engines.small.lpg.LPGEngineBackTileE
import com.drmangotea.createindustry.blocks.engines.small.lpg.LPGEngineTileEntity;
import com.drmangotea.createindustry.blocks.engines.small.turbine.TurbineEngineBackTileEntity;
import com.drmangotea.createindustry.blocks.engines.small.turbine.TurbineEngineTileEntity;
import com.drmangotea.createindustry.blocks.machines.exhaust.ExhaustTileEntity;
import com.drmangotea.createindustry.blocks.machines.exhaust.ExhaustBlockEntity;
import com.drmangotea.createindustry.blocks.machines.flarestack.FlarestackBlockEntity;
import com.drmangotea.createindustry.blocks.machines.metal_processing.blast_furnace.BlastFurnaceOutputBlockEntity;
import com.drmangotea.createindustry.blocks.machines.metal_processing.blast_furnace.BlastFurnaceRenderer;
@@ -51,7 +51,6 @@ import com.drmangotea.createindustry.blocks.pipes.normal.LockablePipeBlockEntity
import com.drmangotea.createindustry.blocks.tanks.SteelFluidTankRenderer;
import com.drmangotea.createindustry.blocks.tanks.SteelTankBlockEntity;
import com.drmangotea.createindustry.blocks.engines.small.UniversalEngineRenderer;
import com.simibubi.create.Create;
import com.simibubi.create.content.fluids.pipes.FluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.SmartFluidPipeBlockEntity;
import com.simibubi.create.content.fluids.pipes.StraightPipeBlockEntity;
@@ -242,8 +241,8 @@ public class TFMGBlockEntities {
.validBlocks(TFMGBlocks.TURBINE_ENGINE_BACK)
.register();
public static final BlockEntityEntry<ExhaustTileEntity> EXHAUST = REGISTRATE
.blockEntity("exhaust", ExhaustTileEntity::new)
public static final BlockEntityEntry<ExhaustBlockEntity> EXHAUST = REGISTRATE
.blockEntity("exhaust", ExhaustBlockEntity::new)
.validBlocks(TFMGBlocks.EXHAUST)
.register();

View File

@@ -27,6 +27,7 @@ import com.drmangotea.createindustry.blocks.engines.small.turbine.TurbineEngineB
import com.drmangotea.createindustry.blocks.machines.exhaust.ExhaustBlock;
import com.drmangotea.createindustry.blocks.machines.flarestack.FlarestackBlock;
import com.drmangotea.createindustry.blocks.machines.flarestack.FlarestackGenerator;
import com.drmangotea.createindustry.blocks.machines.metal_processing.coke_oven.CokeOvenCTBehavior;
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.distillation_tower.IndustrialPipeBlock;
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.AluminumPipeAttachmentModel;
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.AluminumPipeBlock;
@@ -83,6 +84,7 @@ import com.simibubi.create.content.decoration.encasing.EncasingRegistry;
import com.simibubi.create.content.fluids.pipes.SmartFluidPipeGenerator;
import com.simibubi.create.content.fluids.pipes.valve.FluidValveBlock;
import com.simibubi.create.content.kinetics.BlockStressDefaults;
import com.simibubi.create.content.logistics.vault.ItemVaultCTBehaviour;
import com.simibubi.create.content.processing.AssemblyOperatorBlockItem;
import com.simibubi.create.foundation.data.*;
import com.simibubi.create.foundation.utility.Couple;
@@ -489,7 +491,7 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
REGISTRATE.block("steel_distillation_output", DistillationOutputBlock::new)
.initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.blockstate(BlockStateGen.horizontalBlockProvider(true))
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly())
.item()
@@ -639,6 +641,7 @@ public static final BlockEntry<DistillationOutputBlock> STEEL_DISTILLATION_OUTPU
.properties(p -> p.requiresCorrectToolForDrops())
.blockstate(new CokeOvenGenerator()::generate)
.transform(pickaxeOnly())
.onRegister(connectedTextures(CokeOvenCTBehavior::new))
.item()
.transform(customItemModel())
.lang("Coke Oven")

View File

@@ -0,0 +1,71 @@
{
"createindustry.ponder.small_engines.text_1": "To create a small engine, place a front part and a back part behind it",
"createindustry.ponder.small_engines.text_2": "Fuel is inputted to the front part and exhaust is removed from the back part using pipes and an exhaust block",
"createindustry.ponder.small_engines.text_3": "Engine will start when redstone signal is applied to the front part",
"createindustry.ponder.small_engines.text_4": "There are engines with Gasoline, LPG and Kerosene as a fuel",
"createindustry.ponder.diesel_engine.text_1": "Diesel Engine is assembled by placing a shaft in the front of a diesel engine block",
"createindustry.ponder.diesel_engine.text_2": "Carbon Dioxide has to be outputted by pipes and exhaust block",
"createindustry.ponder.diesel_engine.text_3": "Diesel engines need air that can be collected with air intakes",
"createindustry.ponder.diesel_engine_expansion.text_1": "Diesel engine expansions give diesel engines 2 new fluid slots, for cooling and lubrication",
"createindustry.ponder.surface_scanner.text_1": "Surface Scanner is used for finding crude oil deposits",
"createindustry.ponder.surface_scanner.text_2": "When rotation is applied, the machine starts to find the nearest oil deposit",
"createindustry.ponder.surface_scanner.text_3": "When a deposit is found, compass at the top will show the direction",
"createindustry.ponder.pumpjack.text_1": "First step of mining oil is building industrial pipes from deposit to surface",
"createindustry.ponder.pumpjack.text_2": "Pumpjack base has to be placed on the top of the pipe",
"createindustry.ponder.pumpjack.text_3": "Pumpjack hammer needs to be placed behind it",
"createindustry.ponder.pumpjack.text_4": "The last step is placing a machine input (which is a power input for the pumpjack) with a pumpjack crank above it",
"createindustry.ponder.distillation_tower.text_1": "Base of a distillation tower are steel tanks",
"createindustry.ponder.distillation_tower.text_2": "Tower is assembled by placing Steel Distillation Controller next to the tanks",
"createindustry.ponder.distillation_tower.text_3": "To finish the multiblock place up to 6 Distillation outputs and Industrial Pipes between them",
"createindustry.ponder.distillation_tower.text_4": "Place Blaze Burners under the tanks to power it, dial on the tower shows the power level of the structure",
"createindustry.ponder.distillation_tower.text_5": "Oil is inserted into the controller block",
"createindustry.ponder.distillation_tower.text_6": "Every output block outputs one of the oil products",
"createindustry.ponder.distillation_tower.text_7": "LPG",
"createindustry.ponder.distillation_tower.text_8": "Gasoline",
"createindustry.ponder.distillation_tower.text_9": "Naphtha",
"createindustry.ponder.distillation_tower.text_10": "Kerosene",
"createindustry.ponder.distillation_tower.text_11": "Diesel",
"createindustry.ponder.distillation_tower.text_12": "Heavy Oil",
"createindustry.ponder.blast_furnace.text_1": "Main part of a blast furnace is a blast furnace output",
"createindustry.ponder.blast_furnace.text_2": "To make a blast furnace, make a cylinder of fireproof bricks around it",
"createindustry.ponder.blast_furnace.text_3": "Blast furnaces need reinforcements that are at least half the total height",
"createindustry.ponder.blast_furnace.text_4": "Everything is inserted through a hole at the top",
"createindustry.ponder.coke_oven.text_1": "Coke Oven is created by placing coke oven block as shown and clicking the front block with a wrench",
"createindustry.ponder.coke_oven.text_2": "Coke Ovens are slow so it is beneficial to have long arrays of them",
"createindustry.ponder.coke_oven.text_3": "Coal can be inserted from anywhere",
"createindustry.ponder.coke_oven.text_4": "Creosote and Carbon Dioxide have to be pumped out of the machine",
"createindustry.ponder.coke_oven.text_5": "After some time, coal coke will fall out of the machine at the front",
"createindustry.ponder.casting.text_1": "Casting is done by pouring liquid metal into a casting basin with a casting spout",
"createindustry.ponder.casting.text_2": "Casting basin needs a mold to function",
"createindustry.ponder.distillation_tower.header": "Distillation Tower Setup",
"createindustry.ponder.pumpjack.header": "Building Pumpjack",
"createindustry.ponder.surface_scanner.header": "Finding Oil",
"createindustry.ponder.diesel_engine.header": "Building Diesel Engine",
"createindustry.ponder.diesel_engine_expansion.header": "Expanding Diesel Engines",
"createindustry.ponder.small_engines.header": "Building Small Engines",
"createindustry.ponder.coke_oven.header": "Building Coke Oven",
"createindustry.ponder.blast_furnace": "Building Blast Furnace",
"createindustry.ponder.casting.header": "Casting Metal",
"createindustry.ponder.tag.oil": "Oil Related Machines",
"createindustry.ponder.tag.metallurgy": "Metal Processing Related Machines",
"createindustry.ponder.tag.oil.description": "Machines that mine, process or use crude oil and fluids created from it",
"createindustry.ponder.tag.metallurgy.description": "Machines that mine, process or use crude oil and fluids created from it"
}

View File

@@ -21,6 +21,10 @@
"fluid": "createindustry:kerosene",
"amount": 1
},
{
"fluid": "createindustry:naphtha",
"amount": 1
},
{
"fluid": "createindustry:gasoline",
"amount": 3