Dark spot

- Assigned more suitable map colours to Create's blocks
This commit is contained in:
simibubi 2022-05-23 19:12:18 +02:00
parent d73fa81fe4
commit cafe7a8b9b
7 changed files with 178 additions and 22 deletions

View file

@ -4152,6 +4152,7 @@ c4a88166bb906a88b986c37a002057a86d2ece00 data/create/recipes/crafting/schematics
c60542c99008f7abecdd03c47137b51e20a4747b data/create/recipes/crimsite_pillar_from_stone_types_crimsite_stonecutting.json c60542c99008f7abecdd03c47137b51e20a4747b data/create/recipes/crimsite_pillar_from_stone_types_crimsite_stonecutting.json
4629d9a1a8a98a6b5b8b82c4507ca9e321c3a210 data/create/recipes/crimson_window.json 4629d9a1a8a98a6b5b8b82c4507ca9e321c3a210 data/create/recipes/crimson_window.json
72cffde4281a1e34d77aa91c847e811833b68f21 data/create/recipes/crimson_window_pane.json 72cffde4281a1e34d77aa91c847e811833b68f21 data/create/recipes/crimson_window_pane.json
03f2a05276bdb94ad68ecc65870bb881f405cebc data/create/recipes/crushing/amethyst_block.json
63a5543dbd89b250664fee43c036f2a29fef3fe1 data/create/recipes/crushing/amethyst_cluster.json 63a5543dbd89b250664fee43c036f2a29fef3fe1 data/create/recipes/crushing/amethyst_cluster.json
ace6ea5ed1828f4cbb1be0ae8ef10049bd4a07fc data/create/recipes/crushing/asurine.json ace6ea5ed1828f4cbb1be0ae8ef10049bd4a07fc data/create/recipes/crushing/asurine.json
11fb7eaaf31336e0b2d7b0bba217a40bd37bf057 data/create/recipes/crushing/asurine_recycling.json 11fb7eaaf31336e0b2d7b0bba217a40bd37bf057 data/create/recipes/crushing/asurine_recycling.json

View file

@ -0,0 +1,19 @@
{
"type": "create:crushing",
"ingredients": [
{
"item": "minecraft:amethyst_block"
}
],
"results": [
{
"item": "minecraft:amethyst_shard",
"count": 3
},
{
"item": "minecraft:amethyst_shard",
"chance": 0.5
}
],
"processingTime": 150
}

View file

