- Removed pseudo-modularity of Create's content
This commit is contained in:
simibubi 2020-05-02 18:07:46 +02:00
parent 901cb00426
commit e27927de15
291 changed files with 528 additions and 2224 deletions

View file

@ -10,7 +10,7 @@ import com.simibubi.create.foundation.block.ProperStairsBlock;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.data.ITaggable;
import com.simibubi.create.foundation.world.OxidizingBlock;
import com.simibubi.create.modules.IModule;
import com.simibubi.create.modules.Sections;
import com.simibubi.create.modules.contraptions.CasingBlock;
import com.simibubi.create.modules.contraptions.components.actors.DrillBlock;
import com.simibubi.create.modules.contraptions.components.actors.HarvesterBlock;
@ -60,11 +60,11 @@ import com.simibubi.create.modules.contraptions.relays.encased.EncasedShaftBlock
import com.simibubi.create.modules.contraptions.relays.encased.GearshiftBlock;
import com.simibubi.create.modules.contraptions.relays.gauge.GaugeBlock;
import com.simibubi.create.modules.contraptions.relays.gearbox.GearboxBlock;
import com.simibubi.create.modules.curiosities.CocoaLogBlock;
import com.simibubi.create.modules.curiosities.partialWindows.WindowInABlockBlock;
import com.simibubi.create.modules.curiosities.symmetry.block.CrossPlaneSymmetryBlock;
import com.simibubi.create.modules.curiosities.symmetry.block.PlaneSymmetryBlock;
import com.simibubi.create.modules.curiosities.symmetry.block.TriplePlaneSymmetryBlock;
import com.simibubi.create.modules.gardens.CocoaLogBlock;
import com.simibubi.create.modules.logistics.block.RedstoneLinkBlock;
import com.simibubi.create.modules.logistics.block.StockswitchBlock;
import com.simibubi.create.modules.logistics.block.belts.observer.BeltObserverBlock;
@ -120,12 +120,8 @@ import net.minecraftforge.common.ToolType;
public enum AllBlocks implements NonNullSupplier<Block> {
// __SCHEMATICS__(),
// SCHEMATICANNON(SchematicannonBlock::new),
// CREATIVE_CRATE(CreativeCrateBlock::new),
// SCHEMATIC_TABLE(SchematicTableBlock::new),
_1_(Sections.KINETICS),
__CONTRAPTIONS__(),
SHAFT(() -> new ShaftBlock(Properties.from(Blocks.ANDESITE))),
COGWHEEL(() -> new CogWheelBlock(false), (b, p) -> new CogwheelBlockItem(b, p, false)),
LARGE_COGWHEEL(() -> new CogWheelBlock(true), (b, p) -> new CogwheelBlockItem(b, p, true)),
@ -186,7 +182,8 @@ public enum AllBlocks implements NonNullSupplier<Block> {
FURNACE_ENGINE(FurnaceEngineBlock::new),
ROTATION_SPEED_CONTROLLER(SpeedControllerBlock::new),
__LOGISTICS__(),
_2_(Sections.LOGISTICS),
CONTACT(ContactBlock::new),
REDSTONE_BRIDGE(RedstoneLinkBlock::new),
STOCKSWITCH(StockswitchBlock::new),
@ -209,17 +206,41 @@ public enum AllBlocks implements NonNullSupplier<Block> {
REDSTONE_LATCH(LatchBlock::new),
TOGGLE_LATCH(ToggleLatchBlock::new),
__CURIOSITIES__(),
_3_(Sections.MATERIALS),
COPPER_ORE(() -> new OxidizingBlock(Properties.from(Blocks.IRON_ORE), 1),
ITaggable.create().withForgeTags("ores/copper")),
ZINC_ORE(() -> new Block(Properties.from(Blocks.GOLD_ORE).harvestLevel(2).harvestTool(ToolType.PICKAXE)),
ITaggable.create().withForgeTags("ores/zinc")),
COPPER_BLOCK(() -> new OxidizingBlock(Properties.from(Blocks.IRON_BLOCK), 1 / 32f),
ITaggable.create().withForgeTags("storage_blocks/copper")),
COPPER_SHINGLES(() -> new OxidizingBlock(Properties.from(Blocks.IRON_BLOCK), 1 / 32f)),
ZINC_BLOCK(() -> new Block(Properties.from(Blocks.IRON_BLOCK)),
ITaggable.create().withForgeTags("storage_blocks/zinc")),
BRASS_BLOCK(() -> new Block(Properties.from(Blocks.IRON_BLOCK)),
ITaggable.create().withForgeTags("storage_blocks/brass")),
_4_(Sections.CURIOSITIES),
SYMMETRY_PLANE(PlaneSymmetryBlock::new, ComesWith.NO_BLOCKITEM),
SYMMETRY_CROSSPLANE(CrossPlaneSymmetryBlock::new, ComesWith.NO_BLOCKITEM),
SYMMETRY_TRIPLEPLANE(TriplePlaneSymmetryBlock::new, ComesWith.NO_BLOCKITEM),
WINDOW_IN_A_BLOCK(WindowInABlockBlock::new, ComesWith.NO_BLOCKITEM),
COCOA_LOG(CocoaLogBlock::new, ITaggable.create().withVanillaTags(ITaggable.BLOCK, "jungle_logs")),
__PALETTES__(),
TILED_GLASS(() -> new GlassBlock(Properties.from(Blocks.GLASS)), ITaggable.create().withVanillaTags(ITaggable.BLOCK, "impermeable").withForgeTags("glass")),
_5_(Sections.SCHEMATICS),
// SCHEMATICANNON(SchematicannonBlock::new),
// CREATIVE_CRATE(CreativeCrateBlock::new),
// SCHEMATIC_TABLE(SchematicTableBlock::new),
_6_(Sections.PALETTES),
TILED_GLASS(() -> new GlassBlock(Properties.from(Blocks.GLASS)),
ITaggable.create().withVanillaTags(ITaggable.BLOCK, "impermeable").withForgeTags("glass")),
FRAMED_GLASS(() -> new CTGlassBlock(AllCTs.FRAMED_GLASS, false)),
HORIZONTAL_FRAMED_GLASS(() -> new HorizontalCTGlassBlock(AllCTs.HORIZONTAL_FRAMED_GLASS, AllCTs.FRAMED_GLASS, false)),
HORIZONTAL_FRAMED_GLASS(
() -> new HorizontalCTGlassBlock(AllCTs.HORIZONTAL_FRAMED_GLASS, AllCTs.FRAMED_GLASS, false)),
VERTICAL_FRAMED_GLASS(() -> new VerticalCTGlassBlock(AllCTs.VERTICAL_FRAMED_GLASS, false)),
OAK_GLASS(() -> new CTWindowBlock(AllCTs.OAK_GLASS, false)),
@ -230,7 +251,8 @@ public enum AllBlocks implements NonNullSupplier<Block> {
ACACIA_GLASS(() -> new CTWindowBlock(AllCTs.ACACIA_GLASS, false)),
IRON_GLASS(() -> new CTWindowBlock(AllCTs.IRON_GLASS, false)),
TILED_GLASS_PANE(() -> new GlassPaneBlock(Properties.from(Blocks.GLASS)), ITaggable.create().withForgeTags("glass_panes")),
TILED_GLASS_PANE(() -> new GlassPaneBlock(Properties.from(Blocks.GLASS)),
ITaggable.create().withForgeTags("glass_panes")),
FRAMED_GLASS_PANE(() -> new CTGlassPaneBlock(FRAMED_GLASS.get())),
HORIZONTAL_FRAMED_GLASS_PANE(() -> new CTGlassPaneBlock(HORIZONTAL_FRAMED_GLASS.get())),
VERTICAL_FRAMED_GLASS_PANE(() -> new CTGlassPaneBlock(VERTICAL_FRAMED_GLASS.get())),
@ -243,63 +265,69 @@ public enum AllBlocks implements NonNullSupplier<Block> {
IRON_GLASS_PANE(() -> new CTGlassPaneBlock(IRON_GLASS.get())),
GRANITE_BRICKS(() -> new Block(Properties.from(Blocks.GRANITE))),
GRANITE_LAYERS(() -> new LayeredCTBlock(Properties.from(Blocks.GRANITE), AllCTs.GRANITE_LAYERS, AllCTs.POLISHED_GRANITE)),
GRANITE_LAYERS(
() -> new LayeredCTBlock(Properties.from(Blocks.GRANITE), AllCTs.GRANITE_LAYERS, AllCTs.POLISHED_GRANITE)),
DIORITE_BRICKS(() -> new Block(Properties.from(Blocks.DIORITE))),
DIORITE_LAYERS(() -> new LayeredCTBlock(Properties.from(Blocks.DIORITE), AllCTs.DIORITE_LAYERS, AllCTs.POLISHED_DIORITE)),
DIORITE_LAYERS(
() -> new LayeredCTBlock(Properties.from(Blocks.DIORITE), AllCTs.DIORITE_LAYERS, AllCTs.POLISHED_DIORITE)),
ANDESITE_BRICKS(() -> new Block(Properties.from(Blocks.ANDESITE))),
ANDESITE_LAYERS(() ->
new LayeredCTBlock(Properties.from(Blocks.ANDESITE), AllCTs.ANDESITE_LAYERS, AllCTs.POLISHED_ANDESITE)),
ANDESITE_LAYERS(() -> new LayeredCTBlock(Properties.from(Blocks.ANDESITE), AllCTs.ANDESITE_LAYERS,
AllCTs.POLISHED_ANDESITE)),
GABBRO(() -> new Block(Properties.from(Blocks.GRANITE)), ITaggable.create().withForgeTags("stone"), ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
GABBRO(() -> new Block(Properties.from(Blocks.GRANITE)), ITaggable.create().withForgeTags("stone"),
ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
POLISHED_GABBRO(() -> new Block(Properties.from(GABBRO.get())), ITaggable.create().withForgeTags("stone")),
GABBRO_BRICKS(() -> new Block(Properties.from(GABBRO.get())), ComesWith.STAIRS, ComesWith.WALL),
PAVED_GABBRO_BRICKS(() -> new Block(Properties.from(GABBRO.get())), ComesWith.SLAB),
INDENTED_GABBRO(() -> new Block(Properties.from(GABBRO.get())), ComesWith.SLAB),
SLIGHTLY_MOSSY_GABBRO_BRICKS(() -> new Block(Properties.from(GABBRO.get()))),
MOSSY_GABBRO_BRICKS(() -> new Block(Properties.from(GABBRO.get()))),
GABBRO_LAYERS(() -> new LayeredCTBlock(Properties.from(GABBRO.get()), AllCTs.GABBRO_LAYERS, AllCTs.POLISHED_GABBRO)),
GABBRO_LAYERS(
() -> new LayeredCTBlock(Properties.from(GABBRO.get()), AllCTs.GABBRO_LAYERS, AllCTs.POLISHED_GABBRO)),
DOLOMITE(() -> new Block(Properties.from(Blocks.QUARTZ_BLOCK)), ITaggable.create().withForgeTags("stone"), ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
DOLOMITE(() -> new Block(Properties.from(Blocks.QUARTZ_BLOCK)), ITaggable.create().withForgeTags("stone"),
ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
DOLOMITE_BRICKS(() -> new Block(Properties.from(DOLOMITE.get()))),
POLISHED_DOLOMITE(() -> new Block(Properties.from(DOLOMITE.get())), ITaggable.create().withForgeTags("stone")),
DOLOMITE_PILLAR(() -> new RotatedPillarBlock(Properties.from(DOLOMITE.get()))),
DOLOMITE_LAYERS(() ->
new LayeredCTBlock(Properties.from(DOLOMITE.get()), AllCTs.DOLOMITE_LAYERS, AllCTs.POLISHED_DOLOMITE)),
DOLOMITE_LAYERS(() -> new LayeredCTBlock(Properties.from(DOLOMITE.get()), AllCTs.DOLOMITE_LAYERS,
AllCTs.POLISHED_DOLOMITE)),
LIMESAND(() -> new FallingBlock(Properties.from(Blocks.SAND))),
LIMESTONE(() -> new Block(Properties.from(Blocks.SANDSTONE)), ITaggable.create().withForgeTags("stone"), ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
LIMESTONE_BRICKS(() -> new Block(Properties.from(LIMESTONE.get())), ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
POLISHED_LIMESTONE(() -> new Block(Properties.from(LIMESTONE.get())), ITaggable.create().withForgeTags("stone"), ComesWith.SLAB),
LIMESTONE_PILLAR(() -> new RotatedPillarBlock(Properties.from(LIMESTONE.get()))),
LIMESTONE_LAYERS(() ->
new LayeredCTBlock(Properties.from(LIMESTONE.get()), AllCTs.LIMESTONE_LAYERS, AllCTs.POLISHED_LIMESTONE)),
WEATHERED_LIMESTONE(() -> new Block(Properties.from(Blocks.ANDESITE)), ITaggable.create().withForgeTags("stone"), ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
WEATHERED_LIMESTONE_BRICKS(() -> new Block(Properties.from(WEATHERED_LIMESTONE.get())), ComesWith.STAIRS, ComesWith.SLAB,
LIMESTONE(() -> new Block(Properties.from(Blocks.SANDSTONE)), ITaggable.create().withForgeTags("stone"),
ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
LIMESTONE_BRICKS(() -> new Block(Properties.from(LIMESTONE.get())), ComesWith.STAIRS, ComesWith.SLAB,
ComesWith.WALL),
POLISHED_WEATHERED_LIMESTONE(() -> new Block(Properties.from(WEATHERED_LIMESTONE.get())), ITaggable.create().withForgeTags("stone"), ComesWith.SLAB),
POLISHED_LIMESTONE(() -> new Block(Properties.from(LIMESTONE.get())), ITaggable.create().withForgeTags("stone"),
ComesWith.SLAB),
LIMESTONE_PILLAR(() -> new RotatedPillarBlock(Properties.from(LIMESTONE.get()))),
LIMESTONE_LAYERS(() -> new LayeredCTBlock(Properties.from(LIMESTONE.get()), AllCTs.LIMESTONE_LAYERS,
AllCTs.POLISHED_LIMESTONE)),
WEATHERED_LIMESTONE(() -> new Block(Properties.from(Blocks.ANDESITE)), ITaggable.create().withForgeTags("stone"),
ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
WEATHERED_LIMESTONE_BRICKS(() -> new Block(Properties.from(WEATHERED_LIMESTONE.get())), ComesWith.STAIRS,
ComesWith.SLAB, ComesWith.WALL),
POLISHED_WEATHERED_LIMESTONE(() -> new Block(Properties.from(WEATHERED_LIMESTONE.get())),
ITaggable.create().withForgeTags("stone"), ComesWith.SLAB),
WEATHERED_LIMESTONE_PILLAR(() -> new RotatedPillarBlock(Properties.from(WEATHERED_LIMESTONE.get()))),
WEATHERED_LIMESTONE_LAYERS(() -> new LayeredCTBlock(Properties.from(WEATHERED_LIMESTONE.get()),
AllCTs.WEATHERED_LIMESTONE_LAYERS, AllCTs.POLISHED_WEATHERED_LIMESTONE)),
NATURAL_SCORIA(ScoriaBlock::new),
SCORIA(() -> new Block(Properties.from(Blocks.ANDESITE)), ITaggable.create().withForgeTags("stone"), ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
POLISHED_SCORIA(() -> new Block(Properties.from(SCORIA.get())), ITaggable.create().withForgeTags("stone"), ComesWith.SLAB),
SCORIA(() -> new Block(Properties.from(Blocks.ANDESITE)), ITaggable.create().withForgeTags("stone"),
ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
POLISHED_SCORIA(() -> new Block(Properties.from(SCORIA.get())), ITaggable.create().withForgeTags("stone"),
ComesWith.SLAB),
SCORIA_BRICKS(() -> new Block(Properties.from(SCORIA.get()))),
SCORIA_LAYERS(() -> new LayeredCTBlock(Properties.from(SCORIA.get()), AllCTs.SCORIA_LAYERS, AllCTs.POLISHED_SCORIA)),
SCORIA_LAYERS(
() -> new LayeredCTBlock(Properties.from(SCORIA.get()), AllCTs.SCORIA_LAYERS, AllCTs.POLISHED_SCORIA)),
SCORIA_PILLAR(() -> new RotatedPillarBlock(Properties.from(SCORIA.get()))),
DARK_SCORIA(() -> new Block(Properties.from(Blocks.ANDESITE))),
POLISHED_DARK_SCORIA(() -> new Block(Properties.from(DARK_SCORIA.get()))),
DARK_SCORIA_TILES(() -> new Block(Properties.from(DARK_SCORIA.get())), ComesWith.STAIRS, ComesWith.SLAB),
DARK_SCORIA_BRICKS(() -> new Block(Properties.from(DARK_SCORIA.get())), ComesWith.STAIRS, ComesWith.SLAB, ComesWith.WALL),
__MATERIALS__(),
COPPER_ORE(() -> new OxidizingBlock(Properties.from(Blocks.IRON_ORE), 1), ITaggable.create().withForgeTags("ores/copper")),
ZINC_ORE(() -> new Block(Properties.from(Blocks.GOLD_ORE).harvestLevel(2).harvestTool(ToolType.PICKAXE)), ITaggable.create().withForgeTags("ores/zinc")),
COPPER_BLOCK(() -> new OxidizingBlock(Properties.from(Blocks.IRON_BLOCK), 1 / 32f), ITaggable.create().withForgeTags("storage_blocks/copper")),
COPPER_SHINGLES(() -> new OxidizingBlock(Properties.from(Blocks.IRON_BLOCK), 1 / 32f)),
ZINC_BLOCK(() -> new Block(Properties.from(Blocks.IRON_BLOCK)), ITaggable.create().withForgeTags("storage_blocks/zinc")),
BRASS_BLOCK(() -> new Block(Properties.from(Blocks.IRON_BLOCK)), ITaggable.create().withForgeTags("storage_blocks/brass")),
DARK_SCORIA_BRICKS(() -> new Block(Properties.from(DARK_SCORIA.get())), ComesWith.STAIRS, ComesWith.SLAB,
ComesWith.WALL),
;
@ -309,43 +337,46 @@ public enum AllBlocks implements NonNullSupplier<Block> {
public final RegistryEntry<? extends Block> block;
public final ImmutableList<RegistryEntry<? extends Block>> alsoRegistered;
public final IModule module;
public final Sections section;
AllBlocks() {
Create.registrate().setModule(Lang.asId(name()).replaceAll("__", ""));
AllBlocks(Sections section) {
Create.registrate().startSection(section);
this.block = null;
this.alsoRegistered = ImmutableList.of();
this.module = Create.registrate().getModule();
this.section = Create.registrate().currentSection();
}
AllBlocks(NonNullSupplier<? extends Block> block, ComesWith... comesWith) {
this(block, ITaggable.create(), comesWith);
}
AllBlocks(NonNullSupplier<? extends Block> block, NonNullBiFunction<? super Block, Item.Properties, ? extends BlockItem> customItemCreator, ComesWith... comesWith) {
this(block, customItemCreator, ITaggable.create(), comesWith);
}
AllBlocks(NonNullSupplier<? extends Block> block, ITaggable<?> tags, ComesWith... comesWith) {
this(block, null, tags, comesWith);
AllBlocks(NonNullSupplier<? extends Block> block,
NonNullBiFunction<? super Block, Item.Properties, ? extends BlockItem> customItemCreator,
ComesWith... comesWith) {
this(block, customItemCreator, ITaggable.create(), comesWith);
}
AllBlocks(NonNullSupplier<? extends Block> block, NonNullBiFunction<? super Block, Item.Properties, ? extends BlockItem> customItemCreator, ITaggable<?> tags, ComesWith... comesWith){
this.module = Create.registrate().getModule();
AllBlocks(NonNullSupplier<? extends Block> block, ITaggable<?> tags, ComesWith... comesWith) {
this(block, null, tags, comesWith);
}
AllBlocks(NonNullSupplier<? extends Block> block,
NonNullBiFunction<? super Block, Item.Properties, ? extends BlockItem> customItemCreator, ITaggable<?> tags,
ComesWith... comesWith) {
this.section = Create.registrate().currentSection();
this.block = Create.registrate().block(Lang.asId(name()), $ -> block.get()) // TODO take properties as input
.blockstate(NonNullBiConsumer.noop()) // TODO
.loot(NonNullBiConsumer.noop()) // TODO
.setData(ProviderType.LANG, NonNullBiConsumer.noop()) // TODO
.transform(applyTags(tags))
.transform(b -> registerItemBlock(b, customItemCreator, comesWith))
.register();
.transform(applyTags(tags)).transform(b -> registerItemBlock(b, customItemCreator, comesWith))
.register();
ImmutableList.Builder<RegistryEntry<? extends Block>> alsoRegistered = ImmutableList.builder();
for (ComesWith with : comesWith) {
if (with != ComesWith.NO_BLOCKITEM) {
alsoRegistered.add(makeRelatedBlock(this.block, with));
}
if (with != ComesWith.NO_BLOCKITEM) {
alsoRegistered.add(makeRelatedBlock(this.block, with));
}
}
this.alsoRegistered = alsoRegistered.build();
}
@ -353,19 +384,21 @@ public enum AllBlocks implements NonNullSupplier<Block> {
public static void register() {
}
public <B extends Block, P> BlockBuilder<B, P> registerItemBlock(BlockBuilder<B, P> builder, NonNullBiFunction<? super B, Item.Properties, ? extends BlockItem> customItemCreator, ComesWith... comesWith) {
if (ArrayUtils.contains(comesWith, ComesWith.NO_BLOCKITEM)) {
return builder;
}
public <B extends Block, P> BlockBuilder<B, P> registerItemBlock(BlockBuilder<B, P> builder,
NonNullBiFunction<? super B, Item.Properties, ? extends BlockItem> customItemCreator,
ComesWith... comesWith) {
if (ArrayUtils.contains(comesWith, ComesWith.NO_BLOCKITEM)) {
return builder;
}
return registerAsItem(builder, customItemCreator);
}
private <B extends Block, P> BlockBuilder<B, P> registerAsItem(BlockBuilder<B, P> builder, NonNullBiFunction<? super B, Item.Properties, ? extends BlockItem> customItemCreator) {
ItemBuilder<? extends BlockItem, BlockBuilder<B, P>> itemBuilder = customItemCreator == null ? builder.item() : builder.item(customItemCreator);
return itemBuilder
.model(NonNullBiConsumer.noop()) // TODO
.properties($ -> AllItems.includeInItemGroup())
.build();
private <B extends Block, P> BlockBuilder<B, P> registerAsItem(BlockBuilder<B, P> builder,
NonNullBiFunction<? super B, Item.Properties, ? extends BlockItem> customItemCreator) {
ItemBuilder<? extends BlockItem, BlockBuilder<B, P>> itemBuilder =
customItemCreator == null ? builder.item() : builder.item(customItemCreator);
return itemBuilder.model(NonNullBiConsumer.noop()) // TODO
.properties($ -> AllItems.includeInItemGroup()).build();
}
@Override
@ -387,44 +420,41 @@ public enum AllBlocks implements NonNullSupplier<Block> {
switch (feature) {
case FENCE:
creator = FenceBlock::new;
tag = BlockTags.FENCES;
creator = FenceBlock::new;
tag = BlockTags.FENCES;
break;
case SLAB:
creator = SlabBlock::new;
tag = BlockTags.SLABS;
creator = SlabBlock::new;
tag = BlockTags.SLABS;
break;
case STAIRS:
creator = p -> new ProperStairsBlock(block.get());
tag = BlockTags.STAIRS;
creator = p -> new ProperStairsBlock(block.get());
tag = BlockTags.STAIRS;
break;
case WALL:
creator = WallBlock::new;
tag = BlockTags.WALLS;
creator = WallBlock::new;
tag = BlockTags.WALLS;
break;
case FENCE_GATE:
creator = FenceGateBlock::new;
tag = null;
creator = FenceGateBlock::new;
tag = null;
break;
default:
throw new IllegalArgumentException("Unknown ComesWith type?");
throw new IllegalArgumentException("Unknown ComesWith type?");
}
return Create.registrate().block(block.getId().getPath() + "_" + Lang.asId(feature.name()), creator)
.blockstate(NonNullBiConsumer.noop()) // TODO
.loot(NonNullBiConsumer.noop()) // TODO
.item()
.model(NonNullBiConsumer.noop()) // TODO
.build()
.transform(b -> tag != null ? b.tag(tag) : b)
.register();
.item().model(NonNullBiConsumer.noop()) // TODO
.build().transform(b -> tag != null ? b.tag(tag) : b).register();
}
private <B extends Block, P> NonNullUnaryOperator<BlockBuilder<B, P>> applyTags(ITaggable<?> tags) {
return b -> {
tags.getDataTags(ITaggable.BLOCK).forEach(b::tag);
return b;
};
return b -> {
tags.getDataTags(ITaggable.BLOCK).forEach(b::tag);
return b;
};
}
@OnlyIn(Dist.CLIENT)

View file

@ -1,29 +1,37 @@
package com.simibubi.create;
import static com.simibubi.create.modules.Sections.SCHEMATICS;
import com.simibubi.create.modules.schematics.block.CreativeCrateBlock;
import com.simibubi.create.modules.schematics.block.SchematicTableBlock;
import com.simibubi.create.modules.schematics.block.SchematicannonBlock;
import com.tterrag.registrate.util.RegistryEntry;
import net.minecraft.block.Blocks;
public class AllBlocksNew {
private static final CreateRegistrate REGISTRATE = Create.registrate();
static { REGISTRATE.setModule("SCHEMATICS"); }
// Tools for strucuture movement and replication
static { REGISTRATE.startSection(SCHEMATICS); }
public static final RegistryEntry<SchematicannonBlock> SCHEMATICANNON = REGISTRATE.block("schematicannon", SchematicannonBlock::new)
.initialProperties(() -> Blocks.DISPENSER)
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), prov.models().getExistingFile(prov.modLoc("block/" + ctx.getName() + "/base"))))
.item()
.model((ctx, prov) -> prov.blockItem(ctx.getEntry()::getBlock, "/base"))
.model((ctx, prov) -> prov.blockItem(ctx.getEntry()::getBlock, "/item"))
.build()
.register();
public static final RegistryEntry<CreativeCrateBlock> CREATIVE_CRATE = REGISTRATE.block("creative_crate", CreativeCrateBlock::new)
.initialProperties(() -> Blocks.CHEST)
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), prov.models().getExistingFile(ctx.getId())))
.simpleItem()
.register();
public static final RegistryEntry<SchematicTableBlock> SCHEMATIC_TABLE = REGISTRATE.block("schematic_table", SchematicTableBlock::new)
.initialProperties(() -> Blocks.LECTERN)
.blockstate((ctx, prov) -> prov.horizontalBlock(ctx.getEntry(), prov.models().getExistingFile(ctx.getId()), 0))
.simpleItem()
.register();

View file

@ -13,7 +13,7 @@ import com.simibubi.create.foundation.item.IHaveCustomItemModel;
import com.simibubi.create.foundation.item.IItemWithColorHandler;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.data.ITaggable;
import com.simibubi.create.modules.IModule;
import com.simibubi.create.modules.Sections;
import com.simibubi.create.modules.contraptions.GogglesItem;
import com.simibubi.create.modules.contraptions.WrenchItem;
import com.simibubi.create.modules.contraptions.components.contraptions.glue.SuperGlueItem;
@ -23,6 +23,7 @@ import com.simibubi.create.modules.contraptions.relays.gearbox.VerticalGearboxIt
import com.simibubi.create.modules.curiosities.ChromaticCompoundCubeItem;
import com.simibubi.create.modules.curiosities.RefinedRadianceItem;
import com.simibubi.create.modules.curiosities.ShadowSteelItem;
import com.simibubi.create.modules.curiosities.TreeFertilizerItem;
import com.simibubi.create.modules.curiosities.deforester.DeforesterItem;
import com.simibubi.create.modules.curiosities.symmetry.SymmetryWandItem;
import com.simibubi.create.modules.curiosities.tools.AllToolTiers;
@ -32,7 +33,6 @@ import com.simibubi.create.modules.curiosities.tools.SandPaperItem;
import com.simibubi.create.modules.curiosities.tools.ShadowSteelToolItem;
import com.simibubi.create.modules.curiosities.zapper.blockzapper.BlockzapperItem;
import com.simibubi.create.modules.curiosities.zapper.terrainzapper.TerrainzapperItem;
import com.simibubi.create.modules.gardens.TreeFertilizerItem;
import com.simibubi.create.modules.logistics.item.filter.FilterItem;
import com.simibubi.create.modules.schematics.item.SchematicAndQuillItem;
import com.simibubi.create.modules.schematics.item.SchematicItem;
@ -57,7 +57,8 @@ import net.minecraftforge.registries.IForgeRegistry;
@EventBusSubscriber(value = Dist.CLIENT, bus = Bus.MOD)
public enum AllItems {
__MATERIALS__(module()),
_1_(Sections.MATERIALS),
COPPER_NUGGET((TaggedItem) new TaggedItem().withForgeTags("nuggets/copper")),
ZINC_NUGGET((TaggedItem) new TaggedItem().withForgeTags("nuggets/zinc")),
BRASS_NUGGET((TaggedItem) new TaggedItem().withForgeTags("nuggets/brass")),
@ -89,7 +90,8 @@ public enum AllItems {
ELECTRON_TUBE,
INTEGRATED_CIRCUIT,
__CONTRAPTIONS__(module()),
_2_(Sections.KINETICS),
BELT_CONNECTOR(BeltConnectorItem::new),
VERTICAL_GEARBOX(VerticalGearboxItem::new),
PROPELLER,
@ -104,11 +106,13 @@ public enum AllItems {
MINECART_CONTRAPTION(p -> new MinecartContraptionItem(Type.RIDEABLE, p)),
FURNACE_MINECART_CONTRAPTION(p -> new MinecartContraptionItem(Type.FURNACE, p)),
__LOGISTICS__(module()),
_3_(Sections.LOGISTICS),
FILTER(FilterItem::new),
PROPERTY_FILTER(FilterItem::new),
__CURIOSITIES__(module()),
_4_(Sections.CURIOSITIES),
TREE_FERTILIZER(TreeFertilizerItem::new),
PLACEMENT_HANDGUN(BlockzapperItem::new),
TERRAIN_ZAPPER(TerrainzapperItem::new),
@ -130,26 +134,27 @@ public enum AllItems {
SHADOW_STEEL_MATTOCK(p -> new ShadowSteelToolItem(2.5F, -1.5F, p, SHOVEL, AXE, HOE)),
SHADOW_STEEL_SWORD(p -> new SwordItem(AllToolTiers.SHADOW_STEEL, 3, -2.0F, p)),
__SCHEMATICS__(module()),
_5_(Sections.SCHEMATICS),
EMPTY_BLUEPRINT(Item::new, stackSize(1)),
BLUEPRINT_AND_QUILL(SchematicAndQuillItem::new, stackSize(1)),
BLUEPRINT(SchematicItem::new),
;
private static class CategoryTracker {
static IModule currentModule;
private static class SectionTracker {
static Sections currentSection;
}
// Common
public IModule module;
public Sections section;
private Function<Properties, Properties> specialProperties;
private TaggedItem taggedItem;
private Item item;
AllItems(int moduleMarker) {
CategoryTracker.currentModule = () -> Lang.asId(name()).replaceAll("__", "");
AllItems(Sections section) {
SectionTracker.currentSection = section;
taggedItem = new TaggedItem(null);
}
@ -171,7 +176,7 @@ public enum AllItems {
AllItems(TaggedItem taggedItemIn, Function<Properties, Properties> specialProperties) {
this.taggedItem = taggedItemIn;
this.module = CategoryTracker.currentModule;
this.section = SectionTracker.currentSection;
this.specialProperties = specialProperties;
}
@ -187,10 +192,6 @@ public enum AllItems {
return includeInItemGroup().setISTER(() -> item::getRenderer);
}
private static int module() {
return 0;
}
public static Properties includeInItemGroup() {
return new Properties().group(Create.creativeTab);
}

View file

@ -8,7 +8,6 @@ import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.command.CreateCommand;
import com.simibubi.create.foundation.command.ServerLagger;
import com.simibubi.create.foundation.world.AllWorldFeatures;
import com.simibubi.create.modules.ModuleLoadedCondition;
import com.simibubi.create.modules.contraptions.TorquePropagator;
import com.simibubi.create.modules.logistics.RedstoneLinkNetworkHandler;
import com.simibubi.create.modules.schematics.ServerSchematicLoader;
@ -23,7 +22,6 @@ import net.minecraft.particles.ParticleType;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.SoundEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.crafting.CraftingHelper;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
@ -75,7 +73,6 @@ public class Create {
torquePropagator = new TorquePropagator();
lagger = new ServerLagger();
CraftingHelper.register(new ModuleLoadedCondition.Serializer());
AllPackets.registerPackets();
AllTriggers.register();

View file

@ -40,15 +40,12 @@ public final class CreateItemGroup extends ItemGroup {
Block def = entry.get();
if (def == null)
continue;
if (!Create.registrate().getModule(entry).isEnabled())
continue;
if (def instanceof IAddedByOther)
continue;
Item item = def.asItem();
if (item != Items.AIR) {
if (item != Items.AIR)
item.fillItemGroup(this, items);
}
}
}
@ -59,8 +56,6 @@ public final class CreateItemGroup extends ItemGroup {
for (AllItems item : AllItems.values()) {
if (item.get() == null)
continue;
if (!item.module.isEnabled())
continue;
IBakedModel model = itemRenderer.getItemModelWithOverrides(item.asStack(), Minecraft.getInstance().world, null);
if (model.isGui3d() != specialItems)
continue;

View file

@ -1,11 +1,10 @@
package com.simibubi.create;
import java.util.IdentityHashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import com.simibubi.create.modules.IModule;
import com.simibubi.create.modules.Sections;
import com.tterrag.registrate.AbstractRegistrate;
import com.tterrag.registrate.builders.BlockBuilder;
import com.tterrag.registrate.builders.Builder;
@ -41,18 +40,17 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
super(modid);
}
private Map<RegistryEntry<?>, IModule> moduleLookup = new IdentityHashMap<>();
private Map<RegistryEntry<?>, Sections> sectionLookup = new IdentityHashMap<>();
private IModule module;
private Sections section;
public CreateRegistrate setModule(String module) {
final String moduleName = module.toLowerCase(Locale.ROOT);
this.module = () -> moduleName;
public CreateRegistrate startSection(Sections section) {
this.section = section;
return self();
}
public IModule getModule() {
return module;
public Sections currentSection() {
return section;
}
@Deprecated
@ -64,19 +62,19 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
protected <R extends IForgeRegistryEntry<R>, T extends R> RegistryEntry<T> accept(String name,
Class<? super R> type, Builder<R, T, ?, ?> builder, NonNullSupplier<? extends T> creator) {
RegistryEntry<T> ret = super.accept(name, type, builder, creator);
moduleLookup.put(ret, getModule());
sectionLookup.put(ret, currentSection());
return ret;
}
public IModule getModule(RegistryEntry<?> entry) {
return moduleLookup.getOrDefault(entry, IModule.of("unknown"));
public Sections getSection(RegistryEntry<?> entry) {
return sectionLookup.getOrDefault(entry, Sections.UNASSIGNED);
}
public IModule getModule(IForgeRegistryEntry<?> entry) {
return moduleLookup.entrySet().stream()
public Sections getSection(IForgeRegistryEntry<?> entry) {
return sectionLookup.entrySet().stream()
.filter(e -> e.getKey().get() == entry)
.map(Entry::getValue)
.findFirst()
.orElse(IModule.of("unknown"));
.orElse(Sections.UNASSIGNED);
}
}

View file

@ -2,12 +2,6 @@ package com.simibubi.create.config;
public class CServer extends ConfigBase {
public ConfigGroup modules = group(0, "modules", Comments.modules);
public ConfigBool enableSchematics = b(true, "enableSchematics");
public ConfigBool enableCuriosities = b(true, "enableCuriosities");
public ConfigBool enablePalettes = b(true, "enablePalettes");
public ConfigBool enableLogistics = b(true, "enableLogistics");
public ConfigGroup infrastructure = group(0, "infrastructure", Comments.infrastructure);
public ConfigInt tickrateSyncTimer =
i(20, 5, "tickrateSyncTimer", "[in Ticks]", Comments.tickrateSyncTimer, Comments.tickrateSyncTimer2);
@ -24,11 +18,10 @@ public class CServer extends ConfigBase {
}
private static class Comments {
static String schematics = "The Schematics Module";
static String kinetics = "The Contraptions Module";
static String logistics = "The Logistics Module";
static String curiosities = "Everything that spins";
static String modules = "Configure which Modules should be accessible in recipes and creative menus.";
static String schematics = "Everything related to Schematic tools";
static String kinetics = "Parameters and abilities of Create's kinetic mechanisms";
static String logistics = "Tweaks for logistical components";
static String curiosities = "Gadgets and other Shenanigans added by Create";
static String control = "You can try inhibiting related game mechanics for troubleshooting repeated crashes.";
static String infrastructure = "The Backbone of Create";
static String tickrateSyncTimer =

View file

@ -56,6 +56,7 @@ public class ItemDescription {
Yellow(GOLD, YELLOW),
Red(DARK_RED, RED),
Purple(DARK_PURPLE, LIGHT_PURPLE),
Gray(DARK_GRAY, GRAY),
;

View file

@ -11,7 +11,7 @@ import com.mojang.bridge.game.Language;
import com.simibubi.create.AllItems;
import com.simibubi.create.foundation.item.ItemDescription.Palette;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.modules.IModule;
import com.simibubi.create.modules.Sections;
import com.simibubi.create.modules.contraptions.base.IRotate;
import com.simibubi.create.modules.contraptions.components.flywheel.engine.EngineBlock;
import com.simibubi.create.modules.curiosities.tools.AllToolTiers;
@ -130,11 +130,11 @@ public class TooltipHelper {
}
private static ItemDescription buildToolTip(String translationKey, ItemStack stack) {
IModule module = IModule.of(stack);
Sections module = Sections.of(stack);
if (I18n.format(translationKey).equals("WIP"))
return new WipScription(module.getToolTipColor());
return new WipScription(module.getTooltipPalette());
ItemDescription tooltip = new ItemDescription(module.getToolTipColor());
ItemDescription tooltip = new ItemDescription(module.getTooltipPalette());
String summaryKey = translationKey + ".summary";
// Summary

View file

@ -1,93 +0,0 @@
package com.simibubi.create.modules;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.Create;
import com.simibubi.create.config.AllConfigs;
import com.simibubi.create.config.CServer;
import com.simibubi.create.foundation.item.ItemDescription.Palette;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public interface IModule {
public static boolean isActive(String module) {
if (module.equals("materials"))
return true;
CServer conf = AllConfigs.SERVER;
switch (module) {
case "contraptions":
return true;
case "palettes":
return conf.enablePalettes.get();
case "curiosities":
return conf.enableCuriosities.get();
case "logistics":
return conf.enableLogistics.get();
case "schematics":
return conf.enableSchematics.get();
default:
return false;
}
}
public default Palette getToolTipColor() {
String module = getModuleName();
if (module.equals("materials"))
return Palette.Purple;
switch (module) {
case "contraptions":
return Palette.Red;
case "palettes":
return Palette.Green;
case "curiosities":
return Palette.Purple;
case "logistics":
return Palette.Yellow;
case "schematics":
return Palette.Blue;
default:
return Palette.Purple;
}
}
public static IModule of(String name) {
return () -> name;
}
public static IModule of(ItemStack stack) {
Item item = stack.getItem();
if (item instanceof BlockItem)
return ofBlock(((BlockItem) item).getBlock());
return ofItem(item);
}
static IModule ofItem(Item item) {
for (AllItems allItems : AllItems.values()) {
if (allItems.get() == item)
return allItems.module;
}
return null;
}
static IModule ofBlock(Block block) {
for (AllBlocks allBlocks : AllBlocks.values()) {
if (allBlocks.get() == block)
return allBlocks.module;
}
return Create.registrate().getModule(block);
}
public default boolean isEnabled() {
return isActive(getModuleName());
}
public String getModuleName();
}

View file

@ -1,54 +0,0 @@
package com.simibubi.create.modules;
import com.google.gson.JsonObject;
import com.simibubi.create.Create;
import net.minecraft.util.JSONUtils;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.crafting.conditions.ICondition;
import net.minecraftforge.common.crafting.conditions.IConditionSerializer;
public class ModuleLoadedCondition implements ICondition {
private static final ResourceLocation NAME = new ResourceLocation(Create.ID, "module");
protected String module;
public ModuleLoadedCondition(String module) {
this.module = module;
}
@Override
public ResourceLocation getID() {
return NAME;
}
@Override
public boolean test() {
return IModule.isActive(module);
}
@Override
public String toString() {
return "module_loaded(\"" + module + "\")";
}
public static class Serializer implements IConditionSerializer<ModuleLoadedCondition> {
public static final Serializer INSTANCE = new Serializer();
@Override
public void write(JsonObject json, ModuleLoadedCondition value) {
json.addProperty("module", value.module);
}
@Override
public ModuleLoadedCondition read(JsonObject json) {
return new ModuleLoadedCondition(JSONUtils.getString(json, "module"));
}
@Override
public ResourceLocation getID() {
return NAME;
}
}
}

View file

@ -0,0 +1,69 @@
package com.simibubi.create.modules;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.item.ItemDescription.Palette;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public enum Sections {
/** Create's kinetic mechanisms */
KINETICS(Palette.Red),
/** Item transport and other Utility */
LOGISTICS(Palette.Yellow),
/** Helpful gadgets and other shenanigans */
CURIOSITIES(Palette.Purple),
/** Tools for strucuture movement and replication */
SCHEMATICS(Palette.Blue),
/** Decorative blocks */
PALETTES(Palette.Green),
/** Base materials, ingredients and tools */
MATERIALS(Palette.Green),
/** Fallback section */
UNASSIGNED(Palette.Gray)
;
private Palette tooltipPalette;
private Sections(Palette tooltipPalette) {
this.tooltipPalette = tooltipPalette;
}
public Palette getTooltipPalette() {
return tooltipPalette;
}
public static Sections of(ItemStack stack) {
Item item = stack.getItem();
if (item instanceof BlockItem)
return ofBlock(((BlockItem) item).getBlock());
return ofItem(item);
}
static Sections ofItem(Item item) {
for (AllItems allItems : AllItems.values())
if (allItems.get() == item)
return allItems.section;
return UNASSIGNED;
}
static Sections ofBlock(Block block) {
for (AllBlocks allBlocks : AllBlocks.values())
if (allBlocks.get() == block)
return allBlocks.section;
return Create.registrate().getSection(block);
}
}

View file

@ -1,4 +1,4 @@
package com.simibubi.create.modules.gardens;
package com.simibubi.create.modules.curiosities;
import java.util.Arrays;
import java.util.Collections;

View file

@ -1,4 +1,4 @@
package com.simibubi.create.modules.gardens;
package com.simibubi.create.modules.curiosities;
import com.simibubi.create.foundation.utility.PlacementSimulationServerWorld;

View file

@ -4,7 +4,6 @@ import com.simibubi.create.foundation.utility.AllShapes;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.material.Material;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
@ -15,8 +14,8 @@ import net.minecraft.world.IBlockReader;
public class CreativeCrateBlock extends Block {
public CreativeCrateBlock() {
super(Properties.create(Material.WOOD));
public CreativeCrateBlock(Properties properties) {
super(properties);
}
@Override

View file

@ -6,7 +6,6 @@ import com.simibubi.create.foundation.utility.AllShapes;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.HorizontalBlock;
import net.minecraft.block.material.PushReaction;
import net.minecraft.entity.player.PlayerEntity;
@ -26,8 +25,8 @@ import net.minecraftforge.fml.network.NetworkHooks;
public class SchematicTableBlock extends HorizontalBlock implements ITE<SchematicTableTileEntity> {
public SchematicTableBlock() {
super(Properties.from(Blocks.OAK_PLANKS));
public SchematicTableBlock(Properties properties) {
super(properties);
}
@Override

View file

@ -6,7 +6,6 @@ import com.simibubi.create.foundation.utility.AllShapes;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.material.PushReaction;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
@ -24,8 +23,8 @@ import net.minecraftforge.fml.network.NetworkHooks;
public class SchematicannonBlock extends Block implements ITE<SchematicannonTileEntity> {
public SchematicannonBlock() {
super(Properties.from(Blocks.DISPENSER));
public SchematicannonBlock(Properties properties) {
super(properties);
}
@Override

View file

@ -12,11 +12,5 @@
"result": {
"item": "create:basin",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:belt_funnel",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "logistics"
}
]
}
}

View file

@ -18,11 +18,5 @@
"result": {
"item": "create:belt_tunnel",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "logistics"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:brass_hand",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:contact",
"count": 2
},
"conditions": [
{
"type": "create:module",
"module": "logistics"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:adjustable_pulley",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -15,11 +15,5 @@
"result": {
"item": "create:analog_lever",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -12,11 +12,5 @@
"result": {
"item": "create:belt_connector",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:cart_assembler",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:clockwork_bearing",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:clutch",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:cogwheel",
"count": 8
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:cuckoo_clock",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -23,11 +23,5 @@
"result": {
"item": "create:deployer",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:drill",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:encased_belt",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -25,11 +25,5 @@
"result": {
"item": "create:encased_fan",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -14,11 +14,5 @@
"result": {
"item": "create:encased_shaft",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:gearbox",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:gearshift",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:harvester",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:large_cogwheel",
"count": 2
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:mechanical_bearing",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -26,11 +26,5 @@
"result": {
"item": "create:mechanical_crafter",
"count": 3
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:mechanical_mixer",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:mechanical_piston",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -23,11 +23,5 @@
"result": {
"item": "create:mechanical_press",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:millstone",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:mysterious_cuckoo_clock",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:piston_pole",
"count": 8
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:plough",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -14,11 +14,5 @@
"result": {
"item": "create:portable_storage_interface",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:rope_pulley",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:rotation_chassis",
"count": 3
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -18,11 +18,5 @@
"result": {
"item": "create:rotation_speed_controller",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:saw",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -23,11 +23,5 @@
"result": {
"item": "create:sequenced_gearshift",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -12,11 +12,5 @@
"result": {
"item": "create:shaft",
"count": 8
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -18,11 +18,5 @@
"result": {
"item": "create:speed_gauge",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -15,11 +15,5 @@
"result": {
"item": "create:sticky_mechanical_piston",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:translation_chassis",
"count": 3
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -15,11 +15,5 @@
"result": {
"item": "create:turntable",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:water_wheel",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:deforester",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -14,11 +14,5 @@
"result": {
"item": "create:filter",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -18,11 +18,5 @@
"result": {
"item": "create:goggles",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:placement_handgun",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -14,11 +14,5 @@
"result": {
"item": "create:property_filter",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:shadow_steel_mattock",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:shadow_steel_pickaxe",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:shadow_steel_sword",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:symmetry_wand",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:wrench",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "curiosities"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:electron_tube",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -21,11 +21,5 @@
"result": {
"item": "create:entity_detector",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "logistics"
}
]
}
}

View file

@ -22,11 +22,5 @@
"result": {
"item": "create:extractor",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "logistics"
}
]
}
}

View file

@ -13,11 +13,5 @@
"result": {
"item": "create:flexcrate",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "logistics"
}
]
}
}

View file

@ -21,11 +21,5 @@
"result": {
"item": "create:flexpeater",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "logistics"
}
]
}
}

View file

@ -14,11 +14,5 @@
"result": {
"item": "create:flexpulsepeater",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "logistics"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:hand_crank",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:andesite_casing",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:brass_casing",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -12,11 +12,5 @@
},
"result": {
"item": "create:brass_ingot"
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -19,11 +19,5 @@
"result": {
"item": "create:copper_casing",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -12,11 +12,5 @@
},
"result": {
"item": "create:copper_ingot"
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -12,11 +12,5 @@
},
"result": {
"item": "create:zinc_ingot"
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:nozzle",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "contraptions"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:acacia_glass",
"count": 8
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -12,11 +12,5 @@
"result": {
"item": "create:acacia_glass_pane",
"count": 16
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:birch_glass",
"count": 8
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -12,11 +12,5 @@
"result": {
"item": "create:birch_glass_pane",
"count": 16
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:dark_oak_glass",
"count": 8
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -12,11 +12,5 @@
"result": {
"item": "create:dark_oak_glass_pane",
"count": 16
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -16,11 +16,5 @@
"result": {
"item": "create:dark_scoria",
"count": 8
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -12,11 +12,5 @@
"result": {
"item": "create:dark_scoria_bricks",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -11,11 +11,5 @@
"result": {
"item": "create:dark_scoria_bricks_slab",
"count": 6
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -13,11 +13,5 @@
"result": {
"item": "create:dark_scoria_bricks_stairs",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -12,11 +12,5 @@
"result": {
"item": "create:dark_scoria_bricks_wall",
"count": 6
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -11,11 +11,5 @@
"result": {
"item": "create:dark_scoria_tiles",
"count": 1
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -11,11 +11,5 @@
"result": {
"item": "create:dark_scoria_tiles_slab",
"count": 6
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -13,11 +13,5 @@
"result": {
"item": "create:dark_scoria_tiles_stairs",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

View file

@ -12,11 +12,5 @@
"result": {
"item": "create:dolomite_bricks",
"count": 4
},
"conditions": [
{
"type": "create:module",
"module": "palettes"
}
]
}
}

Some files were not shown because too many files have changed in this diff Show more