Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
ede6425
Add Electricity Pylon
Seggan Mar 11, 2026
bd61dec
Add base code
Seggan Mar 11, 2026
9fb3fb8
Simple networks
Seggan Mar 12, 2026
ab607f6
Add creative power source and generify number input
Seggan Mar 17, 2026
45e9dc7
Allow electricity pylon to connect to any electricity block
Seggan Mar 17, 2026
c256663
Don't need this no more
Seggan Mar 17, 2026
883769d
Move the listeners to listener class
Seggan Mar 17, 2026
4defe36
Skeleton electric grindstone
Seggan Mar 17, 2026
a6c171f
Merge branch 'master' into seggan/feature/elektrikity
Seggan Apr 6, 2026
83a6597
Slightly broken but ok
Seggan Apr 13, 2026
933fa7a
Add projectile key (closes #562)
Seggan Apr 13, 2026
0279c55
Merge branch 'master' into seggan/feature/elektrikity
Seggan Apr 13, 2026
bfed3d6
Start multimeter
Seggan Apr 14, 2026
e2d993b
Rewrite node API
Seggan Apr 15, 2026
fa20743
Start transformer
Seggan Apr 20, 2026
6e0ec78
Rewrite connections
Seggan Apr 21, 2026
6535b3d
Add transformers
Seggan Apr 21, 2026
1cd3a5b
Take wires
Seggan Apr 22, 2026
0277dc0
Working capacitors/acceptors
Seggan Apr 22, 2026
69402e2
Boiler
Seggan Apr 24, 2026
852ac2e
Boiler recipe
Seggan Apr 24, 2026
22a20b7
Steam power go brr
Seggan Apr 27, 2026
e43dc98
Basic gas turbine multiblock
Seggan Apr 29, 2026
da19c36
Electricity input/output hatches
Seggan Apr 29, 2026
4b7823b
Rewrite fluid hatches
Seggan Apr 29, 2026
d7720bf
Nuke voltage
Seggan Apr 30, 2026
a1fc803
Fix multiblock facing
Seggan Apr 30, 2026
9e6d929
Multiblock gas turbine (spinny!!!!)
Seggan Apr 30, 2026
b862925
Recipe pages
Seggan Apr 30, 2026
76b5515
Particles
Seggan Apr 30, 2026
a741e45
Combustion tower
Seggan May 4, 2026
8b5b6e5
Merge branch 'master' into seggan/feature/elektrikity
Seggan May 11, 2026
e3e6b53
Fix compile
Seggan May 11, 2026
d764bbb
\*read in electroboom's voice* COMBINED CYCLE CLOSED COOLING DIESEL P…
Seggan May 12, 2026
35c140e
Move stuff around
Seggan May 13, 2026
5b70012
Electric brick molder & fix a few issues
Seggan May 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions src/main/java/io/github/pylonmc/pylon/Pylon.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import io.github.pylonmc.rebar.addon.RebarAddon;
import io.github.pylonmc.rebar.registry.RebarRegistry;
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
import java.util.Locale;
import java.util.Set;
import lombok.Getter;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
Expand All @@ -20,9 +22,6 @@
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;

import java.util.Locale;
import java.util.Set;

import static io.github.pylonmc.pylon.util.PylonUtils.pylonKey;

public class Pylon extends JavaPlugin implements RebarAddon {
Expand Down
20 changes: 20 additions & 0 deletions src/main/java/io/github/pylonmc/pylon/PylonBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@
import io.github.pylonmc.pylon.content.machines.diesel.machines.*;
import io.github.pylonmc.pylon.content.machines.diesel.production.Biorefinery;
import io.github.pylonmc.pylon.content.machines.diesel.production.Fermenter;
import io.github.pylonmc.pylon.content.machines.electricity.Capacitor;
import io.github.pylonmc.pylon.content.machines.electricity.ElectricityInputHatch;
import io.github.pylonmc.pylon.content.machines.electricity.ElectricityOutputHatch;
import io.github.pylonmc.pylon.content.machines.electricity.ElectricityPylon;
import io.github.pylonmc.pylon.content.machines.electricity.generation.*;
import io.github.pylonmc.pylon.content.machines.electricity.machines.ElectricBrickMolder;
import io.github.pylonmc.pylon.content.machines.electricity.machines.ElectricGrindstone;
import io.github.pylonmc.pylon.content.machines.fluid.*;
import io.github.pylonmc.pylon.content.machines.hydraulics.*;
import io.github.pylonmc.pylon.content.machines.simple.*;
Expand Down Expand Up @@ -187,5 +194,18 @@ public static void initialize() {
RebarBlock.register(PylonKeys.PALLADIUM_SILO, Material.BLUE_TERRACOTTA, Silo.class);
RebarBlock.register(PylonKeys.SILO_CONVERTER, Material.STRIPPED_OAK_LOG, SiloConverter.class);
RebarBlock.register(PylonKeys.LISELETTE_COLLECTOR, Material.STRUCTURE_VOID, LiseletteCollector.class);
RebarBlock.register(PylonKeys.ELECTRICITY_PYLON, Material.SEA_LANTERN, ElectricityPylon.class);
RebarBlock.register(PylonKeys.CAPACITOR_1_KJ, Material.BLUE_GLAZED_TERRACOTTA, Capacitor.class);
RebarBlock.register(PylonKeys.CREATIVE_POWER_SOURCE, Material.PINK_STAINED_GLASS, CreativePowerSource.class);
RebarBlock.register(PylonKeys.ELECTRICITY_INPUT_HATCH, Material.GREEN_CONCRETE, ElectricityInputHatch.class);
RebarBlock.register(PylonKeys.ELECTRICITY_OUTPUT_HATCH, Material.ORANGE_CONCRETE, ElectricityOutputHatch.class);
RebarBlock.register(PylonKeys.BOILER_CASING, Material.NETHERITE_BLOCK, RebarBlock.class);
RebarBlock.register(PylonKeys.BOILER, Material.BLAST_FURNACE, Boiler.class);
RebarBlock.register(PylonKeys.STEAM_ENGINE, Material.IRON_BLOCK, SteamEngine.class);
RebarBlock.register(PylonKeys.GAS_TURBINE, Material.IRON_BLOCK, GasTurbine.class);
RebarBlock.register(PylonKeys.COMBUSTION_TOWER, Material.BRICKS, CombustionTower.class);
RebarBlock.register(PylonKeys.HEAT_EXCHANGER, Material.RED_NETHER_BRICK_WALL, HeatExchanger.class);
RebarBlock.register(PylonKeys.ELECTRIC_GRINDSTONE, Material.SMOOTH_STONE, ElectricGrindstone.class);
RebarBlock.register(PylonKeys.ELECTRIC_BRICK_MOLDER, Material.IRON_BLOCK, ElectricBrickMolder.class);
}
}
31 changes: 30 additions & 1 deletion src/main/java/io/github/pylonmc/pylon/PylonFluids.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,19 @@
import io.github.pylonmc.rebar.fluid.RebarFluid;
import io.github.pylonmc.rebar.fluid.tags.FluidTemperature;
import io.github.pylonmc.rebar.recipe.IngredientCalculator;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;

import static io.github.pylonmc.pylon.util.PylonUtils.pylonKey;

public final class PylonFluids {

private PylonFluids() {
throw new AssertionError("Utility class");
}

public static final double WATER_TO_STEAM_RATIO = 1.0 / 10.0;

public static final RebarFluid WATER = new RebarFluid(
pylonKey("water"),
Material.BLUE_CONCRETE
Expand All @@ -36,6 +42,14 @@ private PylonFluids() {
IngredientCalculator.addBaseIngredient(LAVA);
}

public static final RebarFluid STEAM = new RebarFluid(
pylonKey("steam"),
Material.WHITE_STAINED_GLASS
).addTag(FluidTemperature.HOT);
static {
STEAM.register();
}

public static final RebarFluid PLANT_OIL = new RebarFluid(
pylonKey("plant_oil"),
Material.YELLOW_CONCRETE_POWDER
Expand All @@ -53,7 +67,6 @@ private PylonFluids() {
HYDRAULIC_FLUID.register();
}


public static final RebarFluid DIRTY_HYDRAULIC_FLUID = new RebarFluid(
pylonKey("dirty_hydraulic_fluid"),
Material.BROWN_CONCRETE_POWDER
Expand Down Expand Up @@ -248,6 +261,22 @@ private PylonFluids() {
SPONGE_IRON_SLURRY.register();
}

public static final RebarFluid VERY_HOT_EXHAUST = new RebarFluid(
pylonKey("very_hot_exhaust"),
Material.RED_STAINED_GLASS
).addTag(FluidTemperature.HOT);
static {
VERY_HOT_EXHAUST.register();
}

public static final RebarFluid HOT_EXHAUST = new RebarFluid(
pylonKey("hot_exhaust"),
Material.ORANGE_STAINED_GLASS
).addTag(FluidTemperature.HOT);
static {
HOT_EXHAUST.register();
}

/**
* Calling this function will run the static blocks
*/
Expand Down
119 changes: 118 additions & 1 deletion src/main/java/io/github/pylonmc/pylon/PylonItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@
import io.github.pylonmc.pylon.content.machines.diesel.machines.*;
import io.github.pylonmc.pylon.content.machines.diesel.production.Biorefinery;
import io.github.pylonmc.pylon.content.machines.diesel.production.Fermenter;
import io.github.pylonmc.pylon.content.machines.electricity.Capacitor;
import io.github.pylonmc.pylon.content.machines.electricity.Multimeter;
import io.github.pylonmc.pylon.content.machines.electricity.generation.Boiler;
import io.github.pylonmc.pylon.content.machines.electricity.generation.CombustionTower;
import io.github.pylonmc.pylon.content.machines.electricity.generation.SteamEngine;
import io.github.pylonmc.pylon.content.machines.electricity.machines.ElectricBrickMolder;
import io.github.pylonmc.pylon.content.machines.electricity.machines.ElectricGrindstone;
import io.github.pylonmc.pylon.content.machines.fluid.*;
import io.github.pylonmc.pylon.content.machines.hydraulics.*;
import io.github.pylonmc.pylon.content.machines.simple.*;
Expand Down Expand Up @@ -48,7 +55,6 @@
import io.papermc.paper.datacomponent.item.consumable.ItemUseAnimation;
import io.papermc.paper.registry.keys.SoundEventKeys;
import io.papermc.paper.registry.keys.tags.DamageTypeTagKeys;
import java.util.Objects;
import net.kyori.adventure.key.Key;
import org.bukkit.*;
import org.bukkit.attribute.Attribute;
Expand Down Expand Up @@ -3245,6 +3251,117 @@ private PylonItems() {
RecipeType.VANILLA_SHAPELESS.addRecipe(recipe);
}

// <editor-fold desc="Electricity" defaultstate=collapsed>
public static final ItemStack ELECTRICITY_PYLON = ItemStackBuilder.rebar(Material.SEA_LANTERN, PylonKeys.ELECTRICITY_PYLON)
.build();
static {
RebarItem.register(RebarItem.class, ELECTRICITY_PYLON, PylonKeys.ELECTRICITY_PYLON);
PylonPages.ELECTRICITY.addItem(ELECTRICITY_PYLON);
}

public static final ItemStack CAPACITOR_1_KJ = ItemStackBuilder.rebar(Material.BLUE_GLAZED_TERRACOTTA, PylonKeys.CAPACITOR_1_KJ)
.build();
static {
RebarItem.register(Capacitor.Item.class, CAPACITOR_1_KJ, PylonKeys.CAPACITOR_1_KJ);
PylonPages.ELECTRICITY.addItem(CAPACITOR_1_KJ);
}

public static final ItemStack WIRE_1_GAUGE = ItemStackBuilder.rebar(Material.STRING, PylonKeys.WIRE_1_GAUGE)
.build();
static {
RebarItem.register(PylonWire.class, WIRE_1_GAUGE, PylonKeys.WIRE_1_GAUGE);
PylonPages.TOOLS.addItem(WIRE_1_GAUGE);
}

public static final ItemStack MULTIMETER = ItemStackBuilder.rebar(Material.CLOCK, PylonKeys.MULTIMETER)
.build();
static {
RebarItem.register(Multimeter.class, MULTIMETER, PylonKeys.MULTIMETER);
PylonPages.TOOLS.addItem(MULTIMETER);
}

public static final ItemStack CREATIVE_POWER_SOURCE = ItemStackBuilder.rebar(Material.PINK_STAINED_GLASS, PylonKeys.CREATIVE_POWER_SOURCE)
.build();
static {
RebarItem.register(RebarItem.class, CREATIVE_POWER_SOURCE, PylonKeys.CREATIVE_POWER_SOURCE);
PylonPages.CREATIVE_ITEMS.addItem(CREATIVE_POWER_SOURCE);
}

public static final ItemStack ELECTRICITY_INPUT_HATCH = ItemStackBuilder.rebar(Material.GREEN_CONCRETE, PylonKeys.ELECTRICITY_INPUT_HATCH)
.build();
static {
RebarItem.register(RebarItem.class, ELECTRICITY_INPUT_HATCH, PylonKeys.ELECTRICITY_INPUT_HATCH);
PylonPages.COMPONENTS.addItem(ELECTRICITY_INPUT_HATCH);
}

public static final ItemStack ELECTRICITY_OUTPUT_HATCH = ItemStackBuilder.rebar(Material.ORANGE_CONCRETE, PylonKeys.ELECTRICITY_OUTPUT_HATCH)
.build();
static {
RebarItem.register(RebarItem.class, ELECTRICITY_OUTPUT_HATCH, PylonKeys.ELECTRICITY_OUTPUT_HATCH);
PylonPages.COMPONENTS.addItem(ELECTRICITY_OUTPUT_HATCH);
}

public static final ItemStack BOILER_CASING = ItemStackBuilder.rebar(Material.NETHERITE_BLOCK, PylonKeys.BOILER_CASING)
.build();
static {
RebarItem.register(RebarItem.class, BOILER_CASING, PylonKeys.BOILER_CASING);
PylonPages.COMPONENTS.addItem(BOILER_CASING);
}

public static final ItemStack BOILER = ItemStackBuilder.rebar(Material.BLAST_FURNACE, PylonKeys.BOILER)
.build();
static {
RebarItem.register(Boiler.Item.class, BOILER, PylonKeys.BOILER);
PylonPages.ELECTRICITY.addItem(BOILER);
}

public static final ItemStack STEAM_ENGINE = ItemStackBuilder.rebar(Material.IRON_BLOCK, PylonKeys.STEAM_ENGINE)
.build();
static {
RebarItem.register(SteamEngine.Item.class, STEAM_ENGINE, PylonKeys.STEAM_ENGINE);
PylonPages.ELECTRICITY.addItem(STEAM_ENGINE);
}

public static final ItemStack GAS_TURBINE = ItemStackBuilder.rebar(Material.IRON_BLOCK, PylonKeys.GAS_TURBINE)
.build();
static {
RebarItem.register(RebarItem.class, GAS_TURBINE, PylonKeys.GAS_TURBINE);
PylonPages.ELECTRICITY.addItem(GAS_TURBINE);
RebarGuide.getOrCreateInfoPage(PylonKeys.GAS_TURBINE)
.addButton(new MachineRecipesButton(GAS_TURBINE, GasTurbineRecipe.RECIPE_TYPE));
}

public static final ItemStack COMBUSTION_TOWER = ItemStackBuilder.rebar(Material.BRICKS, PylonKeys.COMBUSTION_TOWER)
.build();
static {
RebarItem.register(CombustionTower.Item.class, COMBUSTION_TOWER, PylonKeys.COMBUSTION_TOWER);
PylonPages.ELECTRICITY.addItem(COMBUSTION_TOWER);
}

public static final ItemStack HEAT_EXCHANGER = ItemStackBuilder.rebar(Material.RED_NETHER_BRICK_WALL, PylonKeys.HEAT_EXCHANGER)
.build();
static {
RebarItem.register(RebarItem.class, HEAT_EXCHANGER, PylonKeys.HEAT_EXCHANGER);
PylonPages.ELECTRICITY.addItem(HEAT_EXCHANGER);
}

public static final ItemStack ELECTRIC_GRINDSTONE = ItemStackBuilder.rebar(Material.SMOOTH_STONE, PylonKeys.ELECTRIC_GRINDSTONE)
.build();
static {
RebarItem.register(ElectricGrindstone.Item.class, ELECTRIC_GRINDSTONE, PylonKeys.ELECTRIC_GRINDSTONE);
PylonPages.ELECTRICITY.addItem(ELECTRIC_GRINDSTONE);
RebarGuide.getOrCreateInfoPage(PylonKeys.ELECTRIC_GRINDSTONE)
.addButton(new MachineRecipesButton(ELECTRIC_GRINDSTONE, GrindstoneRecipe.RECIPE_TYPE));
}

public static final ItemStack ELECTRIC_BRICK_MOLDER = ItemStackBuilder.rebar(Material.IRON_BLOCK, PylonKeys.ELECTRIC_BRICK_MOLDER)
.build();
static {
RebarItem.register(ElectricBrickMolder.Item.class, ELECTRIC_BRICK_MOLDER, PylonKeys.ELECTRIC_BRICK_MOLDER);
PylonPages.ELECTRICITY.addItem(ELECTRIC_BRICK_MOLDER);
}
// </editor-fold>

static {
PylonPages.initialise();
PylonHelpPages.initialise();
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/io/github/pylonmc/pylon/PylonKeys.java
Original file line number Diff line number Diff line change
Expand Up @@ -472,4 +472,20 @@ public class PylonKeys {
public static final NamespacedKey PALLADIUM_SILO = pylonKey("palladium_silo");

public static final NamespacedKey FINE_SEDIMENT = pylonKey("fine_sediment");

public static final NamespacedKey ELECTRICITY_PYLON = pylonKey("electricity_pylon");
public static final NamespacedKey CAPACITOR_1_KJ = pylonKey("capacitor_1_kj");
public static final NamespacedKey MULTIMETER = pylonKey("multimeter");
public static final NamespacedKey WIRE_1_GAUGE = pylonKey("wire_1_gauge");
public static final NamespacedKey CREATIVE_POWER_SOURCE = pylonKey("creative_power_source");
public static final NamespacedKey ELECTRICITY_INPUT_HATCH = pylonKey("electricity_input_hatch");
public static final NamespacedKey ELECTRICITY_OUTPUT_HATCH = pylonKey("electricity_output_hatch");
public static final NamespacedKey BOILER_CASING = pylonKey("boiler_casing");
public static final NamespacedKey BOILER = pylonKey("boiler");
public static final NamespacedKey STEAM_ENGINE = pylonKey("steam_engine");
public static final NamespacedKey GAS_TURBINE = pylonKey("gas_turbine");
public static final NamespacedKey COMBUSTION_TOWER = pylonKey("combustion_tower");
public static final NamespacedKey HEAT_EXCHANGER = pylonKey("heat_exchanger");
public static final NamespacedKey ELECTRIC_GRINDSTONE = pylonKey("electric_grindstone");
public static final NamespacedKey ELECTRIC_BRICK_MOLDER = pylonKey("electric_brick_molder");
}
2 changes: 2 additions & 0 deletions src/main/java/io/github/pylonmc/pylon/PylonPages.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public class PylonPages {
public static final SimpleStaticGuidePage CARGO = new SimpleStaticGuidePage(pylonKey("machines_cargo"));
public static final SimpleStaticGuidePage DIESEL_MACHINES = new SimpleStaticGuidePage(pylonKey("machines_diesel_machines"));
public static final SimpleStaticGuidePage DIESEL_PRODUCTION = new SimpleStaticGuidePage(pylonKey("machines_diesel_production"));
public static final SimpleStaticGuidePage ELECTRICITY = new SimpleStaticGuidePage(pylonKey("machines_electricity"));
public static final SimpleStaticGuidePage MACHINES = new SimpleStaticGuidePage(pylonKey("machines"));

public static final SimpleStaticGuidePage ASSEMBLING = new SimpleStaticGuidePage(pylonKey("assembling"));
Expand Down Expand Up @@ -72,6 +73,7 @@ public static void initialise() {
MACHINES.addPage(PylonItems.CARGO_BUFFER, CARGO);
MACHINES.addPage(PylonItems.DIESEL_PIPE_BENDER, DIESEL_MACHINES);
MACHINES.addPage(PylonItems.BIOREFINERY, DIESEL_PRODUCTION);
MACHINES.addPage(PylonItems.ELECTRICITY_PYLON, ELECTRICITY);
RebarGuide.getRootPage().addPage(PylonItems.MIXING_POT, MACHINES);
RebarGuide.getRootPage().addPage(PylonItems.ASSEMBLY_TABLE, ASSEMBLING);

Expand Down
60 changes: 60 additions & 0 deletions src/main/java/io/github/pylonmc/pylon/PylonRecipes.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import io.github.pylonmc.rebar.config.Config;
import io.github.pylonmc.rebar.config.Settings;
import io.github.pylonmc.rebar.config.adapter.ConfigAdapter;
import io.github.pylonmc.rebar.fluid.FluidWithAmount;
import io.github.pylonmc.rebar.guide.button.FluidButton;
import io.github.pylonmc.rebar.guide.button.ItemButton;
import io.github.pylonmc.rebar.recipe.FluidOrItem;
Expand Down Expand Up @@ -45,12 +46,16 @@ public static void initialize() {
SiloConverterRecipe.RECIPE_TYPE.register();
HydraulicPurifier.RECIPE_TYPE.register();
FormingRecipe.RECIPE_TYPE.register();
GasTurbineRecipe.RECIPE_TYPE.register();
HeatExchangerRecipe.RECIPE_TYPE.register();

//hardcoded
initCollimator();
initPalladiumCondenser();
initBiorefinery();
initFermenter();
initBoiler();
initCombustionTower();
}

private static void initCollimator() {
Expand All @@ -77,6 +82,31 @@ private static void initCollimator() {
).register();
}

private static void initBoiler() {
NamespacedKey key = PylonKeys.BOILER;
double steamPerSecond = Settings.get(key).getOrThrow("steam-per-second", ConfigAdapter.DOUBLE);
RecipeInput.Fluid input = RecipeInput.of(PylonFluids.WATER, steamPerSecond * PylonFluids.WATER_TO_STEAM_RATIO);
FluidWithAmount output = new FluidWithAmount(PylonFluids.STEAM, steamPerSecond);
new SingleRecipe(
key,
input,
output.asFluidOrItem(),
() -> Gui.builder()
.setStructure(
"# # # # # # # # #",
"# # # # # # # # #",
"# i # # x # # o #",
"# # # # # # # # #",
"# # # # # # # # #"
)
.addIngredient('#', GuiItems.backgroundBlack())
.addIngredient('i', new FluidButton(input))
.addIngredient('x', ItemButton.from(PylonItems.BOILER))
.addIngredient('o', new FluidButton(output))
.build()
).register();
}

private static void initPalladiumCondenser() {
NamespacedKey key = PylonKeys.PALLADIUM_CONDENSER;
Config setting = Settings.get(key);
Expand Down Expand Up @@ -182,4 +212,34 @@ private static void initFermenter() {
.build()
).register();
}

private static void initCombustionTower() {
NamespacedKey key = PylonKeys.COMBUSTION_TOWER;
Config setting = Settings.get(key);

double dieselUsage = setting.getOrThrow("diesel-usage", ConfigAdapter.DOUBLE);
double exhaustProduction = setting.getOrThrow("exhaust-production", ConfigAdapter.DOUBLE);

RecipeInput.Fluid input = RecipeInput.of(PylonFluids.BIODIESEL, dieselUsage);
FluidWithAmount output = new FluidWithAmount(PylonFluids.VERY_HOT_EXHAUST, exhaustProduction);

new SingleRecipe(
key,
input,
output.asFluidOrItem(),
() -> Gui.builder()
.setStructure(
"# # # # # # # # #",
"# # # # # # # # #",
"# d # # x # # e #",
"# # # # # # # # #",
"# # # # # # # # #"
)
.addIngredient('#', GuiItems.backgroundBlack())
.addIngredient('d', new FluidButton(input))
.addIngredient('x', ItemButton.from(PylonItems.COMBUSTION_TOWER))
.addIngredient('e', new FluidButton(output))
.build()
).register();
}
}
Loading
Loading