@ -267,6 +267,7 @@ public class AllBlocks {
public static final BlockEntry<SchematicannonBlock> SCHEMATICANNON = public static final BlockEntry<SchematicannonBlock> SCHEMATICANNON =
REGISTRATE.block("schematicannon", SchematicannonBlock::new) REGISTRATE.block("schematicannon", SchematicannonBlock::new)
.initialProperties(() -> Blocks.DISPENSER) .initialProperties(() -> Blocks.DISPENSER)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.loot((lt, block) -> { .loot((lt, block) -> {
@ -287,6 +288,7 @@ public class AllBlocks {
public static final BlockEntry<SchematicTableBlock> SCHEMATIC_TABLE = public static final BlockEntry<SchematicTableBlock> SCHEMATIC_TABLE =
REGISTRATE.block("schematic_table", SchematicTableBlock::new) REGISTRATE.block("schematic_table", SchematicTableBlock::new)
.initialProperties(() -> Blocks.LECTERN) .initialProperties(() -> Blocks.LECTERN)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((ctx, prov) -> prov.horizontalBlock(ctx.getEntry(), prov.models() .blockstate((ctx, prov) -> prov.horizontalBlock(ctx.getEntry(), prov.models()
.getExistingFile(ctx.getId()), 0)) .getExistingFile(ctx.getId()), 0))
@ -301,6 +303,7 @@ public class AllBlocks {
public static final BlockEntry<ShaftBlock> SHAFT = REGISTRATE.block("shaft", ShaftBlock::new) public static final BlockEntry<ShaftBlock> SHAFT = REGISTRATE.block("shaft", ShaftBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.METAL))
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(BlockStateGen.axisBlockProvider(false)) .blockstate(BlockStateGen.axisBlockProvider(false))
@ -311,6 +314,7 @@ public class AllBlocks {
public static final BlockEntry<CogWheelBlock> COGWHEEL = REGISTRATE.block("cogwheel", CogWheelBlock::small) public static final BlockEntry<CogWheelBlock> COGWHEEL = REGISTRATE.block("cogwheel", CogWheelBlock::small)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.sound(SoundType.WOOD)) .properties(p -> p.sound(SoundType.WOOD))
.properties(p -> p.color(MaterialColor.DIRT))
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.axisBlockProvider(false)) .blockstate(BlockStateGen.axisBlockProvider(false))
@ -323,6 +327,7 @@ public class AllBlocks {
REGISTRATE.block("large_cogwheel", CogWheelBlock::large) REGISTRATE.block("large_cogwheel", CogWheelBlock::large)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.sound(SoundType.WOOD)) .properties(p -> p.sound(SoundType.WOOD))
.properties(p -> p.color(MaterialColor.DIRT))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.blockstate(BlockStateGen.axisBlockProvider(false)) .blockstate(BlockStateGen.axisBlockProvider(false))
@ -333,18 +338,21 @@ public class AllBlocks {
public static final BlockEntry<EncasedShaftBlock> ANDESITE_ENCASED_SHAFT = public static final BlockEntry<EncasedShaftBlock> ANDESITE_ENCASED_SHAFT =
REGISTRATE.block("andesite_encased_shaft", EncasedShaftBlock::andesite) REGISTRATE.block("andesite_encased_shaft", EncasedShaftBlock::andesite)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BuilderTransformers.encasedShaft("andesite", () -> AllSpriteShifts.ANDESITE_CASING)) .transform(BuilderTransformers.encasedShaft("andesite", () -> AllSpriteShifts.ANDESITE_CASING))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.register(); .register();
public static final BlockEntry<EncasedShaftBlock> BRASS_ENCASED_SHAFT = public static final BlockEntry<EncasedShaftBlock> BRASS_ENCASED_SHAFT =
REGISTRATE.block("brass_encased_shaft", EncasedShaftBlock::brass) REGISTRATE.block("brass_encased_shaft", EncasedShaftBlock::brass)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(BuilderTransformers.encasedShaft("brass", () -> AllSpriteShifts.BRASS_CASING)) .transform(BuilderTransformers.encasedShaft("brass", () -> AllSpriteShifts.BRASS_CASING))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.register(); .register();
public static final BlockEntry<EncasedCogwheelBlock> ANDESITE_ENCASED_COGWHEEL = REGISTRATE public static final BlockEntry<EncasedCogwheelBlock> ANDESITE_ENCASED_COGWHEEL = REGISTRATE
.block("andesite_encased_cogwheel", p -> EncasedCogwheelBlock.andesite(false, p)) .block("andesite_encased_cogwheel", p -> EncasedCogwheelBlock.andesite(false, p))
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BuilderTransformers.encasedCogwheel("andesite", () -> AllSpriteShifts.ANDESITE_CASING)) .transform(BuilderTransformers.encasedCogwheel("andesite", () -> AllSpriteShifts.ANDESITE_CASING))
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(AllSpriteShifts.ANDESITE_CASING, .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(AllSpriteShifts.ANDESITE_CASING,
Couple.create(AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_SIDE, Couple.create(AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_SIDE,
@ -354,6 +362,7 @@ public class AllBlocks {
public static final BlockEntry<EncasedCogwheelBlock> BRASS_ENCASED_COGWHEEL = public static final BlockEntry<EncasedCogwheelBlock> BRASS_ENCASED_COGWHEEL =
REGISTRATE.block("brass_encased_cogwheel", p -> EncasedCogwheelBlock.brass(false, p)) REGISTRATE.block("brass_encased_cogwheel", p -> EncasedCogwheelBlock.brass(false, p))
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(BuilderTransformers.encasedCogwheel("brass", () -> AllSpriteShifts.BRASS_CASING)) .transform(BuilderTransformers.encasedCogwheel("brass", () -> AllSpriteShifts.BRASS_CASING))
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(AllSpriteShifts.BRASS_CASING, .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCogCTBehaviour(AllSpriteShifts.BRASS_CASING,
Couple.create(AllSpriteShifts.BRASS_ENCASED_COGWHEEL_SIDE, Couple.create(AllSpriteShifts.BRASS_ENCASED_COGWHEEL_SIDE,
@ -363,12 +372,14 @@ public class AllBlocks {
public static final BlockEntry<EncasedCogwheelBlock> ANDESITE_ENCASED_LARGE_COGWHEEL = public static final BlockEntry<EncasedCogwheelBlock> ANDESITE_ENCASED_LARGE_COGWHEEL =
REGISTRATE.block("andesite_encased_large_cogwheel", p -> EncasedCogwheelBlock.andesite(true, p)) REGISTRATE.block("andesite_encased_large_cogwheel", p -> EncasedCogwheelBlock.andesite(true, p))
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BuilderTransformers.encasedLargeCogwheel("andesite", () -> AllSpriteShifts.ANDESITE_CASING)) .transform(BuilderTransformers.encasedLargeCogwheel("andesite", () -> AllSpriteShifts.ANDESITE_CASING))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.register(); .register();
public static final BlockEntry<EncasedCogwheelBlock> BRASS_ENCASED_LARGE_COGWHEEL = public static final BlockEntry<EncasedCogwheelBlock> BRASS_ENCASED_LARGE_COGWHEEL =
REGISTRATE.block("brass_encased_large_cogwheel", p -> EncasedCogwheelBlock.brass(true, p)) REGISTRATE.block("brass_encased_large_cogwheel", p -> EncasedCogwheelBlock.brass(true, p))
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(BuilderTransformers.encasedLargeCogwheel("brass", () -> AllSpriteShifts.BRASS_CASING)) .transform(BuilderTransformers.encasedLargeCogwheel("brass", () -> AllSpriteShifts.BRASS_CASING))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.register(); .register();
@ -376,6 +387,7 @@ public class AllBlocks {
public static final BlockEntry<GearboxBlock> GEARBOX = REGISTRATE.block("gearbox", GearboxBlock::new) public static final BlockEntry<GearboxBlock> GEARBOX = REGISTRATE.block("gearbox", GearboxBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING))) .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING)))
@ -389,6 +401,7 @@ public class AllBlocks {
public static final BlockEntry<ClutchBlock> CLUTCH = REGISTRATE.block("clutch", ClutchBlock::new) public static final BlockEntry<ClutchBlock> CLUTCH = REGISTRATE.block("clutch", ClutchBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p))) .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p)))
@ -399,6 +412,7 @@ public class AllBlocks {
public static final BlockEntry<GearshiftBlock> GEARSHIFT = REGISTRATE.block("gearshift", GearshiftBlock::new) public static final BlockEntry<GearshiftBlock> GEARSHIFT = REGISTRATE.block("gearshift", GearshiftBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p))) .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p)))
@ -410,6 +424,7 @@ public class AllBlocks {
REGISTRATE.block("encased_chain_drive", EncasedBeltBlock::new) REGISTRATE.block("encased_chain_drive", EncasedBeltBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> new EncasedBeltGenerator((state, suffix) -> p.models() .blockstate((c, p) -> new EncasedBeltGenerator((state, suffix) -> p.models()
@ -422,6 +437,7 @@ public class AllBlocks {
REGISTRATE.block("adjustable_chain_gearshift", AdjustablePulleyBlock::new) REGISTRATE.block("adjustable_chain_gearshift", AdjustablePulleyBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.color(MaterialColor.NETHER))
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> new EncasedBeltGenerator((state, suffix) -> { .blockstate((c, p) -> new EncasedBeltGenerator((state, suffix) -> {
@ -441,6 +457,7 @@ public class AllBlocks {
.initialProperties(SharedProperties.BELT_MATERIAL, MaterialColor.COLOR_GRAY) .initialProperties(SharedProperties.BELT_MATERIAL, MaterialColor.COLOR_GRAY)
.properties(p -> p.sound(SoundType.WOOL)) .properties(p -> p.sound(SoundType.WOOL))
.properties(p -> p.strength(0.8F)) .properties(p -> p.strength(0.8F))
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(new BeltGenerator()::generate) .blockstate(new BeltGenerator()::generate)
.transform(BlockStressDefaults.setImpact(0)) .transform(BlockStressDefaults.setImpact(0))
@ -451,6 +468,7 @@ public class AllBlocks {
public static final BlockEntry<CreativeMotorBlock> CREATIVE_MOTOR = public static final BlockEntry<CreativeMotorBlock> CREATIVE_MOTOR =
REGISTRATE.block("creative_motor", CreativeMotorBlock::new) REGISTRATE.block("creative_motor", CreativeMotorBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_PURPLE))
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(new CreativeMotorGenerator()::generate) .blockstate(new CreativeMotorGenerator()::generate)
@ -462,6 +480,7 @@ public class AllBlocks {
public static final BlockEntry<WaterWheelBlock> WATER_WHEEL = REGISTRATE.block("water_wheel", WaterWheelBlock::new) public static final BlockEntry<WaterWheelBlock> WATER_WHEEL = REGISTRATE.block("water_wheel", WaterWheelBlock::new)
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.DIRT))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false)) .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false))
@ -472,6 +491,7 @@ public class AllBlocks {
public static final BlockEntry<EncasedFanBlock> ENCASED_FAN = REGISTRATE.block("encased_fan", EncasedFanBlock::new) public static final BlockEntry<EncasedFanBlock> ENCASED_FAN = REGISTRATE.block("encased_fan", EncasedFanBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.PODZOL))
.blockstate(BlockStateGen.directionalBlockProvider(true)) .blockstate(BlockStateGen.directionalBlockProvider(true))
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
@ -482,6 +502,7 @@ public class AllBlocks {
public static final BlockEntry<NozzleBlock> NOZZLE = REGISTRATE.block("nozzle", NozzleBlock::new) public static final BlockEntry<NozzleBlock> NOZZLE = REGISTRATE.block("nozzle", NozzleBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY))
.tag(AllBlockTags.BRITTLE.tag) .tag(AllBlockTags.BRITTLE.tag)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.directionalBlockProvider(true)) .blockstate(BlockStateGen.directionalBlockProvider(true))
@ -492,6 +513,7 @@ public class AllBlocks {
public static final BlockEntry<TurntableBlock> TURNTABLE = REGISTRATE.block("turntable", TurntableBlock::new) public static final BlockEntry<TurntableBlock> TURNTABLE = REGISTRATE.block("turntable", TurntableBlock::new)
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.standardModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.standardModel(c, p)))
.transform(BlockStressDefaults.setImpact(4.0)) .transform(BlockStressDefaults.setImpact(4.0))
@ -500,6 +522,7 @@ public class AllBlocks {
public static final BlockEntry<HandCrankBlock> HAND_CRANK = REGISTRATE.block("hand_crank", HandCrankBlock::new) public static final BlockEntry<HandCrankBlock> HAND_CRANK = REGISTRATE.block("hand_crank", HandCrankBlock::new)
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.directionalBlockProvider(true)) .blockstate(BlockStateGen.directionalBlockProvider(true))
.transform(BlockStressDefaults.setCapacity(8.0)) .transform(BlockStressDefaults.setCapacity(8.0))
@ -511,6 +534,7 @@ public class AllBlocks {
public static final BlockEntry<CuckooClockBlock> CUCKOO_CLOCK = public static final BlockEntry<CuckooClockBlock> CUCKOO_CLOCK =
REGISTRATE.block("cuckoo_clock", CuckooClockBlock::regular) REGISTRATE.block("cuckoo_clock", CuckooClockBlock::regular)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BuilderTransformers.cuckooClock()) .transform(BuilderTransformers.cuckooClock())
.onRegister(assignDataBehaviour(new TimeOfDayDisplaySource(), "time_of_day")) .onRegister(assignDataBehaviour(new TimeOfDayDisplaySource(), "time_of_day"))
@ -519,6 +543,7 @@ public class AllBlocks {
public static final BlockEntry<CuckooClockBlock> MYSTERIOUS_CUCKOO_CLOCK = public static final BlockEntry<CuckooClockBlock> MYSTERIOUS_CUCKOO_CLOCK =
REGISTRATE.block("mysterious_cuckoo_clock", CuckooClockBlock::mysterious) REGISTRATE.block("mysterious_cuckoo_clock", CuckooClockBlock::mysterious)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BuilderTransformers.cuckooClock()) .transform(BuilderTransformers.cuckooClock())
.lang("Cuckoo Clock") .lang("Cuckoo Clock")
@ -527,6 +552,7 @@ public class AllBlocks {
public static final BlockEntry<MillstoneBlock> MILLSTONE = REGISTRATE.block("millstone", MillstoneBlock::new) public static final BlockEntry<MillstoneBlock> MILLSTONE = REGISTRATE.block("millstone", MillstoneBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.METAL))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
.transform(BlockStressDefaults.setImpact(4.0)) .transform(BlockStressDefaults.setImpact(4.0))
@ -536,6 +562,7 @@ public class AllBlocks {
public static final BlockEntry<CrushingWheelBlock> CRUSHING_WHEEL = public static final BlockEntry<CrushingWheelBlock> CRUSHING_WHEEL =
REGISTRATE.block("crushing_wheel", CrushingWheelBlock::new) REGISTRATE.block("crushing_wheel", CrushingWheelBlock::new)
.properties(p -> p.color(MaterialColor.METAL))
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
@ -548,6 +575,7 @@ public class AllBlocks {
public static final BlockEntry<CrushingWheelControllerBlock> CRUSHING_WHEEL_CONTROLLER = public static final BlockEntry<CrushingWheelControllerBlock> CRUSHING_WHEEL_CONTROLLER =
REGISTRATE.block("crushing_wheel_controller", CrushingWheelControllerBlock::new) REGISTRATE.block("crushing_wheel_controller", CrushingWheelControllerBlock::new)
.initialProperties(SharedProperties.CRUSHING_WHEEL_CONTROLLER_MATERIAL) .initialProperties(SharedProperties.CRUSHING_WHEEL_CONTROLLER_MATERIAL)
.properties(p -> p.color(MaterialColor.STONE))
.properties(p -> p.noOcclusion() .properties(p -> p.noOcclusion()
.noDrops() .noDrops()
.air()) .air())
@ -561,6 +589,7 @@ public class AllBlocks {
public static final BlockEntry<MechanicalPressBlock> MECHANICAL_PRESS = public static final BlockEntry<MechanicalPressBlock> MECHANICAL_PRESS =
REGISTRATE.block("mechanical_press", MechanicalPressBlock::new) REGISTRATE.block("mechanical_press", MechanicalPressBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.PODZOL))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.horizontalBlockProvider(true)) .blockstate(BlockStateGen.horizontalBlockProvider(true))
@ -572,6 +601,7 @@ public class AllBlocks {
public static final BlockEntry<MechanicalMixerBlock> MECHANICAL_MIXER = public static final BlockEntry<MechanicalMixerBlock> MECHANICAL_MIXER =
REGISTRATE.block("mechanical_mixer", MechanicalMixerBlock::new) REGISTRATE.block("mechanical_mixer", MechanicalMixerBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.STONE))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
@ -583,6 +613,7 @@ public class AllBlocks {
public static final BlockEntry<BasinBlock> BASIN = REGISTRATE.block("basin", BasinBlock::new) public static final BlockEntry<BasinBlock> BASIN = REGISTRATE.block("basin", BasinBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(new BasinGenerator()::generate) .blockstate(new BasinGenerator()::generate)
@ -594,6 +625,7 @@ public class AllBlocks {
public static final BlockEntry<BlazeBurnerBlock> BLAZE_BURNER = public static final BlockEntry<BlazeBurnerBlock> BLAZE_BURNER =
REGISTRATE.block("blaze_burner", BlazeBurnerBlock::new) REGISTRATE.block("blaze_burner", BlazeBurnerBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(p -> p.lightLevel(BlazeBurnerBlock::getLight)) .properties(p -> p.lightLevel(BlazeBurnerBlock::getLight))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
@ -609,6 +641,7 @@ public class AllBlocks {
public static final BlockEntry<LitBlazeBurnerBlock> LIT_BLAZE_BURNER = public static final BlockEntry<LitBlazeBurnerBlock> LIT_BLAZE_BURNER =
REGISTRATE.block("lit_blaze_burner", LitBlazeBurnerBlock::new) REGISTRATE.block("lit_blaze_burner", LitBlazeBurnerBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY))
.properties(p -> p.lightLevel(LitBlazeBurnerBlock::getLight)) .properties(p -> p.lightLevel(LitBlazeBurnerBlock::getLight))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
@ -626,6 +659,7 @@ public class AllBlocks {
public static final BlockEntry<DepotBlock> DEPOT = REGISTRATE.block("depot", DepotBlock::new) public static final BlockEntry<DepotBlock> DEPOT = REGISTRATE.block("depot", DepotBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
.onRegister(assignDataBehaviour(new ItemNameDisplaySource(), "combine_item_names")) .onRegister(assignDataBehaviour(new ItemNameDisplaySource(), "combine_item_names"))
@ -636,6 +670,7 @@ public class AllBlocks {
public static final BlockEntry<EjectorBlock> WEIGHTED_EJECTOR = public static final BlockEntry<EjectorBlock> WEIGHTED_EJECTOR =
REGISTRATE.block("weighted_ejector", EjectorBlock::new) REGISTRATE.block("weighted_ejector", EjectorBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p), 180)) .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p), 180))
@ -647,6 +682,7 @@ public class AllBlocks {
public static final BlockEntry<ChuteBlock> CHUTE = REGISTRATE.block("chute", ChuteBlock::new) public static final BlockEntry<ChuteBlock> CHUTE = REGISTRATE.block("chute", ChuteBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
@ -657,6 +693,7 @@ public class AllBlocks {
public static final BlockEntry<SmartChuteBlock> SMART_CHUTE = REGISTRATE.block("smart_chute", SmartChuteBlock::new) public static final BlockEntry<SmartChuteBlock> SMART_CHUTE = REGISTRATE.block("smart_chute", SmartChuteBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p))) .blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p)))
@ -666,6 +703,7 @@ public class AllBlocks {
public static final BlockEntry<GaugeBlock> SPEEDOMETER = REGISTRATE.block("speedometer", GaugeBlock::speed) public static final BlockEntry<GaugeBlock> SPEEDOMETER = REGISTRATE.block("speedometer", GaugeBlock::speed)
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.blockstate(new GaugeGenerator()::generate) .blockstate(new GaugeGenerator()::generate)
@ -675,6 +713,7 @@ public class AllBlocks {
public static final BlockEntry<GaugeBlock> STRESSOMETER = REGISTRATE.block("stressometer", GaugeBlock::stress) public static final BlockEntry<GaugeBlock> STRESSOMETER = REGISTRATE.block("stressometer", GaugeBlock::stress)
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
.blockstate(new GaugeGenerator()::generate) .blockstate(new GaugeGenerator()::generate)
@ -700,6 +739,7 @@ public class AllBlocks {
public static final BlockEntry<GirderBlock> METAL_GIRDER = REGISTRATE.block("metal_girder", GirderBlock::new) public static final BlockEntry<GirderBlock> METAL_GIRDER = REGISTRATE.block("metal_girder", GirderBlock::new)
.blockstate(GirderBlockStateGenerator::blockState) .blockstate(GirderBlockStateGenerator::blockState)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.onRegister(CreateRegistrate.blockModel(() -> ConnectedGirderModel::new)) .onRegister(CreateRegistrate.blockModel(() -> ConnectedGirderModel::new))
@ -710,6 +750,7 @@ public class AllBlocks {
public static final BlockEntry<GirderEncasedShaftBlock> METAL_GIRDER_ENCASED_SHAFT = public static final BlockEntry<GirderEncasedShaftBlock> METAL_GIRDER_ENCASED_SHAFT =
REGISTRATE.block("metal_girder_encased_shaft", GirderEncasedShaftBlock::new) REGISTRATE.block("metal_girder_encased_shaft", GirderEncasedShaftBlock::new)
.blockstate(GirderBlockStateGenerator::blockStateWithShaft) .blockstate(GirderBlockStateGenerator::blockStateWithShaft)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.loot((p, b) -> p.add(b, RegistrateBlockLootTables.createSingleItemTable(METAL_GIRDER.get()) .loot((p, b) -> p.add(b, RegistrateBlockLootTables.createSingleItemTable(METAL_GIRDER.get())
@ -733,6 +774,7 @@ public class AllBlocks {
public static final BlockEntry<EncasedPipeBlock> ENCASED_FLUID_PIPE = public static final BlockEntry<EncasedPipeBlock> ENCASED_FLUID_PIPE =
REGISTRATE.block("encased_fluid_pipe", EncasedPipeBlock::new) REGISTRATE.block("encased_fluid_pipe", EncasedPipeBlock::new)
.initialProperties(SharedProperties::copperMetal) .initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.encasedPipe()) .blockstate(BlockStateGen.encasedPipe())
@ -767,6 +809,7 @@ public class AllBlocks {
public static final BlockEntry<PumpBlock> MECHANICAL_PUMP = REGISTRATE.block("mechanical_pump", PumpBlock::new) public static final BlockEntry<PumpBlock> MECHANICAL_PUMP = REGISTRATE.block("mechanical_pump", PumpBlock::new)
.initialProperties(SharedProperties::copperMetal) .initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque))
@ -778,6 +821,7 @@ public class AllBlocks {
public static final BlockEntry<SmartFluidPipeBlock> SMART_FLUID_PIPE = public static final BlockEntry<SmartFluidPipeBlock> SMART_FLUID_PIPE =
REGISTRATE.block("smart_fluid_pipe", SmartFluidPipeBlock::new) REGISTRATE.block("smart_fluid_pipe", SmartFluidPipeBlock::new)
.initialProperties(SharedProperties::copperMetal) .initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(new SmartFluidPipeGenerator()::generate) .blockstate(new SmartFluidPipeGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::transparent)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::transparent))
@ -805,6 +849,7 @@ public class AllBlocks {
public static final DyedBlockList<ValveHandleBlock> DYED_VALVE_HANDLES = new DyedBlockList<>(colour -> { public static final DyedBlockList<ValveHandleBlock> DYED_VALVE_HANDLES = new DyedBlockList<>(colour -> {
String colourName = colour.getSerializedName(); String colourName = colour.getSerializedName();
return REGISTRATE.block(colourName + "_valve_handle", p -> ValveHandleBlock.dyed(p, colour)) return REGISTRATE.block(colourName + "_valve_handle", p -> ValveHandleBlock.dyed(p, colour))
.properties(p -> p.color(colour.getMaterialColor()))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.transform(BuilderTransformers.valveHandle(colour)) .transform(BuilderTransformers.valveHandle(colour))
.recipe((c, p) -> ShapelessRecipeBuilder.shapeless(c.get()) .recipe((c, p) -> ShapelessRecipeBuilder.shapeless(c.get())
@ -831,6 +876,7 @@ public class AllBlocks {
REGISTRATE.block("creative_fluid_tank", FluidTankBlock::creative) REGISTRATE.block("creative_fluid_tank", FluidTankBlock::creative)
.initialProperties(SharedProperties::copperMetal) .initialProperties(SharedProperties::copperMetal)
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.color(MaterialColor.COLOR_PURPLE))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.blockstate(new FluidTankGenerator("creative_")::generate) .blockstate(new FluidTankGenerator("creative_")::generate)
@ -875,6 +921,7 @@ public class AllBlocks {
public static final BlockEntry<PortableStorageInterfaceBlock> PORTABLE_FLUID_INTERFACE = public static final BlockEntry<PortableStorageInterfaceBlock> PORTABLE_FLUID_INTERFACE =
REGISTRATE.block("portable_fluid_interface", PortableStorageInterfaceBlock::forFluids) REGISTRATE.block("portable_fluid_interface", PortableStorageInterfaceBlock::forFluids)
.initialProperties(SharedProperties::copperMetal) .initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p)))
.onRegister(addMovementBehaviour(new PortableStorageInterfaceMovement())) .onRegister(addMovementBehaviour(new PortableStorageInterfaceMovement()))
@ -894,6 +941,7 @@ public class AllBlocks {
public static final BlockEntry<WhistleBlock> STEAM_WHISTLE = REGISTRATE.block("steam_whistle", WhistleBlock::new) public static final BlockEntry<WhistleBlock> STEAM_WHISTLE = REGISTRATE.block("steam_whistle", WhistleBlock::new)
.initialProperties(SharedProperties::copperMetal) .initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.GOLD))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(new WhistleGenerator()::generate) .blockstate(new WhistleGenerator()::generate)
.item() .item()
@ -903,6 +951,7 @@ public class AllBlocks {
public static final BlockEntry<WhistleExtenderBlock> STEAM_WHISTLE_EXTENSION = public static final BlockEntry<WhistleExtenderBlock> STEAM_WHISTLE_EXTENSION =
REGISTRATE.block("steam_whistle_extension", WhistleExtenderBlock::new) REGISTRATE.block("steam_whistle_extension", WhistleExtenderBlock::new)
.initialProperties(SharedProperties::copperMetal) .initialProperties(SharedProperties::copperMetal)
.properties(p -> p.color(MaterialColor.GOLD))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(BlockStateGen.whistleExtender()) .blockstate(BlockStateGen.whistleExtender())
.register(); .register();
@ -910,6 +959,7 @@ public class AllBlocks {
public static final BlockEntry<PoweredShaftBlock> POWERED_SHAFT = public static final BlockEntry<PoweredShaftBlock> POWERED_SHAFT =
REGISTRATE.block("powered_shaft", PoweredShaftBlock::new) REGISTRATE.block("powered_shaft", PoweredShaftBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.METAL))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(BlockStateGen.axisBlockProvider(false)) .blockstate(BlockStateGen.axisBlockProvider(false))
.loot((lt, block) -> lt.dropOther(block, AllBlocks.SHAFT.get())) .loot((lt, block) -> lt.dropOther(block, AllBlocks.SHAFT.get()))
@ -919,6 +969,7 @@ public class AllBlocks {
public static final BlockEntry<MechanicalPistonBlock> MECHANICAL_PISTON = public static final BlockEntry<MechanicalPistonBlock> MECHANICAL_PISTON =
REGISTRATE.block("mechanical_piston", MechanicalPistonBlock::normal) REGISTRATE.block("mechanical_piston", MechanicalPistonBlock::normal)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BuilderTransformers.mechanicalPiston(PistonType.DEFAULT)) .transform(BuilderTransformers.mechanicalPiston(PistonType.DEFAULT))
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
@ -926,6 +977,7 @@ public class AllBlocks {
public static final BlockEntry<MechanicalPistonBlock> STICKY_MECHANICAL_PISTON = public static final BlockEntry<MechanicalPistonBlock> STICKY_MECHANICAL_PISTON =
REGISTRATE.block("sticky_mechanical_piston", MechanicalPistonBlock::sticky) REGISTRATE.block("sticky_mechanical_piston", MechanicalPistonBlock::sticky)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BuilderTransformers.mechanicalPiston(PistonType.STICKY)) .transform(BuilderTransformers.mechanicalPiston(PistonType.STICKY))
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
@ -935,6 +987,7 @@ public class AllBlocks {
REGISTRATE.block("piston_extension_pole", PistonExtensionPoleBlock::new) REGISTRATE.block("piston_extension_pole", PistonExtensionPoleBlock::new)
.initialProperties(() -> Blocks.PISTON_HEAD) .initialProperties(() -> Blocks.PISTON_HEAD)
.properties(p -> p.sound(SoundType.SCAFFOLDING)) .properties(p -> p.sound(SoundType.SCAFFOLDING))
.properties(p -> p.color(MaterialColor.DIRT))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false)) .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false))
.simpleItem() .simpleItem()
@ -943,6 +996,7 @@ public class AllBlocks {
public static final BlockEntry<MechanicalPistonHeadBlock> MECHANICAL_PISTON_HEAD = public static final BlockEntry<MechanicalPistonHeadBlock> MECHANICAL_PISTON_HEAD =
REGISTRATE.block("mechanical_piston_head", MechanicalPistonHeadBlock::new) REGISTRATE.block("mechanical_piston_head", MechanicalPistonHeadBlock::new)
.initialProperties(() -> Blocks.PISTON_HEAD) .initialProperties(() -> Blocks.PISTON_HEAD)
.properties(p -> p.color(MaterialColor.DIRT))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.loot((p, b) -> p.dropOther(b, PISTON_EXTENSION_POLE.get())) .loot((p, b) -> p.dropOther(b, PISTON_EXTENSION_POLE.get()))
.blockstate((c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, state -> p.models() .blockstate((c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, state -> p.models()
@ -953,6 +1007,7 @@ public class AllBlocks {
public static final BlockEntry<GantryCarriageBlock> GANTRY_CARRIAGE = public static final BlockEntry<GantryCarriageBlock> GANTRY_CARRIAGE =
REGISTRATE.block("gantry_carriage", GantryCarriageBlock::new) REGISTRATE.block("gantry_carriage", GantryCarriageBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.PODZOL))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.directionalAxisBlockProvider()) .blockstate(BlockStateGen.directionalAxisBlockProvider())
@ -963,6 +1018,7 @@ public class AllBlocks {
public static final BlockEntry<GantryShaftBlock> GANTRY_SHAFT = public static final BlockEntry<GantryShaftBlock> GANTRY_SHAFT =
REGISTRATE.block("gantry_shaft", GantryShaftBlock::new) REGISTRATE.block("gantry_shaft", GantryShaftBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.NETHER))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.directionalBlock(c.get(), s -> { .blockstate((c, p) -> p.directionalBlock(c.get(), s -> {
boolean isPowered = s.getValue(GantryShaftBlock.POWERED); boolean isPowered = s.getValue(GantryShaftBlock.POWERED);
@ -988,6 +1044,7 @@ public class AllBlocks {
public static final BlockEntry<WindmillBearingBlock> WINDMILL_BEARING = public static final BlockEntry<WindmillBearingBlock> WINDMILL_BEARING =
REGISTRATE.block("windmill_bearing", WindmillBearingBlock::new) REGISTRATE.block("windmill_bearing", WindmillBearingBlock::new)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BuilderTransformers.bearing("windmill", "gearbox", true)) .transform(BuilderTransformers.bearing("windmill", "gearbox", true))
.transform(BlockStressDefaults.setCapacity(512.0)) .transform(BlockStressDefaults.setCapacity(512.0))
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
@ -995,6 +1052,7 @@ public class AllBlocks {
public static final BlockEntry<MechanicalBearingBlock> MECHANICAL_BEARING = public static final BlockEntry<MechanicalBearingBlock> MECHANICAL_BEARING =
REGISTRATE.block("mechanical_bearing", MechanicalBearingBlock::new) REGISTRATE.block("mechanical_bearing", MechanicalBearingBlock::new)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BuilderTransformers.bearing("mechanical", "gearbox", false)) .transform(BuilderTransformers.bearing("mechanical", "gearbox", false))
.transform(BlockStressDefaults.setImpact(4.0)) .transform(BlockStressDefaults.setImpact(4.0))
@ -1004,6 +1062,7 @@ public class AllBlocks {
public static final BlockEntry<ClockworkBearingBlock> CLOCKWORK_BEARING = public static final BlockEntry<ClockworkBearingBlock> CLOCKWORK_BEARING =
REGISTRATE.block("clockwork_bearing", ClockworkBearingBlock::new) REGISTRATE.block("clockwork_bearing", ClockworkBearingBlock::new)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BuilderTransformers.bearing("clockwork", "brass_gearbox", false)) .transform(BuilderTransformers.bearing("clockwork", "brass_gearbox", false))
.transform(BlockStressDefaults.setImpact(4.0)) .transform(BlockStressDefaults.setImpact(4.0))
@ -1012,6 +1071,7 @@ public class AllBlocks {
public static final BlockEntry<PulleyBlock> ROPE_PULLEY = REGISTRATE.block("rope_pulley", PulleyBlock::new) public static final BlockEntry<PulleyBlock> ROPE_PULLEY = REGISTRATE.block("rope_pulley", PulleyBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.blockstate(BlockStateGen.horizontalAxisBlockProvider(true)) .blockstate(BlockStateGen.horizontalAxisBlockProvider(true))
@ -1039,6 +1099,7 @@ public class AllBlocks {
public static final BlockEntry<CartAssemblerBlock> CART_ASSEMBLER = public static final BlockEntry<CartAssemblerBlock> CART_ASSEMBLER =
REGISTRATE.block("cart_assembler", CartAssemblerBlock::new) REGISTRATE.block("cart_assembler", CartAssemblerBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.cartAssembler()) .blockstate(BlockStateGen.cartAssembler())
@ -1071,6 +1132,7 @@ public class AllBlocks {
public static final BlockEntry<LinearChassisBlock> LINEAR_CHASSIS = public static final BlockEntry<LinearChassisBlock> LINEAR_CHASSIS =
REGISTRATE.block("linear_chassis", LinearChassisBlock::new) REGISTRATE.block("linear_chassis", LinearChassisBlock::new)
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.blockstate(BlockStateGen.linearChassis()) .blockstate(BlockStateGen.linearChassis())
@ -1082,6 +1144,7 @@ public class AllBlocks {
public static final BlockEntry<LinearChassisBlock> SECONDARY_LINEAR_CHASSIS = public static final BlockEntry<LinearChassisBlock> SECONDARY_LINEAR_CHASSIS =
REGISTRATE.block("secondary_linear_chassis", LinearChassisBlock::new) REGISTRATE.block("secondary_linear_chassis", LinearChassisBlock::new)
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.blockstate(BlockStateGen.linearChassis()) .blockstate(BlockStateGen.linearChassis())
@ -1092,6 +1155,7 @@ public class AllBlocks {
public static final BlockEntry<RadialChassisBlock> RADIAL_CHASSIS = public static final BlockEntry<RadialChassisBlock> RADIAL_CHASSIS =
REGISTRATE.block("radial_chassis", RadialChassisBlock::new) REGISTRATE.block("radial_chassis", RadialChassisBlock::new)
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.DIRT))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.blockstate(BlockStateGen.radialChassis()) .blockstate(BlockStateGen.radialChassis())
@ -1115,6 +1179,7 @@ public class AllBlocks {
public static final BlockEntry<DrillBlock> MECHANICAL_DRILL = REGISTRATE.block("mechanical_drill", DrillBlock::new) public static final BlockEntry<DrillBlock> MECHANICAL_DRILL = REGISTRATE.block("mechanical_drill", DrillBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.directionalBlockProvider(true)) .blockstate(BlockStateGen.directionalBlockProvider(true))
.transform(BlockStressDefaults.setImpact(4.0)) .transform(BlockStressDefaults.setImpact(4.0))
@ -1125,6 +1190,7 @@ public class AllBlocks {
public static final BlockEntry<SawBlock> MECHANICAL_SAW = REGISTRATE.block("mechanical_saw", SawBlock::new) public static final BlockEntry<SawBlock> MECHANICAL_SAW = REGISTRATE.block("mechanical_saw", SawBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(new SawGenerator()::generate) .blockstate(new SawGenerator()::generate)
.transform(BlockStressDefaults.setImpact(4.0)) .transform(BlockStressDefaults.setImpact(4.0))
@ -1136,6 +1202,7 @@ public class AllBlocks {
public static final BlockEntry<DeployerBlock> DEPLOYER = REGISTRATE.block("deployer", DeployerBlock::new) public static final BlockEntry<DeployerBlock> DEPLOYER = REGISTRATE.block("deployer", DeployerBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.directionalAxisBlockProvider()) .blockstate(BlockStateGen.directionalAxisBlockProvider())
.transform(BlockStressDefaults.setImpact(4.0)) .transform(BlockStressDefaults.setImpact(4.0))
@ -1148,6 +1215,7 @@ public class AllBlocks {
public static final BlockEntry<PortableStorageInterfaceBlock> PORTABLE_STORAGE_INTERFACE = public static final BlockEntry<PortableStorageInterfaceBlock> PORTABLE_STORAGE_INTERFACE =
REGISTRATE.block("portable_storage_interface", PortableStorageInterfaceBlock::forItems) REGISTRATE.block("portable_storage_interface", PortableStorageInterfaceBlock::forItems)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p)))
.onRegister(addMovementBehaviour(new PortableStorageInterfaceMovement())) .onRegister(addMovementBehaviour(new PortableStorageInterfaceMovement()))
@ -1158,6 +1226,7 @@ public class AllBlocks {
public static final BlockEntry<RedstoneContactBlock> REDSTONE_CONTACT = public static final BlockEntry<RedstoneContactBlock> REDSTONE_CONTACT =
REGISTRATE.block("redstone_contact", RedstoneContactBlock::new) REGISTRATE.block("redstone_contact", RedstoneContactBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.onRegister(addMovementBehaviour(new ContactMovementBehaviour())) .onRegister(addMovementBehaviour(new ContactMovementBehaviour()))
.blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p)))
@ -1168,6 +1237,7 @@ public class AllBlocks {
public static final BlockEntry<HarvesterBlock> MECHANICAL_HARVESTER = public static final BlockEntry<HarvesterBlock> MECHANICAL_HARVESTER =
REGISTRATE.block("mechanical_harvester", HarvesterBlock::new) REGISTRATE.block("mechanical_harvester", HarvesterBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.METAL))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.onRegister(addMovementBehaviour(new HarvesterMovementBehaviour())) .onRegister(addMovementBehaviour(new HarvesterMovementBehaviour()))
.blockstate(BlockStateGen.horizontalBlockProvider(true)) .blockstate(BlockStateGen.horizontalBlockProvider(true))
@ -1179,6 +1249,7 @@ public class AllBlocks {
public static final BlockEntry<PloughBlock> MECHANICAL_PLOUGH = public static final BlockEntry<PloughBlock> MECHANICAL_PLOUGH =
REGISTRATE.block("mechanical_plough", PloughBlock::new) REGISTRATE.block("mechanical_plough", PloughBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.onRegister(addMovementBehaviour(new PloughMovementBehaviour())) .onRegister(addMovementBehaviour(new PloughMovementBehaviour()))
.blockstate(BlockStateGen.horizontalBlockProvider(false)) .blockstate(BlockStateGen.horizontalBlockProvider(false))
@ -1191,6 +1262,7 @@ public class AllBlocks {
SeatInteractionBehaviour interactionBehaviour = new SeatInteractionBehaviour(); SeatInteractionBehaviour interactionBehaviour = new SeatInteractionBehaviour();
return REGISTRATE.block(colourName + "_seat", p -> new SeatBlock(p, colour, colour == DyeColor.RED)) return REGISTRATE.block(colourName + "_seat", p -> new SeatBlock(p, colour, colour == DyeColor.RED))
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(colour.getMaterialColor()))
.transform(axeOnly()) .transform(axeOnly())
.onRegister(addMovementBehaviour(movementBehaviour)) .onRegister(addMovementBehaviour(movementBehaviour))
.onRegister(addInteractionBehaviour(interactionBehaviour)) .onRegister(addInteractionBehaviour(interactionBehaviour))
@ -1222,6 +1294,7 @@ public class AllBlocks {
public static final BlockEntry<SailBlock> SAIL_FRAME = REGISTRATE.block("sail_frame", p -> SailBlock.frame(p)) public static final BlockEntry<SailBlock> SAIL_FRAME = REGISTRATE.block("sail_frame", p -> SailBlock.frame(p))
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.DIRT))
.properties(p -> p.sound(SoundType.SCAFFOLDING) .properties(p -> p.sound(SoundType.SCAFFOLDING)
.noOcclusion()) .noOcclusion())
.transform(axeOnly()) .transform(axeOnly())
@ -1234,6 +1307,7 @@ public class AllBlocks {
public static final BlockEntry<SailBlock> SAIL = public static final BlockEntry<SailBlock> SAIL =
REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE)) REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE))
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.SNOW))
.properties(p -> p.sound(SoundType.SCAFFOLDING) .properties(p -> p.sound(SoundType.SCAFFOLDING)
.noOcclusion()) .noOcclusion())
.transform(axeOnly()) .transform(axeOnly())
@ -1250,6 +1324,7 @@ public class AllBlocks {
String colourName = colour.getSerializedName(); String colourName = colour.getSerializedName();
return REGISTRATE.block(colourName + "_sail", p -> SailBlock.withCanvas(p, colour)) return REGISTRATE.block(colourName + "_sail", p -> SailBlock.withCanvas(p, colour))
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(colour.getMaterialColor()))
.properties(p -> p.sound(SoundType.SCAFFOLDING) .properties(p -> p.sound(SoundType.SCAFFOLDING)
.noOcclusion()) .noOcclusion())
.transform(axeOnly()) .transform(axeOnly())
@ -1262,26 +1337,31 @@ public class AllBlocks {
}); });
public static final BlockEntry<CasingBlock> ANDESITE_CASING = REGISTRATE.block("andesite_casing", CasingBlock::new) public static final BlockEntry<CasingBlock> ANDESITE_CASING = REGISTRATE.block("andesite_casing", CasingBlock::new)
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BuilderTransformers.casing(() -> AllSpriteShifts.ANDESITE_CASING)) .transform(BuilderTransformers.casing(() -> AllSpriteShifts.ANDESITE_CASING))
.register(); .register();
public static final BlockEntry<CasingBlock> BRASS_CASING = REGISTRATE.block("brass_casing", CasingBlock::new) public static final BlockEntry<CasingBlock> BRASS_CASING = REGISTRATE.block("brass_casing", CasingBlock::new)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(BuilderTransformers.casing(() -> AllSpriteShifts.BRASS_CASING)) .transform(BuilderTransformers.casing(() -> AllSpriteShifts.BRASS_CASING))
.register(); .register();
public static final BlockEntry<CasingBlock> COPPER_CASING = REGISTRATE.block("copper_casing", CasingBlock::new) public static final BlockEntry<CasingBlock> COPPER_CASING = REGISTRATE.block("copper_casing", CasingBlock::new)
.transform(BuilderTransformers.casing(() -> AllSpriteShifts.COPPER_CASING)) .properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
.properties(p -> p.sound(SoundType.COPPER)) .properties(p -> p.sound(SoundType.COPPER))
.transform(BuilderTransformers.casing(() -> AllSpriteShifts.COPPER_CASING))
.register(); .register();
public static final BlockEntry<CasingBlock> SHADOW_STEEL_CASING = public static final BlockEntry<CasingBlock> SHADOW_STEEL_CASING =
REGISTRATE.block("shadow_steel_casing", CasingBlock::deprecated) REGISTRATE.block("shadow_steel_casing", CasingBlock::deprecated)
.properties(p -> p.color(MaterialColor.COLOR_BLACK))
.transform(BuilderTransformers.casing(() -> AllSpriteShifts.SHADOW_STEEL_CASING)) .transform(BuilderTransformers.casing(() -> AllSpriteShifts.SHADOW_STEEL_CASING))
.lang("Shadow Casing") .lang("Shadow Casing")
.register(); .register();
public static final BlockEntry<CasingBlock> REFINED_RADIANCE_CASING = public static final BlockEntry<CasingBlock> REFINED_RADIANCE_CASING =
REGISTRATE.block("refined_radiance_casing", CasingBlock::deprecated) REGISTRATE.block("refined_radiance_casing", CasingBlock::deprecated)
.properties(p -> p.color(MaterialColor.SNOW))
.transform(BuilderTransformers.casing(() -> AllSpriteShifts.REFINED_RADIANCE_CASING)) .transform(BuilderTransformers.casing(() -> AllSpriteShifts.REFINED_RADIANCE_CASING))
.properties(p -> p.lightLevel($ -> 12)) .properties(p -> p.lightLevel($ -> 12))
.lang("Radiant Casing") .lang("Radiant Casing")
@ -1290,6 +1370,7 @@ public class AllBlocks {
public static final BlockEntry<MechanicalCrafterBlock> MECHANICAL_CRAFTER = public static final BlockEntry<MechanicalCrafterBlock> MECHANICAL_CRAFTER =
REGISTRATE.block("mechanical_crafter", MechanicalCrafterBlock::new) REGISTRATE.block("mechanical_crafter", MechanicalCrafterBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(BlockStateGen.horizontalBlockProvider(true)) .blockstate(BlockStateGen.horizontalBlockProvider(true))
@ -1303,6 +1384,7 @@ public class AllBlocks {
public static final BlockEntry<SequencedGearshiftBlock> SEQUENCED_GEARSHIFT = public static final BlockEntry<SequencedGearshiftBlock> SEQUENCED_GEARSHIFT =
REGISTRATE.block("sequenced_gearshift", SequencedGearshiftBlock::new) REGISTRATE.block("sequenced_gearshift", SequencedGearshiftBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
@ -1314,6 +1396,7 @@ public class AllBlocks {
public static final BlockEntry<FlywheelBlock> FLYWHEEL = REGISTRATE.block("flywheel", FlywheelBlock::new) public static final BlockEntry<FlywheelBlock> FLYWHEEL = REGISTRATE.block("flywheel", FlywheelBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
@ -1325,6 +1408,7 @@ public class AllBlocks {
public static final BlockEntry<SpeedControllerBlock> ROTATION_SPEED_CONTROLLER = public static final BlockEntry<SpeedControllerBlock> ROTATION_SPEED_CONTROLLER =
REGISTRATE.block("rotation_speed_controller", SpeedControllerBlock::new) REGISTRATE.block("rotation_speed_controller", SpeedControllerBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.transform(BlockStressDefaults.setNoImpact()) .transform(BlockStressDefaults.setNoImpact())
@ -1341,6 +1425,7 @@ public class AllBlocks {
public static final BlockEntry<ArmBlock> MECHANICAL_ARM = REGISTRATE.block("mechanical_arm", ArmBlock::new) public static final BlockEntry<ArmBlock> MECHANICAL_ARM = REGISTRATE.block("mechanical_arm", ArmBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.getVariantBuilder(c.get()) .blockstate((c, p) -> p.getVariantBuilder(c.get())
.forAllStates(s -> ConfiguredModel.builder() .forAllStates(s -> ConfiguredModel.builder()
@ -1354,6 +1439,7 @@ public class AllBlocks {
public static final BlockEntry<TrackBlock> TRACK = REGISTRATE.block("track", TrackBlock::new) public static final BlockEntry<TrackBlock> TRACK = REGISTRATE.block("track", TrackBlock::new)
.initialProperties(Material.DECORATION) .initialProperties(Material.DECORATION)
.properties(p -> p.color(MaterialColor.NONE))
.properties(p -> p.strength(0.8F) .properties(p -> p.strength(0.8F)
.sound(SoundType.METAL) .sound(SoundType.METAL)
.noOcclusion()) .noOcclusion())
@ -1370,11 +1456,13 @@ public class AllBlocks {
public static final BlockEntry<CasingBlock> RAILWAY_CASING = REGISTRATE.block("railway_casing", CasingBlock::new) public static final BlockEntry<CasingBlock> RAILWAY_CASING = REGISTRATE.block("railway_casing", CasingBlock::new)
.transform(BuilderTransformers.layeredCasing(() -> AllSpriteShifts.RAILWAY_CASING_SIDE, .transform(BuilderTransformers.layeredCasing(() -> AllSpriteShifts.RAILWAY_CASING_SIDE,
() -> AllSpriteShifts.RAILWAY_CASING)) () -> AllSpriteShifts.RAILWAY_CASING))
.properties(p -> p.color(MaterialColor.TERRACOTTA_CYAN))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.register(); .register();
public static final BlockEntry<StationBlock> TRACK_STATION = REGISTRATE.block("track_station", StationBlock::new) public static final BlockEntry<StationBlock> TRACK_STATION = REGISTRATE.block("track_station", StationBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.PODZOL))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p)))
@ -1386,6 +1474,7 @@ public class AllBlocks {
public static final BlockEntry<SignalBlock> TRACK_SIGNAL = REGISTRATE.block("track_signal", SignalBlock::new) public static final BlockEntry<SignalBlock> TRACK_SIGNAL = REGISTRATE.block("track_signal", SignalBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.PODZOL))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.properties(BlockBehaviour.Properties::noOcclusion) .properties(BlockBehaviour.Properties::noOcclusion)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
@ -1401,16 +1490,19 @@ public class AllBlocks {
public static final BlockEntry<StandardBogeyBlock> SMALL_BOGEY = public static final BlockEntry<StandardBogeyBlock> SMALL_BOGEY =
REGISTRATE.block("small_bogey", p -> new StandardBogeyBlock(p, false)) REGISTRATE.block("small_bogey", p -> new StandardBogeyBlock(p, false))
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BuilderTransformers.bogey()) .transform(BuilderTransformers.bogey())
.register(); .register();
public static final BlockEntry<StandardBogeyBlock> LARGE_BOGEY = public static final BlockEntry<StandardBogeyBlock> LARGE_BOGEY =
REGISTRATE.block("large_bogey", p -> new StandardBogeyBlock(p, true)) REGISTRATE.block("large_bogey", p -> new StandardBogeyBlock(p, true))
.properties(p -> p.color(MaterialColor.PODZOL))
.transform(BuilderTransformers.bogey()) .transform(BuilderTransformers.bogey())
.register(); .register();
public static final BlockEntry<ControlsBlock> CONTROLS = REGISTRATE.block("controls", ControlsBlock::new) public static final BlockEntry<ControlsBlock> CONTROLS = REGISTRATE.block("controls", ControlsBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.blockstate((c, p) -> p.horizontalBlock(c.get(), .blockstate((c, p) -> p.horizontalBlock(c.get(),
s -> AssetLookup.partialBaseModel(c, p, s.getValue(ControlsBlock.OPEN) ? "open" : "closed"))) s -> AssetLookup.partialBaseModel(c, p, s.getValue(ControlsBlock.OPEN) ? "open" : "closed")))
@ -1423,6 +1515,7 @@ public class AllBlocks {
public static final BlockEntry<ItemVaultBlock> ITEM_VAULT = REGISTRATE.block("item_vault", ItemVaultBlock::new) public static final BlockEntry<ItemVaultBlock> ITEM_VAULT = REGISTRATE.block("item_vault", ItemVaultBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BLUE))
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)
.explosionResistance(1200)) .explosionResistance(1200))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
@ -1439,6 +1532,7 @@ public class AllBlocks {
public static final BlockEntry<AndesiteFunnelBlock> ANDESITE_FUNNEL = public static final BlockEntry<AndesiteFunnelBlock> ANDESITE_FUNNEL =
REGISTRATE.block("andesite_funnel", AndesiteFunnelBlock::new) REGISTRATE.block("andesite_funnel", AndesiteFunnelBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.onRegister(addMovementBehaviour(FunnelMovementBehaviour.andesite())) .onRegister(addMovementBehaviour(FunnelMovementBehaviour.andesite()))
@ -1451,6 +1545,7 @@ public class AllBlocks {
public static final BlockEntry<BeltFunnelBlock> ANDESITE_BELT_FUNNEL = public static final BlockEntry<BeltFunnelBlock> ANDESITE_BELT_FUNNEL =
REGISTRATE.block("andesite_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.ANDESITE_FUNNEL, p)) REGISTRATE.block("andesite_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.ANDESITE_FUNNEL, p))
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.blockstate(new BeltFunnelGenerator("andesite", new ResourceLocation("block/polished_andesite"))::generate) .blockstate(new BeltFunnelGenerator("andesite", new ResourceLocation("block/polished_andesite"))::generate)
@ -1460,6 +1555,7 @@ public class AllBlocks {
public static final BlockEntry<BrassFunnelBlock> BRASS_FUNNEL = public static final BlockEntry<BrassFunnelBlock> BRASS_FUNNEL =
REGISTRATE.block("brass_funnel", BrassFunnelBlock::new) REGISTRATE.block("brass_funnel", BrassFunnelBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.onRegister(addMovementBehaviour(FunnelMovementBehaviour.brass())) .onRegister(addMovementBehaviour(FunnelMovementBehaviour.brass()))
@ -1472,6 +1568,7 @@ public class AllBlocks {
public static final BlockEntry<BeltFunnelBlock> BRASS_BELT_FUNNEL = public static final BlockEntry<BeltFunnelBlock> BRASS_BELT_FUNNEL =
REGISTRATE.block("brass_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.BRASS_FUNNEL, p)) REGISTRATE.block("brass_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.BRASS_FUNNEL, p))
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.blockstate(new BeltFunnelGenerator("brass", Create.asResource("block/brass_block"))::generate) .blockstate(new BeltFunnelGenerator("brass", Create.asResource("block/brass_block"))::generate)
@ -1480,12 +1577,14 @@ public class AllBlocks {
public static final BlockEntry<BeltTunnelBlock> ANDESITE_TUNNEL = public static final BlockEntry<BeltTunnelBlock> ANDESITE_TUNNEL =
REGISTRATE.block("andesite_tunnel", BeltTunnelBlock::new) REGISTRATE.block("andesite_tunnel", BeltTunnelBlock::new)
.properties(p -> p.color(MaterialColor.STONE))
.transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite"))) .transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite")))
.onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items")) .onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items"))
.register(); .register();
public static final BlockEntry<BrassTunnelBlock> BRASS_TUNNEL = public static final BlockEntry<BrassTunnelBlock> BRASS_TUNNEL =
REGISTRATE.block("brass_tunnel", BrassTunnelBlock::new) REGISTRATE.block("brass_tunnel", BrassTunnelBlock::new)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block")))
.onRegister(assignDataBehaviour(new ItemThoughputDisplaySource(), "item_throughput")) .onRegister(assignDataBehaviour(new ItemThoughputDisplaySource(), "item_throughput"))
.onRegister(connectedTextures(BrassTunnelCTBehaviour::new)) .onRegister(connectedTextures(BrassTunnelCTBehaviour::new))
@ -1494,6 +1593,7 @@ public class AllBlocks {
public static final BlockEntry<ContentObserverBlock> CONTENT_OBSERVER = public static final BlockEntry<ContentObserverBlock> CONTENT_OBSERVER =
REGISTRATE.block("content_observer", ContentObserverBlock::new) REGISTRATE.block("content_observer", ContentObserverBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p))) .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p)))
.onRegister(assignDataBehaviour(new ItemCountDisplaySource(), "count_items")) .onRegister(assignDataBehaviour(new ItemCountDisplaySource(), "count_items"))
@ -1505,6 +1605,7 @@ public class AllBlocks {
public static final BlockEntry<StockpileSwitchBlock> STOCKPILE_SWITCH = public static final BlockEntry<StockpileSwitchBlock> STOCKPILE_SWITCH =
REGISTRATE.block("stockpile_switch", StockpileSwitchBlock::new) REGISTRATE.block("stockpile_switch", StockpileSwitchBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate((c, p) -> p.horizontalBlock(c.get(), .blockstate((c, p) -> p.horizontalBlock(c.get(),
AssetLookup.withIndicator(c, p, $ -> AssetLookup.standardModel(c, p), StockpileSwitchBlock.INDICATOR))) AssetLookup.withIndicator(c, p, $ -> AssetLookup.standardModel(c, p), StockpileSwitchBlock.INDICATOR)))
@ -1515,12 +1616,14 @@ public class AllBlocks {
public static final BlockEntry<CreativeCrateBlock> CREATIVE_CRATE = public static final BlockEntry<CreativeCrateBlock> CREATIVE_CRATE =
REGISTRATE.block("creative_crate", CreativeCrateBlock::new) REGISTRATE.block("creative_crate", CreativeCrateBlock::new)
.transform(BuilderTransformers.crate("creative")) .transform(BuilderTransformers.crate("creative"))
.properties(p -> p.color(MaterialColor.COLOR_PURPLE))
.tag(AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.SAFE_NBT.tag)
.register(); .register();
public static final BlockEntry<DisplayLinkBlock> DISPLAY_LINK = public static final BlockEntry<DisplayLinkBlock> DISPLAY_LINK =
REGISTRATE.block("display_link", DisplayLinkBlock::new) REGISTRATE.block("display_link", DisplayLinkBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.addLayer(() -> RenderType::translucent) .addLayer(() -> RenderType::translucent)
.blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p)))
.item(DisplayLinkBlockItem::new) .item(DisplayLinkBlockItem::new)
@ -1530,6 +1633,7 @@ public class AllBlocks {
public static final BlockEntry<FlapDisplayBlock> DISPLAY_BOARD = public static final BlockEntry<FlapDisplayBlock> DISPLAY_BOARD =
REGISTRATE.block("display_board", FlapDisplayBlock::new) REGISTRATE.block("display_board", FlapDisplayBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.transform(BlockStressDefaults.setImpact(0)) .transform(BlockStressDefaults.setImpact(0))
@ -1544,6 +1648,7 @@ public class AllBlocks {
REGISTRATE.block("nixie_tube", p -> new NixieTubeBlock(p, DyeColor.ORANGE)) REGISTRATE.block("nixie_tube", p -> new NixieTubeBlock(p, DyeColor.ORANGE))
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.lightLevel($ -> 5)) .properties(p -> p.lightLevel($ -> 5))
.properties(p -> p.color(DyeColor.ORANGE.getMaterialColor()))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(new NixieTubeGenerator()::generate) .blockstate(new NixieTubeGenerator()::generate)
.addLayer(() -> RenderType::translucent) .addLayer(() -> RenderType::translucent)
@ -1557,6 +1662,7 @@ public class AllBlocks {
String colourName = colour.getSerializedName(); String colourName = colour.getSerializedName();
return REGISTRATE.block(colourName + "_nixie_tube", p -> new NixieTubeBlock(p, colour)) return REGISTRATE.block(colourName + "_nixie_tube", p -> new NixieTubeBlock(p, colour))
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.color(colour.getMaterialColor()))
.properties(p -> p.lightLevel($ -> 5)) .properties(p -> p.lightLevel($ -> 5))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.blockstate(new NixieTubeGenerator()::generate) .blockstate(new NixieTubeGenerator()::generate)
@ -1568,6 +1674,7 @@ public class AllBlocks {
public static final BlockEntry<RedstoneLinkBlock> REDSTONE_LINK = public static final BlockEntry<RedstoneLinkBlock> REDSTONE_LINK =
REGISTRATE.block("redstone_link", RedstoneLinkBlock::new) REGISTRATE.block("redstone_link", RedstoneLinkBlock::new)
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.tag(AllBlockTags.BRITTLE.tag, AllBlockTags.SAFE_NBT.tag) .tag(AllBlockTags.BRITTLE.tag, AllBlockTags.SAFE_NBT.tag)
.blockstate(new RedstoneLinkGenerator()::generate) .blockstate(new RedstoneLinkGenerator()::generate)
@ -1665,12 +1772,14 @@ public class AllBlocks {
public static final BlockEntry<PeculiarBellBlock> PECULIAR_BELL = public static final BlockEntry<PeculiarBellBlock> PECULIAR_BELL =
REGISTRATE.block("peculiar_bell", PeculiarBellBlock::new) REGISTRATE.block("peculiar_bell", PeculiarBellBlock::new)
.properties(p -> p.color(MaterialColor.GOLD))
.transform(BuilderTransformers.bell()) .transform(BuilderTransformers.bell())
.onRegister(addMovementBehaviour(new BellMovementBehaviour())) .onRegister(addMovementBehaviour(new BellMovementBehaviour()))
.register(); .register();
public static final BlockEntry<HauntedBellBlock> HAUNTED_BELL = public static final BlockEntry<HauntedBellBlock> HAUNTED_BELL =
REGISTRATE.block("haunted_bell", HauntedBellBlock::new) REGISTRATE.block("haunted_bell", HauntedBellBlock::new)
.properties(p -> p.color(MaterialColor.SAND))
.transform(BuilderTransformers.bell()) .transform(BuilderTransformers.bell())
.onRegister(addMovementBehaviour(new HauntedBellMovementBehaviour())) .onRegister(addMovementBehaviour(new HauntedBellMovementBehaviour()))
.register(); .register();
@ -1680,6 +1789,7 @@ public class AllBlocks {
return REGISTRATE.block(colourName + "_toolbox", p -> new ToolboxBlock(p, colour)) return REGISTRATE.block(colourName + "_toolbox", p -> new ToolboxBlock(p, colour))
.initialProperties(SharedProperties::wooden) .initialProperties(SharedProperties::wooden)
.properties(p -> p.sound(SoundType.WOOD)) .properties(p -> p.sound(SoundType.WOOD))
.properties(p -> p.color(colour.getMaterialColor()))
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
.loot((lt, block) -> { .loot((lt, block) -> {
Builder builder = LootTable.lootTable(); Builder builder = LootTable.lootTable();
@ -1717,6 +1827,7 @@ public class AllBlocks {
public static final BlockEntry<Block> ZINC_ORE = REGISTRATE.block("zinc_ore", Block::new) public static final BlockEntry<Block> ZINC_ORE = REGISTRATE.block("zinc_ore", Block::new)
.initialProperties(() -> Blocks.GOLD_ORE) .initialProperties(() -> Blocks.GOLD_ORE)
.properties(p -> p.color(MaterialColor.METAL))
.properties(p -> p.requiresCorrectToolForDrops() .properties(p -> p.requiresCorrectToolForDrops()
.sound(SoundType.STONE)) .sound(SoundType.STONE))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
@ -1733,6 +1844,7 @@ public class AllBlocks {
public static final BlockEntry<Block> DEEPSLATE_ZINC_ORE = REGISTRATE.block("deepslate_zinc_ore", Block::new) public static final BlockEntry<Block> DEEPSLATE_ZINC_ORE = REGISTRATE.block("deepslate_zinc_ore", Block::new)
.initialProperties(() -> Blocks.DEEPSLATE_GOLD_ORE) .initialProperties(() -> Blocks.DEEPSLATE_GOLD_ORE)
.properties(p -> p.color(MaterialColor.STONE))
.properties(p -> p.requiresCorrectToolForDrops() .properties(p -> p.requiresCorrectToolForDrops()
.sound(SoundType.DEEPSLATE)) .sound(SoundType.DEEPSLATE))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
@ -1749,6 +1861,7 @@ public class AllBlocks {
public static final BlockEntry<Block> RAW_ZINC_BLOCK = REGISTRATE.block("raw_zinc_block", Block::new) public static final BlockEntry<Block> RAW_ZINC_BLOCK = REGISTRATE.block("raw_zinc_block", Block::new)
.initialProperties(() -> Blocks.RAW_GOLD_BLOCK) .initialProperties(() -> Blocks.RAW_GOLD_BLOCK)
.properties(p -> p.color(MaterialColor.GLOW_LICHEN))
.properties(p -> p.requiresCorrectToolForDrops()) .properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.tag(Tags.Blocks.STORAGE_BLOCKS) .tag(Tags.Blocks.STORAGE_BLOCKS)
@ -1761,6 +1874,7 @@ public class AllBlocks {
public static final BlockEntry<Block> ZINC_BLOCK = REGISTRATE.block("zinc_block", p -> new Block(p)) public static final BlockEntry<Block> ZINC_BLOCK = REGISTRATE.block("zinc_block", p -> new Block(p))
.initialProperties(() -> Blocks.IRON_BLOCK) .initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.GLOW_LICHEN))
.properties(p -> p.requiresCorrectToolForDrops()) .properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.tag(BlockTags.NEEDS_IRON_TOOL) .tag(BlockTags.NEEDS_IRON_TOOL)
@ -1774,6 +1888,7 @@ public class AllBlocks {
public static final BlockEntry<Block> BRASS_BLOCK = REGISTRATE.block("brass_block", p -> new Block(p)) public static final BlockEntry<Block> BRASS_BLOCK = REGISTRATE.block("brass_block", p -> new Block(p))
.initialProperties(() -> Blocks.IRON_BLOCK) .initialProperties(() -> Blocks.IRON_BLOCK)
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.properties(p -> p.requiresCorrectToolForDrops()) .properties(p -> p.requiresCorrectToolForDrops())
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate((c, p) -> p.simpleBlock(c.get(), p.models() .blockstate((c, p) -> p.simpleBlock(c.get(), p.models()

View file

@ -25,6 +25,7 @@ import net.minecraft.tags.BlockTags;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.GlassBlock; import net.minecraft.world.level.block.GlassBlock;
import net.minecraft.world.level.block.state.properties.WoodType; import net.minecraft.world.level.block.state.properties.WoodType;
import net.minecraft.world.level.material.MaterialColor;
import net.minecraftforge.common.Tags; import net.minecraftforge.common.Tags;
public class AllPaletteBlocks { public class AllPaletteBlocks {
@ -50,8 +51,8 @@ public class AllPaletteBlocks {
framedGlass("framed_glass", () -> new StandardCTBehaviour(AllSpriteShifts.FRAMED_GLASS)), framedGlass("framed_glass", () -> new StandardCTBehaviour(AllSpriteShifts.FRAMED_GLASS)),
HORIZONTAL_FRAMED_GLASS = framedGlass("horizontal_framed_glass", HORIZONTAL_FRAMED_GLASS = framedGlass("horizontal_framed_glass",
() -> new HorizontalCTBehaviour(AllSpriteShifts.HORIZONTAL_FRAMED_GLASS, AllSpriteShifts.FRAMED_GLASS)), () -> new HorizontalCTBehaviour(AllSpriteShifts.HORIZONTAL_FRAMED_GLASS, AllSpriteShifts.FRAMED_GLASS)),
VERTICAL_FRAMED_GLASS = VERTICAL_FRAMED_GLASS = framedGlass("vertical_framed_glass",
framedGlass("vertical_framed_glass", () -> new HorizontalCTBehaviour(AllSpriteShifts.VERTICAL_FRAMED_GLASS)); () -> new HorizontalCTBehaviour(AllSpriteShifts.VERTICAL_FRAMED_GLASS));
public static final BlockEntry<GlassPaneBlock> TILED_GLASS_PANE = public static final BlockEntry<GlassPaneBlock> TILED_GLASS_PANE =
WindowGen.standardGlassPane("tiled_glass", TILED_GLASS, Create.asResource("block/palettes/tiled_glass"), WindowGen.standardGlassPane("tiled_glass", TILED_GLASS, Create.asResource("block/palettes/tiled_glass"),
@ -61,8 +62,8 @@ public class AllPaletteBlocks {
framedGlassPane("framed_glass", FRAMED_GLASS, () -> AllSpriteShifts.FRAMED_GLASS), framedGlassPane("framed_glass", FRAMED_GLASS, () -> AllSpriteShifts.FRAMED_GLASS),
HORIZONTAL_FRAMED_GLASS_PANE = framedGlassPane("horizontal_framed_glass", HORIZONTAL_FRAMED_GLASS, HORIZONTAL_FRAMED_GLASS_PANE = framedGlassPane("horizontal_framed_glass", HORIZONTAL_FRAMED_GLASS,
() -> AllSpriteShifts.HORIZONTAL_FRAMED_GLASS), () -> AllSpriteShifts.HORIZONTAL_FRAMED_GLASS),
VERTICAL_FRAMED_GLASS_PANE = VERTICAL_FRAMED_GLASS_PANE = framedGlassPane("vertical_framed_glass", VERTICAL_FRAMED_GLASS,
framedGlassPane("vertical_framed_glass", VERTICAL_FRAMED_GLASS, () -> AllSpriteShifts.VERTICAL_FRAMED_GLASS); () -> AllSpriteShifts.VERTICAL_FRAMED_GLASS);
public static final BlockEntry<WindowBlock> OAK_WINDOW = woodenWindowBlock(WoodType.OAK, Blocks.OAK_PLANKS), public static final BlockEntry<WindowBlock> OAK_WINDOW = woodenWindowBlock(WoodType.OAK, Blocks.OAK_PLANKS),
SPRUCE_WINDOW = woodenWindowBlock(WoodType.SPRUCE, Blocks.SPRUCE_PLANKS), SPRUCE_WINDOW = woodenWindowBlock(WoodType.SPRUCE, Blocks.SPRUCE_PLANKS),
@ -72,8 +73,9 @@ public class AllPaletteBlocks {
DARK_OAK_WINDOW = woodenWindowBlock(WoodType.DARK_OAK, Blocks.DARK_OAK_PLANKS), DARK_OAK_WINDOW = woodenWindowBlock(WoodType.DARK_OAK, Blocks.DARK_OAK_PLANKS),
CRIMSON_WINDOW = woodenWindowBlock(WoodType.CRIMSON, Blocks.CRIMSON_PLANKS), CRIMSON_WINDOW = woodenWindowBlock(WoodType.CRIMSON, Blocks.CRIMSON_PLANKS),
WARPED_WINDOW = woodenWindowBlock(WoodType.WARPED, Blocks.WARPED_PLANKS), WARPED_WINDOW = woodenWindowBlock(WoodType.WARPED, Blocks.WARPED_PLANKS),
ORNATE_IRON_WINDOW = customWindowBlock("ornate_iron_window", AllItems.ANDESITE_ALLOY, ORNATE_IRON_WINDOW =
() -> AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped); customWindowBlock("ornate_iron_window", AllItems.ANDESITE_ALLOY, () -> AllSpriteShifts.ORNATE_IRON_WINDOW,
() -> RenderType::cutoutMipped, () -> MaterialColor.TERRACOTTA_LIGHT_GRAY);
public static final BlockEntry<ConnectedGlassPaneBlock> OAK_WINDOW_PANE = public static final BlockEntry<ConnectedGlassPaneBlock> OAK_WINDOW_PANE =
woodenWindowPane(WoodType.OAK, OAK_WINDOW), woodenWindowPane(WoodType.OAK, OAK_WINDOW),

View file

@ -15,6 +15,7 @@ import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.material.MaterialColor;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
public enum AllPaletteStoneTypes { public enum AllPaletteStoneTypes {
@ -28,29 +29,36 @@ public enum AllPaletteStoneTypes {
TUFF(VANILLA_RANGE, r -> () -> Blocks.TUFF), TUFF(VANILLA_RANGE, r -> () -> Blocks.TUFF),
ASURINE(STANDARD_RANGE, r -> r.paletteStoneBlock("asurine", () -> Blocks.DEEPSLATE, true) ASURINE(STANDARD_RANGE, r -> r.paletteStoneBlock("asurine", () -> Blocks.DEEPSLATE, true)
.properties(p -> p.destroyTime(1.25f)) .properties(p -> p.destroyTime(1.25f)
.color(MaterialColor.COLOR_BLUE))
.register()), .register()),
CRIMSITE(STANDARD_RANGE, r -> r.paletteStoneBlock("crimsite", () -> Blocks.DEEPSLATE, true) CRIMSITE(STANDARD_RANGE, r -> r.paletteStoneBlock("crimsite", () -> Blocks.DEEPSLATE, true)
.properties(p -> p.destroyTime(1.25f)) .properties(p -> p.destroyTime(1.25f)
.color(MaterialColor.COLOR_RED))
.register()), .register()),
LIMESTONE(STANDARD_RANGE, r -> r.paletteStoneBlock("limestone", () -> Blocks.SANDSTONE, true) LIMESTONE(STANDARD_RANGE, r -> r.paletteStoneBlock("limestone", () -> Blocks.SANDSTONE, true)
.properties(p -> p.destroyTime(1.25f)) .properties(p -> p.destroyTime(1.25f)
.color(MaterialColor.SAND))
.register()), .register()),
OCHRUM(STANDARD_RANGE, r -> r.paletteStoneBlock("ochrum", () -> Blocks.CALCITE, true) OCHRUM(STANDARD_RANGE, r -> r.paletteStoneBlock("ochrum", () -> Blocks.CALCITE, true)
.properties(p -> p.destroyTime(1.25f)) .properties(p -> p.destroyTime(1.25f)
.color(MaterialColor.TERRACOTTA_YELLOW))
.register()), .register()),
SCORIA(STANDARD_RANGE, r -> r.paletteStoneBlock("scoria", () -> Blocks.BLACKSTONE, true) SCORIA(STANDARD_RANGE, r -> r.paletteStoneBlock("scoria", () -> Blocks.BLACKSTONE, true)
.properties(p -> p.color(MaterialColor.COLOR_BROWN))
.register()), .register()),
SCORCHIA(STANDARD_RANGE, r -> r.paletteStoneBlock("scorchia", () -> Blocks.BLACKSTONE, true) SCORCHIA(STANDARD_RANGE, r -> r.paletteStoneBlock("scorchia", () -> Blocks.BLACKSTONE, true)
.properties(p -> p.color(MaterialColor.TERRACOTTA_GRAY))
.register()), .register()),
VERIDIUM(STANDARD_RANGE, r -> r.paletteStoneBlock("veridium", () -> Blocks.TUFF, true) VERIDIUM(STANDARD_RANGE, r -> r.paletteStoneBlock("veridium", () -> Blocks.TUFF, true)
.properties(p -> p.destroyTime(1.25f)) .properties(p -> p.destroyTime(1.25f)
.color(MaterialColor.WARPED_NYLIUM))
.register()) .register())
; ;
@ -81,7 +89,8 @@ public enum AllPaletteStoneTypes {
NonNullSupplier<Block> baseBlock = paletteStoneVariants.factory.apply(registrate); NonNullSupplier<Block> baseBlock = paletteStoneVariants.factory.apply(registrate);
paletteStoneVariants.baseBlock = baseBlock; paletteStoneVariants.baseBlock = baseBlock;
String id = Lang.asId(paletteStoneVariants.name()); String id = Lang.asId(paletteStoneVariants.name());
paletteStoneVariants.materialTag = AllTags.optionalTag(ForgeRegistries.ITEMS, Create.asResource("stone_types/" + id)); paletteStoneVariants.materialTag =
AllTags.optionalTag(ForgeRegistries.ITEMS, Create.asResource("stone_types/" + id));
paletteStoneVariants.variants = new PalettesVariantEntry(id, paletteStoneVariants); paletteStoneVariants.variants = new PalettesVariantEntry(id, paletteStoneVariants);
} }
} }

View file

@ -37,6 +37,7 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockBehaviour.Properties; import net.minecraft.world.level.block.state.BlockBehaviour.Properties;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.WoodType; import net.minecraft.world.level.block.state.properties.WoodType;
import net.minecraft.world.level.material.MaterialColor;
import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.client.model.generators.ModelFile;
import net.minecraftforge.common.Tags; import net.minecraftforge.common.Tags;
@ -65,10 +66,10 @@ public class WindowGen {
} }
public static BlockEntry<WindowBlock> customWindowBlock(String name, Supplier<? extends ItemLike> ingredient, public static BlockEntry<WindowBlock> customWindowBlock(String name, Supplier<? extends ItemLike> ingredient,
Supplier<CTSpriteShiftEntry> ct, Supplier<Supplier<RenderType>> renderType) { Supplier<CTSpriteShiftEntry> ct, Supplier<Supplier<RenderType>> renderType, Supplier<MaterialColor> color) {
NonNullFunction<String, ResourceLocation> end_texture = n -> Create.asResource(palettesDir() + name + "_end"); NonNullFunction<String, ResourceLocation> end_texture = n -> Create.asResource(palettesDir() + name + "_end");
NonNullFunction<String, ResourceLocation> side_texture = n -> Create.asResource(palettesDir() + n); NonNullFunction<String, ResourceLocation> side_texture = n -> Create.asResource(palettesDir() + n);
return windowBlock(name, ingredient, ct, renderType, end_texture, side_texture); return windowBlock(name, ingredient, ct, renderType, end_texture, side_texture, color);
} }
public static BlockEntry<WindowBlock> woodenWindowBlock(WoodType woodType, Block planksBlock, public static BlockEntry<WindowBlock> woodenWindowBlock(WoodType woodType, Block planksBlock,
@ -78,13 +79,14 @@ public class WindowGen {
NonNullFunction<String, ResourceLocation> end_texture = NonNullFunction<String, ResourceLocation> end_texture =
$ -> new ResourceLocation("block/" + woodName + "_planks"); $ -> new ResourceLocation("block/" + woodName + "_planks");
NonNullFunction<String, ResourceLocation> side_texture = n -> Create.asResource(palettesDir() + n); NonNullFunction<String, ResourceLocation> side_texture = n -> Create.asResource(palettesDir() + n);
return windowBlock(name, () -> planksBlock, () -> AllSpriteShifts.getWoodenWindow(woodType), renderType, end_texture, return windowBlock(name, () -> planksBlock, () -> AllSpriteShifts.getWoodenWindow(woodType), renderType,
side_texture); end_texture, side_texture, planksBlock::defaultMaterialColor);
} }
public static BlockEntry<WindowBlock> windowBlock(String name, Supplier<? extends ItemLike> ingredient, public static BlockEntry<WindowBlock> windowBlock(String name, Supplier<? extends ItemLike> ingredient,
Supplier<CTSpriteShiftEntry> ct, Supplier<Supplier<RenderType>> renderType, Supplier<CTSpriteShiftEntry> ct, Supplier<Supplier<RenderType>> renderType,
NonNullFunction<String, ResourceLocation> endTexture, NonNullFunction<String, ResourceLocation> sideTexture) { NonNullFunction<String, ResourceLocation> endTexture, NonNullFunction<String, ResourceLocation> sideTexture,
Supplier<MaterialColor> color) {
return REGISTRATE.block(name, WindowBlock::new) return REGISTRATE.block(name, WindowBlock::new)
.onRegister(connectedTextures(() -> new HorizontalCTBehaviour(ct.get()))) .onRegister(connectedTextures(() -> new HorizontalCTBehaviour(ct.get())))
.addLayer(renderType) .addLayer(renderType)
@ -97,6 +99,7 @@ public class WindowGen {
.save(p::accept)) .save(p::accept))
.initialProperties(() -> Blocks.GLASS) .initialProperties(() -> Blocks.GLASS)
.properties(WindowGen::glassProperties) .properties(WindowGen::glassProperties)
.properties(p -> p.color(color.get()))
.loot((t, g) -> t.dropWhenSilkTouch(g)) .loot((t, g) -> t.dropWhenSilkTouch(g))
.blockstate((c, p) -> p.simpleBlock(c.get(), p.models() .blockstate((c, p) -> p.simpleBlock(c.get(), p.models()
.cubeColumn(c.getName(), sideTexture.apply(c.getName()), endTexture.apply(c.getName())))) .cubeColumn(c.getName(), sideTexture.apply(c.getName()), endTexture.apply(c.getName()))))
@ -105,7 +108,8 @@ public class WindowGen {
.register(); .register();
} }
public static BlockEntry<ConnectedGlassBlock> framedGlass(String name, Supplier<ConnectedTextureBehaviour> behaviour) { public static BlockEntry<ConnectedGlassBlock> framedGlass(String name,
Supplier<ConnectedTextureBehaviour> behaviour) {
return REGISTRATE.block(name, ConnectedGlassBlock::new) return REGISTRATE.block(name, ConnectedGlassBlock::new)
.onRegister(connectedTextures(behaviour)) .onRegister(connectedTextures(behaviour))
.addLayer(() -> RenderType::translucent) .addLayer(() -> RenderType::translucent)
@ -150,8 +154,8 @@ public class WindowGen {
String name = woodName + "_window"; String name = woodName + "_window";
ResourceLocation topTexture = new ResourceLocation("block/" + woodName + "_planks"); ResourceLocation topTexture = new ResourceLocation("block/" + woodName + "_planks");
ResourceLocation sideTexture = Create.asResource(palettesDir() + name); ResourceLocation sideTexture = Create.asResource(palettesDir() + name);
return connectedGlassPane(name, parent, () -> AllSpriteShifts.getWoodenWindow(woodType), sideTexture, sideTexture, return connectedGlassPane(name, parent, () -> AllSpriteShifts.getWoodenWindow(woodType), sideTexture,
topTexture, renderType); sideTexture, topTexture, renderType);
} }
public static BlockEntry<GlassPaneBlock> standardGlassPane(String name, Supplier<? extends Block> parent, public static BlockEntry<GlassPaneBlock> standardGlassPane(String name, Supplier<? extends Block> parent,
@ -203,6 +207,8 @@ public class WindowGen {
.onRegister(connectedTextures) .onRegister(connectedTextures)
.addLayer(renderType) .addLayer(renderType)
.initialProperties(() -> Blocks.GLASS_PANE) .initialProperties(() -> Blocks.GLASS_PANE)
.properties(p -> p.color(parent.get()
.defaultMaterialColor()))
.blockstate(stateProvider) .blockstate(stateProvider)
.recipe((c, p) -> ShapedRecipeBuilder.shaped(c.get(), 16) .recipe((c, p) -> ShapedRecipeBuilder.shaped(c.get(), 16)
.pattern("###") .pattern("###")

View file

@ -140,6 +140,10 @@ public class CrushingRecipeGen extends ProcessingRecipeGen {
.output(Items.GLOWSTONE_DUST, 3) .output(Items.GLOWSTONE_DUST, 3)
.output(.5f, Items.GLOWSTONE_DUST)), .output(.5f, Items.GLOWSTONE_DUST)),
AMETHYST_BLOCK = create(() -> Blocks.AMETHYST_BLOCK, b -> b.duration(150)
.output(Items.AMETHYST_SHARD, 3)
.output(.5f, Items.AMETHYST_SHARD)),
LEATHER_HORSE_ARMOR = create(() -> Items.LEATHER_HORSE_ARMOR, b -> b.duration(200) LEATHER_HORSE_ARMOR = create(() -> Items.LEATHER_HORSE_ARMOR, b -> b.duration(200)
.output(Items.LEATHER, 2) .output(Items.LEATHER, 2)
.output(.5f, Items.LEATHER, 2)), .output(.5f, Items.LEATHER, 2)),