Skip to content

For mod developers

Sergey edited this page Mar 26, 2025 · 1 revision

Registering custom processor (machine)

  1. Create processor block entity class
public class MyCustomProcessorBE extends NCProcessorBE {

    public MyCustomProcessorBE(BlockPos pPos, BlockState pBlockState) {
        super(pPos, pBlockState, "my_custom_processor");
    }

    @NothingNullByDefault
    public static class Recipe extends NcRecipe {
        public Recipe(ResourceLocation id,
                      ItemStackIngredient[] input, ItemStackIngredient[] output,
                      FluidStackIngredient[] inputFluids, FluidStackIngredient[] outputFluids,
                      double timeModifier, double powerModifier, double heatModifier, double rarity) {
            super(id, input, output, timeModifier, powerModifier, heatModifier, 1);
        }

        @Override
        public String getCodeId() {
            return "my_custom_processor";
        }
    }
}
  1. Create processors registration class
@NCProcessorsRegistry
public class MyCustomProcessors implements IProcessorRegistry {
    @Override
    public void registerProcessors(HashMap<String, ProcessorPrefab> registry) {
        registry.put("my_custom_processor",
                ProcessorBuilder
                        .make("my_custom_processor", 1, 0, 1, 0)
                        .blockEntity(MyCustomProcessorBE::new)
                        .recipe(MyCustomProcessorBE.Recipe::new)
                        .build()
        );
    }
}
  1. Place processor recipes into resource folder: data/nuclearcraft/recipes/my_custom_processor/

Format:

{
  "type": "nuclearcraft:my_custom_processor",
  "inputFluids": [
    {
      "amount": 1000,
      "tag": "forge:nitrogen"
    }
  ],
  "outputFluids": [
    {
      "amount": 100,
      "tag": "forge:liquid_nitrogen"
    }
  ],
  "powerModifier": 1.0,
  "radiation": 1.0,
  "timeModifier": 1.0
}

More examples in NuclearCraft: generated/data/nuclearcraft/recipes

  1. Add blockstate. Path: assets/nuclearcraft/blockstates/my_custom_processor.json

Example:

{
  "variants": {
    "facing=east,powered=false": {
      "model": "nuclearcraft:block/processor/my_custom_processor",
      "y": 90
    },
    "facing=east,powered=true": {
      "model": "nuclearcraft:block/processor/my_custom_processor_powered",
      "y": 90
    },
    "facing=north,powered=false": {
      "model": "nuclearcraft:block/processor/my_custom_processor"
    },
    "facing=north,powered=true": {
      "model": "nuclearcraft:block/processor/my_custom_processor_powered"
    },
    "facing=south,powered=false": {
      "model": "nuclearcraft:block/processor/my_custom_processor",
      "y": 180
    },
    "facing=south,powered=true": {
      "model": "nuclearcraft:block/processor/my_custom_processor_powered",
      "y": 180
    },
    "facing=west,powered=false": {
      "model": "nuclearcraft:block/processor/my_custom_processor",
      "y": 270
    },
    "facing=west,powered=true": {
      "model": "nuclearcraft:block/processor/my_custom_processor_powered",
      "y": 270
    }
  }
}
  1. Add block models. Path: assets/nuclearcraft/models/block/processor/

Format:

{
  "parent": "minecraft:block/cube",
  "textures": {
    "down": "nuclearcraft:block/processor/top",
    "east": "nuclearcraft:block/processor/side",
    "north": "nuclearcraft:block/processor/my_custom_processor",
    "particle": "nuclearcraft:block/processor/side",
    "south": "nuclearcraft:block/processor/back",
    "up": "nuclearcraft:block/processor/bottom",
    "west": "nuclearcraft:block/processor/side"
  }
}
  1. Add textures for model

Clone this wiki locally