#KJS custom multiblock

1 messages · Page 1 of 1 (latest)

tiny estuary
#

Heyo im tryna make a multiblock with kjs, i got pretty far i think, my custom recipes and the multiblock and controller get registered and i see them in jei etc.

Only thing i dont see, is the 3D structure preview and when i build it it does not form.

Any ideas?
Do i have to specify a Voltage?
Im tryna make a passive one that does not take or produce power just works fluids.

Code below:

#
GTCEuStartupEvents.registry('gtceu:recipe_type', event => {
    event.create('thorium_heat_exchanger')
        .category('thorium_heat_exchanger')
        .setEUIO('in')
        .setMaxIOSize(1, 2, 2, 2)
        .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT)
        .setSound(GTSoundEntries.BATH);
})```
#
    event.create('thorium_heat_exchanger', 'multiblock')
        .rotationState(RotationState.NON_Y_AXIS)
        .recipeType('thorium_heat_exchanger')
        .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.PERFECT_OVERCLOCK))
        .appearanceBlock(GTBlocks.CASING_TITANIUM_STABLE)
        .pattern(definition => FactoryBlockPattern.start()
            .aisle('BBCCC', 'BBCCC', 'BBCCC', 'BBCCC', 'BBCCC', 'BBCCC', 'BBCCC')
            .aisle('BBCCC', 'BBCCC', 'BBCCC', 'ABCCC', 'BBCCC', 'BBCCC', 'BBCCC')
            .aisle('BBCCC', 'BBCCC', 'BBCCC', 'BBCCC', 'BBCCC', 'BBCCC', 'BBCCC')
            .where('A', Predicates.controller(Predicates.blocks(definition.get())))
            .where('B', Predicates.blocks('nuclearscience:blocklead'.get())
                .or(Predicates.autoAbilities(definition.getRecipeTypes()))
                .or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1))
                .or(Predicates.abilities(PartAbility.PARALLEL_HATCH).setMaxGlobalLimited(1)))
            .where('C', Predicates.blocks('immersiveengineering:radiator'.get())
                .or(Predicates.autoAbilities(definition.getRecipeTypes()))
                .or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1))
                .or(Predicates.abilities(PartAbility.PARALLEL_HATCH).setMaxGlobalLimited(1)))
            .where(' ', Predicates.any())
            .build())
        .workableCasingRenderer("gtceu:block/casings/solid/machine_casing_stable_titanium",
        "gtceu:block/multiblock/primitive_blast_furnace", false);
})```
#

also what does .setMaxIOSize(1, 2, 2, 2) do ?

ruby trellis
#

Thats the Gui things

#

like that config has 1 Input Slot 2 Output slots

#

2 fluid inputs

#

and 2 fluid outputs

#

Im not sure if u can make 2 blocks have autoabilities

#

did u try only having only 1 ?

tiny estuary
#

Ah, alright :) thanks

#

no i did not im going to try that next, how do i specify a port specifically, i did not find an example on it?
.where('E', Predicates.abilities(PartAbility.OUTPUT_FLUID).setExactLimit(2))

#

would that be correct?

tiny estuary
#

do i have to do something more than the registry i posted + add a recipe?

ruby trellis
#

what ver you in?

tiny estuary
#

Can i only use GTCEU blokcs for multiblocks ?

#

oh sorry for ping

#

1.19.2
1.2.3.a

floral sand
# tiny estuary 1.19.2 1.2.3.a
  1. You can, you just did it wrong
    .get() is only needed if you have any sort of block supplier (like all the ones in GTBlocks) instead of just a block.
  2. Why 1.19.2? We dropped support almost a year ago now.
tiny estuary
#

i cant realistically port all mods to 1.20 i made documents already to see what needs work but there are closed source mods like ic2classic not ported yet

#

tinkers too

tiny estuary
floral sand
#

why are you even using ic2c

tiny estuary
#

its a large pack but the tech tree is not strictly linear

You can progress to the next tier by either playing one or another mod in that tier

#

in that way i can integrate a lot of mods into the tech tree and still give a lot of options if you dont like X or Y

tiny estuary
tiny estuary
#

i got it working