GTCEu Greenhouse

GTCEu Greenhouse

A mod that adds the capability to create multiblock greenhouses with renders of the current recipe

by
187 Downloads
forgetechnology
Rent Server with this Mod

Screenshots

Greenhouse growing alliums

About this Mod

This mod does not add a greenhouse multibock. It adds a system that allows you to create a greenhouse multiblock using KubeJS or Java.

Why use this mod? It adds a custom renderer that makes plants appear and grow when a recipe is running.

Usage

KubeJS

You can create a greenhouse multiblock machine by using the "greenhouse" type in the "gtceu:machine" startup event.

All methods are the same as the ones for "multiblock", except the ones for renderers are omitted, and you must call the following methods:

  • textures(base: string, overlay: string), which acts like a workable casing renderer with the base and overlay;
  • offsets(offsets: [number, number, number][]), which specifies the positions where the plants will grow with respect to the controller.

Example:

GTCEuStartupEvents.registry('gtceu:machine', event => {
    event.create('greenhouse', 'greenhouse')
        .rotationState(RotationState.NON_Y_AXIS)
        .recipeTypes(GTRecipeTypes.COMPRESSOR_RECIPES)
        .recipeModifiers([GTRecipeModifiers.PARALLEL_HATCH])
        .appearanceBlock(GTBlocks.CASING_STEEL_SOLID)
        .pattern(definition => FactoryBlockPattern.start()
            .aisle('CCCCC', 'ggggg', 'ggggg', 'ggggg', 'ggggg')
            .aisle('CGGGC', 'gpppg', 'gpppg', 'gpppg', 'ggggg')
            .aisle('CGGGC', 'gpppg', 'gpppg', 'gpppg', 'ggggg')
            .aisle('CGGGC', 'gpppg', 'gpppg', 'gpppg', 'ggggg')
            .aisle('CC@CC', 'ggggg', 'ggggg', 'ggggg', 'ggggg')
            .where('@', Predicates.controller(Predicates.blocks(definition.get())))
            .where('p', Predicates.air())
            .where('g', Predicates.blocks(Blocks.GLASS))
            .where('G', Predicates.blocks(Blocks.GRASS_BLOCK))
            .where('C', Predicates.blocks(GTBlocks.CASING_STEEL_SOLID.get())
                .or(Predicates.autoAbilities(definition.getRecipeTypes())))
            .build())
        .offsets([
            [1, -1, -1],
            [-1, -1, -1],
            [1, -3, -1],
            [-1, -3, -1]
        ])
        .textures("gtceu:block/casings/solid/machine_casing_solid_steel", "gtceu:block/multiblock/gcym/large_mixer")
});

Java

First, add the JitPack repository:

repositories {
    // ...
    maven { url 'https://jitpack.io' }
}

Next, add a dependency to the project:

dependencies {
    // ...
    
    implementation fg.deobf("com.github.RubenVerg:GTCEu-Greenhouse:main-SNAPSHOT")
}

There are two main exported classes which you will need: GreenhouseMachineRenderer and SyncedProgressElectricMultiblockMachine. When registering a multiblock, use the synced progress machine as the machine class and the renderer as a renderer. You will need to enable TESR.

Example:

GREENHOUSE = MyMod.REGISTRATE
  .multiblock("greenhouse", SyncedProgressElectricMultiblockMachine::new)
  .rotationState(RotationState.NON_Y_AXIS)
  .recipeType(GregPackRecipeTypes.GREENHOUSE_RECIPES)
  .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH)
  .appearanceBlock(GTBlocks.CASING_STEEL_SOLID)
  .pattern(definition -> FactoryBlockPattern.start()
    .aisle("CCCCC", "CgggC", "CgggC", "CCCCC")
    .aisle("CdddC", "g   g", "g   g", "CgggC")
    .aisle("CdddC", "g   g", "g   g", "CgggC")
    .aisle("CdddC", "g   g", "g   g", "CgggC")
    .aisle("CC#CC", "CgggC", "CgggC", "CCCCC")
    .where('C', Predicates.blocks(GTBlocks.CASING_STEEL_SOLID.get())
      .or(Predicates.autoAbilities(definition.getRecipeTypes()))
      .or(Predicates.autoAbilities(true, false, false)))
	.where('#', Predicates.controller(Predicates.blocks(definition.getBlock())))
	.where('d', Predicates.blocks(Blocks.DIRT))
	.where('g', Predicates.blocks(GTBlocks.CASING_TEMPERED_GLASS.get()))
	.build())
  .renderer(() -> new GreenhouseMachineRenderer(GTCEu.id("block/casings/solid/machine_casing_solid_steel"),
    GTCEu.id("block/multiblock/gcym/large_mixer")))
  .hasTESR(true)
  .register();

If you do not want your machine to be electric, you can implement ISyncedProgress and use that as a machine instead:

public class MySyncedProgress extends Whatever implements ISyncedProgress {
	protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(SyncedProgressElectricMultiblockMachine.class, Whatever.MANAGED_FIELD_HOLDER);

	@Persisted
	@DescSynced
	@RequireRerender
	private double progressPercent;

	public SyncedProgressElectricMultiblockMachine(IMachineBlockEntity holder, Object... args) {
		super(holder, args);
	}

	{
		subscribeServerTick(() -> {
			progressPercent = recipeLogic.getProgressPercent();
		});
	}

	@Override
	public @NotNull ManagedFieldHolder getFieldHolder() {
		return MANAGED_FIELD_HOLDER;
	}

	@Override
	public double getProgressPercent() {
		return progressPercent;
	}
}

Available Versions

GTCEu Greenhouse 0.1.0beta
MC 1.20.1forge
July 5, 2025

How to Install GTCEu Greenhouse on Your Server

1

Order Server

Order a Minecraft Java server with at least 3 GB RAM (4 GB recommended).

2

Set forge Loader

In the panel under "Egg", select the forge loader and matching Minecraft version (1.20.1).

3

Install Mod

Open the mod browser in the dashboard and search for "GTCEu Greenhouse". Click "Install" – done! Alternatively, upload the .jar via SFTP to the /mods folder.

Compatibility

Mod Loaders

forge

Minecraft Versions

1.20.1

Server-side

Required

Recommended RAM

4 GB(min. 3 GB)

Frequently Asked Questions

GTCEu Greenhouse server crashes on startup – what to do?

Most common cause: wrong forge version or insufficient RAM. Check the server log (latest.log) for "OutOfMemoryError" or "Mixin" errors. With Mado Hosting: ensure at least 3 GB RAM is allocated and the loader matches the mod version (1.20.1). You can switch loaders with one click in the panel.

Is GTCEu Greenhouse compatible with forge?

GTCEu Greenhouse officially supports forge for Minecraft 1.20.1. The Mado dashboard automatically detects incompatible loader combinations.

Server lagging with GTCEu Greenhouse – how to optimize performance?

Recommended RAM: 4 GB (per 8 players). Use /spark profiler to check if GTCEu Greenhouse consumes the most tick time. Common fixes: reduce server view-distance to 8-10, install "performant" or "starlight" as supplementary mods on Forge. With Mado Hosting, your server runs on NVMe SSDs with dedicated CPU cores for minimal latency.

Rent Modded Server

Install GTCEu Greenhouse with just one click on your server.

Recommended RAM
4 GBab €8/mo
Min. 3 GB | +1 GB pro 8 Spieler
Create Server Now
1-Click Mod Install
NVMe SSD Storage
DDoS Protection included

Details

License
MIT License
Server-side
Required

Supported Versions

1.20.1