mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-02-27 20:34:43 +01:00
Merge branch 'mc1.18/dev' into mc1.19/dev
This commit is contained in:
commit
cfff4e42a0
90 changed files with 66767 additions and 63963 deletions
|
@ -52,7 +52,6 @@ minecraft {
|
|||
client {
|
||||
workingDirectory project.file('run')
|
||||
arg '-mixin.config=create.mixins.json'
|
||||
arg '-mixin.config=flywheel.mixins.json'
|
||||
//jvmArgs '-XX:+UnlockCommercialFeatures' // uncomment for profiling
|
||||
property 'forge.logging.console.level', 'info'
|
||||
mods {
|
||||
|
@ -81,6 +80,7 @@ minecraft {
|
|||
|
||||
data {
|
||||
workingDirectory project.file('run')
|
||||
arg '-mixin.config=create.mixins.json'
|
||||
property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP'
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
args '--mod', 'create', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources')
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
"translation": "src/main/resources/assets/create/lang/%locale_with_underscore%.json",
|
||||
"languages_mapping": {
|
||||
"locale_with_underscore": {
|
||||
"be": "be_by",
|
||||
"cs": "cs_cz",
|
||||
"cy": "cy_gb",
|
||||
"da": "da_dk",
|
||||
|
@ -18,6 +19,7 @@
|
|||
"es-CL": "es_cl",
|
||||
"es-ES": "es_es",
|
||||
"es-MX": "es_mx",
|
||||
"et": "et_ee",
|
||||
"fa": "fa_ir",
|
||||
"fi": "fi_fi",
|
||||
"fr": "fr_fr",
|
||||
|
@ -41,6 +43,7 @@
|
|||
"tok": "tok",
|
||||
"tr": "tr_tr",
|
||||
"uk": "uk_ua",
|
||||
"vi": "vi_vn",
|
||||
"zh-CN": "zh_cn",
|
||||
"zh-TW": "zh_tw",
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:blaze_burner"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:lit_blaze_burner",
|
||||
"minecraft:soul_fire",
|
||||
"minecraft:soul_campfire"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:blaze_burner",
|
||||
"create:lit_blaze_burner",
|
||||
"minecraft:fire",
|
||||
"minecraft:campfire"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": []
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:lava",
|
||||
"minecraft:flowing_lava"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": []
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": []
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:water",
|
||||
"minecraft:flowing_water"
|
||||
]
|
||||
}
|
|
@ -288,6 +288,70 @@
|
|||
"id": "blue_skies:stripped_cherry_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "environmental:stripped_cherry_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "environmental:stripped_willow_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "environmental:stripped_wisteria_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_aspen_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_kousa_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_yucca_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_morado_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_rosewood_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_grimwood_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "goodending:stripped_muddy_oak_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "goodending:stripped_cypress_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "biomemakeover:stripped_blighted_balsa_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "biomemakeover:stripped_willow_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "biomemakeover:stripped_swamp_cypress_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "biomemakeover:stripped_ancient_oak_log",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "infernalexp:stripped_luminous_stem",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "byg:stripped_bulbis_stem",
|
||||
"required": false
|
||||
|
|
|
@ -288,6 +288,70 @@
|
|||
"id": "blue_skies:stripped_cherry_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "environmental:stripped_cherry_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "environmental:stripped_willow_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "environmental:stripped_wisteria_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_aspen_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_kousa_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_yucca_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_morado_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_rosewood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "atmospheric:stripped_grimwood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "goodending:stripped_muddy_oak_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "goodending:stripped_cypress_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "biomemakeover:stripped_blighted_balsa_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "biomemakeover:stripped_willow_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "biomemakeover:stripped_swamp_cypress_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "biomemakeover:stripped_ancient_oak_wood",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "infernalexp:stripped_luminous_hyphae",
|
||||
"required": false
|
||||
},
|
||||
{
|
||||
"id": "byg:stripped_bulbis_wood",
|
||||
"required": false
|
||||
|
|
|
@ -361,8 +361,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<CogWheelBlock> COGWHEEL = REGISTRATE.block("cogwheel", CogWheelBlock::small)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.sound(SoundType.WOOD))
|
||||
.properties(p -> p.color(MaterialColor.DIRT))
|
||||
.properties(p -> p.sound(SoundType.WOOD).color(MaterialColor.DIRT))
|
||||
.transform(BlockStressDefaults.setNoImpact())
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(BlockStateGen.axisBlockProvider(false))
|
||||
|
@ -374,8 +373,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<CogWheelBlock> LARGE_COGWHEEL =
|
||||
REGISTRATE.block("large_cogwheel", CogWheelBlock::large)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.sound(SoundType.WOOD))
|
||||
.properties(p -> p.color(MaterialColor.DIRT))
|
||||
.properties(p -> p.sound(SoundType.WOOD).color(MaterialColor.DIRT))
|
||||
.transform(axeOrPickaxe())
|
||||
.transform(BlockStressDefaults.setNoImpact())
|
||||
.blockstate(BlockStateGen.axisBlockProvider(false))
|
||||
|
@ -441,8 +439,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<GearboxBlock> GEARBOX = REGISTRATE.block("gearbox", GearboxBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.PODZOL))
|
||||
.transform(BlockStressDefaults.setNoImpact())
|
||||
.transform(axeOrPickaxe())
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING)))
|
||||
|
@ -455,8 +452,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<ClutchBlock> CLUTCH = REGISTRATE.block("clutch", ClutchBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.PODZOL))
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.transform(BlockStressDefaults.setNoImpact())
|
||||
.transform(axeOrPickaxe())
|
||||
|
@ -467,8 +463,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<GearshiftBlock> GEARSHIFT = REGISTRATE.block("gearshift", GearshiftBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.PODZOL))
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.transform(BlockStressDefaults.setNoImpact())
|
||||
.transform(axeOrPickaxe())
|
||||
|
@ -480,8 +475,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<ChainDriveBlock> ENCASED_CHAIN_DRIVE =
|
||||
REGISTRATE.block("encased_chain_drive", ChainDriveBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.PODZOL))
|
||||
.transform(BlockStressDefaults.setNoImpact())
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate((c, p) -> new ChainDriveGenerator((state, suffix) -> p.models()
|
||||
|
@ -493,8 +487,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<ChainGearshiftBlock> ADJUSTABLE_CHAIN_GEARSHIFT =
|
||||
REGISTRATE.block("adjustable_chain_gearshift", ChainGearshiftBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.color(MaterialColor.NETHER))
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.NETHER))
|
||||
.transform(BlockStressDefaults.setNoImpact())
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate((c, p) -> new ChainDriveGenerator((state, suffix) -> {
|
||||
|
@ -512,10 +505,10 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<BeltBlock> BELT = REGISTRATE.block("belt", BeltBlock::new)
|
||||
.initialProperties(SharedProperties.BELT_MATERIAL, MaterialColor.COLOR_GRAY)
|
||||
.properties(p -> p.sound(SoundType.WOOL)
|
||||
.strength(0.8F)
|
||||
.color(MaterialColor.COLOR_GRAY))
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.properties(p -> p.sound(SoundType.WOOL))
|
||||
.properties(p -> p.strength(0.8F))
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(new BeltGenerator()::generate)
|
||||
.transform(BlockStressDefaults.setImpact(0))
|
||||
|
@ -539,8 +532,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<WaterWheelBlock> WATER_WHEEL = REGISTRATE.block("water_wheel", WaterWheelBlock::new)
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.properties(p -> p.color(MaterialColor.DIRT))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.DIRT))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(
|
||||
(c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, s -> AssetLookup.partialBaseModel(c, p)))
|
||||
|
@ -554,8 +546,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<LargeWaterWheelBlock> LARGE_WATER_WHEEL =
|
||||
REGISTRATE.block("large_water_wheel", LargeWaterWheelBlock::new)
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.properties(p -> p.color(MaterialColor.DIRT))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.DIRT))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate((c, p) -> axisBlock(c, p,
|
||||
s -> s.getValue(LargeWaterWheelBlock.EXTENSION) ? AssetLookup.partialBaseModel(c, p, "extension")
|
||||
|
@ -571,8 +562,7 @@ public class AllBlocks {
|
|||
.initialProperties(SharedProperties::wooden)
|
||||
.blockstate((c, p) -> p.getVariantBuilder(c.get())
|
||||
.forAllStatesExcept(BlockStateGen.mapToAir(p), WaterWheelStructuralBlock.FACING))
|
||||
.properties(p -> p.color(MaterialColor.DIRT))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.DIRT))
|
||||
.transform(axeOrPickaxe())
|
||||
.lang("Large Water Wheel")
|
||||
.register();
|
||||
|
@ -665,8 +655,8 @@ public class AllBlocks {
|
|||
public static final BlockEntry<CrushingWheelControllerBlock> CRUSHING_WHEEL_CONTROLLER =
|
||||
REGISTRATE.block("crushing_wheel_controller", CrushingWheelControllerBlock::new)
|
||||
.initialProperties(SharedProperties.CRUSHING_WHEEL_CONTROLLER_MATERIAL)
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.properties(p -> p.noOcclusion()
|
||||
.properties(p -> p.color(MaterialColor.STONE)
|
||||
.noOcclusion()
|
||||
.noLootTable()
|
||||
.air())
|
||||
.blockstate((c, p) -> p.getVariantBuilder(c.get())
|
||||
|
@ -676,8 +666,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<MechanicalPressBlock> MECHANICAL_PRESS =
|
||||
REGISTRATE.block("mechanical_press", MechanicalPressBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.PODZOL))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(BlockStateGen.horizontalBlockProvider(true))
|
||||
.transform(BlockStressDefaults.setImpact(8.0))
|
||||
|
@ -688,8 +677,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<MechanicalMixerBlock> MECHANICAL_MIXER =
|
||||
REGISTRATE.block("mechanical_mixer", MechanicalMixerBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.STONE))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
|
@ -700,8 +688,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<BasinBlock> BASIN = REGISTRATE.block("basin", BasinBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new BasinGenerator()::generate)
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
|
@ -713,11 +700,10 @@ public class AllBlocks {
|
|||
public static final BlockEntry<BlazeBurnerBlock> BLAZE_BURNER =
|
||||
REGISTRATE.block("blaze_burner", BlazeBurnerBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.properties(p -> p.lightLevel(BlazeBurnerBlock::getLight))
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY).lightLevel(BlazeBurnerBlock::getLight))
|
||||
.transform(pickaxeOnly())
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
|
||||
.tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_BLASTING.tag, AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.tag, AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
|
||||
.loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable()))
|
||||
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
|
||||
.onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour()))
|
||||
|
@ -730,11 +716,10 @@ public class AllBlocks {
|
|||
public static final BlockEntry<LitBlazeBurnerBlock> LIT_BLAZE_BURNER =
|
||||
REGISTRATE.block("lit_blaze_burner", LitBlazeBurnerBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY))
|
||||
.properties(p -> p.lightLevel(LitBlazeBurnerBlock::getLight))
|
||||
.properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY).lightLevel(LitBlazeBurnerBlock::getLight))
|
||||
.transform(pickaxeOnly())
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
|
||||
.tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_HAUNTING.tag, AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.tag, AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
|
||||
.loot((lt, block) -> lt.dropOther(block, AllItems.EMPTY_BLAZE_BURNER.get()))
|
||||
.blockstate((c, p) -> p.getVariantBuilder(c.get())
|
||||
.forAllStates(state -> ConfiguredModel.builder()
|
||||
|
@ -759,8 +744,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<EjectorBlock> WEIGHTED_EJECTOR =
|
||||
REGISTRATE.block("weighted_ejector", EjectorBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.COLOR_GRAY))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p), 180))
|
||||
.transform(BlockStressDefaults.setImpact(2.0))
|
||||
|
@ -770,10 +754,8 @@ public class AllBlocks {
|
|||
.register();
|
||||
|
||||
public static final BlockEntry<ChuteBlock> CHUTE = REGISTRATE.block("chute", ChuteBlock::new)
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK))
|
||||
.transform(pickaxeOnly())
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.blockstate(new ChuteGenerator()::generate)
|
||||
|
@ -782,12 +764,12 @@ public class AllBlocks {
|
|||
.register();
|
||||
|
||||
public static final BlockEntry<SmartChuteBlock> SMART_CHUTE = REGISTRATE.block("smart_chute", SmartChuteBlock::new)
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.noOcclusion())
|
||||
.properties(p -> p.isRedstoneConductor((level, pos, state) -> false))
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY)
|
||||
.sound(SoundType.NETHERITE_BLOCK)
|
||||
.noOcclusion()
|
||||
.isRedstoneConductor((level, pos, state) -> false))
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p)))
|
||||
.item()
|
||||
|
@ -846,8 +828,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<EncasedPipeBlock> ENCASED_FLUID_PIPE =
|
||||
REGISTRATE.block("encased_fluid_pipe", p -> new EncasedPipeBlock(p, AllBlocks.COPPER_CASING::get))
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(BlockStateGen.encasedPipe())
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
|
@ -936,8 +917,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<FluidTankBlock> FLUID_TANK = REGISTRATE.block("fluid_tank", FluidTankBlock::regular)
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.isRedstoneConductor((p1, p2, p3) -> true))
|
||||
.properties(p -> p.noOcclusion().isRedstoneConductor((p1, p2, p3) -> true))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new FluidTankGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::standard))
|
||||
|
@ -951,8 +931,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<FluidTankBlock> CREATIVE_FLUID_TANK =
|
||||
REGISTRATE.block("creative_fluid_tank", FluidTankBlock::creative)
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_PURPLE))
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.COLOR_PURPLE))
|
||||
.transform(pickaxeOnly())
|
||||
.tag(AllBlockTags.SAFE_NBT.tag)
|
||||
.blockstate(new FluidTankGenerator("creative_")::generate)
|
||||
|
@ -1066,8 +1045,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<PistonExtensionPoleBlock> PISTON_EXTENSION_POLE =
|
||||
REGISTRATE.block("piston_extension_pole", PistonExtensionPoleBlock::new)
|
||||
.initialProperties(() -> Blocks.PISTON_HEAD)
|
||||
.properties(p -> p.sound(SoundType.SCAFFOLDING))
|
||||
.properties(p -> p.color(MaterialColor.DIRT))
|
||||
.properties(p -> p.sound(SoundType.SCAFFOLDING).color(MaterialColor.DIRT))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false))
|
||||
.simpleItem()
|
||||
|
@ -1087,8 +1065,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<GantryCarriageBlock> GANTRY_CARRIAGE =
|
||||
REGISTRATE.block("gantry_carriage", GantryCarriageBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.PODZOL))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(BlockStateGen.directionalAxisBlockProvider())
|
||||
.item()
|
||||
|
@ -1193,8 +1170,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<CartAssemblerBlock> CART_ASSEMBLER =
|
||||
REGISTRATE.block("cart_assembler", CartAssemblerBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.COLOR_GRAY))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(BlockStateGen.cartAssembler())
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
|
@ -1350,8 +1326,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<ElevatorContactBlock> ELEVATOR_CONTACT =
|
||||
REGISTRATE.block("elevator_contact", ElevatorContactBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
|
||||
.properties(p -> p.lightLevel(ElevatorContactBlock::getLight))
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW).lightLevel(ElevatorContactBlock::getLight))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate((c, p) -> p.directionalBlock(c.get(), state -> {
|
||||
Boolean calling = state.getValue(ElevatorContactBlock.CALLING);
|
||||
|
@ -1406,8 +1381,8 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<SailBlock> SAIL_FRAME = REGISTRATE.block("sail_frame", p -> SailBlock.frame(p))
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.properties(p -> p.color(MaterialColor.DIRT))
|
||||
.properties(p -> p.sound(SoundType.SCAFFOLDING)
|
||||
.properties(p -> p.color(MaterialColor.DIRT)
|
||||
.sound(SoundType.SCAFFOLDING)
|
||||
.noOcclusion())
|
||||
.transform(axeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProvider(false))
|
||||
|
@ -1420,8 +1395,8 @@ public class AllBlocks {
|
|||
public static final BlockEntry<SailBlock> SAIL =
|
||||
REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p, DyeColor.WHITE))
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.properties(p -> p.color(MaterialColor.SNOW))
|
||||
.properties(p -> p.sound(SoundType.SCAFFOLDING)
|
||||
.properties(p -> p.color(MaterialColor.SNOW)
|
||||
.sound(SoundType.SCAFFOLDING)
|
||||
.noOcclusion())
|
||||
.transform(axeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProvider(false))
|
||||
|
@ -1438,8 +1413,8 @@ public class AllBlocks {
|
|||
String colourName = colour.getSerializedName();
|
||||
return REGISTRATE.block(colourName + "_sail", p -> SailBlock.withCanvas(p, colour))
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.properties(p -> p.color(colour.getMaterialColor()))
|
||||
.properties(p -> p.sound(SoundType.SCAFFOLDING)
|
||||
.properties(p -> p.color(colour.getMaterialColor())
|
||||
.sound(SoundType.SCAFFOLDING)
|
||||
.noOcclusion())
|
||||
.transform(axeOnly())
|
||||
.blockstate((c, p) -> p.directionalBlock(c.get(), p.models()
|
||||
|
@ -1461,8 +1436,7 @@ public class AllBlocks {
|
|||
.register();
|
||||
|
||||
public static final BlockEntry<CasingBlock> COPPER_CASING = REGISTRATE.block("copper_casing", CasingBlock::new)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY))
|
||||
.properties(p -> p.sound(SoundType.COPPER))
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY).sound(SoundType.COPPER))
|
||||
.transform(BuilderTransformers.casing(() -> AllSpriteShifts.COPPER_CASING))
|
||||
.register();
|
||||
|
||||
|
@ -1484,8 +1458,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<MechanicalCrafterBlock> MECHANICAL_CRAFTER =
|
||||
REGISTRATE.block("mechanical_crafter", MechanicalCrafterBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.TERRACOTTA_YELLOW))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(BlockStateGen.horizontalBlockProvider(true))
|
||||
.transform(BlockStressDefaults.setImpact(2.0))
|
||||
|
@ -1510,8 +1483,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<FlywheelBlock> FLYWHEEL = REGISTRATE.block("flywheel", FlywheelBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.TERRACOTTA_YELLOW))
|
||||
.transform(axeOrPickaxe())
|
||||
.transform(BlockStressDefaults.setNoImpact())
|
||||
.blockstate(BlockStateGen.axisBlockProvider(true))
|
||||
|
@ -1579,15 +1551,13 @@ public class AllBlocks {
|
|||
public static final BlockEntry<CasingBlock> RAILWAY_CASING = REGISTRATE.block("railway_casing", CasingBlock::new)
|
||||
.transform(BuilderTransformers.layeredCasing(() -> AllSpriteShifts.RAILWAY_CASING_SIDE,
|
||||
() -> AllSpriteShifts.RAILWAY_CASING))
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_CYAN))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_CYAN).sound(SoundType.NETHERITE_BLOCK))
|
||||
.lang("Train Casing")
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<StationBlock> TRACK_STATION = REGISTRATE.block("track_station", StationBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.color(MaterialColor.PODZOL).sound(SoundType.NETHERITE_BLOCK))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p)))
|
||||
.onRegister(assignDataBehaviour(new StationSummaryDisplaySource(), "station_summary"))
|
||||
|
@ -1599,9 +1569,9 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<SignalBlock> TRACK_SIGNAL = REGISTRATE.block("track_signal", SignalBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
.properties(p -> p.noOcclusion())
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.color(MaterialColor.PODZOL)
|
||||
.noOcclusion()
|
||||
.sound(SoundType.NETHERITE_BLOCK))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate((c, p) -> p.getVariantBuilder(c.get())
|
||||
.forAllStates(state -> ConfiguredModel.builder()
|
||||
|
@ -1616,9 +1586,9 @@ public class AllBlocks {
|
|||
public static final BlockEntry<TrackObserverBlock> TRACK_OBSERVER =
|
||||
REGISTRATE.block("track_observer", TrackObserverBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
.properties(p -> p.noOcclusion())
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.color(MaterialColor.PODZOL)
|
||||
.noOcclusion()
|
||||
.sound(SoundType.NETHERITE_BLOCK))
|
||||
.blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p)))
|
||||
.transform(pickaxeOnly())
|
||||
.onRegister(assignDataBehaviour(new ObservedTrainNameSource(), "observed_train_name"))
|
||||
|
@ -1641,8 +1611,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<ControlsBlock> TRAIN_CONTROLS = REGISTRATE.block("controls", ControlsBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN).sound(SoundType.NETHERITE_BLOCK))
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate((c, p) -> p.horizontalBlock(c.get(),
|
||||
|
@ -1657,8 +1626,8 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<ItemVaultBlock> ITEM_VAULT = REGISTRATE.block("item_vault", ItemVaultBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_BLUE))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_BLUE)
|
||||
.sound(SoundType.NETHERITE_BLOCK)
|
||||
.explosionResistance(1200))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate((c, p) -> p.getVariantBuilder(c.get())
|
||||
|
@ -1743,8 +1712,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<SmartObserverBlock> SMART_OBSERVER =
|
||||
REGISTRATE.block("content_observer", SmartObserverBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
|
||||
.properties(p -> p.noOcclusion())
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.TERRACOTTA_BROWN))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(new SmartObserverGenerator()::generate)
|
||||
.onRegister(assignDataBehaviour(new ItemCountDisplaySource(), "count_items"))
|
||||
|
@ -1759,8 +1727,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<ThresholdSwitchBlock> THRESHOLD_SWITCH =
|
||||
REGISTRATE.block("stockpile_switch", ThresholdSwitchBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
|
||||
.properties(p -> p.noOcclusion())
|
||||
.properties(p -> p.noOcclusion().color(MaterialColor.TERRACOTTA_BROWN))
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate(new ThresholdSwitchGenerator()::generate)
|
||||
.onRegister(assignDataBehaviour(new FillLevelDisplaySource(), "fill_level"))
|
||||
|
@ -1803,8 +1770,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<NixieTubeBlock> ORANGE_NIXIE_TUBE =
|
||||
REGISTRATE.block("nixie_tube", p -> new NixieTubeBlock(p, DyeColor.ORANGE))
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.lightLevel($ -> 5))
|
||||
.properties(p -> p.color(DyeColor.ORANGE.getMaterialColor()))
|
||||
.properties(p -> p.lightLevel($ -> 5).color(DyeColor.ORANGE.getMaterialColor()))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new NixieTubeGenerator()::generate)
|
||||
.addLayer(() -> RenderType::translucent)
|
||||
|
@ -1818,8 +1784,7 @@ public class AllBlocks {
|
|||
String colourName = colour.getSerializedName();
|
||||
return REGISTRATE.block(colourName + "_nixie_tube", p -> new NixieTubeBlock(p, colour))
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(colour.getMaterialColor()))
|
||||
.properties(p -> p.lightLevel($ -> 5))
|
||||
.properties(p -> p.lightLevel($ -> 5).color(colour.getMaterialColor()))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new NixieTubeGenerator()::generate)
|
||||
.loot((p, b) -> p.dropOther(b, ORANGE_NIXIE_TUBE.get()))
|
||||
|
@ -1952,8 +1917,7 @@ public class AllBlocks {
|
|||
String colourName = colour.getSerializedName();
|
||||
return REGISTRATE.block(colourName + "_toolbox", p -> new ToolboxBlock(p, colour))
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.properties(p -> p.sound(SoundType.WOOD))
|
||||
.properties(p -> p.color(colour.getMaterialColor()))
|
||||
.properties(p -> p.sound(SoundType.WOOD).color(colour.getMaterialColor()))
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.loot((lt, block) -> {
|
||||
Builder builder = LootTable.lootTable();
|
||||
|
@ -2050,10 +2014,9 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<GirderBlock> METAL_GIRDER = REGISTRATE.block("metal_girder", GirderBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.blockstate(GirderBlockStateGenerator::blockState)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(GirderBlockStateGenerator::blockState)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> ConnectedGirderModel::new))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
|
@ -2062,10 +2025,9 @@ public class AllBlocks {
|
|||
public static final BlockEntry<GirderEncasedShaftBlock> METAL_GIRDER_ENCASED_SHAFT =
|
||||
REGISTRATE.block("metal_girder_encased_shaft", GirderEncasedShaftBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.blockstate(GirderBlockStateGenerator::blockStateWithShaft)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(GirderBlockStateGenerator::blockStateWithShaft)
|
||||
.loot((p, b) -> p.add(b, RegistrateBlockLootTables.createSingleItemTable(METAL_GIRDER.get())
|
||||
.withPool(RegistrateBlockLootTables.applyExplosionCondition(SHAFT.get(), LootPool.lootPool()
|
||||
.setRolls(ConstantValue.exactly(1.0F))
|
||||
|
@ -2204,8 +2166,8 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<Block> ZINC_ORE = REGISTRATE.block("zinc_ore", Block::new)
|
||||
.initialProperties(() -> Blocks.GOLD_ORE)
|
||||
.properties(p -> p.color(MaterialColor.METAL))
|
||||
.properties(p -> p.requiresCorrectToolForDrops()
|
||||
.properties(p -> p.color(MaterialColor.METAL)
|
||||
.requiresCorrectToolForDrops()
|
||||
.sound(SoundType.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.loot((lt, b) -> lt.add(b,
|
||||
|
@ -2221,8 +2183,8 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<Block> DEEPSLATE_ZINC_ORE = REGISTRATE.block("deepslate_zinc_ore", Block::new)
|
||||
.initialProperties(() -> Blocks.DEEPSLATE_GOLD_ORE)
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.properties(p -> p.requiresCorrectToolForDrops()
|
||||
.properties(p -> p.color(MaterialColor.STONE)
|
||||
.requiresCorrectToolForDrops()
|
||||
.sound(SoundType.DEEPSLATE))
|
||||
.transform(pickaxeOnly())
|
||||
.loot((lt, b) -> lt.add(b,
|
||||
|
@ -2238,8 +2200,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<Block> RAW_ZINC_BLOCK = REGISTRATE.block("raw_zinc_block", Block::new)
|
||||
.initialProperties(() -> Blocks.RAW_GOLD_BLOCK)
|
||||
.properties(p -> p.color(MaterialColor.GLOW_LICHEN))
|
||||
.properties(p -> p.requiresCorrectToolForDrops())
|
||||
.properties(p -> p.color(MaterialColor.GLOW_LICHEN).requiresCorrectToolForDrops())
|
||||
.transform(pickaxeOnly())
|
||||
.tag(Tags.Blocks.STORAGE_BLOCKS)
|
||||
.tag(BlockTags.NEEDS_IRON_TOOL)
|
||||
|
@ -2251,8 +2212,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<Block> ZINC_BLOCK = REGISTRATE.block("zinc_block", Block::new)
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.properties(p -> p.color(MaterialColor.GLOW_LICHEN))
|
||||
.properties(p -> p.requiresCorrectToolForDrops())
|
||||
.properties(p -> p.color(MaterialColor.GLOW_LICHEN).requiresCorrectToolForDrops())
|
||||
.transform(pickaxeOnly())
|
||||
.tag(BlockTags.NEEDS_IRON_TOOL)
|
||||
.tag(Tags.Blocks.STORAGE_BLOCKS)
|
||||
|
@ -2265,8 +2225,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<Block> ANDESITE_ALLOY_BLOCK = REGISTRATE.block("andesite_alloy_block", Block::new)
|
||||
.initialProperties(() -> Blocks.ANDESITE)
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.properties(p -> p.requiresCorrectToolForDrops())
|
||||
.properties(p -> p.color(MaterialColor.STONE).requiresCorrectToolForDrops())
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(simpleCubeAll("andesite_block"))
|
||||
.tag(Tags.Blocks.STORAGE_BLOCKS)
|
||||
|
@ -2278,9 +2237,9 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<Block> INDUSTRIAL_IRON_BLOCK = REGISTRATE.block("industrial_iron_block", Block::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(p -> p.requiresCorrectToolForDrops())
|
||||
.properties(p -> p.color(MaterialColor.COLOR_GRAY)
|
||||
.sound(SoundType.NETHERITE_BLOCK)
|
||||
.requiresCorrectToolForDrops())
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate((c, p) -> p.simpleBlock(c.get(), p.models()
|
||||
.cubeColumn(c.getName(), p.modLoc("block/industrial_iron_block"),
|
||||
|
@ -2293,8 +2252,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<Block> BRASS_BLOCK = REGISTRATE.block("brass_block", Block::new)
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
|
||||
.properties(p -> p.requiresCorrectToolForDrops())
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW).requiresCorrectToolForDrops())
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(simpleCubeAll("brass_block"))
|
||||
.tag(BlockTags.NEEDS_IRON_TOOL)
|
||||
|
@ -2309,12 +2267,12 @@ public class AllBlocks {
|
|||
public static final BlockEntry<ExperienceBlock> EXPERIENCE_BLOCK =
|
||||
REGISTRATE.block("experience_block", ExperienceBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.PLANT))
|
||||
.properties(p -> p.sound(new ForgeSoundType(1, .5f, () -> SoundEvents.AMETHYST_BLOCK_BREAK,
|
||||
() -> SoundEvents.AMETHYST_BLOCK_STEP, () -> SoundEvents.AMETHYST_BLOCK_PLACE,
|
||||
() -> SoundEvents.AMETHYST_BLOCK_HIT, () -> SoundEvents.AMETHYST_BLOCK_FALL)))
|
||||
.properties(p -> p.requiresCorrectToolForDrops())
|
||||
.properties(p -> p.lightLevel(s -> 15))
|
||||
.properties(p -> p.color(MaterialColor.PLANT)
|
||||
.sound(new ForgeSoundType(1, .5f, () -> SoundEvents.AMETHYST_BLOCK_BREAK,
|
||||
() -> SoundEvents.AMETHYST_BLOCK_STEP, () -> SoundEvents.AMETHYST_BLOCK_PLACE,
|
||||
() -> SoundEvents.AMETHYST_BLOCK_HIT, () -> SoundEvents.AMETHYST_BLOCK_FALL))
|
||||
.requiresCorrectToolForDrops()
|
||||
.lightLevel(s -> 15))
|
||||
.blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.standardModel(c, p)))
|
||||
.transform(pickaxeOnly())
|
||||
.lang("Block of Experience")
|
||||
|
@ -2342,8 +2300,7 @@ public class AllBlocks {
|
|||
|
||||
public static final BlockEntry<Block> ROSE_QUARTZ_TILES = REGISTRATE.block("rose_quartz_tiles", Block::new)
|
||||
.initialProperties(() -> Blocks.DEEPSLATE)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_PINK))
|
||||
.properties(p -> p.requiresCorrectToolForDrops())
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_PINK).requiresCorrectToolForDrops())
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(simpleCubeAll("palettes/rose_quartz_tiles"))
|
||||
.recipe((c, p) -> p.stonecutting(DataIngredient.items(AllItems.POLISHED_ROSE_QUARTZ), c::get, 2))
|
||||
|
@ -2353,8 +2310,7 @@ public class AllBlocks {
|
|||
public static final BlockEntry<Block> SMALL_ROSE_QUARTZ_TILES =
|
||||
REGISTRATE.block("small_rose_quartz_tiles", Block::new)
|
||||
.initialProperties(() -> Blocks.DEEPSLATE)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_PINK))
|
||||
.properties(p -> p.requiresCorrectToolForDrops())
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_PINK).requiresCorrectToolForDrops())
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(simpleCubeAll("palettes/small_rose_quartz_tiles"))
|
||||
.recipe((c, p) -> p.stonecutting(DataIngredient.items(AllItems.POLISHED_ROSE_QUARTZ), c::get, 2))
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
|
@ -317,12 +318,10 @@ public class AllSoundEvents {
|
|||
});
|
||||
}
|
||||
|
||||
public static JsonObject provideLangEntries() {
|
||||
JsonObject object = new JsonObject();
|
||||
public static void provideLang(BiConsumer<String, String> consumer) {
|
||||
for (SoundEntry entry : ALL.values())
|
||||
if (entry.hasSubtitle())
|
||||
object.addProperty(entry.getSubtitleKey(), entry.getSubtitle());
|
||||
return object;
|
||||
consumer.accept(entry.getSubtitleKey(), entry.getSubtitle());
|
||||
}
|
||||
|
||||
public static SoundEntryProvider provider(DataGenerator generator) {
|
||||
|
|
|
@ -79,23 +79,27 @@ public class AllTags {
|
|||
|
||||
BRITTLE,
|
||||
CASING,
|
||||
CONTRAPTION_INVENTORY_DENY,
|
||||
COPYCAT_ALLOW,
|
||||
COPYCAT_DENY,
|
||||
FAN_PROCESSING_CATALYSTS_BLASTING(MOD, "fan_processing_catalysts/blasting"),
|
||||
FAN_PROCESSING_CATALYSTS_HAUNTING(MOD, "fan_processing_catalysts/haunting"),
|
||||
FAN_PROCESSING_CATALYSTS_SMOKING(MOD, "fan_processing_catalysts/smoking"),
|
||||
FAN_PROCESSING_CATALYSTS_SPLASHING(MOD, "fan_processing_catalysts/splashing"),
|
||||
FAN_TRANSPARENT,
|
||||
NON_MOVABLE,
|
||||
GIRDABLE_TRACKS,
|
||||
MOVABLE_EMPTY_COLLIDER,
|
||||
NON_MOVABLE,
|
||||
ORE_OVERRIDE_STONE,
|
||||
PASSIVE_BOILER_HEATERS,
|
||||
SAFE_NBT,
|
||||
SEATS,
|
||||
TOOLBOXES,
|
||||
TRACKS,
|
||||
GIRDABLE_TRACKS,
|
||||
TREE_ATTACHMENTS,
|
||||
VALVE_HANDLES,
|
||||
WINDMILL_SAILS,
|
||||
WRENCH_PICKUP,
|
||||
COPYCAT_ALLOW,
|
||||
COPYCAT_DENY,
|
||||
CONTRAPTION_INVENTORY_DENY,
|
||||
|
||||
RELOCATION_NOT_SUPPORTED(FORGE),
|
||||
WG_STONE(FORGE),
|
||||
|
@ -157,8 +161,10 @@ public class AllTags {
|
|||
BLAZE_BURNER_FUEL_REGULAR(MOD, "blaze_burner_fuel/regular"),
|
||||
BLAZE_BURNER_FUEL_SPECIAL(MOD, "blaze_burner_fuel/special"),
|
||||
CASING,
|
||||
CONTRAPTION_CONTROLLED,
|
||||
CREATE_INGOTS,
|
||||
CRUSHED_RAW_MATERIALS,
|
||||
DEPLOYABLE_DRINK,
|
||||
MODDED_STRIPPED_LOGS,
|
||||
MODDED_STRIPPED_WOOD,
|
||||
PRESSURIZED_AIR_SOURCES,
|
||||
|
@ -170,8 +176,6 @@ public class AllTags {
|
|||
VALVE_HANDLES,
|
||||
VANILLA_STRIPPED_LOGS,
|
||||
VANILLA_STRIPPED_WOOD,
|
||||
DEPLOYABLE_DRINK,
|
||||
CONTRAPTION_CONTROLLED,
|
||||
|
||||
STRIPPED_LOGS(FORGE),
|
||||
STRIPPED_WOOD(FORGE),
|
||||
|
@ -227,6 +231,10 @@ public class AllTags {
|
|||
|
||||
BOTTOMLESS_ALLOW(MOD, "bottomless/allow"),
|
||||
BOTTOMLESS_DENY(MOD, "bottomless/deny"),
|
||||
FAN_PROCESSING_CATALYSTS_BLASTING(MOD, "fan_processing_catalysts/blasting"),
|
||||
FAN_PROCESSING_CATALYSTS_HAUNTING(MOD, "fan_processing_catalysts/haunting"),
|
||||
FAN_PROCESSING_CATALYSTS_SMOKING(MOD, "fan_processing_catalysts/smoking"),
|
||||
FAN_PROCESSING_CATALYSTS_SPLASHING(MOD, "fan_processing_catalysts/splashing"),
|
||||
|
||||
HONEY(FORGE)
|
||||
|
||||
|
|
|
@ -27,15 +27,7 @@ import com.simibubi.create.content.trains.track.AllPortalTracks;
|
|||
import com.simibubi.create.foundation.advancement.AllAdvancements;
|
||||
import com.simibubi.create.foundation.advancement.AllTriggers;
|
||||
import com.simibubi.create.foundation.block.CopperRegistries;
|
||||
import com.simibubi.create.foundation.data.AllLangPartials;
|
||||
import com.simibubi.create.foundation.data.CreateRegistrate;
|
||||
import com.simibubi.create.foundation.data.LangMerger;
|
||||
import com.simibubi.create.foundation.data.RecipeSerializerTagGen;
|
||||
import com.simibubi.create.foundation.data.TagGen;
|
||||
import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen;
|
||||
import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen;
|
||||
import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen;
|
||||
import com.simibubi.create.foundation.data.recipe.StandardRecipeGen;
|
||||
import com.simibubi.create.foundation.item.ItemDescription;
|
||||
import com.simibubi.create.foundation.item.KineticStats;
|
||||
import com.simibubi.create.foundation.item.TooltipHelper.Palette;
|
||||
|
@ -43,19 +35,18 @@ import com.simibubi.create.foundation.item.TooltipModifier;
|
|||
import com.simibubi.create.foundation.utility.AttachedRegistry;
|
||||
import com.simibubi.create.infrastructure.command.ServerLagger;
|
||||
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||
import com.simibubi.create.infrastructure.data.CreateDatagen;
|
||||
import com.simibubi.create.infrastructure.worldgen.AllFeatures;
|
||||
import com.simibubi.create.infrastructure.worldgen.AllOreFeatureConfigEntries;
|
||||
import com.simibubi.create.infrastructure.worldgen.AllPlacementModifiers;
|
||||
import com.simibubi.create.infrastructure.worldgen.BuiltinRegistration;
|
||||
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.common.ForgeMod;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.data.event.GatherDataEvent;
|
||||
import net.minecraftforge.eventbus.api.EventPriority;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
|
@ -81,6 +72,10 @@ public class Create {
|
|||
@Deprecated
|
||||
public static final Random RANDOM = new Random();
|
||||
|
||||
/**
|
||||
* <b>Other mods should not use this field!</b> If you are an addon developer, create your own instance of
|
||||
* {@link CreateRegistrate}.
|
||||
*/
|
||||
public static final CreateRegistrate REGISTRATE = CreateRegistrate.create(ID);
|
||||
|
||||
static {
|
||||
|
@ -151,7 +146,7 @@ public class Create {
|
|||
CopperRegistries.inject();
|
||||
|
||||
modEventBus.addListener(Create::init);
|
||||
modEventBus.addListener(EventPriority.LOWEST, Create::gatherData);
|
||||
modEventBus.addListener(EventPriority.LOWEST, CreateDatagen::gatherData);
|
||||
modEventBus.addListener(AllSoundEvents::register);
|
||||
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> CreateClient.onCtorClient(modEventBus, forgeEventBus));
|
||||
|
@ -177,24 +172,6 @@ public class Create {
|
|||
});
|
||||
}
|
||||
|
||||
public static void gatherData(GatherDataEvent event) {
|
||||
TagGen.datagen();
|
||||
DataGenerator gen = event.getGenerator();
|
||||
if (event.includeClient()) {
|
||||
gen.addProvider(true, new LangMerger(gen, ID, NAME, AllLangPartials.values()));
|
||||
gen.addProvider(true, AllSoundEvents.provider(gen));
|
||||
}
|
||||
if (event.includeServer()) {
|
||||
gen.addProvider(true, new RecipeSerializerTagGen(gen, event.getExistingFileHelper()));
|
||||
gen.addProvider(true, new AllAdvancements(gen));
|
||||
gen.addProvider(true, new StandardRecipeGen(gen));
|
||||
gen.addProvider(true, new MechanicalCraftingRecipeGen(gen));
|
||||
gen.addProvider(true, new SequencedAssemblyRecipeGen(gen));
|
||||
ProcessingRecipeGen.registerAll(gen);
|
||||
// AllOreFeatureConfigEntries.gatherData(event);
|
||||
}
|
||||
}
|
||||
|
||||
public static ResourceLocation asResource(String path) {
|
||||
return new ResourceLocation(ID, path);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,83 @@
|
|||
package com.simibubi.create.api.event;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.eventbus.api.Event;
|
||||
|
||||
/**
|
||||
* This Event is fired when a two fluids meet in a pipe ({@link Flow})<br>
|
||||
* or when a fluid in a pipe meets with a fluid in the world
|
||||
* ({@link Spill}).<br>
|
||||
* <br>
|
||||
* If it is not null, the event's BlockState will be placed in world after
|
||||
* firing.
|
||||
*/
|
||||
public class PipeCollisionEvent extends Event {
|
||||
|
||||
private final Level level;
|
||||
private final BlockPos pos;
|
||||
protected final Fluid firstFluid, secondFluid;
|
||||
|
||||
@Nullable
|
||||
private BlockState state;
|
||||
|
||||
protected PipeCollisionEvent(Level level, BlockPos pos, Fluid firstFluid, Fluid secondFluid,
|
||||
@Nullable BlockState defaultState) {
|
||||
this.level = level;
|
||||
this.pos = pos;
|
||||
this.firstFluid = firstFluid;
|
||||
this.secondFluid = secondFluid;
|
||||
this.state = defaultState;
|
||||
}
|
||||
|
||||
public Level getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public BlockPos getPos() {
|
||||
return pos;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public BlockState getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(@Nullable BlockState state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public static class Flow extends PipeCollisionEvent {
|
||||
|
||||
public Flow(Level level, BlockPos pos, Fluid firstFluid, Fluid secondFluid, @Nullable BlockState defaultState) {
|
||||
super(level, pos, firstFluid, secondFluid, defaultState);
|
||||
}
|
||||
|
||||
public Fluid getFirstFluid() {
|
||||
return firstFluid;
|
||||
}
|
||||
|
||||
public Fluid getSecondFluid() {
|
||||
return secondFluid;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Spill extends PipeCollisionEvent {
|
||||
|
||||
public Spill(Level level, BlockPos pos, Fluid worldFluid, Fluid pipeFluid, @Nullable BlockState defaultState) {
|
||||
super(level, pos, worldFluid, pipeFluid, defaultState);
|
||||
}
|
||||
|
||||
public Fluid getWorldFluid() {
|
||||
return firstFluid;
|
||||
}
|
||||
|
||||
public Fluid getPipeFluid() {
|
||||
return secondFluid;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -278,8 +278,15 @@ public class RollerMovementBehaviour extends BlockBreakingMovementBehaviour {
|
|||
};
|
||||
rollerScout.travel(train.graph, lengthWiseOffset + 1, steering);
|
||||
|
||||
rollerScout.traversalCallback = (edge, coords) -> TrackPaverV2.pave(heightProfile, train.graph, edge,
|
||||
coords.getFirst(), coords.getSecond());
|
||||
rollerScout.traversalCallback = (edge, coords) -> {
|
||||
if (edge == null)
|
||||
return;
|
||||
if (edge.isInterDimensional())
|
||||
return;
|
||||
if (edge.node1.getLocation().dimension != context.world.dimension())
|
||||
return;
|
||||
TrackPaverV2.pave(heightProfile, train.graph, edge, coords.getFirst(), coords.getSecond());
|
||||
};
|
||||
rollerScout.travel(train.graph, distanceToTravel, steering);
|
||||
|
||||
for (Couple<Integer> entry : heightProfile.keys())
|
||||
|
@ -293,6 +300,9 @@ public class RollerMovementBehaviour extends BlockBreakingMovementBehaviour {
|
|||
BlockState stateToPaveWithAsSlab = getStateToPaveWithAsSlab(context);
|
||||
RollingMode mode = getMode(context);
|
||||
|
||||
if (mode != RollingMode.TUNNEL_PAVE && stateToPaveWith.isAir())
|
||||
return;
|
||||
|
||||
Vec3 directionVec = Vec3.atLowerCornerOf(context.state.getValue(RollerBlock.FACING)
|
||||
.getClockWise()
|
||||
.getNormal());
|
||||
|
|
|
@ -89,7 +89,7 @@ public class ElevatorPulleyBlockEntity extends PulleyBlockEntity {
|
|||
if (level.isClientSide())
|
||||
targetLevel = ec.clientYTarget;
|
||||
if (!wasArrived && !level.isClientSide()) {
|
||||
triggerContact(ec, targetLevel);
|
||||
triggerContact(ec, targetLevel - ec.contactYOffset);
|
||||
AllSoundEvents.CONTRAPTION_DISASSEMBLE.play(level, null, worldPosition.below((int) offset), 0.75f, 0.8f);
|
||||
}
|
||||
|
||||
|
|
|
@ -189,6 +189,8 @@ public class SuperGlueSelectionHandler {
|
|||
|
||||
if (!isGlue(player.getMainHandItem()))
|
||||
return false;
|
||||
if (!player.mayBuild())
|
||||
return false;
|
||||
|
||||
if (attack) {
|
||||
if (selected == null)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.simibubi.create.content.fluids;
|
||||
|
||||
import com.simibubi.create.AllFluids;
|
||||
import com.simibubi.create.api.event.PipeCollisionEvent;
|
||||
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
|
||||
import com.simibubi.create.foundation.advancement.AllAdvancements;
|
||||
import com.simibubi.create.foundation.fluid.FluidHelper;
|
||||
|
@ -14,53 +15,83 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
||||
|
||||
@EventBusSubscriber
|
||||
public class FluidReactions {
|
||||
|
||||
public static void handlePipeFlowCollision(Level world, BlockPos pos, FluidStack fluid, FluidStack fluid2) {
|
||||
public static void handlePipeFlowCollision(Level level, BlockPos pos, FluidStack fluid, FluidStack fluid2) {
|
||||
Fluid f1 = fluid.getFluid();
|
||||
Fluid f2 = fluid2.getFluid();
|
||||
|
||||
AdvancementBehaviour.tryAward(world, pos, AllAdvancements.CROSS_STREAMS);
|
||||
BlockHelper.destroyBlock(world, pos, 1);
|
||||
AdvancementBehaviour.tryAward(level, pos, AllAdvancements.CROSS_STREAMS);
|
||||
BlockHelper.destroyBlock(level, pos, 1);
|
||||
|
||||
if (f1 == Fluids.WATER && f2 == Fluids.LAVA || f2 == Fluids.WATER && f1 == Fluids.LAVA)
|
||||
world.setBlockAndUpdate(pos, Blocks.COBBLESTONE.defaultBlockState());
|
||||
else if (f1 == Fluids.LAVA && FluidHelper.hasBlockState(f2)) {
|
||||
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f2)
|
||||
.defaultFluidState());
|
||||
if (lavaInteraction != null)
|
||||
world.setBlockAndUpdate(pos, lavaInteraction);
|
||||
PipeCollisionEvent.Flow event = new PipeCollisionEvent.Flow(level, pos, f1, f2, null);
|
||||
MinecraftForge.EVENT_BUS.post(event);
|
||||
if (event.getState() != null)
|
||||
level.setBlockAndUpdate(pos, event.getState());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void handlePipeFlowCollisionFallback(PipeCollisionEvent.Flow event) {
|
||||
Fluid f1 = event.getFirstFluid();
|
||||
Fluid f2 = event.getSecondFluid();
|
||||
|
||||
if (f1 == Fluids.WATER && f2 == Fluids.LAVA || f2 == Fluids.WATER && f1 == Fluids.LAVA) {
|
||||
event.setState(Blocks.COBBLESTONE.defaultBlockState());
|
||||
} else if (f1 == Fluids.LAVA && FluidHelper.hasBlockState(f2)) {
|
||||
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f2).defaultFluidState());
|
||||
if (lavaInteraction != null) {
|
||||
event.setState(lavaInteraction);
|
||||
}
|
||||
} else if (f2 == Fluids.LAVA && FluidHelper.hasBlockState(f1)) {
|
||||
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f1)
|
||||
.defaultFluidState());
|
||||
if (lavaInteraction != null)
|
||||
world.setBlockAndUpdate(pos, lavaInteraction);
|
||||
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f1).defaultFluidState());
|
||||
if (lavaInteraction != null) {
|
||||
event.setState(lavaInteraction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void handlePipeSpillCollision(Level world, BlockPos pos, Fluid pipeFluid, FluidState worldFluid) {
|
||||
public static void handlePipeSpillCollision(Level level, BlockPos pos, Fluid pipeFluid, FluidState worldFluid) {
|
||||
Fluid pf = FluidHelper.convertToStill(pipeFluid);
|
||||
Fluid wf = worldFluid.getType();
|
||||
if (FluidHelper.isTag(pf, FluidTags.WATER) && wf == Fluids.LAVA)
|
||||
world.setBlockAndUpdate(pos, Blocks.OBSIDIAN.defaultBlockState());
|
||||
else if (pf == Fluids.WATER && wf == Fluids.FLOWING_LAVA)
|
||||
world.setBlockAndUpdate(pos, Blocks.COBBLESTONE.defaultBlockState());
|
||||
else if (pf == Fluids.LAVA && wf == Fluids.WATER)
|
||||
world.setBlockAndUpdate(pos, Blocks.STONE.defaultBlockState());
|
||||
else if (pf == Fluids.LAVA && wf == Fluids.FLOWING_WATER)
|
||||
world.setBlockAndUpdate(pos, Blocks.COBBLESTONE.defaultBlockState());
|
||||
|
||||
PipeCollisionEvent.Spill event = new PipeCollisionEvent.Spill(level, pos, wf, pf, null);
|
||||
MinecraftForge.EVENT_BUS.post(event);
|
||||
if (event.getState() != null) {
|
||||
level.setBlockAndUpdate(pos, event.getState());
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void handlePipeSpillCollisionFallback(PipeCollisionEvent.Spill event) {
|
||||
Fluid pf = event.getPipeFluid();
|
||||
Fluid wf = event.getWorldFluid();
|
||||
|
||||
if (FluidHelper.isTag(pf, FluidTags.WATER) && wf == Fluids.LAVA) {
|
||||
event.setState(Blocks.OBSIDIAN.defaultBlockState());
|
||||
} else if (pf == Fluids.WATER && wf == Fluids.FLOWING_LAVA) {
|
||||
event.setState(Blocks.COBBLESTONE.defaultBlockState());
|
||||
} else if (pf == Fluids.LAVA && wf == Fluids.WATER) {
|
||||
event.setState(Blocks.STONE.defaultBlockState());
|
||||
} else if (pf == Fluids.LAVA && wf == Fluids.FLOWING_LAVA) {
|
||||
event.setState(Blocks.COBBLESTONE.defaultBlockState());
|
||||
}
|
||||
|
||||
if (pf == Fluids.LAVA) {
|
||||
BlockState lavaInteraction = AllFluids.getLavaInteraction(worldFluid);
|
||||
if (lavaInteraction != null)
|
||||
world.setBlockAndUpdate(pos, lavaInteraction);
|
||||
BlockState lavaInteraction = AllFluids.getLavaInteraction(wf.defaultFluidState());
|
||||
if (lavaInteraction != null) {
|
||||
event.setState(lavaInteraction);
|
||||
}
|
||||
} else if (wf == Fluids.FLOWING_LAVA && FluidHelper.hasBlockState(pf)) {
|
||||
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(pf)
|
||||
.defaultFluidState());
|
||||
if (lavaInteraction != null)
|
||||
world.setBlockAndUpdate(pos, lavaInteraction);
|
||||
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(pf).defaultFluidState());
|
||||
if (lavaInteraction != null) {
|
||||
event.setState(lavaInteraction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ import com.simibubi.create.AllTags.AllBlockTags;
|
|||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock;
|
||||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel;
|
||||
import com.simibubi.create.foundation.utility.AttachedRegistry;
|
||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
@ -71,7 +72,7 @@ public class BoilerHeaters {
|
|||
});
|
||||
|
||||
registerHeaterProvider((level, pos, state) -> {
|
||||
if (AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state)) {
|
||||
if (AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state) && BlockHelper.isNotUnheated(state)) {
|
||||
return (level1, pos1, state1) -> 0;
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -64,6 +64,8 @@ public class ValveHandleBlock extends HandCrankBlock {
|
|||
|
||||
if (!(blockState.getBlock() instanceof ValveHandleBlock vhb))
|
||||
return;
|
||||
if (!player.mayBuild())
|
||||
return;
|
||||
if (AllItems.WRENCH.isIn(player.getItemInHand(event.getHand())) && player.isSteppingCarefully())
|
||||
return;
|
||||
|
||||
|
|
|
@ -300,9 +300,6 @@ public class DeployerHandler {
|
|||
return;
|
||||
if (useItem == DENY)
|
||||
return;
|
||||
if (item instanceof BlockItem && !(item instanceof CartAssemblerBlockItem)
|
||||
&& !clickedState.canBeReplaced(new BlockPlaceContext(itemusecontext)))
|
||||
return;
|
||||
|
||||
// Reposition fire placement for convenience
|
||||
if (item == Items.FLINT_AND_STEEL) {
|
||||
|
@ -324,6 +321,10 @@ public class DeployerHandler {
|
|||
player.placedTracks = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (item instanceof BlockItem && !(item instanceof CartAssemblerBlockItem)
|
||||
&& !clickedState.canBeReplaced(new BlockPlaceContext(itemusecontext)))
|
||||
return;
|
||||
if (item == Items.ENDER_PEARL)
|
||||
return;
|
||||
if (AllItemTags.DEPLOYABLE_DRINK.matches(item))
|
||||
|
|
|
@ -54,8 +54,6 @@ public class AirCurrent {
|
|||
new ArrayList<>();
|
||||
protected List<Entity> caughtEntities = new ArrayList<>();
|
||||
|
||||
static boolean isClientPlayerInAirCurrent;
|
||||
|
||||
public AirCurrent(IAirCurrentSource source) {
|
||||
this.source = source;
|
||||
}
|
||||
|
@ -111,7 +109,7 @@ public class AirCurrent {
|
|||
((ServerPlayer) entity).connection.aboveGroundTickCount = 0;
|
||||
|
||||
entityDistance -= .5f;
|
||||
FanProcessingType processingType = getSegmentAt((float) entityDistance);
|
||||
FanProcessingType processingType = getTypeAt((float) entityDistance);
|
||||
|
||||
if (processingType == AllFanProcessingTypes.NONE)
|
||||
continue;
|
||||
|
@ -131,7 +129,33 @@ public class AirCurrent {
|
|||
if (world != null)
|
||||
processingType.affectEntity(entity, world);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isPlayerCreativeFlying(Entity entity) {
|
||||
if (entity instanceof Player) {
|
||||
Player player = (Player) entity;
|
||||
return player.isCreative() && player.getAbilities().flying;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void tickAffectedHandlers() {
|
||||
for (Pair<TransportedItemStackHandlerBehaviour, FanProcessingType> pair : affectedItemHandlers) {
|
||||
TransportedItemStackHandlerBehaviour handler = pair.getKey();
|
||||
Level world = handler.getWorld();
|
||||
FanProcessingType processingType = pair.getRight();
|
||||
|
||||
handler.handleProcessingOnAllItems(transported -> {
|
||||
if (world.isClientSide) {
|
||||
processingType.spawnProcessingParticles(world, handler.getWorldPositionOf(transported));
|
||||
return TransportedResult.doNothing();
|
||||
}
|
||||
TransportedResult applyProcessing = FanProcessing.applyProcessing(transported, world, processingType);
|
||||
if (!applyProcessing.doesNothing() && source instanceof EncasedFanBlockEntity fan)
|
||||
fan.award(AllAdvancements.FAN_PROCESSING);
|
||||
return applyProcessing;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void rebuild() {
|
||||
|
@ -154,32 +178,38 @@ public class AirCurrent {
|
|||
maxDistance = getFlowLimit(world, start, max, facing);
|
||||
|
||||
// Determine segments with transported fluids/gases
|
||||
AirCurrentSegment currentSegment = new AirCurrentSegment();
|
||||
segments.clear();
|
||||
currentSegment.startOffset = 0;
|
||||
AirCurrentSegment currentSegment = null;
|
||||
FanProcessingType type = AllFanProcessingTypes.NONE;
|
||||
|
||||
int limit = (int) (maxDistance + .5f);
|
||||
int searchStart = pushing ? 0 : limit;
|
||||
int searchEnd = pushing ? limit : 0;
|
||||
int limit = getLimit();
|
||||
int searchStart = pushing ? 1 : limit;
|
||||
int searchEnd = pushing ? limit : 1;
|
||||
int searchStep = pushing ? 1 : -1;
|
||||
int toOffset = pushing ? -1 : 0;
|
||||
|
||||
for (int i = searchStart; i * searchStep <= searchEnd * searchStep; i += searchStep) {
|
||||
BlockPos currentPos = start.relative(direction, i);
|
||||
FanProcessingType newType = FanProcessingType.getAt(world, currentPos);
|
||||
if (newType != AllFanProcessingTypes.NONE)
|
||||
if (newType != AllFanProcessingTypes.NONE) {
|
||||
type = newType;
|
||||
if (currentSegment.type != type || currentSegment.startOffset == 0) {
|
||||
currentSegment.endOffset = i;
|
||||
if (currentSegment.startOffset != 0)
|
||||
segments.add(currentSegment);
|
||||
}
|
||||
if (currentSegment == null) {
|
||||
currentSegment = new AirCurrentSegment();
|
||||
currentSegment.startOffset = i;
|
||||
currentSegment.startOffset = i + toOffset;
|
||||
currentSegment.type = type;
|
||||
} else if (currentSegment.type != type) {
|
||||
currentSegment.endOffset = i + toOffset;
|
||||
segments.add(currentSegment);
|
||||
currentSegment = new AirCurrentSegment();
|
||||
currentSegment.startOffset = i + toOffset;
|
||||
currentSegment.type = type;
|
||||
}
|
||||
}
|
||||
currentSegment.endOffset = searchEnd + searchStep;
|
||||
segments.add(currentSegment);
|
||||
if (currentSegment != null) {
|
||||
currentSegment.endOffset = searchEnd + searchStep + toOffset;
|
||||
segments.add(currentSegment);
|
||||
}
|
||||
|
||||
// Build Bounding Box
|
||||
if (maxDistance < 0.25f)
|
||||
|
@ -194,6 +224,7 @@ public class AirCurrent {
|
|||
.move(scale);
|
||||
}
|
||||
}
|
||||
|
||||
findAffectedHandlers();
|
||||
}
|
||||
|
||||
|
@ -249,29 +280,36 @@ public class AirCurrent {
|
|||
return max;
|
||||
}
|
||||
|
||||
public void findEntities() {
|
||||
caughtEntities.clear();
|
||||
caughtEntities = source.getAirCurrentWorld()
|
||||
.getEntities(null, bounds);
|
||||
private static boolean shouldAlwaysPass(BlockState state) {
|
||||
return AllTags.AllBlockTags.FAN_TRANSPARENT.matches(state);
|
||||
}
|
||||
|
||||
private int getLimit() {
|
||||
if ((float) (int) maxDistance == maxDistance) {
|
||||
return (int) maxDistance;
|
||||
} else {
|
||||
return (int) maxDistance + 1;
|
||||
}
|
||||
}
|
||||
|
||||
public void findAffectedHandlers() {
|
||||
Level world = source.getAirCurrentWorld();
|
||||
BlockPos start = source.getAirCurrentPos();
|
||||
affectedItemHandlers.clear();
|
||||
for (int i = 0; i < maxDistance + 1; i++) {
|
||||
FanProcessingType segmentType = getSegmentAt(i);
|
||||
int limit = getLimit();
|
||||
for (int i = 1; i <= limit; i++) {
|
||||
FanProcessingType segmentType = getTypeAt(i - 1);
|
||||
for (int offset : Iterate.zeroAndOne) {
|
||||
BlockPos pos = start.relative(direction, i)
|
||||
.below(offset);
|
||||
TransportedItemStackHandlerBehaviour behaviour =
|
||||
BlockEntityBehaviour.get(world, pos, TransportedItemStackHandlerBehaviour.TYPE);
|
||||
if (behaviour == null)
|
||||
continue;
|
||||
FanProcessingType type = FanProcessingType.getAt(world, pos);
|
||||
if (type == AllFanProcessingTypes.NONE)
|
||||
type = segmentType;
|
||||
affectedItemHandlers.add(Pair.of(behaviour, type));
|
||||
if (behaviour != null) {
|
||||
FanProcessingType type = FanProcessingType.getAt(world, pos);
|
||||
if (type == AllFanProcessingTypes.NONE)
|
||||
type = segmentType;
|
||||
affectedItemHandlers.add(Pair.of(behaviour, type));
|
||||
}
|
||||
if (direction.getAxis()
|
||||
.isVertical())
|
||||
break;
|
||||
|
@ -279,48 +317,41 @@ public class AirCurrent {
|
|||
}
|
||||
}
|
||||
|
||||
public void tickAffectedHandlers() {
|
||||
for (Pair<TransportedItemStackHandlerBehaviour, FanProcessingType> pair : affectedItemHandlers) {
|
||||
TransportedItemStackHandlerBehaviour handler = pair.getKey();
|
||||
Level world = handler.getWorld();
|
||||
FanProcessingType processingType = pair.getRight();
|
||||
public void findEntities() {
|
||||
caughtEntities.clear();
|
||||
caughtEntities = source.getAirCurrentWorld()
|
||||
.getEntities(null, bounds);
|
||||
}
|
||||
|
||||
handler.handleProcessingOnAllItems(transported -> {
|
||||
if (world.isClientSide) {
|
||||
processingType.spawnProcessingParticles(world, handler.getWorldPositionOf(transported));
|
||||
return TransportedResult.doNothing();
|
||||
public FanProcessingType getTypeAt(float offset) {
|
||||
if (offset >= 0 && offset <= maxDistance) {
|
||||
if (pushing) {
|
||||
for (AirCurrentSegment airCurrentSegment : segments) {
|
||||
if (offset <= airCurrentSegment.endOffset) {
|
||||
return airCurrentSegment.type;
|
||||
}
|
||||
}
|
||||
TransportedResult applyProcessing = FanProcessing.applyProcessing(transported, world, processingType);
|
||||
if (!applyProcessing.doesNothing() && source instanceof EncasedFanBlockEntity fan)
|
||||
fan.award(AllAdvancements.FAN_PROCESSING);
|
||||
return applyProcessing;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean shouldAlwaysPass(BlockState state) {
|
||||
return AllTags.AllBlockTags.FAN_TRANSPARENT.matches(state);
|
||||
}
|
||||
|
||||
public FanProcessingType getSegmentAt(float offset) {
|
||||
for (AirCurrentSegment airCurrentSegment : segments) {
|
||||
if (offset > airCurrentSegment.endOffset && pushing)
|
||||
continue;
|
||||
if (offset < airCurrentSegment.endOffset && !pushing)
|
||||
continue;
|
||||
return airCurrentSegment.type;
|
||||
} else {
|
||||
for (AirCurrentSegment airCurrentSegment : segments) {
|
||||
if (offset >= airCurrentSegment.endOffset) {
|
||||
return airCurrentSegment.type;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return AllFanProcessingTypes.NONE;
|
||||
}
|
||||
|
||||
public static class AirCurrentSegment {
|
||||
FanProcessingType type;
|
||||
int startOffset;
|
||||
int endOffset;
|
||||
private static class AirCurrentSegment {
|
||||
private FanProcessingType type;
|
||||
private int startOffset;
|
||||
private int endOffset;
|
||||
}
|
||||
|
||||
private static boolean isClientPlayerInAirCurrent;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
static AirCurrentSound flyingSound;
|
||||
private static AirCurrentSound flyingSound;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
private static void enableClientPlayerSound(Entity e, float maxVolume) {
|
||||
|
@ -345,7 +376,7 @@ public class AirCurrent {
|
|||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static void tickClientPlayerSounds() {
|
||||
if (!AirCurrent.isClientPlayerInAirCurrent && flyingSound != null)
|
||||
if (!isClientPlayerInAirCurrent && flyingSound != null)
|
||||
if (flyingSound.isFaded())
|
||||
flyingSound.stopSound();
|
||||
else
|
||||
|
@ -353,12 +384,4 @@ public class AirCurrent {
|
|||
isClientPlayerInAirCurrent = false;
|
||||
}
|
||||
|
||||
public static boolean isPlayerCreativeFlying(Entity entity) {
|
||||
if (entity instanceof Player) {
|
||||
Player player = (Player) entity;
|
||||
return player.isCreative() && player.getAbilities().flying;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -34,9 +34,9 @@ public class AirFlowParticle extends SimpleAnimatedParticle {
|
|||
selectSprite(7);
|
||||
Vec3 offset = VecHelper.offsetRandomly(Vec3.ZERO, random, .25f);
|
||||
this.setPos(x + offset.x, y + offset.y, z + offset.z);
|
||||
this.xo = x;
|
||||
this.yo = y;
|
||||
this.zo = z;
|
||||
this.xo = this.x;
|
||||
this.yo = this.y;
|
||||
this.zo = this.z;
|
||||
setColor(0xEEEEEE);
|
||||
setAlpha(.25f);
|
||||
}
|
||||
|
@ -97,15 +97,13 @@ public class AirFlowParticle extends SimpleAnimatedParticle {
|
|||
this.zd *= 0.7;
|
||||
}
|
||||
this.move(this.xd, this.yd, this.zd);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private FanProcessingType getType(double distance) {
|
||||
if (source.getAirCurrent() == null)
|
||||
return AllFanProcessingTypes.NONE;
|
||||
return source.getAirCurrent().getSegmentAt((float) distance);
|
||||
return source.getAirCurrent().getTypeAt((float) distance);
|
||||
}
|
||||
|
||||
public int getLightColor(float partialTick) {
|
||||
|
@ -124,6 +122,7 @@ public class AirFlowParticle extends SimpleAnimatedParticle {
|
|||
this.spriteSet = animatedSprite;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Particle createParticle(AirFlowParticleData data, ClientLevel worldIn, double x, double y, double z,
|
||||
double xSpeed, double ySpeed, double zSpeed) {
|
||||
BlockEntity be = worldIn.getBlockEntity(new BlockPos(data.posX, data.posY, data.posZ));
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package com.simibubi.create.content.kinetics.fan.processing;
|
||||
|
||||
import static com.simibubi.create.content.processing.burner.BlazeBurnerBlock.getHeatLevelOf;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -10,8 +8,9 @@ import java.util.Optional;
|
|||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.mojang.math.Vector3f;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllRecipeTypes;
|
||||
import com.simibubi.create.AllTags.AllBlockTags;
|
||||
import com.simibubi.create.AllTags.AllFluidTags;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.kinetics.fan.processing.HauntingRecipe.HauntingWrapper;
|
||||
import com.simibubi.create.content.kinetics.fan.processing.SplashingRecipe.SplashingWrapper;
|
||||
|
@ -47,13 +46,10 @@ import net.minecraft.world.item.crafting.RecipeType;
|
|||
import net.minecraft.world.item.crafting.SmeltingRecipe;
|
||||
import net.minecraft.world.item.crafting.SmokingRecipe;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.CampfireBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
import net.minecraftforge.items.wrapper.RecipeWrapper;
|
||||
|
@ -141,9 +137,18 @@ public class AllFanProcessingTypes {
|
|||
|
||||
@Override
|
||||
public boolean isValidAt(Level level, BlockPos pos) {
|
||||
FluidState fluidState = level.getFluidState(pos);
|
||||
if (AllFluidTags.FAN_PROCESSING_CATALYSTS_BLASTING.matches(fluidState)) {
|
||||
return true;
|
||||
}
|
||||
BlockState blockState = level.getBlockState(pos);
|
||||
Block block = blockState.getBlock();
|
||||
return block == Blocks.LAVA || getHeatLevelOf(blockState).isAtLeast(BlazeBurnerBlock.HeatLevel.FADING);
|
||||
if (AllBlockTags.FAN_PROCESSING_CATALYSTS_BLASTING.matches(blockState)) {
|
||||
if (blockState.hasProperty(BlazeBurnerBlock.HEAT_LEVEL) && !blockState.getValue(BlazeBurnerBlock.HEAT_LEVEL).isAtLeast(BlazeBurnerBlock.HeatLevel.FADING)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -233,15 +238,21 @@ public class AllFanProcessingTypes {
|
|||
|
||||
@Override
|
||||
public boolean isValidAt(Level level, BlockPos pos) {
|
||||
FluidState fluidState = level.getFluidState(pos);
|
||||
if (AllFluidTags.FAN_PROCESSING_CATALYSTS_HAUNTING.matches(fluidState)) {
|
||||
return true;
|
||||
}
|
||||
BlockState blockState = level.getBlockState(pos);
|
||||
Block block = blockState.getBlock();
|
||||
return block == Blocks.SOUL_FIRE
|
||||
|| block == Blocks.SOUL_CAMPFIRE && blockState.getOptionalValue(CampfireBlock.LIT)
|
||||
.orElse(false)
|
||||
|| AllBlocks.LIT_BLAZE_BURNER.has(blockState)
|
||||
&& blockState.getOptionalValue(LitBlazeBurnerBlock.FLAME_TYPE)
|
||||
.map(flame -> flame == LitBlazeBurnerBlock.FlameType.SOUL)
|
||||
.orElse(false);
|
||||
if (AllBlockTags.FAN_PROCESSING_CATALYSTS_HAUNTING.matches(blockState)) {
|
||||
if (blockState.is(BlockTags.CAMPFIRES) && blockState.hasProperty(CampfireBlock.LIT) && !blockState.getValue(CampfireBlock.LIT)) {
|
||||
return false;
|
||||
}
|
||||
if (blockState.hasProperty(LitBlazeBurnerBlock.FLAME_TYPE) && blockState.getValue(LitBlazeBurnerBlock.FLAME_TYPE) != LitBlazeBurnerBlock.FlameType.SOUL) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -349,16 +360,24 @@ public class AllFanProcessingTypes {
|
|||
|
||||
@Override
|
||||
public boolean isValidAt(Level level, BlockPos pos) {
|
||||
FluidState fluidState = level.getFluidState(pos);
|
||||
if (AllFluidTags.FAN_PROCESSING_CATALYSTS_SMOKING.matches(fluidState)) {
|
||||
return true;
|
||||
}
|
||||
BlockState blockState = level.getBlockState(pos);
|
||||
Block block = blockState.getBlock();
|
||||
return block == Blocks.FIRE
|
||||
|| blockState.is(BlockTags.CAMPFIRES) && blockState.getOptionalValue(CampfireBlock.LIT)
|
||||
.orElse(false)
|
||||
|| AllBlocks.LIT_BLAZE_BURNER.has(blockState)
|
||||
&& blockState.getOptionalValue(LitBlazeBurnerBlock.FLAME_TYPE)
|
||||
.map(flame -> flame == LitBlazeBurnerBlock.FlameType.REGULAR)
|
||||
.orElse(false)
|
||||
|| getHeatLevelOf(blockState) == BlazeBurnerBlock.HeatLevel.SMOULDERING;
|
||||
if (AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.matches(blockState)) {
|
||||
if (blockState.is(BlockTags.CAMPFIRES) && blockState.hasProperty(CampfireBlock.LIT) && !blockState.getValue(CampfireBlock.LIT)) {
|
||||
return false;
|
||||
}
|
||||
if (blockState.hasProperty(LitBlazeBurnerBlock.FLAME_TYPE) && blockState.getValue(LitBlazeBurnerBlock.FLAME_TYPE) != LitBlazeBurnerBlock.FlameType.REGULAR) {
|
||||
return false;
|
||||
}
|
||||
if (blockState.hasProperty(BlazeBurnerBlock.HEAT_LEVEL) && blockState.getValue(BlazeBurnerBlock.HEAT_LEVEL) != BlazeBurnerBlock.HeatLevel.SMOULDERING) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -422,8 +441,14 @@ public class AllFanProcessingTypes {
|
|||
@Override
|
||||
public boolean isValidAt(Level level, BlockPos pos) {
|
||||
FluidState fluidState = level.getFluidState(pos);
|
||||
Fluid fluid = fluidState.getType();
|
||||
return fluid == Fluids.WATER || fluid == Fluids.FLOWING_WATER;
|
||||
if (AllFluidTags.FAN_PROCESSING_CATALYSTS_SPLASHING.matches(fluidState)) {
|
||||
return true;
|
||||
}
|
||||
BlockState blockState = level.getBlockState(pos);
|
||||
if (AllBlockTags.FAN_PROCESSING_CATALYSTS_SPLASHING.matches(blockState)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -29,6 +29,7 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
|||
import com.simibubi.create.foundation.item.ItemHelper;
|
||||
import com.simibubi.create.foundation.item.SmartInventory;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||
import com.simibubi.create.foundation.utility.Components;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.foundation.utility.IntAttached;
|
||||
|
@ -603,7 +604,7 @@ public class BasinBlockEntity extends SmartBlockEntity implements IHaveGoggleInf
|
|||
public static HeatLevel getHeatLevelOf(BlockState state) {
|
||||
if (state.hasProperty(BlazeBurnerBlock.HEAT_LEVEL))
|
||||
return state.getValue(BlazeBurnerBlock.HEAT_LEVEL);
|
||||
return AllTags.AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state) ? HeatLevel.SMOULDERING : HeatLevel.NONE;
|
||||
return AllTags.AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state) && BlockHelper.isNotUnheated(state) ? HeatLevel.SMOULDERING : HeatLevel.NONE;
|
||||
}
|
||||
|
||||
public Couple<SmartFluidTankBehaviour> getTanks() {
|
||||
|
|
|
@ -25,6 +25,7 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
|||
import com.simibubi.create.content.trains.entity.Carriage;
|
||||
import com.simibubi.create.content.trains.entity.CarriageBogey;
|
||||
import com.simibubi.create.content.trains.entity.TravellingPoint;
|
||||
import com.simibubi.create.content.trains.graph.TrackEdge;
|
||||
import com.simibubi.create.content.trains.track.TrackMaterial;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
|
||||
|
@ -75,7 +76,10 @@ public abstract class AbstractBogeyBlock<T extends AbstractBogeyBlockEntity> ext
|
|||
public boolean isOnIncompatibleTrack(Carriage carriage, boolean leading) {
|
||||
TravellingPoint point = leading ? carriage.getLeadingPoint() : carriage.getTrailingPoint();
|
||||
CarriageBogey bogey = leading ? carriage.leadingBogey() : carriage.trailingBogey();
|
||||
return point.edge.getTrackMaterial().trackType != getTrackType(bogey.getStyle());
|
||||
TrackEdge currentEdge = point.edge;
|
||||
if (currentEdge == null)
|
||||
return false;
|
||||
return currentEdge.getTrackMaterial().trackType != getTrackType(bogey.getStyle());
|
||||
}
|
||||
|
||||
public Set<TrackMaterial.TrackType> getValidPathfindingTypes(BogeyStyle style) {
|
||||
|
|
|
@ -10,13 +10,13 @@ import java.nio.file.Path;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.UnaryOperator;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.mojang.logging.LogUtils;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllFluids;
|
||||
|
@ -327,13 +327,13 @@ public class AllAdvancements implements DataProvider {
|
|||
.after(STEAM_ENGINE_MAXED)
|
||||
.special(EXPERT)),
|
||||
|
||||
// Copper - Hidden
|
||||
|
||||
DIVING_SUIT_LAVA = create("diving_suit_lava", b -> b.icon(AllItems.COPPER_DIVING_HELMET)
|
||||
DIVING_SUIT_LAVA = create("diving_suit_lava", b -> b.icon(AllItems.NETHERITE_DIVING_HELMET)
|
||||
.title("Swimming with the Striders")
|
||||
.description("Attempt to take a dive in lava with your diving gear")
|
||||
.after(BACKTANK)
|
||||
.special(SECRET)),
|
||||
.description("Attempt to take a dive in lava with your netherite diving gear")
|
||||
.after(FOODS)
|
||||
.special(EXPERT)),
|
||||
|
||||
// Copper - Hidden
|
||||
|
||||
CHAINED_DRAIN = create("chained_drain", b -> b.icon(AllBlocks.ITEM_DRAIN)
|
||||
.title("On a Roll")
|
||||
|
@ -386,7 +386,7 @@ public class AllAdvancements implements DataProvider {
|
|||
.special(NOISY)),
|
||||
|
||||
SPEED_CONTROLLER = create("speed_controller", b -> b.icon(AllBlocks.ROTATION_SPEED_CONTROLLER)
|
||||
.title("Engineers Hate Him!")
|
||||
.title("Engineers hate this simple trick!")
|
||||
.description("Fine-tune your Contraption with a Rotation Speed Controller")
|
||||
.after(MECHANISM)),
|
||||
|
||||
|
@ -652,11 +652,9 @@ public class AllAdvancements implements DataProvider {
|
|||
return "Create's Advancements";
|
||||
}
|
||||
|
||||
public static JsonObject provideLangEntries() {
|
||||
JsonObject object = new JsonObject();
|
||||
public static void provideLang(BiConsumer<String, String> consumer) {
|
||||
for (CreateAdvancement advancement : ENTRIES)
|
||||
advancement.appendToLang(object);
|
||||
return object;
|
||||
advancement.provideLang(consumer);
|
||||
}
|
||||
|
||||
public static void register() {}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package com.simibubi.create.foundation.advancement;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.UnaryOperator;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.utility.Components;
|
||||
import com.tterrag.registrate.util.entry.ItemProviderEntry;
|
||||
|
@ -30,7 +30,7 @@ public class CreateAdvancement {
|
|||
|
||||
static final ResourceLocation BACKGROUND = Create.asResource("textures/gui/advancements.png");
|
||||
static final String LANG = "advancement." + Create.ID + ".";
|
||||
static final String SECRET_SUFFIX = "\u00A77\n(Hidden Advancement)";
|
||||
static final String SECRET_SUFFIX = "\n\u00A77(Hidden Advancement)";
|
||||
|
||||
private Advancement.Builder builder;
|
||||
private SimpleCreateTrigger builtinTrigger;
|
||||
|
@ -101,9 +101,9 @@ public class CreateAdvancement {
|
|||
.toString());
|
||||
}
|
||||
|
||||
void appendToLang(JsonObject object) {
|
||||
object.addProperty(titleKey(), title);
|
||||
object.addProperty(descriptionKey(), description);
|
||||
void provideLang(BiConsumer<String, String> consumer) {
|
||||
consumer.accept(titleKey(), title);
|
||||
consumer.accept(descriptionKey(), description);
|
||||
}
|
||||
|
||||
static enum TaskType {
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
package com.simibubi.create.foundation.advancement;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
public class EnumTrigger<T extends Enum<T>> extends StringSerializableTrigger<T> {
|
||||
private final Class<T> reference;
|
||||
|
||||
public EnumTrigger(String id, Class<T> reference) {
|
||||
super(id);
|
||||
this.reference = reference;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected T getValue(String key) {
|
||||
try {
|
||||
return Enum.valueOf(reference, key);
|
||||
} catch (IllegalArgumentException | NullPointerException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected String getKey(@Nullable T value) {
|
||||
if (value == null)
|
||||
return null;
|
||||
return value.name();
|
||||
}
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
package com.simibubi.create.foundation.advancement;
|
||||
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
||||
public interface ITriggerable {
|
||||
|
||||
public void trigger(ServerPlayer player);
|
||||
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
package com.simibubi.create.foundation.advancement;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.registries.IForgeRegistry;
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
public class RegistryTrigger<T> extends StringSerializableTrigger<T> {
|
||||
private final IForgeRegistry<T> registry;
|
||||
|
||||
public RegistryTrigger(String id, IForgeRegistry<T> registry) {
|
||||
super(id);
|
||||
this.registry = registry;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected T getValue(String key) {
|
||||
return registry.getValue(new ResourceLocation(key));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected String getKey(T value) {
|
||||
ResourceLocation key = registry.getKey(value);
|
||||
return key == null ? null : key.toString();
|
||||
}
|
||||
}
|
|
@ -16,7 +16,7 @@ import net.minecraft.server.level.ServerPlayer;
|
|||
|
||||
@MethodsReturnNonnullByDefault
|
||||
@ParametersAreNonnullByDefault
|
||||
public class SimpleCreateTrigger extends CriterionTriggerBase<SimpleCreateTrigger.Instance> implements ITriggerable {
|
||||
public class SimpleCreateTrigger extends CriterionTriggerBase<SimpleCreateTrigger.Instance> {
|
||||
|
||||
public SimpleCreateTrigger(String id) {
|
||||
super(id);
|
||||
|
|
|
@ -1,121 +0,0 @@
|
|||
package com.simibubi.create.foundation.advancement;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonSyntaxException;
|
||||
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.advancements.critereon.DeserializationContext;
|
||||
import net.minecraft.advancements.critereon.EntityPredicate;
|
||||
import net.minecraft.advancements.critereon.SerializationContext;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
||||
@MethodsReturnNonnullByDefault
|
||||
@ParametersAreNonnullByDefault
|
||||
public abstract class StringSerializableTrigger<T> extends CriterionTriggerBase<StringSerializableTrigger.Instance<T>> {
|
||||
|
||||
protected String getJsonKey() {
|
||||
return "accepted_entries";
|
||||
}
|
||||
|
||||
protected StringSerializableTrigger(String id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
public final Instance<T> forEntries(@Nullable T... entries) {
|
||||
return new Instance<>(this, entries == null ? null : createLinkedHashSet(entries));
|
||||
}
|
||||
|
||||
public void trigger(ServerPlayer player, @Nullable T registryEntry) {
|
||||
trigger(player, Collections.singletonList(() -> registryEntry));
|
||||
}
|
||||
|
||||
public ITriggerable constructTriggerFor(@Nullable T entry) {
|
||||
return player -> trigger(player, entry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Instance<T> createInstance(JsonObject json, DeserializationContext context) {
|
||||
if (json.has(getJsonKey())) {
|
||||
JsonArray elements = json.getAsJsonArray(getJsonKey());
|
||||
return new Instance<>(this, StreamSupport.stream(elements.spliterator(), false)
|
||||
.map(JsonElement::getAsString)
|
||||
.map(key -> {
|
||||
T entry = getValue(key);
|
||||
if (entry == null)
|
||||
throw new JsonSyntaxException("Unknown entry '" + key + "'");
|
||||
return entry;
|
||||
})
|
||||
.collect(Collectors.toSet()));
|
||||
}
|
||||
return new Instance<>(this, null);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected abstract T getValue(String key);
|
||||
|
||||
@Nullable
|
||||
protected abstract String getKey(T value);
|
||||
|
||||
private static <T> LinkedHashSet<T> createLinkedHashSet(T[] elements) {
|
||||
LinkedHashSet<T> set = new LinkedHashSet<>(elements.length);
|
||||
Collections.addAll(set, elements);
|
||||
return set;
|
||||
}
|
||||
|
||||
public static class Instance<T> extends CriterionTriggerBase.Instance {
|
||||
|
||||
@Nullable
|
||||
private final Set<T> entries;
|
||||
private final StringSerializableTrigger<T> trigger;
|
||||
|
||||
public Instance(StringSerializableTrigger<T> trigger, @Nullable Set<T> entries) {
|
||||
super(trigger.getId(), EntityPredicate.Composite.ANY);
|
||||
this.trigger = trigger;
|
||||
this.entries = entries;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean test(@Nullable List<Supplier<Object>> suppliers) {
|
||||
if (entries == null || suppliers == null || suppliers.isEmpty())
|
||||
return false;
|
||||
return entries.contains(suppliers.get(0)
|
||||
.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonObject serializeToJson(SerializationContext p_230240_1_) {
|
||||
JsonObject jsonobject = super.serializeToJson(p_230240_1_);
|
||||
JsonArray elements = new JsonArray();
|
||||
|
||||
if (entries == null) {
|
||||
jsonobject.add(trigger.getJsonKey(), elements);
|
||||
return jsonobject;
|
||||
}
|
||||
|
||||
for (T entry : entries) {
|
||||
if (entry == null)
|
||||
continue;
|
||||
String key = trigger.getKey(entry);
|
||||
if (key != null)
|
||||
elements.add(key);
|
||||
}
|
||||
|
||||
jsonobject.add(trigger.getJsonKey(), elements);
|
||||
return jsonobject;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
package com.simibubi.create.foundation.data;
|
||||
|
||||
import com.google.common.base.Supplier;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.advancement.AllAdvancements;
|
||||
import com.simibubi.create.foundation.ponder.PonderLocalization;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
public enum AllLangPartials implements LangPartial {
|
||||
|
||||
ADVANCEMENTS("Advancements", AllAdvancements::provideLangEntries),
|
||||
INTERFACE("UI & Messages"),
|
||||
SUBTITLES("Subtitles", AllSoundEvents::provideLangEntries),
|
||||
TOOLTIPS("Item Descriptions"),
|
||||
PONDER("Ponder Content", PonderLocalization::provideLangEntries),
|
||||
|
||||
;
|
||||
|
||||
private final String displayName;
|
||||
private final Supplier<JsonElement> provider;
|
||||
|
||||
private AllLangPartials(String displayName) {
|
||||
this.displayName = displayName;
|
||||
String fileName = Lang.asId(name());
|
||||
this.provider = () -> LangPartial.fromResource(Create.ID, fileName);
|
||||
}
|
||||
|
||||
private AllLangPartials(String displayName, Supplier<JsonElement> provider) {
|
||||
this.displayName = displayName;
|
||||
this.provider = provider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonElement provide() {
|
||||
return provider.get();
|
||||
}
|
||||
|
||||
}
|
|
@ -9,7 +9,6 @@ import java.util.function.Supplier;
|
|||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.CreateClient;
|
||||
import com.simibubi.create.content.decoration.encasing.CasingConnectivity;
|
||||
import com.simibubi.create.content.fluids.VirtualFluid;
|
||||
|
@ -149,8 +148,8 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
|
|||
public <T extends ForgeFlowingFluid> FluidBuilder<T, CreateRegistrate> virtualFluid(String name,
|
||||
FluidBuilder.FluidTypeFactory typeFactory, NonNullFunction<ForgeFlowingFluid.Properties, T> factory) {
|
||||
return entry(name,
|
||||
c -> new VirtualFluidBuilder<>(self(), self(), name, c, Create.asResource("fluid/" + name + "_still"),
|
||||
Create.asResource("fluid/" + name + "_flow"), typeFactory, factory));
|
||||
c -> new VirtualFluidBuilder<>(self(), self(), name, c, new ResourceLocation(getModid(), "fluid/" + name + "_still"),
|
||||
new ResourceLocation(getModid(), "fluid/" + name + "_flow"), typeFactory, factory));
|
||||
}
|
||||
|
||||
public <T extends ForgeFlowingFluid> FluidBuilder<T, CreateRegistrate> virtualFluid(String name,
|
||||
|
@ -162,7 +161,7 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
|
|||
public FluidBuilder<VirtualFluid, CreateRegistrate> virtualFluid(String name) {
|
||||
return entry(name,
|
||||
c -> new VirtualFluidBuilder<VirtualFluid, CreateRegistrate>(self(), self(), name, c,
|
||||
Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow"),
|
||||
new ResourceLocation(getModid(), "fluid/" + name + "_still"), new ResourceLocation(getModid(), "fluid/" + name + "_flow"),
|
||||
CreateRegistrate::defaultFluidType, VirtualFluid::new));
|
||||
}
|
||||
|
||||
|
@ -173,12 +172,12 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
|
|||
}
|
||||
|
||||
public FluidBuilder<ForgeFlowingFluid.Flowing, CreateRegistrate> standardFluid(String name) {
|
||||
return fluid(name, Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow"));
|
||||
return fluid(name, new ResourceLocation(getModid(), "fluid/" + name + "_still"), new ResourceLocation(getModid(), "fluid/" + name + "_flow"));
|
||||
}
|
||||
|
||||
public FluidBuilder<ForgeFlowingFluid.Flowing, CreateRegistrate> standardFluid(String name,
|
||||
FluidBuilder.FluidTypeFactory typeFactory) {
|
||||
return fluid(name, Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow"),
|
||||
return fluid(name, new ResourceLocation(getModid(), "fluid/" + name + "_still"), new ResourceLocation(getModid(), "fluid/" + name + "_flow"),
|
||||
typeFactory);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,12 +23,17 @@ import com.google.gson.GsonBuilder;
|
|||
import com.google.gson.JsonObject;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.ponder.PonderScene;
|
||||
import com.tterrag.registrate.AbstractRegistrate;
|
||||
|
||||
import net.minecraft.data.CachedOutput;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraft.data.DataProvider;
|
||||
import net.minecraft.util.GsonHelper;
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link AbstractRegistrate#addRawLang} or, if absolutely necessary, {@link CreateRegistrate#addLangPostprocessor} instead.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public class LangMerger implements DataProvider {
|
||||
|
||||
static final Gson GSON = new GsonBuilder().setPrettyPrinting()
|
||||
|
|
|
@ -2,7 +2,12 @@ package com.simibubi.create.foundation.data;
|
|||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.simibubi.create.foundation.utility.FilesHelper;
|
||||
import com.tterrag.registrate.AbstractRegistrate;
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link AbstractRegistrate#addRawLang} or, if absolutely necessary, {@link CreateRegistrate#addLangPostprocessor} instead.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public interface LangPartial {
|
||||
String getDisplayName();
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ public class SharedProperties {
|
|||
new Material(MaterialColor.COLOR_GRAY, false, true, true, true, false, false, PushReaction.NORMAL);
|
||||
|
||||
public static final Material CRUSHING_WHEEL_CONTROLLER_MATERIAL =
|
||||
new Material(MaterialColor.NONE, false, false, true, true, false, false, PushReaction.BLOCK);
|
||||
new Material(MaterialColor.NONE, false, true, true, true, false, false, PushReaction.BLOCK);
|
||||
|
||||
public static Block wooden() {
|
||||
return Blocks.STRIPPED_SPRUCE_WOOD;
|
||||
|
|
|
@ -1,30 +1,15 @@
|
|||
package com.simibubi.create.foundation.data;
|
||||
|
||||
import com.simibubi.create.AllTags;
|
||||
import com.simibubi.create.AllTags.AllBlockTags;
|
||||
import com.simibubi.create.AllTags.AllEntityTags;
|
||||
import com.simibubi.create.AllTags.AllFluidTags;
|
||||
import com.simibubi.create.AllTags.AllItemTags;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.data.recipe.Mods;
|
||||
import com.tterrag.registrate.builders.BlockBuilder;
|
||||
import com.tterrag.registrate.builders.ItemBuilder;
|
||||
import com.tterrag.registrate.providers.ProviderType;
|
||||
import com.tterrag.registrate.providers.RegistrateTagsProvider;
|
||||
import com.tterrag.registrate.util.nullness.NonNullFunction;
|
||||
|
||||
import net.minecraft.data.tags.TagsProvider.TagAppender;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraftforge.common.Tags;
|
||||
|
||||
public class TagGen {
|
||||
public static <T extends Block, P> NonNullFunction<BlockBuilder<T, P>, BlockBuilder<T, P>> axeOrPickaxe() {
|
||||
|
@ -63,201 +48,4 @@ public class TagGen {
|
|||
}
|
||||
return appender;
|
||||
}
|
||||
|
||||
public static void datagen() {
|
||||
Create.REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, TagGen::genBlockTags);
|
||||
Create.REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, TagGen::genItemTags);
|
||||
Create.REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, TagGen::genFluidTags);
|
||||
Create.REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, TagGen::genEntityTags);
|
||||
}
|
||||
|
||||
private static void genBlockTags(RegistrateTagsProvider<Block> prov) {
|
||||
prov.tag(AllBlockTags.BRITTLE.tag)
|
||||
.add(Blocks.BELL, Blocks.COCOA, Blocks.FLOWER_POT)
|
||||
.addTag(BlockTags.BEDS)
|
||||
.addTag(BlockTags.DOORS);
|
||||
|
||||
prov.tag(AllBlockTags.MOVABLE_EMPTY_COLLIDER.tag)
|
||||
.add(Blocks.COBWEB, Blocks.POWDER_SNOW, Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK)
|
||||
.addTag(BlockTags.FENCE_GATES);
|
||||
|
||||
prov.tag(AllBlockTags.FAN_TRANSPARENT.tag)
|
||||
.add(Blocks.IRON_BARS)
|
||||
.add(Blocks.MANGROVE_ROOTS)
|
||||
.addTag(BlockTags.CAMPFIRES)
|
||||
.addTag(BlockTags.FENCES)
|
||||
.addTag(BlockTags.LEAVES);
|
||||
|
||||
prov.tag(AllBlockTags.ORE_OVERRIDE_STONE.tag)
|
||||
.addTag(BlockTags.STONE_ORE_REPLACEABLES);
|
||||
|
||||
prov.tag(AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
|
||||
.add(Blocks.MAGMA_BLOCK, Blocks.LAVA)
|
||||
.addTag(BlockTags.CAMPFIRES)
|
||||
.addTag(BlockTags.FIRE);
|
||||
|
||||
prov.tag(AllBlockTags.SAFE_NBT.tag)
|
||||
.addTag(BlockTags.BANNERS)
|
||||
.addTag(BlockTags.SIGNS);
|
||||
|
||||
prov.tag(AllBlockTags.TREE_ATTACHMENTS.tag)
|
||||
.add(Blocks.BEE_NEST, Blocks.COCOA, Blocks.MANGROVE_PROPAGULE, Blocks.MOSS_CARPET, Blocks.SHROOMLIGHT, Blocks.VINE);
|
||||
|
||||
prov.tag(AllBlockTags.WINDMILL_SAILS.tag)
|
||||
.addTag(BlockTags.WOOL);
|
||||
|
||||
prov.tag(AllBlockTags.WRENCH_PICKUP.tag)
|
||||
.add(Blocks.REDSTONE_WIRE, Blocks.REDSTONE_TORCH, Blocks.REPEATER, Blocks.LEVER,
|
||||
Blocks.COMPARATOR, Blocks.OBSERVER, Blocks.REDSTONE_WALL_TORCH, Blocks.PISTON, Blocks.STICKY_PISTON,
|
||||
Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.DAYLIGHT_DETECTOR, Blocks.TARGET, Blocks.HOPPER)
|
||||
.addTag(BlockTags.BUTTONS)
|
||||
.addTag(BlockTags.PRESSURE_PLATES)
|
||||
.addTag(BlockTags.RAILS);
|
||||
|
||||
prov.tag(AllBlockTags.COPYCAT_ALLOW.tag)
|
||||
.add(Blocks.BARREL);
|
||||
prov.tag(AllBlockTags.COPYCAT_DENY.tag)
|
||||
.addTag(BlockTags.CAULDRONS)
|
||||
.addTag(BlockTags.SAPLINGS)
|
||||
.addTag(BlockTags.CLIMBABLE);
|
||||
|
||||
// COMPAT
|
||||
|
||||
addOptional(prov.tag(AllBlockTags.NON_MOVABLE.tag), Mods.IE,
|
||||
"connector_lv", "connector_lv_relay", "connector_mv", "connector_mv_relay",
|
||||
"connector_hv", "connector_hv_relay", "connector_bundled", "connector_structural",
|
||||
"connector_redstone", "connector_probe", "breaker_switch");
|
||||
|
||||
// VALIDATE
|
||||
|
||||
for (AllBlockTags tag : AllBlockTags.values()) {
|
||||
if (tag.alwaysDatagen) {
|
||||
prov.getOrCreateRawBuilder(tag.tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void genItemTags(RegistrateTagsProvider<Item> prov) {
|
||||
prov.tag(AllItemTags.SLEEPERS.tag)
|
||||
.add(Items.STONE_SLAB, Items.SMOOTH_STONE_SLAB, Items.ANDESITE_SLAB);
|
||||
|
||||
prov.tag(AllItemTags.STRIPPED_LOGS.tag)
|
||||
.addTag(AllItemTags.VANILLA_STRIPPED_LOGS.tag)
|
||||
.addTag(AllItemTags.MODDED_STRIPPED_LOGS.tag);
|
||||
|
||||
prov.tag(AllItemTags.STRIPPED_WOOD.tag)
|
||||
.addTag(AllItemTags.VANILLA_STRIPPED_WOOD.tag)
|
||||
.addTag(AllItemTags.MODDED_STRIPPED_WOOD.tag);
|
||||
|
||||
prov.tag(AllItemTags.DEPLOYABLE_DRINK.tag)
|
||||
.add(Items.MILK_BUCKET, Items.POTION);
|
||||
|
||||
prov.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
|
||||
.add(Items.GLASS_BOTTLE, Items.POTION, Items.SPLASH_POTION, Items.LINGERING_POTION,
|
||||
Items.HONEY_BOTTLE, Items.CAKE);
|
||||
|
||||
prov.tag(AllItemTags.CONTRAPTION_CONTROLLED.tag)
|
||||
.add(Items.BELL, Items.CAMPFIRE, Items.SOUL_CAMPFIRE, Items.DISPENSER, Items.DROPPER);
|
||||
|
||||
prov.tag(AllItemTags.VANILLA_STRIPPED_LOGS.tag)
|
||||
.add(Items.STRIPPED_ACACIA_LOG, Items.STRIPPED_BIRCH_LOG, Items.STRIPPED_CRIMSON_STEM,
|
||||
Items.STRIPPED_DARK_OAK_LOG, Items.STRIPPED_JUNGLE_LOG, Items.STRIPPED_MANGROVE_LOG,
|
||||
Items.STRIPPED_OAK_LOG, Items.STRIPPED_SPRUCE_LOG, Items.STRIPPED_WARPED_STEM);
|
||||
|
||||
prov.tag(AllItemTags.VANILLA_STRIPPED_WOOD.tag)
|
||||
.add(Items.STRIPPED_ACACIA_WOOD, Items.STRIPPED_BIRCH_WOOD, Items.STRIPPED_CRIMSON_HYPHAE,
|
||||
Items.STRIPPED_DARK_OAK_WOOD, Items.STRIPPED_JUNGLE_WOOD, Items.STRIPPED_MANGROVE_WOOD,
|
||||
Items.STRIPPED_OAK_WOOD, Items.STRIPPED_SPRUCE_WOOD, Items.STRIPPED_WARPED_HYPHAE);
|
||||
|
||||
prov.tag(ItemTags.BEACON_PAYMENT_ITEMS)
|
||||
.addTag(AllItemTags.CREATE_INGOTS.tag);
|
||||
|
||||
prov.tag(Tags.Items.INGOTS)
|
||||
.addTag(AllItemTags.CREATE_INGOTS.tag);
|
||||
|
||||
// COMPAT
|
||||
|
||||
genStrippedWood(prov);
|
||||
|
||||
// VALIDATE
|
||||
|
||||
for (AllItemTags tag : AllItemTags.values()) {
|
||||
if (tag.alwaysDatagen) {
|
||||
prov.getOrCreateRawBuilder(tag.tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void genStrippedWood(RegistrateTagsProvider<Item> prov) {
|
||||
TagAppender<Item> logAppender = prov.tag(AllItemTags.MODDED_STRIPPED_LOGS.tag);
|
||||
TagAppender<Item> woodAppender = prov.tag(AllItemTags.MODDED_STRIPPED_WOOD.tag);
|
||||
StrippedWoodHelper helper = new StrippedWoodHelper(logAppender, woodAppender);
|
||||
|
||||
helper.add(Mods.ARS_N, "blue_archwood", "purple_archwood", "green_archwood", "red_archwood");
|
||||
helper.add(Mods.BTN, "livingwood", "dreamwood");
|
||||
helper.add(Mods.FA, "cherrywood", "mysterywood");
|
||||
helper.add(Mods.HEX, "akashic");
|
||||
helper.add(Mods.ID, "menril");
|
||||
helper.add(Mods.BYG, "aspen", "baobab", "enchanted", "cherry", "cika", "cypress", "ebony", "ether",
|
||||
"fir", "green_enchanted", "holly", "jacaranda", "lament", "mahogany", "mangrove", "maple", "nightshade",
|
||||
"palm", "palo_verde", "pine", "rainbow_eucalyptus", "redwood", "skyris", "willow", "witch_hazel",
|
||||
"zelkova");
|
||||
helper.add(Mods.SG, "netherwood");
|
||||
helper.add(Mods.TF, "twilight_oak", "canopy", "mangrove", "dark", "time", "transformation", "mining",
|
||||
"sorting");
|
||||
helper.add(Mods.TIC, "greenheart", "skyroot", "bloodshroom");
|
||||
helper.add(Mods.AP, "twisted");
|
||||
helper.add(Mods.Q, "azalea", "blossom");
|
||||
helper.add(Mods.ECO, "coconut", "walnut", "azalea");
|
||||
helper.add(Mods.BOP, "fir", "redwood", "cherry", "mahogany", "jacaranda", "palm", "willow", "dead",
|
||||
"magic", "umbran", "hellbark");
|
||||
helper.add(Mods.BSK, "bluebright", "starlit", "frostbright", "lunar", "dusk", "maple", "cherry");
|
||||
|
||||
addOptional(logAppender, Mods.BYG, "stripped_bulbis_stem");
|
||||
addOptional(woodAppender, Mods.BYG, "stripped_bulbis_wood");
|
||||
}
|
||||
|
||||
private static void genFluidTags(RegistrateTagsProvider<Fluid> prov) {
|
||||
prov.tag(AllFluidTags.BOTTOMLESS_ALLOW.tag)
|
||||
.add(Fluids.WATER, Fluids.LAVA);
|
||||
|
||||
// VALIDATE
|
||||
|
||||
for (AllFluidTags tag : AllFluidTags.values()) {
|
||||
if (tag.alwaysDatagen) {
|
||||
prov.getOrCreateRawBuilder(tag.tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void genEntityTags(RegistrateTagsProvider<EntityType<?>> prov) {
|
||||
|
||||
// VALIDATE
|
||||
|
||||
for (AllEntityTags tag : AllEntityTags.values()) {
|
||||
if (tag.alwaysDatagen) {
|
||||
prov.getOrCreateRawBuilder(tag.tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class StrippedWoodHelper {
|
||||
protected final TagAppender<Item> logAppender;
|
||||
protected final TagAppender<Item> woodAppender;
|
||||
|
||||
public StrippedWoodHelper(TagAppender<Item> logAppender, TagAppender<Item> woodAppender) {
|
||||
this.logAppender = logAppender;
|
||||
this.woodAppender = woodAppender;
|
||||
}
|
||||
|
||||
public void add(Mods mod, String... woodTypes) {
|
||||
for (String type : woodTypes) {
|
||||
String strippedPre = mod.strippedIsSuffix ? "" : "stripped_";
|
||||
String strippedPost = mod.strippedIsSuffix ? "_stripped" : "";
|
||||
addOptional(logAppender, mod, strippedPre + type + "_log" + strippedPost);
|
||||
addOptional(woodAppender, mod, strippedPre + type + (mod.omitWoodSuffix ? "" : "_wood") + strippedPost);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -26,6 +26,12 @@ public enum Mods {
|
|||
TF("twilightforest"),
|
||||
ECO("ecologics"),
|
||||
|
||||
ENV("environmental"),
|
||||
ATM("atmospheric"),
|
||||
ATM_2("atmospheric", b -> b.omitWoodSuffix()),
|
||||
IX("infernalexp"),
|
||||
GOOD("goodending"),
|
||||
BMK("biomemakeover")
|
||||
;
|
||||
|
||||
private final String id;
|
||||
|
|
|
@ -39,7 +39,7 @@ public record ItemDescription(ImmutableList<Component> lines, ImmutableList<Comp
|
|||
|
||||
@Nullable
|
||||
public static ItemDescription create(String translationKey, Palette palette) {
|
||||
if (!canFillBuilder(translationKey)) {
|
||||
if (!canFillBuilder(translationKey + ".summary")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,24 +2,17 @@ package com.simibubi.create.foundation.ponder;
|
|||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.ponder.ui.PonderTagIndexScreen;
|
||||
import com.simibubi.create.foundation.ponder.ui.PonderTagScreen;
|
||||
import com.simibubi.create.foundation.ponder.ui.PonderUI;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.infrastructure.ponder.AllPonderTags;
|
||||
import com.simibubi.create.infrastructure.ponder.PonderIndex;
|
||||
import com.simibubi.create.infrastructure.ponder.SharedText;
|
||||
import com.tterrag.registrate.AbstractRegistrate;
|
||||
|
||||
import net.minecraft.client.resources.language.I18n;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
public class PonderLocalization {
|
||||
|
||||
static final Map<ResourceLocation, String> SHARED = new HashMap<>();
|
||||
static final Map<ResourceLocation, Couple<String>> TAG = new HashMap<>();
|
||||
static final Map<ResourceLocation, String> CHAPTER = new HashMap<>();
|
||||
|
@ -46,6 +39,30 @@ public class PonderLocalization {
|
|||
|
||||
//
|
||||
|
||||
public static final String LANG_PREFIX = "ponder.";
|
||||
|
||||
protected static String langKeyForShared(ResourceLocation k) {
|
||||
return k.getNamespace() + "." + LANG_PREFIX + "shared." + k.getPath();
|
||||
}
|
||||
|
||||
protected static String langKeyForTag(ResourceLocation k) {
|
||||
return k.getNamespace() + "." + LANG_PREFIX + "tag." + k.getPath();
|
||||
}
|
||||
|
||||
protected static String langKeyForTagDescription(ResourceLocation k) {
|
||||
return k.getNamespace() + "." + LANG_PREFIX + "tag." + k.getPath() + ".description";
|
||||
}
|
||||
|
||||
protected static String langKeyForChapter(ResourceLocation k) {
|
||||
return k.getNamespace() + "." + LANG_PREFIX + "chapter." + k.getPath();
|
||||
}
|
||||
|
||||
protected static String langKeyForSpecific(ResourceLocation sceneId, String k) {
|
||||
return sceneId.getNamespace() + "." + LANG_PREFIX + sceneId.getPath() + "." + k;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
public static String getShared(ResourceLocation key) {
|
||||
if (PonderIndex.editingModeActive())
|
||||
return SHARED.containsKey(key) ? SHARED.get(key) : ("unregistered shared entry: " + key);
|
||||
|
@ -81,25 +98,37 @@ public class PonderLocalization {
|
|||
|
||||
//
|
||||
|
||||
public static final String LANG_PREFIX = "ponder.";
|
||||
private static boolean sceneLangGenerated = false;
|
||||
|
||||
public static void record(String namespace, JsonObject object) {
|
||||
public static void generateSceneLang() {
|
||||
if (sceneLangGenerated) {
|
||||
return;
|
||||
}
|
||||
|
||||
sceneLangGenerated = true;
|
||||
PonderRegistry.ALL.forEach((id, list) -> {
|
||||
for (int i = 0; i < list.size(); i++)
|
||||
PonderRegistry.compileScene(i, list.get(i), null);
|
||||
});
|
||||
}
|
||||
|
||||
public static void provideLang(String namespace, BiConsumer<String, String> consumer) {
|
||||
SHARED.forEach((k, v) -> {
|
||||
if (k.getNamespace().equals(namespace)) {
|
||||
object.addProperty(langKeyForShared(k), v);
|
||||
consumer.accept(langKeyForShared(k), v);
|
||||
}
|
||||
});
|
||||
|
||||
TAG.forEach((k, v) -> {
|
||||
if (k.getNamespace().equals(namespace)) {
|
||||
object.addProperty(langKeyForTag(k), v.getFirst());
|
||||
object.addProperty(langKeyForTagDescription(k), v.getSecond());
|
||||
consumer.accept(langKeyForTag(k), v.getFirst());
|
||||
consumer.accept(langKeyForTagDescription(k), v.getSecond());
|
||||
}
|
||||
});
|
||||
|
||||
CHAPTER.forEach((k, v) -> {
|
||||
if (k.getNamespace().equals(namespace)) {
|
||||
object.addProperty(langKeyForChapter(k), v);
|
||||
consumer.accept(langKeyForChapter(k), v);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -112,93 +141,18 @@ public class PonderLocalization {
|
|||
.entrySet()
|
||||
.stream()
|
||||
.sorted(Map.Entry.comparingByKey())
|
||||
.forEach(subEntry -> object.addProperty(
|
||||
.forEach(subEntry -> consumer.accept(
|
||||
langKeyForSpecific(entry.getKey(), subEntry.getKey()), subEntry.getValue()));
|
||||
});
|
||||
}
|
||||
|
||||
private static void recordGeneral(JsonObject object) {
|
||||
addGeneral(object, PonderTooltipHandler.HOLD_TO_PONDER, "Hold [%1$s] to Ponder");
|
||||
addGeneral(object, PonderTooltipHandler.SUBJECT, "Subject of this scene");
|
||||
addGeneral(object, PonderUI.PONDERING, "Pondering about...");
|
||||
addGeneral(object, PonderUI.IDENTIFY_MODE, "Identify mode active.\nUnpause with [%1$s]");
|
||||
addGeneral(object, PonderTagScreen.ASSOCIATED, "Associated Entries");
|
||||
|
||||
addGeneral(object, PonderUI.CLOSE, "Close");
|
||||
addGeneral(object, PonderUI.IDENTIFY, "Identify");
|
||||
addGeneral(object, PonderUI.NEXT, "Next Scene");
|
||||
addGeneral(object, PonderUI.NEXT_UP, "Up Next:");
|
||||
addGeneral(object, PonderUI.PREVIOUS, "Previous Scene");
|
||||
addGeneral(object, PonderUI.REPLAY, "Replay");
|
||||
addGeneral(object, PonderUI.THINK_BACK, "Think Back");
|
||||
addGeneral(object, PonderUI.SLOW_TEXT, "Comfy Reading");
|
||||
|
||||
addGeneral(object, PonderTagIndexScreen.EXIT, "Exit");
|
||||
addGeneral(object, PonderTagIndexScreen.WELCOME, "Welcome to Ponder");
|
||||
addGeneral(object, PonderTagIndexScreen.CATEGORIES, "Available Categories in Create");
|
||||
addGeneral(object, PonderTagIndexScreen.DESCRIPTION,
|
||||
"Click one of the icons to learn about its associated Items and Blocks");
|
||||
addGeneral(object, PonderTagIndexScreen.TITLE, "Ponder Index");
|
||||
}
|
||||
|
||||
private static void addGeneral(JsonObject json, String key, String enUS) {
|
||||
json.addProperty(Create.ID + "." + key, enUS);
|
||||
}
|
||||
|
||||
public static void generateSceneLang() {
|
||||
PonderRegistry.ALL.forEach((id, list) -> {
|
||||
for (int i = 0; i < list.size(); i++)
|
||||
PonderRegistry.compileScene(i, list.get(i), null);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal use only.
|
||||
*/
|
||||
public static JsonObject provideLangEntries() {
|
||||
SharedText.gatherText();
|
||||
AllPonderTags.register();
|
||||
PonderIndex.register();
|
||||
|
||||
generateSceneLang();
|
||||
|
||||
JsonObject object = new JsonObject();
|
||||
recordGeneral(object);
|
||||
record(Create.ID, object);
|
||||
return object;
|
||||
@Deprecated(forRemoval = true)
|
||||
public static void record(String namespace, JsonObject object) {
|
||||
provideLang(namespace, object::addProperty);
|
||||
}
|
||||
|
||||
public static void provideRegistrateLang(AbstractRegistrate<?> registrate) {
|
||||
generateSceneLang();
|
||||
|
||||
JsonObject object = new JsonObject();
|
||||
record(registrate.getModid(), object);
|
||||
|
||||
for (Map.Entry<String, JsonElement> entry : object.entrySet()) {
|
||||
registrate.addRawLang(entry.getKey(), entry.getValue().getAsString());
|
||||
}
|
||||
provideLang(registrate.getModid(), registrate::addRawLang);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
protected static String langKeyForShared(ResourceLocation k) {
|
||||
return k.getNamespace() + "." + LANG_PREFIX + "shared." + k.getPath();
|
||||
}
|
||||
|
||||
protected static String langKeyForTag(ResourceLocation k) {
|
||||
return k.getNamespace() + "." + LANG_PREFIX + "tag." + k.getPath();
|
||||
}
|
||||
|
||||
protected static String langKeyForTagDescription(ResourceLocation k) {
|
||||
return k.getNamespace() + "." + LANG_PREFIX + "tag." + k.getPath() + ".description";
|
||||
}
|
||||
|
||||
protected static String langKeyForChapter(ResourceLocation k) {
|
||||
return k.getNamespace() + "." + LANG_PREFIX + "chapter." + k.getPath();
|
||||
}
|
||||
|
||||
protected static String langKeyForSpecific(ResourceLocation sceneId, String k) {
|
||||
return sceneId.getNamespace() + "." + LANG_PREFIX + sceneId.getPath() + "." + k;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ import javax.annotation.Nullable;
|
|||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllTags.AllBlockTags;
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock;
|
||||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel;
|
||||
import com.simibubi.create.foundation.blockEntity.IMergeableBE;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
|
@ -33,6 +35,7 @@ import net.minecraft.world.level.block.BaseRailBlock;
|
|||
import net.minecraft.world.level.block.BedBlock;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.CampfireBlock;
|
||||
import net.minecraft.world.level.block.IceBlock;
|
||||
import net.minecraft.world.level.block.SlimeBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
@ -359,4 +362,14 @@ public class BlockHelper {
|
|||
return toState;
|
||||
}
|
||||
|
||||
public static boolean isNotUnheated(BlockState state) {
|
||||
if (state.is(BlockTags.CAMPFIRES) && state.hasProperty(CampfireBlock.LIT)) {
|
||||
return state.getValue(CampfireBlock.LIT);
|
||||
}
|
||||
if (state.hasProperty(BlazeBurnerBlock.HEAT_LEVEL)) {
|
||||
return state.getValue(BlazeBurnerBlock.HEAT_LEVEL) != HeatLevel.NONE;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
package com.simibubi.create.infrastructure.data;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.advancement.AllAdvancements;
|
||||
import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen;
|
||||
import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen;
|
||||
import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen;
|
||||
import com.simibubi.create.foundation.data.recipe.StandardRecipeGen;
|
||||
import com.simibubi.create.foundation.ponder.PonderLocalization;
|
||||
import com.simibubi.create.foundation.utility.FilesHelper;
|
||||
import com.simibubi.create.infrastructure.ponder.AllPonderTags;
|
||||
import com.simibubi.create.infrastructure.ponder.GeneralText;
|
||||
import com.simibubi.create.infrastructure.ponder.PonderIndex;
|
||||
import com.simibubi.create.infrastructure.ponder.SharedText;
|
||||
import com.tterrag.registrate.providers.ProviderType;
|
||||
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent;
|
||||
|
||||
public class CreateDatagen {
|
||||
public static void gatherData(GatherDataEvent event) {
|
||||
addExtraRegistrateData();
|
||||
|
||||
DataGenerator generator = event.getGenerator();
|
||||
ExistingFileHelper existingFileHelper = event.getExistingFileHelper();
|
||||
|
||||
if (event.includeClient()) {
|
||||
generator.addProvider(AllSoundEvents.provider(generator));
|
||||
}
|
||||
|
||||
if (event.includeServer()) {
|
||||
generator.addProvider(new CreateRecipeSerializerTagsProvider(generator, existingFileHelper));
|
||||
|
||||
generator.addProvider(new AllAdvancements(generator));
|
||||
|
||||
generator.addProvider(new StandardRecipeGen(generator));
|
||||
generator.addProvider(new MechanicalCraftingRecipeGen(generator));
|
||||
generator.addProvider(new SequencedAssemblyRecipeGen(generator));
|
||||
ProcessingRecipeGen.registerAll(generator);
|
||||
|
||||
// AllOreFeatureConfigEntries.gatherData(event);
|
||||
}
|
||||
}
|
||||
|
||||
private static void addExtraRegistrateData() {
|
||||
CreateRegistrateTags.addGenerators();
|
||||
|
||||
Create.REGISTRATE.addDataGenerator(ProviderType.LANG, provider -> {
|
||||
BiConsumer<String, String> langConsumer = provider::add;
|
||||
|
||||
provideDefaultLang("interface", langConsumer);
|
||||
provideDefaultLang("tooltips", langConsumer);
|
||||
AllAdvancements.provideLang(langConsumer);
|
||||
AllSoundEvents.provideLang(langConsumer);
|
||||
providePonderLang(langConsumer);
|
||||
});
|
||||
}
|
||||
|
||||
private static void provideDefaultLang(String fileName, BiConsumer<String, String> consumer) {
|
||||
String path = "assets/create/lang/default/" + fileName + ".json";
|
||||
JsonElement jsonElement = FilesHelper.loadJsonResource(path);
|
||||
if (jsonElement == null) {
|
||||
throw new IllegalStateException(String.format("Could not find default lang file: %s", path));
|
||||
}
|
||||
JsonObject jsonObject = jsonElement.getAsJsonObject();
|
||||
for (Entry<String, JsonElement> entry : jsonObject.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
String value = entry.getValue().getAsString();
|
||||
consumer.accept(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
private static void providePonderLang(BiConsumer<String, String> consumer) {
|
||||
// Register these since FMLClientSetupEvent does not run during datagen
|
||||
AllPonderTags.register();
|
||||
PonderIndex.register();
|
||||
|
||||
SharedText.gatherText();
|
||||
PonderLocalization.generateSceneLang();
|
||||
|
||||
GeneralText.provideLang(consumer);
|
||||
PonderLocalization.provideLang(Create.ID, consumer);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.simibubi.create.foundation.data;
|
||||
package com.simibubi.create.infrastructure.data;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
@ -12,20 +12,28 @@ import net.minecraft.data.tags.TagsProvider;
|
|||
import net.minecraft.world.item.crafting.RecipeSerializer;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
|
||||
public class RecipeSerializerTagGen extends TagsProvider<RecipeSerializer<?>> {
|
||||
public RecipeSerializerTagGen(DataGenerator generator, @Nullable ExistingFileHelper existingFileHelper) {
|
||||
public class CreateRecipeSerializerTagsProvider extends TagsProvider<RecipeSerializer<?>> {
|
||||
public CreateRecipeSerializerTagsProvider(DataGenerator generator, @Nullable ExistingFileHelper existingFileHelper) {
|
||||
super(generator, Registry.RECIPE_SERIALIZER, Create.ID, existingFileHelper);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addTags() {
|
||||
tag(AllRecipeSerializerTags.AUTOMATION_IGNORE.tag)
|
||||
.addOptional(Mods.OCCULTISM.rl("spirit_trade"))
|
||||
.addOptional(Mods.OCCULTISM.rl("ritual"));
|
||||
|
||||
// VALIDATE
|
||||
|
||||
for (AllRecipeSerializerTags tag : AllRecipeSerializerTags.values()) {
|
||||
if (tag.alwaysDatagen) {
|
||||
getOrCreateRawBuilder(tag.tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Create's Recipe Serializer Tags";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addTags() {
|
||||
this.tag(AllRecipeSerializerTags.AUTOMATION_IGNORE.tag)
|
||||
.addOptional(Mods.OCCULTISM.rl("spirit_trade"))
|
||||
.addOptional(Mods.OCCULTISM.rl("ritual"));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,242 @@
|
|||
package com.simibubi.create.infrastructure.data;
|
||||
|
||||
import com.simibubi.create.AllTags.AllBlockTags;
|
||||
import com.simibubi.create.AllTags.AllEntityTags;
|
||||
import com.simibubi.create.AllTags.AllFluidTags;
|
||||
import com.simibubi.create.AllTags.AllItemTags;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.data.TagGen;
|
||||
import com.simibubi.create.foundation.data.recipe.Mods;
|
||||
import com.tterrag.registrate.providers.ProviderType;
|
||||
import com.tterrag.registrate.providers.RegistrateTagsProvider;
|
||||
|
||||
import net.minecraft.data.tags.TagsProvider.TagAppender;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraftforge.common.Tags;
|
||||
|
||||
public class CreateRegistrateTags {
|
||||
public static void addGenerators() {
|
||||
Create.REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, CreateRegistrateTags::genBlockTags);
|
||||
Create.REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, CreateRegistrateTags::genItemTags);
|
||||
Create.REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, CreateRegistrateTags::genFluidTags);
|
||||
Create.REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, CreateRegistrateTags::genEntityTags);
|
||||
}
|
||||
|
||||
private static void genBlockTags(RegistrateTagsProvider<Block> prov) {
|
||||
prov.tag(AllBlockTags.BRITTLE.tag)
|
||||
.add(Blocks.BELL, Blocks.COCOA, Blocks.FLOWER_POT)
|
||||
.addTag(BlockTags.BEDS)
|
||||
.addTag(BlockTags.DOORS);
|
||||
|
||||
prov.tag(AllBlockTags.COPYCAT_ALLOW.tag)
|
||||
.add(Blocks.BARREL);
|
||||
|
||||
prov.tag(AllBlockTags.COPYCAT_DENY.tag)
|
||||
.addTag(BlockTags.CAULDRONS)
|
||||
.addTag(BlockTags.SAPLINGS)
|
||||
.addTag(BlockTags.CLIMBABLE);
|
||||
|
||||
prov.tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_HAUNTING.tag)
|
||||
.add(Blocks.SOUL_FIRE)
|
||||
.add(Blocks.SOUL_CAMPFIRE);
|
||||
|
||||
prov.tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.tag)
|
||||
.add(Blocks.FIRE)
|
||||
.add(Blocks.CAMPFIRE);
|
||||
|
||||
prov.tag(AllBlockTags.FAN_TRANSPARENT.tag)
|
||||
.add(Blocks.IRON_BARS)
|
||||
.addTag(BlockTags.CAMPFIRES)
|
||||
.addTag(BlockTags.FENCES)
|
||||
.addTag(BlockTags.LEAVES);
|
||||
|
||||
prov.tag(AllBlockTags.MOVABLE_EMPTY_COLLIDER.tag)
|
||||
.add(Blocks.COBWEB, Blocks.POWDER_SNOW, Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK)
|
||||
.addTag(BlockTags.FENCE_GATES);
|
||||
|
||||
prov.tag(AllBlockTags.ORE_OVERRIDE_STONE.tag)
|
||||
.addTag(BlockTags.STONE_ORE_REPLACEABLES);
|
||||
|
||||
prov.tag(AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
|
||||
.add(Blocks.MAGMA_BLOCK, Blocks.LAVA)
|
||||
.addTag(BlockTags.CAMPFIRES)
|
||||
.addTag(BlockTags.FIRE);
|
||||
|
||||
prov.tag(AllBlockTags.SAFE_NBT.tag)
|
||||
.addTag(BlockTags.BANNERS)
|
||||
.addTag(BlockTags.SIGNS);
|
||||
|
||||
prov.tag(AllBlockTags.TREE_ATTACHMENTS.tag)
|
||||
.add(Blocks.BEE_NEST, Blocks.COCOA, Blocks.MOSS_CARPET, Blocks.SHROOMLIGHT, Blocks.VINE);
|
||||
|
||||
prov.tag(AllBlockTags.WINDMILL_SAILS.tag)
|
||||
.addTag(BlockTags.WOOL);
|
||||
|
||||
prov.tag(AllBlockTags.WRENCH_PICKUP.tag)
|
||||
.add(Blocks.REDSTONE_WIRE, Blocks.REDSTONE_TORCH, Blocks.REPEATER, Blocks.LEVER,
|
||||
Blocks.COMPARATOR, Blocks.OBSERVER, Blocks.REDSTONE_WALL_TORCH, Blocks.PISTON, Blocks.STICKY_PISTON,
|
||||
Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.DAYLIGHT_DETECTOR, Blocks.TARGET, Blocks.HOPPER)
|
||||
.addTag(BlockTags.BUTTONS)
|
||||
.addTag(BlockTags.PRESSURE_PLATES)
|
||||
.addTag(BlockTags.RAILS);
|
||||
|
||||
// COMPAT
|
||||
|
||||
TagGen.addOptional(prov.tag(AllBlockTags.NON_MOVABLE.tag), Mods.IE,
|
||||
"connector_lv", "connector_lv_relay", "connector_mv", "connector_mv_relay",
|
||||
"connector_hv", "connector_hv_relay", "connector_bundled", "connector_structural",
|
||||
"connector_redstone", "connector_probe", "breaker_switch");
|
||||
|
||||
// VALIDATE
|
||||
|
||||
for (AllBlockTags tag : AllBlockTags.values()) {
|
||||
if (tag.alwaysDatagen) {
|
||||
prov.getOrCreateRawBuilder(tag.tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void genItemTags(RegistrateTagsProvider<Item> prov) {
|
||||
prov.tag(AllItemTags.SLEEPERS.tag)
|
||||
.add(Items.STONE_SLAB, Items.SMOOTH_STONE_SLAB, Items.ANDESITE_SLAB);
|
||||
|
||||
prov.tag(AllItemTags.STRIPPED_LOGS.tag)
|
||||
.addTag(AllItemTags.VANILLA_STRIPPED_LOGS.tag)
|
||||
.addTag(AllItemTags.MODDED_STRIPPED_LOGS.tag);
|
||||
|
||||
prov.tag(AllItemTags.STRIPPED_WOOD.tag)
|
||||
.addTag(AllItemTags.VANILLA_STRIPPED_WOOD.tag)
|
||||
.addTag(AllItemTags.MODDED_STRIPPED_WOOD.tag);
|
||||
|
||||
prov.tag(AllItemTags.DEPLOYABLE_DRINK.tag)
|
||||
.add(Items.MILK_BUCKET, Items.POTION);
|
||||
|
||||
prov.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
|
||||
.add(Items.GLASS_BOTTLE, Items.POTION, Items.SPLASH_POTION, Items.LINGERING_POTION,
|
||||
Items.HONEY_BOTTLE, Items.CAKE);
|
||||
|
||||
prov.tag(AllItemTags.CONTRAPTION_CONTROLLED.tag)
|
||||
.add(Items.BELL, Items.CAMPFIRE, Items.SOUL_CAMPFIRE, Items.DISPENSER, Items.DROPPER);
|
||||
|
||||
prov.tag(AllItemTags.VANILLA_STRIPPED_LOGS.tag)
|
||||
.add(Items.STRIPPED_ACACIA_LOG, Items.STRIPPED_BIRCH_LOG, Items.STRIPPED_CRIMSON_STEM,
|
||||
Items.STRIPPED_DARK_OAK_LOG, Items.STRIPPED_JUNGLE_LOG, Items.STRIPPED_OAK_LOG,
|
||||
Items.STRIPPED_SPRUCE_LOG, Items.STRIPPED_WARPED_STEM);
|
||||
|
||||
prov.tag(AllItemTags.VANILLA_STRIPPED_WOOD.tag)
|
||||
.add(Items.STRIPPED_ACACIA_WOOD, Items.STRIPPED_BIRCH_WOOD,
|
||||
Items.STRIPPED_CRIMSON_HYPHAE, Items.STRIPPED_DARK_OAK_WOOD, Items.STRIPPED_JUNGLE_WOOD,
|
||||
Items.STRIPPED_OAK_WOOD, Items.STRIPPED_SPRUCE_WOOD, Items.STRIPPED_WARPED_HYPHAE);
|
||||
|
||||
prov.tag(ItemTags.BEACON_PAYMENT_ITEMS)
|
||||
.addTag(AllItemTags.CREATE_INGOTS.tag);
|
||||
|
||||
prov.tag(Tags.Items.INGOTS)
|
||||
.addTag(AllItemTags.CREATE_INGOTS.tag);
|
||||
|
||||
// COMPAT
|
||||
|
||||
genStrippedWoodItemTags(prov);
|
||||
|
||||
// VALIDATE
|
||||
|
||||
for (AllItemTags tag : AllItemTags.values()) {
|
||||
if (tag.alwaysDatagen) {
|
||||
prov.getOrCreateRawBuilder(tag.tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void genStrippedWoodItemTags(RegistrateTagsProvider<Item> prov) {
|
||||
TagAppender<Item> logAppender = prov.tag(AllItemTags.MODDED_STRIPPED_LOGS.tag);
|
||||
TagAppender<Item> woodAppender = prov.tag(AllItemTags.MODDED_STRIPPED_WOOD.tag);
|
||||
StrippedWoodHelper helper = new StrippedWoodHelper(logAppender, woodAppender);
|
||||
|
||||
helper.add(Mods.ARS_N, "blue_archwood", "purple_archwood", "green_archwood", "red_archwood");
|
||||
helper.add(Mods.BTN, "livingwood", "dreamwood");
|
||||
helper.add(Mods.FA, "cherrywood", "mysterywood");
|
||||
helper.add(Mods.HEX, "akashic");
|
||||
helper.add(Mods.ID, "menril");
|
||||
helper.add(Mods.BYG, "aspen", "baobab", "enchanted", "cherry", "cika", "cypress", "ebony", "ether",
|
||||
"fir", "green_enchanted", "holly", "jacaranda", "lament", "mahogany", "mangrove", "maple", "nightshade",
|
||||
"palm", "palo_verde", "pine", "rainbow_eucalyptus", "redwood", "skyris", "willow", "witch_hazel",
|
||||
"zelkova");
|
||||
helper.add(Mods.SG, "netherwood");
|
||||
helper.add(Mods.TF, "twilight_oak", "canopy", "mangrove", "dark", "time", "transformation", "mining",
|
||||
"sorting");
|
||||
helper.add(Mods.TIC, "greenheart", "skyroot", "bloodshroom");
|
||||
helper.add(Mods.AP, "twisted");
|
||||
helper.add(Mods.Q, "azalea", "blossom");
|
||||
helper.add(Mods.ECO, "coconut", "walnut", "azalea");
|
||||
helper.add(Mods.BOP, "fir", "redwood", "cherry", "mahogany", "jacaranda", "palm", "willow", "dead",
|
||||
"magic", "umbran", "hellbark");
|
||||
helper.add(Mods.BSK, "bluebright", "starlit", "frostbright", "lunar", "dusk", "maple", "cherry");
|
||||
helper.add(Mods.ENV, "cherry", "willow", "wisteria");
|
||||
helper.add(Mods.ATM, "aspen", "kousa", "yucca", "morado");
|
||||
helper.add(Mods.ATM_2, "rosewood", "grimwood");
|
||||
helper.add(Mods.GOOD, "muddy_oak", "cypress");
|
||||
helper.add(Mods.BMK, "blighted_balsa", "willow", "swamp_cypress", "ancient_oak");
|
||||
|
||||
TagGen.addOptional(logAppender, Mods.IX, "stripped_luminous_stem");
|
||||
TagGen.addOptional(woodAppender, Mods.IX, "stripped_luminous_hyphae");
|
||||
TagGen.addOptional(logAppender, Mods.BYG, "stripped_bulbis_stem");
|
||||
TagGen.addOptional(woodAppender, Mods.BYG, "stripped_bulbis_wood");
|
||||
}
|
||||
|
||||
private static void genFluidTags(RegistrateTagsProvider<Fluid> prov) {
|
||||
prov.tag(AllFluidTags.BOTTOMLESS_ALLOW.tag)
|
||||
.add(Fluids.WATER, Fluids.LAVA);
|
||||
|
||||
prov.tag(AllFluidTags.FAN_PROCESSING_CATALYSTS_BLASTING.tag)
|
||||
.add(Fluids.LAVA, Fluids.FLOWING_LAVA);
|
||||
|
||||
prov.tag(AllFluidTags.FAN_PROCESSING_CATALYSTS_SPLASHING.tag)
|
||||
.add(Fluids.WATER, Fluids.FLOWING_WATER);
|
||||
|
||||
// VALIDATE
|
||||
|
||||
for (AllFluidTags tag : AllFluidTags.values()) {
|
||||
if (tag.alwaysDatagen) {
|
||||
prov.getOrCreateRawBuilder(tag.tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void genEntityTags(RegistrateTagsProvider<EntityType<?>> prov) {
|
||||
|
||||
// VALIDATE
|
||||
|
||||
for (AllEntityTags tag : AllEntityTags.values()) {
|
||||
if (tag.alwaysDatagen) {
|
||||
prov.getOrCreateRawBuilder(tag.tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class StrippedWoodHelper {
|
||||
protected final TagAppender<Item> logAppender;
|
||||
protected final TagAppender<Item> woodAppender;
|
||||
|
||||
public StrippedWoodHelper(TagAppender<Item> logAppender, TagAppender<Item> woodAppender) {
|
||||
this.logAppender = logAppender;
|
||||
this.woodAppender = woodAppender;
|
||||
}
|
||||
|
||||
public void add(Mods mod, String... woodTypes) {
|
||||
for (String type : woodTypes) {
|
||||
String strippedPre = mod.strippedIsSuffix ? "" : "stripped_";
|
||||
String strippedPost = mod.strippedIsSuffix ? "_stripped" : "";
|
||||
TagGen.addOptional(logAppender, mod, strippedPre + type + "_log" + strippedPost);
|
||||
TagGen.addOptional(woodAppender, mod, strippedPre + type + (mod.omitWoodSuffix ? "" : "_wood") + strippedPost);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package com.simibubi.create.infrastructure.ponder;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.ponder.PonderTooltipHandler;
|
||||
import com.simibubi.create.foundation.ponder.ui.PonderTagIndexScreen;
|
||||
import com.simibubi.create.foundation.ponder.ui.PonderTagScreen;
|
||||
import com.simibubi.create.foundation.ponder.ui.PonderUI;
|
||||
|
||||
public class GeneralText {
|
||||
public static void provideLang(BiConsumer<String, String> consumer) {
|
||||
consume(consumer, PonderTooltipHandler.HOLD_TO_PONDER, "Hold [%1$s] to Ponder");
|
||||
consume(consumer, PonderTooltipHandler.SUBJECT, "Subject of this scene");
|
||||
consume(consumer, PonderUI.PONDERING, "Pondering about...");
|
||||
consume(consumer, PonderUI.IDENTIFY_MODE, "Identify mode active.\nUnpause with [%1$s]");
|
||||
consume(consumer, PonderTagScreen.ASSOCIATED, "Associated Entries");
|
||||
|
||||
consume(consumer, PonderUI.CLOSE, "Close");
|
||||
consume(consumer, PonderUI.IDENTIFY, "Identify");
|
||||
consume(consumer, PonderUI.NEXT, "Next Scene");
|
||||
consume(consumer, PonderUI.NEXT_UP, "Up Next:");
|
||||
consume(consumer, PonderUI.PREVIOUS, "Previous Scene");
|
||||
consume(consumer, PonderUI.REPLAY, "Replay");
|
||||
consume(consumer, PonderUI.THINK_BACK, "Think Back");
|
||||
consume(consumer, PonderUI.SLOW_TEXT, "Comfy Reading");
|
||||
|
||||
consume(consumer, PonderTagIndexScreen.EXIT, "Exit");
|
||||
consume(consumer, PonderTagIndexScreen.WELCOME, "Welcome to Ponder");
|
||||
consume(consumer, PonderTagIndexScreen.CATEGORIES, "Available Categories in Create");
|
||||
consume(consumer, PonderTagIndexScreen.DESCRIPTION,
|
||||
"Click one of the icons to learn about its associated Items and Blocks");
|
||||
consume(consumer, PonderTagIndexScreen.TITLE, "Ponder Index");
|
||||
}
|
||||
|
||||
private static void consume(BiConsumer<String, String> consumer, String key, String enUS) {
|
||||
consumer.accept(Create.ID + "." + key, enUS);
|
||||
}
|
||||
}
|
|
@ -3,10 +3,7 @@ package com.simibubi.create.infrastructure.ponder;
|
|||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.ponder.PonderLocalization;
|
||||
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
public class SharedText {
|
||||
|
||||
public static void gatherText() {
|
||||
// Add entries used across several ponder scenes (Safe for hotswap)
|
||||
|
||||
|
@ -23,16 +20,7 @@ public class SharedText {
|
|||
add("storage_on_contraption", "Inventories attached to the Contraption will pick up their drops automatically");
|
||||
}
|
||||
|
||||
public static String get(ResourceLocation key) {
|
||||
return PonderLocalization.getShared(key);
|
||||
}
|
||||
|
||||
public static void add(ResourceLocation k, String v) {
|
||||
PonderLocalization.registerShared(k, v);
|
||||
}
|
||||
|
||||
private static void add(String k, String v) {
|
||||
add(Create.asResource(k), v);
|
||||
PonderLocalization.registerShared(Create.asResource(k), v);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
1
src/main/resources/assets/create/lang/be_by.json
Normal file
1
src/main/resources/assets/create/lang/be_by.json
Normal file
|
@ -0,0 +1 @@
|
|||
{}
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,36 +1,20 @@
|
|||
{
|
||||
|
||||
"item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)",
|
||||
"item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.",
|
||||
"item.create.example_item.tooltip.condition1": "When this",
|
||||
"item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)",
|
||||
"item.create.example_item.tooltip.condition2": "And When this",
|
||||
"item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like",
|
||||
"item.create.example_item.tooltip.control1": "When Ctrl pressed",
|
||||
"item.create.example_item.tooltip.action1": "These controls are displayed.",
|
||||
|
||||
"block.create.wooden_bracket.tooltip": "WOODEN BRACKET",
|
||||
"block.create.wooden_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.",
|
||||
|
||||
"block.create.metal_bracket.tooltip": "METAL BRACKET",
|
||||
"block.create.metal_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.",
|
||||
|
||||
"block.create.seat.tooltip": "SEAT",
|
||||
"block.create.seat.tooltip.summary": "Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.",
|
||||
"block.create.seat.tooltip.condition1": "Right click on Seat",
|
||||
"block.create.seat.tooltip.behaviour1": "Sits the player on the _Seat_. Press L-shift to leave the _Seat_.",
|
||||
|
||||
"item.create.blaze_cake.tooltip": "BLAZE CAKE",
|
||||
"item.create.blaze_cake.tooltip.summary": "A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!",
|
||||
|
||||
"item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND",
|
||||
"item.create.wand_of_symmetry.tooltip.summary": "_Mirrors Block placement_ while present in any _Hotbar Slot_.",
|
||||
"item.create.wand_of_symmetry.tooltip.condition1": "When used on a Surface",
|
||||
"item.create.wand_of_symmetry.tooltip.behaviour1": "_Creates_ or _Moves_ its Mirror. _Sneak_ while using to open the _Configuration Interface_",
|
||||
"item.create.wand_of_symmetry.tooltip.condition2": "When used with no target",
|
||||
"item.create.wand_of_symmetry.tooltip.behaviour2": "_Removes_ the active Mirror",
|
||||
|
||||
"item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER",
|
||||
"item.create.handheld_worldshaper.tooltip.summary": "_Creative mode_ tool for large-scale _landscaping_ from a distance.",
|
||||
"item.create.handheld_worldshaper.tooltip.condition1": "L-Click at Block",
|
||||
"item.create.handheld_worldshaper.tooltip.behaviour1": "_Targeted block_ will become the _material_ placed by the shaper.",
|
||||
|
@ -39,86 +23,70 @@
|
|||
"item.create.handheld_worldshaper.tooltip.condition3": "R-Click while Sneaking",
|
||||
"item.create.handheld_worldshaper.tooltip.behaviour3": "Opens the _Configuration Interface_",
|
||||
|
||||
"item.create.tree_fertilizer.tooltip": "TREE FERTILIZER",
|
||||
"item.create.tree_fertilizer.tooltip.summary": "A powerful combination of minerals useful for _growing saplings_ in tight spaces.",
|
||||
"item.create.tree_fertilizer.tooltip.condition1": "When used on a Sapling",
|
||||
"item.create.tree_fertilizer.tooltip.behaviour1": "Creates a tree _regardless_ of its _spacing conditions_",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "Greatly _increases reach distance_ of the wielder. Can be powered with _Air_ _Pressure_ from a _Backtank_",
|
||||
"item.create.extendo_grip.tooltip.condition1": "When in Off-Hand",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "Increases _reach distance_ of items used in the _Main-Hand_.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "While wearing Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "Launches your home-grown vegetables at Enemies. Can be powered with _Air_ _Pressure_ from a _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "_Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "While wearing Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "LIST FILTER",
|
||||
"item.create.filter.tooltip.summary": "_Matches items_ against a collection of _items_ or _other filters_. Can be used in _Filter Slots_ of Create's Components",
|
||||
"item.create.filter.tooltip.condition1": "When R-Clicked",
|
||||
"item.create.filter.tooltip.behaviour1": "Opens the _configuration interface_.",
|
||||
|
||||
"item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER",
|
||||
"item.create.attribute_filter.tooltip.summary": "_Matches items_ against a set of _attributes_ or _categories_. Can be used in _Filter Slots_ of Create's Components",
|
||||
"item.create.attribute_filter.tooltip.condition1": "When R-Clicked",
|
||||
"item.create.attribute_filter.tooltip.behaviour1": "Opens the _configuration interface_.",
|
||||
|
||||
"item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC",
|
||||
"item.create.empty_schematic.tooltip.summary": "Used as a recipe ingredient and for writing at the _Schematic Table_.",
|
||||
|
||||
"item.create.schematic.tooltip": "SCHEMATIC",
|
||||
"item.create.schematic.tooltip.summary": "Holds a structure to be positioned and placed into the world. Position the Hologram as desired and use a _Schematicannon_ to build it.",
|
||||
"item.create.schematic.tooltip.condition1": "When Held",
|
||||
"item.create.schematic.tooltip.behaviour1": "Can be positioned using the Tools on Screen.",
|
||||
"item.create.schematic.tooltip.condition2": "R-Click while Sneaking",
|
||||
"item.create.schematic.tooltip.behaviour2": "Opens an _Interface_ for entering exact _Coordinates_.",
|
||||
|
||||
"item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL",
|
||||
"item.create.schematic_and_quill.tooltip.summary": "Used for _saving a Structure_ in your world to a _.nbt file_.",
|
||||
"item.create.schematic_and_quill.tooltip.condition1": "Creating a selection",
|
||||
"item.create.schematic_and_quill.tooltip.behaviour1": "Select two _corner points_ using _R-Click_. Hold _Ctrl_ and Scroll to select locations mid-air.",
|
||||
"item.create.schematic_and_quill.tooltip.condition2": "Adjusting and Saving",
|
||||
"item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Scroll_ on the faces to adjust the size, then R-Click again to Save.",
|
||||
|
||||
"block.create.schematicannon.tooltip": "SCHEMATICANNON",
|
||||
"block.create.schematicannon.tooltip.summary": "Shoots blocks to recreate a deployed _Schematic_ in the World. Uses items from adjacent Inventories and _Gunpowder_ as fuel.",
|
||||
"block.create.schematicannon.tooltip.condition1": "When R-Clicked",
|
||||
"block.create.schematicannon.tooltip.behaviour1": "Opens the _Interface_",
|
||||
|
||||
"block.create.schematic_table.tooltip": "SCHEMATIC TABLE",
|
||||
"block.create.schematic_table.tooltip.summary": "Writes saved Schematics onto an _Empty Schematic_.",
|
||||
"block.create.schematic_table.tooltip.condition1": "When given an Empty Schematic",
|
||||
"block.create.schematic_table.tooltip.behaviour1": "Uploads a chosen File from your Schematics Folder.",
|
||||
|
||||
"item.create.goggles.tooltip": "GOGGLES",
|
||||
"item.create.goggles.tooltip.summary": "Augments your HUD with _miscellaneous information_ about placed components.",
|
||||
"item.create.goggles.tooltip.condition1": "When looking at blocks",
|
||||
"item.create.goggles.tooltip.behaviour1": "_Kinetic components_ show added _Stress Impact_ or _Capacity_. _Stressometers_ show statistics of their _attached kinetic network_. Some other blocks reveal information such as item and fluid content.",
|
||||
|
||||
"item.create.wrench.tooltip": "WRENCH",
|
||||
"item.create.wrench.tooltip.summary": "Multi-purpose tool for working with your kinetic contraptions.",
|
||||
"item.create.wrench.tooltip.condition1": "When used on Blocks",
|
||||
"item.create.wrench.tooltip.behaviour1": "_Rotates components_ around the clicked face. _Sneak_ while interacting to _dismantle_ components.",
|
||||
"item.create.wrench.tooltip.condition2": "When used on Contraptions",
|
||||
"item.create.wrench.tooltip.behaviour2": "_Relocates_ assembled minecart- and train-based contraptions.",
|
||||
|
||||
"block.create.nozzle.tooltip": "NOZZLE",
|
||||
"block.create.nozzle.tooltip.summary": "Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.",
|
||||
|
||||
"block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK",
|
||||
"block.create.cuckoo_clock.tooltip.summary": "Fine craftsmanship for _decorating_ a space and _keeping track of time_.",
|
||||
"block.create.cuckoo_clock.tooltip.condition1": "When Powered by Kinetics",
|
||||
"block.create.cuckoo_clock.tooltip.behaviour1": "Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.",
|
||||
|
||||
"block.create.turntable.tooltip": "TURNTABLE",
|
||||
"block.create.turntable.tooltip.summary": "Uses _Rotational Force_ to create Motion Sickness.",
|
||||
|
||||
"block.create.toolbox.tooltip": "TOOLBOX",
|
||||
"block.create.toolbox.tooltip.summary": "Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.",
|
||||
"block.create.toolbox.tooltip.condition1": "When Picked Up",
|
||||
"block.create.toolbox.tooltip.behaviour1": "_Retains_ Inventory _Contents_.",
|
||||
|
@ -127,30 +95,24 @@
|
|||
"block.create.toolbox.tooltip.condition3": "When R-Clicked",
|
||||
"block.create.toolbox.tooltip.behaviour3": "Opens the _Container Interface_.",
|
||||
|
||||
"block.create.creative_crate.tooltip": "CREATIVE CRATE",
|
||||
"block.create.creative_crate.tooltip.summary": "This _Storage Container_ allows infinite replication of items.",
|
||||
"block.create.creative_crate.tooltip.condition1": "When Item in Filter Slot",
|
||||
"block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
|
||||
"block.create.creative_crate.tooltip.condition2": "When next to Schematicannon",
|
||||
"block.create.creative_crate.tooltip.behaviour2": "Provides any material required by the Schematic.",
|
||||
|
||||
"item.create.creative_blaze_cake.tooltip": "CREATIVE BLAZE CAKE",
|
||||
"item.create.creative_blaze_cake.tooltip.summary": "A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
|
||||
"item.create.creative_blaze_cake.tooltip.condition1": "When Used",
|
||||
"item.create.creative_blaze_cake.tooltip.behaviour1": "_Cycles_ a Blaze Burner's heat level.",
|
||||
|
||||
"block.create.controller_rail.tooltip": "CONTROLLER RAIL",
|
||||
"block.create.controller_rail.tooltip.summary": "A _uni-directional_ powered rail with _variable speed_, controlled by the _signal strength_ supplied to it.",
|
||||
|
||||
"item.create.sand_paper.tooltip": "SAND PAPER",
|
||||
"item.create.sand_paper.tooltip.summary": "Can be used to _refine materials_. The process can be automated with a Deployer.",
|
||||
"item.create.sand_paper.tooltip.condition1": "When Used",
|
||||
"item.create.sand_paper.tooltip.behaviour1": "Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_",
|
||||
|
||||
"item.create.builders_tea.tooltip": "BUILDERS TEA",
|
||||
"item.create.builders_tea.tooltip.summary": "The perfect drink to get the day started- _Motivating_ and _Saturating._",
|
||||
|
||||
"item.create.linked_controller.tooltip": "LINKED CONTROLLER",
|
||||
"item.create.linked_controller.tooltip.summary": "Grants _handheld_ _control_ over _Redstone Link_ frequencies assigned to its _six_ _buttons_.",
|
||||
"item.create.linked_controller.tooltip.condition1": "R-Click",
|
||||
"item.create.linked_controller.tooltip.behaviour1": "_Toggles_ the controller. _Movement_ _controls_ are taken over while its active.",
|
||||
|
@ -161,86 +123,70 @@
|
|||
"item.create.linked_controller.tooltip.condition4": "R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.copper_diving_helmet.tooltip": "COPPER DIVING HELMET",
|
||||
"item.create.copper_diving_helmet.tooltip.summary": "Together with a _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
"item.create.copper_diving_helmet.tooltip.condition1": "When Worn",
|
||||
"item.create.copper_diving_helmet.tooltip.behaviour1": "Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.",
|
||||
|
||||
"item.create.netherite_diving_helmet.tooltip": "NETHERITE DIVING HELMET",
|
||||
"item.create.netherite_diving_helmet.tooltip.summary": "Together with a _Netherite Backtank_, this can protect you from _extreme heat_. To be effective, _Legs and Feet_ have to be covered in _Netherite_, too.",
|
||||
"item.create.netherite_diving_helmet.tooltip.condition1": "When Worn (Full set)",
|
||||
"item.create.netherite_diving_helmet.tooltip.behaviour1": "Provides immunity to _Fire_ and _Lava_, slowly draining _Air Pressure_ from the Backtank. Also grants _improved vision_ in Lava",
|
||||
|
||||
"item.create.copper_backtank.tooltip": "COPPER BACKTANK",
|
||||
"item.create.copper_backtank.tooltip.summary": "A _Wearable_ _Tank_ for carrying Pressurized Air.",
|
||||
"item.create.copper_backtank.tooltip.condition1": "When Worn",
|
||||
"item.create.copper_backtank.tooltip.behaviour1": "Provides _Pressurized_ _Air_ to Equipment that requires it.",
|
||||
"item.create.copper_backtank.tooltip.condition2": "When placed, Powered by Kinetics",
|
||||
"item.create.copper_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
|
||||
|
||||
"item.create.netherite_backtank.tooltip": "NETHERITE BACKTANK",
|
||||
"item.create.netherite_backtank.tooltip.summary": "A _Wearable_ _Tank_ for carrying Pressurized Air.",
|
||||
"item.create.netherite_backtank.tooltip.condition1": "When Worn",
|
||||
"item.create.netherite_backtank.tooltip.behaviour1": "Provides _Pressurized_ _Air_ to Equipment that requires it.",
|
||||
"item.create.netherite_backtank.tooltip.condition2": "When placed, Powered by Kinetics",
|
||||
"item.create.netherite_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
|
||||
|
||||
"block.create.placard.tooltip": "PLACARD",
|
||||
"block.create.placard.tooltip.summary": "_Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!",
|
||||
"block.create.placard.tooltip.condition1": "When R-Clicked with Item",
|
||||
"block.create.placard.tooltip.behaviour1": "_Adds_ the held _item_ to the Placard. _Emits_ a brief _Redstone_ signal if a matching item was present already.",
|
||||
"block.create.placard.tooltip.condition2": "When Punched",
|
||||
"block.create.placard.tooltip.behaviour2": "_Removes_ the current _item_ in the frame.",
|
||||
|
||||
"block.create.flywheel.tooltip": "FLYWHEEL",
|
||||
"block.create.flywheel.tooltip.summary": "_Embellish_ your _Machines_ with this imposing Wheel of Brass.",
|
||||
"block.create.flywheel.tooltip.condition1": "When Powered by Kinetics",
|
||||
"block.create.flywheel.tooltip.behaviour1": "Starts spinning.",
|
||||
|
||||
"item.create.copper_diving_boots.tooltip": "COPPER DIVING BOOTS",
|
||||
"item.create.copper_diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.",
|
||||
"item.create.copper_diving_boots.tooltip.condition1": "When Worn",
|
||||
"item.create.copper_diving_boots.tooltip.behaviour1": "Wielder _descends_ more _quickly_ in liquids. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.",
|
||||
|
||||
"item.create.netherite_diving_boots.tooltip": "NETHERITE DIVING BOOTS",
|
||||
"item.create.netherite_diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor, including Oceans made of Lava.",
|
||||
"item.create.netherite_diving_boots.tooltip.condition1": "When Worn",
|
||||
"item.create.netherite_diving_boots.tooltip.behaviour1": "Wielder _descends_ more _quickly_ in liquids. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.",
|
||||
|
||||
"item.create.crafting_blueprint.tooltip": "CRAFTING BLUEPRINT",
|
||||
"item.create.crafting_blueprint.tooltip.summary": "_Placed_ on a wall, it can be used to _specify_ _ingredient_ _arrangements_ for easier manual crafting. Each slot represents a Recipe.",
|
||||
"item.create.crafting_blueprint.condition1": "R-Click empty Slot",
|
||||
"item.create.crafting_blueprint.behaviour1": "Opens a _Crafting_ _menu_ allowing you to _configure_ a _recipe_ and items to display.",
|
||||
"item.create.crafting_blueprint.condition2": "R-Click configured Slot",
|
||||
"item.create.crafting_blueprint.behaviour2": "_Applies_ the _configured_ _recipe_ with matching Ingredients found in your _Inventory_. _Sneak_ to craft up to a _Stack_ of items.",
|
||||
|
||||
"item.create.minecart_coupling.tooltip": "MINECART COUPLING",
|
||||
"item.create.minecart_coupling.tooltip.summary": "_Chains_ together individual _Minecarts_, causing them to move as a group.",
|
||||
|
||||
"item.create.experience_nugget.tooltip": "NUGGET OF EXPERIENCE",
|
||||
"item.create.experience_nugget.tooltip.summary": "A speck of _inspiration_ from your fantastic inventions.",
|
||||
"item.create.experience_nugget.tooltip.condition1": "When Used",
|
||||
"item.create.experience_nugget.tooltip.behaviour1": "_Redeems_ _Experience_ points contained within.",
|
||||
|
||||
"block.create.peculiar_bell.tooltip": "PECULIAR BELL",
|
||||
"block.create.peculiar_bell.tooltip.summary": "A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may have side-effects...",
|
||||
|
||||
"block.create.haunted_bell.tooltip": "HAUNTED BELL",
|
||||
"block.create.haunted_bell.tooltip.summary": "A _Cursed Bell_ haunted by lost souls of the Nether.",
|
||||
"block.create.haunted_bell.tooltip.condition1": "When Held or Rang",
|
||||
"block.create.haunted_bell.tooltip.behaviour1": "Highlights nearby _Lightless Spots_ on which _Hostile Mobs_ can spawn.",
|
||||
|
||||
"block.create.copycat_panel.tooltip": "COPYCAT PANEL",
|
||||
"block.create.copycat_panel.tooltip.summary": "_Converts_ any _full block_ into a decorative panel. Also accepts _Bars_ and _Trapdoors_.",
|
||||
"block.create.copycat_panel.tooltip.condition1": "When R-Clicked",
|
||||
"block.create.copycat_panel.tooltip.behaviour1": "Applies _held item_ as its _material_ if possible. _Click again_ to cycle _orientation_ or _powered_ state. Use a _Wrench_ to _reset_ the material.",
|
||||
|
||||
"block.create.copycat_step.tooltip": "COPYCAT STEP",
|
||||
"block.create.copycat_step.tooltip.summary": "_Converts_ any _full block_ into a decorative step.",
|
||||
"block.create.copycat_step.tooltip.condition1": "When R-Clicked",
|
||||
"block.create.copycat_step.tooltip.behaviour1": "Applies _held item_ as its _material_ if possible. _Click again_ to cycle _orientation_ or _powered_ state. Use a _Wrench_ to _reset_ the material.",
|
||||
|
||||
"block.create.clipboard.tooltip": "CLIPBOARD",
|
||||
"block.create.clipboard.tooltip.summary": "_Keeps your notes_ and makes you look more professional.",
|
||||
"block.create.clipboard.tooltip.condition1": "When R-Clicked",
|
||||
"block.create.clipboard.tooltip.behaviour1": "Opens the _Interface_. _Sneak-Click_ to _place_ it on a surface.",
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
27
src/main/resources/assets/create/lang/et_ee.json
Normal file
27
src/main/resources/assets/create/lang/et_ee.json
Normal file
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"block.create.acacia_window": "Akaatsiast aken",
|
||||
"block.create.acacia_window_pane": "Akkatsiast aknapaneel",
|
||||
"block.create.analog_lever": "Analoog kang",
|
||||
"block.create.andesite_alloy_block": "Andesiidi sulami plokk",
|
||||
"block.create.andesite_bars": "Andesiittrellid",
|
||||
"block.create.andesite_belt_funnel": "Andesiit konveierlehter",
|
||||
"block.create.andesite_casing": "Andesiit raam",
|
||||
"block.create.andesite_door": "Andesiit uks",
|
||||
"block.create.andesite_encased_cogwheel": "Andesiidiga kaetud hammasratas",
|
||||
"block.create.andesite_encased_large_cogwheel": "Andesiidiga kaetud suur hammasratas",
|
||||
"block.create.andesite_encased_shaft": "Andesiidiga kaetud võll",
|
||||
"block.create.andesite_funnel": "Andesiit lehter",
|
||||
"block.create.andesite_ladder": "Andesiidist redel",
|
||||
"block.create.andesite_pillar": "Andesiidist sammas",
|
||||
"block.create.andesite_scaffolding": "Andesiidist telling",
|
||||
"block.create.andesite_tunnel": "Andesiit tunnel",
|
||||
"block.create.asurine": "Asuriin",
|
||||
"block.create.brass_encased_cogwheel": "Messingiga kaetud hammasratas",
|
||||
"block.create.brass_encased_large_cogwheel": "Messingiga kaetud suur hammasratas",
|
||||
"block.create.cogwheel": "Hammasratas",
|
||||
"block.create.large_cogwheel": "Suur Hammasratas",
|
||||
"create.ponder.cog_speedup.header": "Käiguvahetamine hammasratastega",
|
||||
"create.ponder.cog_speedup.text_1": "Suuri ja väikseid hammasrattaid saab ühendada diagonaalselt",
|
||||
"create.ponder.cog_speedup.text_2": "Suurelt hammasrattal väiksele ülemineminnes kahekordistub kiirust",
|
||||
"create.subtitle.cogs": "Hammasrattad mürisevad"
|
||||
}
|
|
@ -1,36 +1,35 @@
|
|||
{
|
||||
"_": "با تشکر از این که create را ترجمه می کنید!",
|
||||
"block.create.acacia_window": "بلوک پنجره اقاقیا",
|
||||
"block.create.acacia_window_pane": "پنجره چوب اقاقیا",
|
||||
"block.create.andesite_casing": "پوشاننده اندسیت",
|
||||
"block.create.andesite_ladder": "نردبان اندسیت",
|
||||
"block.create.andesite_tunnel": "تونل اندسیت",
|
||||
"block.create.birch_window": "بلوک پنجره توس",
|
||||
"block.create.birch_window_pane": "پنجره چوب توس",
|
||||
"block.create.black_seat": "صندلی مشکی",
|
||||
"block.create.black_toolbox": "جعبه ابزار مشکی",
|
||||
"block.create.blue_seat": "صندلی آبی",
|
||||
"block.create.blue_toolbox": "جعبه ابزار آبی",
|
||||
"block.create.brass_block": "بلوک فلز برنج",
|
||||
"block.create.brass_casing": "پوشاننده برنجی",
|
||||
"block.create.brass_ladder": "نردبان برنجی",
|
||||
"block.create.brass_tunnel": "تونل برنجی",
|
||||
"block.create.brown_seat": "صندلی قهوه ای",
|
||||
"block.create.chocolate": "شکلات",
|
||||
"block.create.crimson_window": "بلوک پنجره کریمزون",
|
||||
"block.create.crimson_window_pane": "پنجره چوب کریمزون",
|
||||
"block.create.dark_oak_window": "بلوک پنجره چوب بلوط سیاه",
|
||||
"block.create.dark_oak_window_pane": "پنجره چوب بلوط سیاه",
|
||||
"block.create.jungle_window": "بلوک پنجره جنگلی",
|
||||
"block.create.jungle_window_pane": "پنجره چوب جنگلی",
|
||||
"block.create.oak_window": "بلوک پنجره بلوط",
|
||||
"block.create.oak_window_pane": "پنجره چوب بلوط",
|
||||
"block.create.ornate_iron_window": "بلوک پنجره آهنی تزئین شده",
|
||||
"block.create.ornate_iron_window_pane": "پنجره آهنی تزئین شده",
|
||||
"block.create.spruce_window": "بلوک پنجره صنوبر",
|
||||
"block.create.spruce_window_pane": "پنجره چوب صنوبر",
|
||||
"block.create.train_door": "در قطار",
|
||||
"block.create.warped_window": "بلوک پنجره پیچ خورده",
|
||||
"block.create.warped_window_pane": "پنجره چوب پیچ دار",
|
||||
"create.station.close": "بستن پنجره"
|
||||
"block.create.acacia_window": "بلوک پنجره اقاقیا",
|
||||
"block.create.acacia_window_pane": "پنجره چوب اقاقیا",
|
||||
"block.create.andesite_casing": "پوشاننده اندسیت",
|
||||
"block.create.andesite_ladder": "نردبان اندسیت",
|
||||
"block.create.andesite_tunnel": "تونل اندسیت",
|
||||
"block.create.birch_window": "بلوک پنجره توس",
|
||||
"block.create.birch_window_pane": "پنجره چوب توس",
|
||||
"block.create.black_seat": "صندلی مشکی",
|
||||
"block.create.black_toolbox": "جعبه ابزار مشکی",
|
||||
"block.create.blue_seat": "صندلی آبی",
|
||||
"block.create.blue_toolbox": "جعبه ابزار آبی",
|
||||
"block.create.brass_block": "بلوک فلز برنج",
|
||||
"block.create.brass_casing": "پوشاننده برنجی",
|
||||
"block.create.brass_ladder": "نردبان برنجی",
|
||||
"block.create.brass_tunnel": "تونل برنجی",
|
||||
"block.create.brown_seat": "صندلی قهوه ای",
|
||||
"block.create.chocolate": "شکلات",
|
||||
"block.create.crimson_window": "بلوک پنجره کریمزون",
|
||||
"block.create.crimson_window_pane": "پنجره چوب کریمزون",
|
||||
"block.create.dark_oak_window": "بلوک پنجره چوب بلوط سیاه",
|
||||
"block.create.dark_oak_window_pane": "پنجره چوب بلوط سیاه",
|
||||
"block.create.jungle_window": "بلوک پنجره جنگلی",
|
||||
"block.create.jungle_window_pane": "پنجره چوب جنگلی",
|
||||
"block.create.oak_window": "بلوک پنجره بلوط",
|
||||
"block.create.oak_window_pane": "پنجره چوب بلوط",
|
||||
"block.create.ornate_iron_window": "بلوک پنجره آهنی تزئین شده",
|
||||
"block.create.ornate_iron_window_pane": "پنجره آهنی تزئین شده",
|
||||
"block.create.spruce_window": "بلوک پنجره صنوبر",
|
||||
"block.create.spruce_window_pane": "پنجره چوب صنوبر",
|
||||
"block.create.train_door": "در قطار",
|
||||
"block.create.warped_window": "بلوک پنجره پیچ خورده",
|
||||
"block.create.warped_window_pane": "پنجره چوب پیچ دار",
|
||||
"create.station.close": "بستن پنجره"
|
||||
}
|
|
@ -1,423 +1,477 @@
|
|||
{
|
||||
"_": "Kiitos Createn kääntämisestä!",
|
||||
"block.create.acacia_window": "Akaasiaikkuna",
|
||||
"block.create.acacia_window_pane": "Akaasiaikkunapaneeli",
|
||||
"block.create.adjustable_chain_gearshift": "Säädettävä Ketjun Vaihdelaatikko",
|
||||
"block.create.analog_lever": "Analoginen Vipu",
|
||||
"block.create.andesite_alloy_block": "Andesiittimetalliseoskuutio",
|
||||
"block.create.andesite_bars": "Andesiittikalterit",
|
||||
"block.create.andesite_belt_funnel": "Andesiitti Hihnakanava",
|
||||
"block.create.andesite_casing": "Andesiittikotelo",
|
||||
"block.create.andesite_door": "Andesiittiovi",
|
||||
"block.create.andesite_encased_cogwheel": "Andesiittikoteloitu Hammaspyörä",
|
||||
"block.create.andesite_encased_large_cogwheel": "Andesiittikoteloitu Suuri Hammaspyörä",
|
||||
"block.create.andesite_encased_shaft": "Andesiittikoteloitu Akseli",
|
||||
"block.create.andesite_funnel": "Andesiittikanava",
|
||||
"block.create.andesite_ladder": "Andesiitti Tikapuut",
|
||||
"block.create.andesite_pillar": "Andesiitti Pilari",
|
||||
"block.create.andesite_scaffolding": "Andesiittirakennusteline",
|
||||
"block.create.andesite_tunnel": "Andesiitti Tunneli",
|
||||
"block.create.asurine": "Asuriini",
|
||||
"block.create.asurine_pillar": "Asuriini Pilari",
|
||||
"block.create.basin": "Allas",
|
||||
"block.create.belt": "Hihna",
|
||||
"block.create.birch_window": "Koivuikkuna",
|
||||
"block.create.birch_window_pane": "Koivuikkunapaneeli",
|
||||
"block.create.black_nixie_tube": "Musta Nixie-putki",
|
||||
"block.create.black_sail": "Musta Purje",
|
||||
"block.create.black_seat": "Musta Istuin",
|
||||
"block.create.black_toolbox": "Musta Työkalupakki",
|
||||
"block.create.black_valve_handle": "Musta Venttiilinkahva",
|
||||
"block.create.blaze_burner": "Roihupoltin",
|
||||
"block.create.blue_nixie_tube": "Sininen Nixie-putki",
|
||||
"block.create.blue_sail": "Sininen Purje",
|
||||
"block.create.blue_seat": "Sininen Istuin",
|
||||
"block.create.blue_toolbox": "Sininen Työkalupakki",
|
||||
"block.create.blue_valve_handle": "Sininen Venttiilinkahva",
|
||||
"block.create.brass_bars": "Messinkikalterit",
|
||||
"block.create.brass_belt_funnel": "Messinki Hihnankanava",
|
||||
"block.create.brass_block": "Messinkikuutio",
|
||||
"block.create.brass_casing": "Messinkikotelo",
|
||||
"block.create.brass_door": "Messinkiovi",
|
||||
"block.create.brass_encased_cogwheel": "Messinkikoteloitu Hammaspyörä",
|
||||
"block.create.brass_encased_large_cogwheel": "Messinkikoteloitu Suuri Hammaspyörä",
|
||||
"block.create.brass_encased_shaft": "Messinkikoteloitu Akseli",
|
||||
"block.create.brass_funnel": "Messinkikanava",
|
||||
"block.create.brass_ladder": "Messinkitikkaat",
|
||||
"block.create.brass_scaffolding": "Messinkirakennusteline",
|
||||
"block.create.brass_tunnel": "Messinki Tunneli",
|
||||
"block.create.brown_nixie_tube": "Ruskea Nixie-putki",
|
||||
"block.create.brown_sail": "Ruskea Purje",
|
||||
"block.create.brown_seat": "Ruskea Istuin",
|
||||
"block.create.brown_toolbox": "Ruskea Työkalupakki",
|
||||
"block.create.brown_valve_handle": "Ruskea Venttiilinkahva",
|
||||
"block.create.calcite_pillar": "Kalsiitti Pilari",
|
||||
"block.create.cart_assembler": "Kaivosvaunun Kasaaja",
|
||||
"block.create.chocolate": "Suklaa",
|
||||
"block.create.chute": "Kouru",
|
||||
"block.create.clipboard": "Tehtävälista",
|
||||
"block.create.clockwork_bearing": "Kellolaakeri",
|
||||
"block.create.clutch": "Kytkin",
|
||||
"block.create.cogwheel": "Hammaspyörä",
|
||||
"block.create.content_observer": "Älytarkkailija",
|
||||
"block.create.contraption_controls": "Ohjauslaite",
|
||||
"block.create.controller_rail": "Säädettävä Raide",
|
||||
"block.create.controls": "Junanohjain",
|
||||
"block.create.copper_backtank": "Kupari Reppusäiliö",
|
||||
"block.create.copper_bars": "Kuparikalterit",
|
||||
"block.create.copper_casing": "Kuparikotelo",
|
||||
"block.create.copper_door": "Kupariovi",
|
||||
"block.create.copper_ladder": "Kupari Tikkaat",
|
||||
"block.create.copper_scaffolding": "Kuparirakennusteline",
|
||||
"block.create.copper_shingle_slab": "Kuparipaanulaatta",
|
||||
"block.create.copper_shingle_stairs": "Kuparipaanuportaat",
|
||||
"block.create.copper_shingles": "Kuparipaanut",
|
||||
"block.create.copper_tile_slab": "Kuparitiililaatta",
|
||||
"block.create.copper_tile_stairs": "Kuparitiiliportaat",
|
||||
"block.create.copper_tiles": "Kuparitiili",
|
||||
"block.create.copper_valve_handle": "Kuparinen Venttiilinkahva",
|
||||
"block.create.copycat_bars": "Matkija kalterit",
|
||||
"block.create.copycat_base": "Matkija pohja",
|
||||
"block.create.copycat_panel": "Matkija levy",
|
||||
"block.create.copycat_step": "Matkija porras",
|
||||
"block.create.creative_crate": "Luova Laatikko",
|
||||
"block.create.creative_fluid_tank": "Luova Nestesäiliö",
|
||||
"block.create.creative_motor": "Luova Moottori",
|
||||
"block.create.crimsite": "Crimsiitti",
|
||||
"block.create.crimsite_pillar": "Crimsiitti Pilari",
|
||||
"block.create.crimson_window": "Karmiini Ikkuna",
|
||||
"block.create.crimson_window_pane": "Karmiini Ikkunapaneeli",
|
||||
"block.create.crushing_wheel": "Murskauspyörä",
|
||||
"block.create.crushing_wheel_controller": "Murskauspyörän Ohjain",
|
||||
"block.create.cuckoo_clock": "Käkikello",
|
||||
"block.create.cut_andesite": "Leikattu Andesiitti",
|
||||
"block.create.cut_andesite_brick_slab": "Leikattu Andesiittitiililaatta",
|
||||
"block.create.cut_andesite_brick_stairs": "Leikattu Andesiittitiiliportaat",
|
||||
"block.create.cut_andesite_brick_wall": "Leikattu Andesiittitiilimuuri",
|
||||
"block.create.cut_andesite_bricks": "Leikattu Andesiittitiili",
|
||||
"block.create.cut_andesite_slab": "Leikattu Andesiittilaatta",
|
||||
"block.create.cut_andesite_stairs": "Leikattu Andesiittiportaat",
|
||||
"block.create.cut_andesite_wall": "Leikattu Andesiittimuuri",
|
||||
"block.create.cut_asurine": "Leikattu Asuriini",
|
||||
"block.create.cut_asurine_brick_slab": "Leikattu asuriinitiililaatta",
|
||||
"block.create.cut_asurine_brick_stairs": "Leikatut asuriinitiiliportaat",
|
||||
"block.create.cut_asurine_brick_wall": "Leikattu asuriinitiilimuuri",
|
||||
"block.create.cut_asurine_bricks": "Leikattu asuriinitiili",
|
||||
"block.create.cut_asurine_slab": "Leikattu asuuriinilaatta",
|
||||
"block.create.cut_asurine_stairs": "Leikatut asuriiniportaat",
|
||||
"block.create.cut_asurine_wall": "Leikattu asuriinimuuri",
|
||||
"block.create.cut_calcite": "Leikattu kalsiitti",
|
||||
"block.create.cut_calcite_brick_slab": "Leikattu kalsiittitiililaatta",
|
||||
"block.create.cut_calcite_brick_stairs": "Leikatut kalsiittitiiliportaat",
|
||||
"block.create.cut_calcite_brick_wall": "Leikattu kalsiittitiilimuuri",
|
||||
"block.create.cut_calcite_bricks": "Leikattu kalsiittitiili",
|
||||
"block.create.cut_calcite_slab": "Leikattu kalsiittilaatta",
|
||||
"block.create.cut_calcite_stairs": "Leikatut kalsiittiportaat",
|
||||
"block.create.cut_calcite_wall": "Leikattu kalsiittimuuri",
|
||||
"block.create.cut_crimsite": "Leikattu krimsiitti",
|
||||
"block.create.cut_crimsite_brick_slab": "Leikattu krimsiittitiililaatta",
|
||||
"block.create.cut_crimsite_brick_stairs": "Leikatut krimsiittitiiliportaat",
|
||||
"block.create.cut_crimsite_brick_wall": "Leikattu krimsiittitiilimuuri",
|
||||
"block.create.cut_crimsite_bricks": "Leikattu krimsiittitiili",
|
||||
"block.create.cut_crimsite_slab": "Leikattu krimsiittilaatta",
|
||||
"block.create.cut_crimsite_stairs": "Leikatut krimsiittiportaat",
|
||||
"block.create.cut_crimsite_wall": "Leikattu krimsiittimuuri",
|
||||
"block.create.cut_deepslate": "Leikattu pohjaliuskekivi",
|
||||
"block.create.cut_deepslate_brick_slab": "Leikattu pohjaliuskekivitiililaatta",
|
||||
"block.create.cut_deepslate_brick_stairs": "Leikatut pohjaliuskekivitiiliportaat",
|
||||
"block.create.cut_deepslate_brick_wall": "Leikattu pohjaliuskekivitiilimuuri",
|
||||
"block.create.cut_deepslate_bricks": "Leikattu pohjaliuskekivitiili",
|
||||
"block.create.cut_deepslate_slab": "Leikattu pohjaliuskekivilaatta",
|
||||
"block.create.cut_deepslate_stairs": "Leikatut pohjaliuskekiviportaat",
|
||||
"block.create.cut_deepslate_wall": "Leikattu pohjaliuskekivimuuri",
|
||||
"block.create.cut_diorite": "Leikattu dioriitti",
|
||||
"block.create.cut_diorite_brick_slab": "Leikattu dioriittitiililaatta",
|
||||
"block.create.cut_diorite_brick_stairs": "Leikatut dioriittitiiliportaat",
|
||||
"block.create.cut_diorite_brick_wall": "Leikattu dioriittitiilimuuri",
|
||||
"block.create.cut_diorite_bricks": "Leikattu dioriittitiili",
|
||||
"block.create.cut_diorite_slab": "Leikattu dioriittilaatta",
|
||||
"block.create.cut_diorite_stairs": "Leikatut dioriittiportaat",
|
||||
"block.create.cut_diorite_wall": "Leikattu dioriittimuuri",
|
||||
"block.create.cut_dripstone": "Leikattu tippukivi",
|
||||
"block.create.cut_dripstone_brick_slab": "Leikattu tippukivitiililaatta",
|
||||
"block.create.cut_dripstone_brick_stairs": "Leikatut tippukivitiiliportaat",
|
||||
"block.create.cut_dripstone_brick_wall": "Leikattu tippukivitiilimuuri",
|
||||
"block.create.cut_dripstone_bricks": "Leikattu tippukivitiili",
|
||||
"block.create.cut_dripstone_slab": "Leikattu tippukivilaatta",
|
||||
"block.create.cut_dripstone_stairs": "Leikatut tippukiviportaat",
|
||||
"block.create.cut_dripstone_wall": "Leikattu tippukivimuuri",
|
||||
"block.create.cut_granite": "Leikattu graniitti",
|
||||
"block.create.cut_granite_brick_slab": "Leikattu graniittitiililaatta",
|
||||
"block.create.cut_granite_brick_stairs": "Leikatut graniittitiiliportaat",
|
||||
"block.create.cut_granite_brick_wall": "Leikattu graniittitiilimuuri",
|
||||
"block.create.cut_granite_bricks": "Leikattu graniittitiili",
|
||||
"block.create.cut_granite_slab": "Leikattu graniittilaatta",
|
||||
"block.create.cut_granite_stairs": "Leikatut graniittiportaat",
|
||||
"block.create.cut_granite_wall": "Leikattu graniittimuuri",
|
||||
"block.create.cut_limestone": "Leikattu kalkkikivi",
|
||||
"block.create.cut_limestone_brick_slab": "Leikattu kalkkikivitiililaatta",
|
||||
"block.create.cut_limestone_brick_stairs": "Leikatut kalkkikivitiiliportaat",
|
||||
"block.create.cut_limestone_brick_wall": "Leikattu kalkkikivitiilimuuri",
|
||||
"block.create.cut_limestone_bricks": "Leikattu kalkkikivitiili",
|
||||
"block.create.cut_limestone_slab": "Leikattu kalkkikivilaatta",
|
||||
"block.create.cut_limestone_stairs": "Leikatut kalkkikiviportaat",
|
||||
"block.create.cut_limestone_wall": "Leikattu kalkkikivimuuri",
|
||||
"block.create.cut_ochrum": "Leikattu okrumi",
|
||||
"block.create.cut_ochrum_brick_slab": "Leikattu okrumitiililaatta",
|
||||
"block.create.cut_ochrum_brick_stairs": "Leikatut okrumitiiliportaat",
|
||||
"block.create.cut_ochrum_brick_wall": "Leikattu okrumitiilimuuri",
|
||||
"block.create.cut_ochrum_bricks": "Leikattu okrumitiili",
|
||||
"block.create.cut_ochrum_slab": "Leikattu okrumilaatta",
|
||||
"block.create.cut_ochrum_stairs": "Leikatut okrumiportaat",
|
||||
"block.create.cut_ochrum_wall": "Leikattu okrumimuuri",
|
||||
"block.create.cut_scorchia": "Leikattu tuhkakivi",
|
||||
"block.create.cut_scorchia_brick_slab": "Leikattu tuhkakivitiililaatta",
|
||||
"block.create.cut_scorchia_brick_stairs": "Leikatut tuhkakivitiiliportaat",
|
||||
"block.create.cut_scorchia_brick_wall": "Leikattu tuhkakivitiilimuuri",
|
||||
"block.create.cut_scorchia_bricks": "Leikattu tuhkakivitiili",
|
||||
"block.create.cut_scorchia_slab": "Leikattu tuhkakivilaatta",
|
||||
"block.create.cut_scorchia_stairs": "Leikatut tuhkakiviportaat",
|
||||
"block.create.cut_scorchia_wall": "Leikattu tuhkakivimuuri",
|
||||
"block.create.cut_scoria": "Leikattu palokivi",
|
||||
"block.create.cut_scoria_brick_slab": "Leikattu palokivitiililaatta",
|
||||
"block.create.cut_scoria_brick_stairs": "Leikatut palokivitiiliportaat",
|
||||
"block.create.cut_scoria_brick_wall": "Leikattu palokivitiilimuuri",
|
||||
"block.create.cut_scoria_bricks": "Leikattu palokivitiili",
|
||||
"block.create.cut_scoria_slab": "Leikattu palokivilaatta",
|
||||
"block.create.cut_scoria_stairs": "Leikatut palokiviportaat",
|
||||
"block.create.cut_scoria_wall": "Leikattu palokivimuuri",
|
||||
"block.create.cut_tuff": "Leikattu tuffi",
|
||||
"block.create.cut_tuff_brick_slab": "Leikattu tuffitiililaatta",
|
||||
"block.create.cut_tuff_brick_stairs": "Leikatut tuffitiiliportaat",
|
||||
"block.create.cut_tuff_brick_wall": "Leikattu tuffitiilimuuri",
|
||||
"block.create.cut_tuff_bricks": "Leikattu tuffitiili",
|
||||
"block.create.cut_tuff_slab": "Leikattu tuffilaatta",
|
||||
"block.create.cut_tuff_stairs": "Leikatut tuffiportaat",
|
||||
"block.create.cut_tuff_wall": "Leikattu tuffimuuri",
|
||||
"block.create.cut_veridium": "Leikattu viherkivi",
|
||||
"block.create.cut_veridium_brick_slab": "Leikattu viherkivitiililaatta",
|
||||
"block.create.cut_veridium_brick_stairs": "Leikatut viherkivitiiliportaat",
|
||||
"block.create.cut_veridium_brick_wall": "Leikattu viherkivitiilimuuri",
|
||||
"block.create.cut_veridium_bricks": "Leikattu viherkivitiili",
|
||||
"block.create.cut_veridium_slab": "Leikattu viherkivilaatta",
|
||||
"block.create.cut_veridium_stairs": "Leikatut viherkiviportaat",
|
||||
"block.create.cut_veridium_wall": "Leikattu viherkivimuuri",
|
||||
"block.create.cyan_nixie_tube": "Syaani nixie-putki",
|
||||
"block.create.cyan_sail": "Syaani purje",
|
||||
"block.create.cyan_seat": "Syaani istuin",
|
||||
"block.create.cyan_toolbox": "Syaani työkalupakki",
|
||||
"block.create.cyan_valve_handle": "Syaani venttiilikahva",
|
||||
"block.create.dark_oak_window": "Tumma tammi-ikkuna",
|
||||
"block.create.dark_oak_window_pane": "Tumma tammi-ikkunapaneeli",
|
||||
"block.create.deepslate_pillar": "Pohjaliuskekivipilari",
|
||||
"block.create.deepslate_zinc_ore": "Pohjaliuskekivisinkkimalmi",
|
||||
"block.create.deployer": "Mekaaninen käyttäjä",
|
||||
"block.create.depot": "Taso",
|
||||
"block.create.diorite_pillar": "Dioriittipilari",
|
||||
"block.create.display_board": "Tiedotustaulu",
|
||||
"block.create.display_link": "Tietolähetin",
|
||||
"block.create.dripstone_pillar": "Tippukivipilari",
|
||||
"block.create.elevator_contact": "Hissikontakti",
|
||||
"block.create.elevator_pulley": "Hissivinssi",
|
||||
"block.create.encased_chain_drive": "Koteloitu käyttöketju",
|
||||
"block.create.encased_fan": "Koteloitu tuuletin",
|
||||
"block.create.encased_fluid_pipe": "Koteloitu nesteputki",
|
||||
"block.create.experience_block": "Kokemuskuutio",
|
||||
"block.create.exposed_copper_shingle_slab": "Altistunut kuparipaanulaatta",
|
||||
"block.create.exposed_copper_shingle_stairs": "Altistuneet kuparipaanuportaat",
|
||||
"block.create.exposed_copper_shingles": "Altistunut kuparipaanu",
|
||||
"block.create.exposed_copper_tile_slab": "Altistunut kuparikaakelilaatta",
|
||||
"block.create.exposed_copper_tile_stairs": "Altistuneet kuparikaakeliportaat",
|
||||
"block.create.exposed_copper_tiles": "Altistunut kuparikaakeli",
|
||||
"block.create.fake_track": "Ratamerkki kartoille",
|
||||
"block.create.fluid_pipe": "Nesteputki",
|
||||
"block.create.fluid_tank": "Nestesäiliö",
|
||||
"block.create.fluid_valve": "Nesteventtiili",
|
||||
"block.create.flywheel": "Vauhtipyörä",
|
||||
"block.create.framed_glass": "Kehystetty lasi",
|
||||
"block.create.framed_glass_door": "Kehystetty lasiovi",
|
||||
"block.create.framed_glass_pane": "Kehystetty lasipaneeli",
|
||||
"block.create.framed_glass_trapdoor": "Kehystetty lasiluukku",
|
||||
"block.create.gantry_carriage": "Nosturikuljetin",
|
||||
"block.create.gantry_shaft": "Nosturiakseli",
|
||||
"block.create.gearbox": "Vaihdelaatikko",
|
||||
"block.create.gearshift": "Suunnanvaihtaja",
|
||||
"block.create.glass_fluid_pipe": "Lasi nesteputki",
|
||||
"block.create.granite_pillar": "Graniittipilari",
|
||||
"block.create.gray_nixie_tube": "Harmaa nixie-putki",
|
||||
"block.create.gray_sail": "Harmaa purje",
|
||||
"block.create.gray_seat": "Harmaa istuin",
|
||||
"block.create.gray_toolbox": "Harmaa työkalupakki",
|
||||
"block.create.gray_valve_handle": "Harmaa venttiilikahva",
|
||||
"block.create.green_nixie_tube": "Vihreä nixie-putki",
|
||||
"block.create.green_sail": "Vihreä purje",
|
||||
"block.create.green_seat": "Vihreä istuin",
|
||||
"block.create.green_toolbox": "Vihreä työkalupakki",
|
||||
"block.create.green_valve_handle": "Vihreä venttiilikahva",
|
||||
"block.create.hand_crank": "Käsiveivi",
|
||||
"block.create.haunted_bell": "Kummitus-soittokello",
|
||||
"block.create.honey": "Hunaja",
|
||||
"block.create.horizontal_framed_glass": "Vaakasuora kehystetty lasi",
|
||||
"block.create.horizontal_framed_glass_pane": "Vaakasuora kehystetty lasipaneeli",
|
||||
"block.create.hose_pulley": "Letkurulla",
|
||||
"block.create.industrial_iron_block": "Teollisuusrautakuutio",
|
||||
"block.create.item_drain": "Viemäri",
|
||||
"block.create.item_vault": "Varastoholvi",
|
||||
"block.create.jungle_window": "Viidakkopuuikkuna",
|
||||
"block.create.jungle_window_pane": "Viidakkopuuikkunapaneeli",
|
||||
"block.create.large_bogey": "Suuri teli",
|
||||
"block.create.large_cogwheel": "Suuri hammaspyörä",
|
||||
"block.create.large_water_wheel": "Suuri vesipyörä",
|
||||
"block.create.layered_andesite": "Kerroksinen andesiitti",
|
||||
"block.create.layered_asurine": "Kerroksinen asuriini",
|
||||
"block.create.layered_calcite": "Kerroksinen kalsiitti",
|
||||
"block.create.layered_crimsite": "Kerroksinen krimsiitti",
|
||||
"block.create.layered_deepslate": "Kerroksinen pohjaliuskekivi",
|
||||
"block.create.layered_diorite": "Kerroksinen dioriitti",
|
||||
"block.create.layered_dripstone": "Kerroksinen tippukivi",
|
||||
"block.create.layered_granite": "Kerroksinen graniitti",
|
||||
"block.create.layered_limestone": "Kerroksinen kalkkikivi",
|
||||
"block.create.layered_ochrum": "Kerroksinen okrumi",
|
||||
"block.create.layered_scorchia": "Kerroksinen tuhkakivi",
|
||||
"block.create.layered_scoria": "Kerroksinen palokivi",
|
||||
"block.create.layered_tuff": "Kerroksinen tuffi",
|
||||
"block.create.layered_veridium": "Kerroksinen viherkivi",
|
||||
"block.create.lectern_controller": "Kateederiohjain",
|
||||
"block.create.light_blue_nixie_tube": "Vaaleansininen nixie-putki",
|
||||
"block.create.light_blue_sail": "Vaaleansininen purje",
|
||||
"block.create.light_blue_seat": "Vaaleansininen istuin",
|
||||
"block.create.light_blue_toolbox": "Vaaleansininen työkalupakki",
|
||||
"block.create.light_blue_valve_handle": "Vaaleansininen venttiilinkahva",
|
||||
"block.create.light_gray_nixie_tube": "Vaaleanharmaa nixie-putki",
|
||||
"block.create.light_gray_sail": "Vaaleanharmaa purje",
|
||||
"block.create.light_gray_seat": "Vaaleanharmaa istuin",
|
||||
"block.create.light_gray_toolbox": "Vaaleanharmaa työkalupakki",
|
||||
"block.create.light_gray_valve_handle": "Vaaleanharmaa venttiilinkahva",
|
||||
"block.create.lime_nixie_tube": "Limetinvihreä nixie-putki",
|
||||
"block.create.lime_sail": "Limetinvihreä purje",
|
||||
"block.create.lime_seat": "Limetinvihreä istuin",
|
||||
"block.create.lime_toolbox": "Limetinvihreä työkalupakki",
|
||||
"block.create.lime_valve_handle": "Limetinvihreä venttiilinkahva",
|
||||
"block.create.limestone": "Kalkkikivi",
|
||||
"block.create.limestone_pillar": "Kalkkikivipilari",
|
||||
"block.create.linear_chassis": "Lineaarinen runko",
|
||||
"block.create.lit_blaze_burner": "Sytytetty roihupoltin",
|
||||
"block.create.magenta_nixie_tube": "Purppura nixie-putki",
|
||||
"block.create.magenta_sail": "Purppura purje",
|
||||
"block.create.magenta_seat": "Purppura istuin",
|
||||
"block.create.magenta_toolbox": "Purppura työkalupakki",
|
||||
"block.create.magenta_valve_handle": "Purppura venttiilikahva",
|
||||
"block.create.mechanical_arm": "Mekaaninen käsi",
|
||||
"block.create.mechanical_bearing": "Mekaaninen laakeri",
|
||||
"block.create.mechanical_crafter": "Mekaaninen valmistaja",
|
||||
"block.create.mechanical_drill": "Mekaaninen pora",
|
||||
"block.create.mechanical_harvester": "Mekaaninen sadonkerääjä",
|
||||
"block.create.mechanical_mixer": "Mekaaninen sekoittaja",
|
||||
"block.create.mechanical_piston": "Mekaaninen mäntä",
|
||||
"block.create.mechanical_piston_head": "Mekaaninen mäntäpää",
|
||||
"block.create.mechanical_plough": "Mekaaninen aura",
|
||||
"block.create.mechanical_press": "Mekaaninen prässi",
|
||||
"block.create.mechanical_pump": "Mekaaninen pumppu",
|
||||
"block.create.mechanical_roller": "Mekaaninen jyrä",
|
||||
"block.create.mechanical_saw": "Mekaaninen saha",
|
||||
"block.create.metal_bracket": "Metalli pidin",
|
||||
"block.create.metal_girder": "Metalli hirsi",
|
||||
"block.create.metal_girder_encased_shaft": "Metalli hirrellä koteloitu akseli",
|
||||
"block.create.millstone": "Myllykivi",
|
||||
"block.create.minecart_anchor": "Kaivusvaunu ankkuri",
|
||||
"block.create.mysterious_cuckoo_clock": "Käki kello",
|
||||
"block.create.netherite_backtank": "Netheriitti taka säiliö",
|
||||
"block.create.nixie_tube": "Nixie-putki",
|
||||
"block.create.nozzle": "Suutin",
|
||||
"block.create.oak_window": "Tammi ikkuna",
|
||||
"block.create.oak_window_pane": "Tumma tammi ikkuna",
|
||||
"block.create.ochrum": "Ochrumi",
|
||||
"block.create.ochrum_pillar": "Ochrumi pilari",
|
||||
"block.create.orange_sail": "Oranssi purje",
|
||||
"block.create.orange_seat": "Oranssi istuin",
|
||||
"block.create.orange_toolbox": "Oranssi työkalupakki",
|
||||
"block.create.orange_valve_handle": "Oranssi venttiilikahva",
|
||||
"block.create.ornate_iron_window": "Koristeinen rauta ikkuna",
|
||||
"block.create.ornate_iron_window_pane": "Koristeinen rauta ikkunapaneeli",
|
||||
"block.create.oxidized_copper_shingle_slab": "Hapettunut kuparipärelaatta",
|
||||
"block.create.oxidized_copper_shingle_stairs": "Hapettuneet kuparipäreportaat",
|
||||
"block.create.oxidized_copper_shingles": "Hapettuneet kuparipäreet",
|
||||
"block.create.oxidized_copper_tile_slab": "Hapettunut kuparitiililaatta",
|
||||
"block.create.oxidized_copper_tile_stairs": "Hapettuneet kuparitiiliportaat",
|
||||
"block.create.oxidized_copper_tiles": "Hapettuneet kuparitiilit",
|
||||
"block.create.peculiar_bell": "Kummallinen kello",
|
||||
"block.create.pink_nixie_tube": "Vaaleanpunainen nixie-putki",
|
||||
"block.create.pink_sail": "Vaaleanpunainen purje",
|
||||
"block.create.pink_seat": "Vaaleanpunainen istuin",
|
||||
"block.create.pink_toolbox": "Vaaleanpunainen työkalulaatikko",
|
||||
"block.create.pink_valve_handle": "Vaaleanpunainen venttiilikahva",
|
||||
"block.create.piston_extension_pole": "Männän pidennys paalu",
|
||||
"block.create.placard": "Plakaatti",
|
||||
"block.create.polished_cut_andesite": "Kiillotettu leikattu andesiitti",
|
||||
"block.create.polished_cut_andesite_slab": "Kiillotettu leikattu andesiittilaatta",
|
||||
"block.create.polished_cut_andesite_stairs": "Kiilotetut leikatut andesiittiportaat",
|
||||
"block.create.polished_cut_andesite_wall": "Kiilotettu leikattu andesiittisimuuri",
|
||||
"block.create.polished_cut_asurine": "Kiillotettu leikattu asuriini",
|
||||
"block.create.polished_cut_asurine_slab": "Kiillotettu leikattu asuriinilaatta",
|
||||
"block.create.polished_cut_asurine_stairs": "Kiillotetut leikatut asuriiniportaat",
|
||||
"block.create.polished_cut_asurine_wall": "Kiillotettu leikattu asuriinimuuri",
|
||||
"block.create.polished_cut_calcite": "Kiillotettu leikattu kalsiitti",
|
||||
"block.create.polished_cut_calcite_slab": "Kiillotettu leikattu kalsiittilaatta",
|
||||
"block.create.polished_cut_calcite_stairs": "Kiillotetut leikatut kalsiittiportaat",
|
||||
"block.create.polished_cut_calcite_wall": "Kiillotettu leikattu kalsiittimuuri",
|
||||
"block.create.polished_cut_crimsite": "Kiillotettu leikattu crimsiitti",
|
||||
"block.create.polished_cut_crimsite_slab": "Kiillotettu leikattu crimsiittilaatta",
|
||||
"block.create.polished_cut_crimsite_stairs": "Kiillotetut leikatut crimsiittiportaat",
|
||||
"block.create.polished_cut_crimsite_wall": "Kiillotettu leikattu crimsiittimuuri",
|
||||
"block.create.polished_cut_deepslate": "Kiillotettu leikattu pohjaliuskekivi",
|
||||
"block.create.polished_cut_deepslate_slab": "Kiillotettu leikattu pohjaliuskekivilaata",
|
||||
"block.create.polished_cut_deepslate_stairs": "Kiillotetut leikatut pohjaliuskekiviportaat",
|
||||
"block.create.polished_cut_deepslate_wall": "Kiillotettu leikattu pohjaliuskekivimuuri",
|
||||
"block.create.polished_cut_diorite": "Kiilotettu leikattu dioriitti",
|
||||
"block.create.polished_cut_diorite_slab": "Kiillotettu leikattu dioriittilaatta",
|
||||
"block.create.polished_cut_diorite_stairs": "Kiillotetut leikatut dioriittiportaat",
|
||||
"block.create.polished_cut_diorite_wall": "Kiillotettu leikattu dioriittimuuri",
|
||||
"block.create.polished_cut_dripstone": "Kiillotettu leikattu tippukivikuutio",
|
||||
"block.create.polished_cut_dripstone_slab": "Kiillotettu leikattu tippukivilaatta",
|
||||
"block.create.polished_cut_dripstone_stairs": "Kiillotetut leikatut tippukiviportaat",
|
||||
"block.create.polished_cut_dripstone_wall": "Kiillotettu leikattu tippukivimuuri",
|
||||
"block.create.polished_cut_granite": "Kiillotettu leikattu graniitti",
|
||||
"block.create.polished_cut_granite_slab": "Kiillotettu leikattu graniittilaatta",
|
||||
"block.create.polished_cut_granite_stairs": "Kiillotetut leikatut graniittiportaat",
|
||||
"block.create.polished_cut_granite_wall": "Kiillotettu leikattu graniittimuuri",
|
||||
"block.create.polished_cut_limestone": "Kiillotettu leikattu kalkkikivi",
|
||||
"block.create.polished_cut_limestone_slab": "Kiillotettu leikattu kalkkikivilaatta",
|
||||
"block.create.polished_cut_limestone_stairs": "Kiillotetut leikatut kalkkikiviportaat",
|
||||
"block.create.polished_cut_limestone_wall": "Kiillotettu leikattu kalkkikivimuuri",
|
||||
"block.create.polished_cut_ochrum": "Kiillotettu leikattu ochrumi",
|
||||
"block.create.polished_cut_ochrum_slab": "Kiillotettu leikattu ochrumilaatta",
|
||||
"block.create.polished_cut_ochrum_stairs": "Kiillotetut leikatut ochrumiportaat",
|
||||
"block.create.polished_cut_ochrum_wall": "Kiillotettu leikattu ochrumimuuri",
|
||||
"block.create.purple_nixie_tube": "Violetti nixie-putki",
|
||||
"block.create.red_nixie_tube": "Punainen nixie-putki",
|
||||
"block.create.redstone_link": "Punakivilähetin",
|
||||
"block.create.secondary_linear_chassis": "Toissijainen lineaarinen runko",
|
||||
"block.create.sequenced_gearshift": "Peräkkäinen suunnanvaihtaja",
|
||||
"block.create.shadow_steel_casing": "Pimeyksien kotelo",
|
||||
"block.create.shaft": "Akseli",
|
||||
"block.create.smart_chute": "Älykouru",
|
||||
"block.create.smart_fluid_pipe": "Älynesteputki",
|
||||
"block.create.speedometer": "Nopeudentulkitsija",
|
||||
"block.create.spout": "Nokka",
|
||||
"block.create.spruce_window": "Kuusi ikkuna",
|
||||
"block.create.spruce_window_pane": "Kuusi ikkunapaneeli",
|
||||
"block.create.steam_engine": "Höyrymoottori",
|
||||
"block.create.steam_whistle": "Höyrypilli",
|
||||
"block.create.steam_whistle_extension": "Höyrypillipidennys",
|
||||
"block.create.sticker": "Tarra",
|
||||
"block.create.sticky_mechanical_piston": "Tarrtumamekaaninen Mäntä",
|
||||
"block.create.stressometer": "Stressimittari",
|
||||
"block.create.water_wheel": "Vesipyörä",
|
||||
"block.create.water_wheel_structure": "Suuri vesipyörä",
|
||||
"block.create.white_nixie_tube": "Valkoinen nixie-putki",
|
||||
"block.create.yellow_nixie_tube": "Keltainen nixie-putki",
|
||||
"item.create.andesite_alloy": "Andesiittimetalliseos",
|
||||
"item.create.brass_ingot": "Messinkiharkko",
|
||||
"item.create.brass_nugget": "Messinkikimpale",
|
||||
"item.create.linked_controller": "Kauko-ohjain"
|
||||
"advancement.create.super_glue.desc": "Liimaa kuutioita yhteen",
|
||||
"advancement.create.train.desc": "Luo ensimmäinen junasi",
|
||||
"advancement.create.train_portal.desc": "Aja juna Nether-portaalin läpi",
|
||||
"block.create.acacia_window": "Akaasiaikkuna",
|
||||
"block.create.acacia_window_pane": "Akaasiaikkunapaneeli",
|
||||
"block.create.adjustable_chain_gearshift": "Säädettävä Ketjun Vaihdelaatikko",
|
||||
"block.create.analog_lever": "Analoginen Vipu",
|
||||
"block.create.andesite_alloy_block": "Andesiittimetalliseoskuutio",
|
||||
"block.create.andesite_bars": "Andesiittikalterit",
|
||||
"block.create.andesite_belt_funnel": "Andesiitti Hihnakanava",
|
||||
"block.create.andesite_casing": "Andesiittikotelo",
|
||||
"block.create.andesite_door": "Andesiittiovi",
|
||||
"block.create.andesite_encased_cogwheel": "Andesiittikoteloitu Hammaspyörä",
|
||||
"block.create.andesite_encased_large_cogwheel": "Andesiittikoteloitu Suuri Hammaspyörä",
|
||||
"block.create.andesite_encased_shaft": "Andesiittikoteloitu Akseli",
|
||||
"block.create.andesite_funnel": "Andesiittikanava",
|
||||
"block.create.andesite_ladder": "Andesiitti Tikapuut",
|
||||
"block.create.andesite_pillar": "Andesiitti Pilari",
|
||||
"block.create.andesite_scaffolding": "Andesiittirakennusteline",
|
||||
"block.create.andesite_tunnel": "Andesiitti Tunneli",
|
||||
"block.create.asurine": "Asuriini",
|
||||
"block.create.asurine_pillar": "Asuriini Pilari",
|
||||
"block.create.basin": "Allas",
|
||||
"block.create.belt": "Hihna",
|
||||
"block.create.birch_window": "Koivuikkuna",
|
||||
"block.create.birch_window_pane": "Koivuikkunapaneeli",
|
||||
"block.create.black_nixie_tube": "Musta Nixie-putki",
|
||||
"block.create.black_sail": "Musta Purje",
|
||||
"block.create.black_seat": "Musta Istuin",
|
||||
"block.create.black_toolbox": "Musta Työkalupakki",
|
||||
"block.create.black_valve_handle": "Musta Venttiilinkahva",
|
||||
"block.create.blaze_burner": "Roihupoltin",
|
||||
"block.create.blue_nixie_tube": "Sininen Nixie-putki",
|
||||
"block.create.blue_sail": "Sininen Purje",
|
||||
"block.create.blue_seat": "Sininen Istuin",
|
||||
"block.create.blue_toolbox": "Sininen Työkalupakki",
|
||||
"block.create.blue_valve_handle": "Sininen Venttiilinkahva",
|
||||
"block.create.brass_bars": "Messinkikalterit",
|
||||
"block.create.brass_belt_funnel": "Messinki Hihnankanava",
|
||||
"block.create.brass_block": "Messinkikuutio",
|
||||
"block.create.brass_casing": "Messinkikotelo",
|
||||
"block.create.brass_door": "Messinkiovi",
|
||||
"block.create.brass_encased_cogwheel": "Messinkikoteloitu Hammaspyörä",
|
||||
"block.create.brass_encased_large_cogwheel": "Messinkikoteloitu Suuri Hammaspyörä",
|
||||
"block.create.brass_encased_shaft": "Messinkikoteloitu Akseli",
|
||||
"block.create.brass_funnel": "Messinkikanava",
|
||||
"block.create.brass_ladder": "Messinkitikkaat",
|
||||
"block.create.brass_scaffolding": "Messinkirakennusteline",
|
||||
"block.create.brass_tunnel": "Messinki Tunneli",
|
||||
"block.create.brown_nixie_tube": "Ruskea Nixie-putki",
|
||||
"block.create.brown_sail": "Ruskea Purje",
|
||||
"block.create.brown_seat": "Ruskea Istuin",
|
||||
"block.create.brown_toolbox": "Ruskea Työkalupakki",
|
||||
"block.create.brown_valve_handle": "Ruskea Venttiilinkahva",
|
||||
"block.create.calcite_pillar": "Kalsiitti Pilari",
|
||||
"block.create.cart_assembler": "Kaivosvaunun Kasaaja",
|
||||
"block.create.chocolate": "Suklaa",
|
||||
"block.create.chute": "Kouru",
|
||||
"block.create.clipboard": "Tehtävälista",
|
||||
"block.create.clockwork_bearing": "Kellolaakeri",
|
||||
"block.create.clutch": "Kytkin",
|
||||
"block.create.cogwheel": "Hammaspyörä",
|
||||
"block.create.content_observer": "Älytarkkailija",
|
||||
"block.create.contraption_controls": "Ohjauslaite",
|
||||
"block.create.controller_rail": "Säädettävä Raide",
|
||||
"block.create.controls": "Junanohjain",
|
||||
"block.create.copper_backtank": "Kupari Reppusäiliö",
|
||||
"block.create.copper_bars": "Kuparikalterit",
|
||||
"block.create.copper_casing": "Kuparikotelo",
|
||||
"block.create.copper_door": "Kupariovi",
|
||||
"block.create.copper_ladder": "Kupari Tikkaat",
|
||||
"block.create.copper_scaffolding": "Kuparirakennusteline",
|
||||
"block.create.copper_shingle_slab": "Kuparipaanulaatta",
|
||||
"block.create.copper_shingle_stairs": "Kuparipaanuportaat",
|
||||
"block.create.copper_shingles": "Kuparipaanut",
|
||||
"block.create.copper_tile_slab": "Kuparitiililaatta",
|
||||
"block.create.copper_tile_stairs": "Kuparitiiliportaat",
|
||||
"block.create.copper_tiles": "Kuparitiili",
|
||||
"block.create.copper_valve_handle": "Kuparinen Venttiilinkahva",
|
||||
"block.create.copycat_bars": "Matkija kalterit",
|
||||
"block.create.copycat_base": "Matkija pohja",
|
||||
"block.create.copycat_panel": "Matkija levy",
|
||||
"block.create.copycat_step": "Matkija porras",
|
||||
"block.create.creative_crate": "Luova Laatikko",
|
||||
"block.create.creative_fluid_tank": "Luova Nestesäiliö",
|
||||
"block.create.creative_motor": "Luova Moottori",
|
||||
"block.create.crimsite": "Crimsiitti",
|
||||
"block.create.crimsite_pillar": "Crimsiitti Pilari",
|
||||
"block.create.crimson_window": "Karmiini Ikkuna",
|
||||
"block.create.crimson_window_pane": "Karmiini Ikkunapaneeli",
|
||||
"block.create.crushing_wheel": "Murskauspyörä",
|
||||
"block.create.crushing_wheel_controller": "Murskauspyörän Ohjain",
|
||||
"block.create.cuckoo_clock": "Käkikello",
|
||||
"block.create.cut_andesite": "Leikattu Andesiitti",
|
||||
"block.create.cut_andesite_brick_slab": "Leikattu Andesiittitiililaatta",
|
||||
"block.create.cut_andesite_brick_stairs": "Leikattu Andesiittitiiliportaat",
|
||||
"block.create.cut_andesite_brick_wall": "Leikattu Andesiittitiilimuuri",
|
||||
"block.create.cut_andesite_bricks": "Leikattu Andesiittitiili",
|
||||
"block.create.cut_andesite_slab": "Leikattu Andesiittilaatta",
|
||||
"block.create.cut_andesite_stairs": "Leikattu Andesiittiportaat",
|
||||
"block.create.cut_andesite_wall": "Leikattu Andesiittimuuri",
|
||||
"block.create.cut_asurine": "Leikattu Asuriini",
|
||||
"block.create.cut_asurine_brick_slab": "Leikattu asuriinitiililaatta",
|
||||
"block.create.cut_asurine_brick_stairs": "Leikatut asuriinitiiliportaat",
|
||||
"block.create.cut_asurine_brick_wall": "Leikattu asuriinitiilimuuri",
|
||||
"block.create.cut_asurine_bricks": "Leikattu asuriinitiili",
|
||||
"block.create.cut_asurine_slab": "Leikattu asuuriinilaatta",
|
||||
"block.create.cut_asurine_stairs": "Leikatut asuriiniportaat",
|
||||
"block.create.cut_asurine_wall": "Leikattu asuriinimuuri",
|
||||
"block.create.cut_calcite": "Leikattu kalsiitti",
|
||||
"block.create.cut_calcite_brick_slab": "Leikattu kalsiittitiililaatta",
|
||||
"block.create.cut_calcite_brick_stairs": "Leikatut kalsiittitiiliportaat",
|
||||
"block.create.cut_calcite_brick_wall": "Leikattu kalsiittitiilimuuri",
|
||||
"block.create.cut_calcite_bricks": "Leikattu kalsiittitiili",
|
||||
"block.create.cut_calcite_slab": "Leikattu kalsiittilaatta",
|
||||
"block.create.cut_calcite_stairs": "Leikatut kalsiittiportaat",
|
||||
"block.create.cut_calcite_wall": "Leikattu kalsiittimuuri",
|
||||
"block.create.cut_crimsite": "Leikattu krimsiitti",
|
||||
"block.create.cut_crimsite_brick_slab": "Leikattu krimsiittitiililaatta",
|
||||
"block.create.cut_crimsite_brick_stairs": "Leikatut krimsiittitiiliportaat",
|
||||
"block.create.cut_crimsite_brick_wall": "Leikattu krimsiittitiilimuuri",
|
||||
"block.create.cut_crimsite_bricks": "Leikattu krimsiittitiili",
|
||||
"block.create.cut_crimsite_slab": "Leikattu krimsiittilaatta",
|
||||
"block.create.cut_crimsite_stairs": "Leikatut krimsiittiportaat",
|
||||
"block.create.cut_crimsite_wall": "Leikattu krimsiittimuuri",
|
||||
"block.create.cut_deepslate": "Leikattu pohjaliuskekivi",
|
||||
"block.create.cut_deepslate_brick_slab": "Leikattu pohjaliuskekivitiililaatta",
|
||||
"block.create.cut_deepslate_brick_stairs": "Leikatut pohjaliuskekivitiiliportaat",
|
||||
"block.create.cut_deepslate_brick_wall": "Leikattu pohjaliuskekivitiilimuuri",
|
||||
"block.create.cut_deepslate_bricks": "Leikattu pohjaliuskekivitiili",
|
||||
"block.create.cut_deepslate_slab": "Leikattu pohjaliuskekivilaatta",
|
||||
"block.create.cut_deepslate_stairs": "Leikatut pohjaliuskekiviportaat",
|
||||
"block.create.cut_deepslate_wall": "Leikattu pohjaliuskekivimuuri",
|
||||
"block.create.cut_diorite": "Leikattu dioriitti",
|
||||
"block.create.cut_diorite_brick_slab": "Leikattu dioriittitiililaatta",
|
||||
"block.create.cut_diorite_brick_stairs": "Leikatut dioriittitiiliportaat",
|
||||
"block.create.cut_diorite_brick_wall": "Leikattu dioriittitiilimuuri",
|
||||
"block.create.cut_diorite_bricks": "Leikattu dioriittitiili",
|
||||
"block.create.cut_diorite_slab": "Leikattu dioriittilaatta",
|
||||
"block.create.cut_diorite_stairs": "Leikatut dioriittiportaat",
|
||||
"block.create.cut_diorite_wall": "Leikattu dioriittimuuri",
|
||||
"block.create.cut_dripstone": "Leikattu tippukivi",
|
||||
"block.create.cut_dripstone_brick_slab": "Leikattu tippukivitiililaatta",
|
||||
"block.create.cut_dripstone_brick_stairs": "Leikatut tippukivitiiliportaat",
|
||||
"block.create.cut_dripstone_brick_wall": "Leikattu tippukivitiilimuuri",
|
||||
"block.create.cut_dripstone_bricks": "Leikattu tippukivitiili",
|
||||
"block.create.cut_dripstone_slab": "Leikattu tippukivilaatta",
|
||||
"block.create.cut_dripstone_stairs": "Leikatut tippukiviportaat",
|
||||
"block.create.cut_dripstone_wall": "Leikattu tippukivimuuri",
|
||||
"block.create.cut_granite": "Leikattu graniitti",
|
||||
"block.create.cut_granite_brick_slab": "Leikattu graniittitiililaatta",
|
||||
"block.create.cut_granite_brick_stairs": "Leikatut graniittitiiliportaat",
|
||||
"block.create.cut_granite_brick_wall": "Leikattu graniittitiilimuuri",
|
||||
"block.create.cut_granite_bricks": "Leikattu graniittitiili",
|
||||
"block.create.cut_granite_slab": "Leikattu graniittilaatta",
|
||||
"block.create.cut_granite_stairs": "Leikatut graniittiportaat",
|
||||
"block.create.cut_granite_wall": "Leikattu graniittimuuri",
|
||||
"block.create.cut_limestone": "Leikattu kalkkikivi",
|
||||
"block.create.cut_limestone_brick_slab": "Leikattu kalkkikivitiililaatta",
|
||||
"block.create.cut_limestone_brick_stairs": "Leikatut kalkkikivitiiliportaat",
|
||||
"block.create.cut_limestone_brick_wall": "Leikattu kalkkikivitiilimuuri",
|
||||
"block.create.cut_limestone_bricks": "Leikattu kalkkikivitiili",
|
||||
"block.create.cut_limestone_slab": "Leikattu kalkkikivilaatta",
|
||||
"block.create.cut_limestone_stairs": "Leikatut kalkkikiviportaat",
|
||||
"block.create.cut_limestone_wall": "Leikattu kalkkikivimuuri",
|
||||
"block.create.cut_ochrum": "Leikattu okrumi",
|
||||
"block.create.cut_ochrum_brick_slab": "Leikattu okrumitiililaatta",
|
||||
"block.create.cut_ochrum_brick_stairs": "Leikatut okrumitiiliportaat",
|
||||
"block.create.cut_ochrum_brick_wall": "Leikattu okrumitiilimuuri",
|
||||
"block.create.cut_ochrum_bricks": "Leikattu okrumitiili",
|
||||
"block.create.cut_ochrum_slab": "Leikattu okrumilaatta",
|
||||
"block.create.cut_ochrum_stairs": "Leikatut okrumiportaat",
|
||||
"block.create.cut_ochrum_wall": "Leikattu okrumimuuri",
|
||||
"block.create.cut_scorchia": "Leikattu tuhkakivi",
|
||||
"block.create.cut_scorchia_brick_slab": "Leikattu tuhkakivitiililaatta",
|
||||
"block.create.cut_scorchia_brick_stairs": "Leikatut tuhkakivitiiliportaat",
|
||||
"block.create.cut_scorchia_brick_wall": "Leikattu tuhkakivitiilimuuri",
|
||||
"block.create.cut_scorchia_bricks": "Leikattu tuhkakivitiili",
|
||||
"block.create.cut_scorchia_slab": "Leikattu tuhkakivilaatta",
|
||||
"block.create.cut_scorchia_stairs": "Leikatut tuhkakiviportaat",
|
||||
"block.create.cut_scorchia_wall": "Leikattu tuhkakivimuuri",
|
||||
"block.create.cut_scoria": "Leikattu palokivi",
|
||||
"block.create.cut_scoria_brick_slab": "Leikattu palokivitiililaatta",
|
||||
"block.create.cut_scoria_brick_stairs": "Leikatut palokivitiiliportaat",
|
||||
"block.create.cut_scoria_brick_wall": "Leikattu palokivitiilimuuri",
|
||||
"block.create.cut_scoria_bricks": "Leikattu palokivitiili",
|
||||
"block.create.cut_scoria_slab": "Leikattu palokivilaatta",
|
||||
"block.create.cut_scoria_stairs": "Leikatut palokiviportaat",
|
||||
"block.create.cut_scoria_wall": "Leikattu palokivimuuri",
|
||||
"block.create.cut_tuff": "Leikattu tuffi",
|
||||
"block.create.cut_tuff_brick_slab": "Leikattu tuffitiililaatta",
|
||||
"block.create.cut_tuff_brick_stairs": "Leikatut tuffitiiliportaat",
|
||||
"block.create.cut_tuff_brick_wall": "Leikattu tuffitiilimuuri",
|
||||
"block.create.cut_tuff_bricks": "Leikattu tuffitiili",
|
||||
"block.create.cut_tuff_slab": "Leikattu tuffilaatta",
|
||||
"block.create.cut_tuff_stairs": "Leikatut tuffiportaat",
|
||||
"block.create.cut_tuff_wall": "Leikattu tuffimuuri",
|
||||
"block.create.cut_veridium": "Leikattu viherkivi",
|
||||
"block.create.cut_veridium_brick_slab": "Leikattu viherkivitiililaatta",
|
||||
"block.create.cut_veridium_brick_stairs": "Leikatut viherkivitiiliportaat",
|
||||
"block.create.cut_veridium_brick_wall": "Leikattu viherkivitiilimuuri",
|
||||
"block.create.cut_veridium_bricks": "Leikattu viherkivitiili",
|
||||
"block.create.cut_veridium_slab": "Leikattu viherkivilaatta",
|
||||
"block.create.cut_veridium_stairs": "Leikatut viherkiviportaat",
|
||||
"block.create.cut_veridium_wall": "Leikattu viherkivimuuri",
|
||||
"block.create.cyan_nixie_tube": "Syaani nixie-putki",
|
||||
"block.create.cyan_sail": "Syaani purje",
|
||||
"block.create.cyan_seat": "Syaani istuin",
|
||||
"block.create.cyan_toolbox": "Syaani työkalupakki",
|
||||
"block.create.cyan_valve_handle": "Syaani venttiilikahva",
|
||||
"block.create.dark_oak_window": "Tumma tammi-ikkuna",
|
||||
"block.create.dark_oak_window_pane": "Tumma tammi-ikkunapaneeli",
|
||||
"block.create.deepslate_pillar": "Pohjaliuskekivipilari",
|
||||
"block.create.deepslate_zinc_ore": "Pohjaliuskekivisinkkimalmi",
|
||||
"block.create.deployer": "Mekaaninen käyttäjä",
|
||||
"block.create.depot": "Taso",
|
||||
"block.create.diorite_pillar": "Dioriittipilari",
|
||||
"block.create.display_board": "Tiedotustaulu",
|
||||
"block.create.display_link": "Tietolähetin",
|
||||
"block.create.dripstone_pillar": "Tippukivipilari",
|
||||
"block.create.elevator_contact": "Hissikontakti",
|
||||
"block.create.elevator_pulley": "Hissivinssi",
|
||||
"block.create.encased_chain_drive": "Koteloitu käyttöketju",
|
||||
"block.create.encased_fan": "Koteloitu tuuletin",
|
||||
"block.create.encased_fluid_pipe": "Koteloitu nesteputki",
|
||||
"block.create.experience_block": "Kokemuskuutio",
|
||||
"block.create.exposed_copper_shingle_slab": "Altistunut kuparipaanulaatta",
|
||||
"block.create.exposed_copper_shingle_stairs": "Altistuneet kuparipaanuportaat",
|
||||
"block.create.exposed_copper_shingles": "Altistunut kuparipaanu",
|
||||
"block.create.exposed_copper_tile_slab": "Altistunut kuparikaakelilaatta",
|
||||
"block.create.exposed_copper_tile_stairs": "Altistuneet kuparikaakeliportaat",
|
||||
"block.create.exposed_copper_tiles": "Altistunut kuparikaakeli",
|
||||
"block.create.fake_track": "Ratamerkki kartoille",
|
||||
"block.create.fluid_pipe": "Nesteputki",
|
||||
"block.create.fluid_tank": "Nestesäiliö",
|
||||
"block.create.fluid_valve": "Nesteventtiili",
|
||||
"block.create.flywheel": "Vauhtipyörä",
|
||||
"block.create.framed_glass": "Kehystetty lasi",
|
||||
"block.create.framed_glass_door": "Kehystetty lasiovi",
|
||||
"block.create.framed_glass_pane": "Kehystetty lasipaneeli",
|
||||
"block.create.framed_glass_trapdoor": "Kehystetty lasiluukku",
|
||||
"block.create.gantry_carriage": "Nosturikuljetin",
|
||||
"block.create.gantry_shaft": "Nosturiakseli",
|
||||
"block.create.gearbox": "Vaihdelaatikko",
|
||||
"block.create.gearshift": "Suunnanvaihtaja",
|
||||
"block.create.glass_fluid_pipe": "Lasi nesteputki",
|
||||
"block.create.granite_pillar": "Graniittipilari",
|
||||
"block.create.gray_nixie_tube": "Harmaa nixie-putki",
|
||||
"block.create.gray_sail": "Harmaa purje",
|
||||
"block.create.gray_seat": "Harmaa istuin",
|
||||
"block.create.gray_toolbox": "Harmaa työkalupakki",
|
||||
"block.create.gray_valve_handle": "Harmaa venttiilikahva",
|
||||
"block.create.green_nixie_tube": "Vihreä nixie-putki",
|
||||
"block.create.green_sail": "Vihreä purje",
|
||||
"block.create.green_seat": "Vihreä istuin",
|
||||
"block.create.green_toolbox": "Vihreä työkalupakki",
|
||||
"block.create.green_valve_handle": "Vihreä venttiilikahva",
|
||||
"block.create.hand_crank": "Käsiveivi",
|
||||
"block.create.haunted_bell": "Kummitus-soittokello",
|
||||
"block.create.honey": "Hunaja",
|
||||
"block.create.horizontal_framed_glass": "Vaakasuora kehystetty lasi",
|
||||
"block.create.horizontal_framed_glass_pane": "Vaakasuora kehystetty lasipaneeli",
|
||||
"block.create.hose_pulley": "Letkurulla",
|
||||
"block.create.industrial_iron_block": "Teollisuusrautakuutio",
|
||||
"block.create.item_drain": "Viemäri",
|
||||
"block.create.item_vault": "Varastoholvi",
|
||||
"block.create.jungle_window": "Viidakkopuuikkuna",
|
||||
"block.create.jungle_window_pane": "Viidakkopuuikkunapaneeli",
|
||||
"block.create.large_bogey": "Suuri teli",
|
||||
"block.create.large_cogwheel": "Suuri hammaspyörä",
|
||||
"block.create.large_water_wheel": "Suuri vesipyörä",
|
||||
"block.create.layered_andesite": "Kerroksinen andesiitti",
|
||||
"block.create.layered_asurine": "Kerroksinen asuriini",
|
||||
"block.create.layered_calcite": "Kerroksinen kalsiitti",
|
||||
"block.create.layered_crimsite": "Kerroksinen krimsiitti",
|
||||
"block.create.layered_deepslate": "Kerroksinen pohjaliuskekivi",
|
||||
"block.create.layered_diorite": "Kerroksinen dioriitti",
|
||||
"block.create.layered_dripstone": "Kerroksinen tippukivi",
|
||||
"block.create.layered_granite": "Kerroksinen graniitti",
|
||||
"block.create.layered_limestone": "Kerroksinen kalkkikivi",
|
||||
"block.create.layered_ochrum": "Kerroksinen okrumi",
|
||||
"block.create.layered_scorchia": "Kerroksinen tuhkakivi",
|
||||
"block.create.layered_scoria": "Kerroksinen palokivi",
|
||||
"block.create.layered_tuff": "Kerroksinen tuffi",
|
||||
"block.create.layered_veridium": "Kerroksinen viherkivi",
|
||||
"block.create.lectern_controller": "Kateederiohjain",
|
||||
"block.create.light_blue_nixie_tube": "Vaaleansininen nixie-putki",
|
||||
"block.create.light_blue_sail": "Vaaleansininen purje",
|
||||
"block.create.light_blue_seat": "Vaaleansininen istuin",
|
||||
"block.create.light_blue_toolbox": "Vaaleansininen työkalupakki",
|
||||
"block.create.light_blue_valve_handle": "Vaaleansininen venttiilinkahva",
|
||||
"block.create.light_gray_nixie_tube": "Vaaleanharmaa nixie-putki",
|
||||
"block.create.light_gray_sail": "Vaaleanharmaa purje",
|
||||
"block.create.light_gray_seat": "Vaaleanharmaa istuin",
|
||||
"block.create.light_gray_toolbox": "Vaaleanharmaa työkalupakki",
|
||||
"block.create.light_gray_valve_handle": "Vaaleanharmaa venttiilinkahva",
|
||||
"block.create.lime_nixie_tube": "Limetinvihreä nixie-putki",
|
||||
"block.create.lime_sail": "Limetinvihreä purje",
|
||||
"block.create.lime_seat": "Limetinvihreä istuin",
|
||||
"block.create.lime_toolbox": "Limetinvihreä työkalupakki",
|
||||
"block.create.lime_valve_handle": "Limetinvihreä venttiilinkahva",
|
||||
"block.create.limestone": "Kalkkikivi",
|
||||
"block.create.limestone_pillar": "Kalkkikivipilari",
|
||||
"block.create.linear_chassis": "Lineaarinen runko",
|
||||
"block.create.lit_blaze_burner": "Sytytetty roihupoltin",
|
||||
"block.create.magenta_nixie_tube": "Purppura nixie-putki",
|
||||
"block.create.magenta_sail": "Purppura purje",
|
||||
"block.create.magenta_seat": "Purppura istuin",
|
||||
"block.create.magenta_toolbox": "Purppura työkalupakki",
|
||||
"block.create.magenta_valve_handle": "Purppura venttiilikahva",
|
||||
"block.create.mechanical_arm": "Mekaaninen käsi",
|
||||
"block.create.mechanical_bearing": "Mekaaninen laakeri",
|
||||
"block.create.mechanical_crafter": "Mekaaninen valmistaja",
|
||||
"block.create.mechanical_drill": "Mekaaninen pora",
|
||||
"block.create.mechanical_harvester": "Mekaaninen sadonkerääjä",
|
||||
"block.create.mechanical_mixer": "Mekaaninen sekoittaja",
|
||||
"block.create.mechanical_piston": "Mekaaninen mäntä",
|
||||
"block.create.mechanical_piston_head": "Mekaaninen mäntäpää",
|
||||
"block.create.mechanical_plough": "Mekaaninen aura",
|
||||
"block.create.mechanical_press": "Mekaaninen prässi",
|
||||
"block.create.mechanical_pump": "Mekaaninen pumppu",
|
||||
"block.create.mechanical_roller": "Mekaaninen jyrä",
|
||||
"block.create.mechanical_saw": "Mekaaninen saha",
|
||||
"block.create.metal_bracket": "Metalli pidin",
|
||||
"block.create.metal_girder": "Metalli hirsi",
|
||||
"block.create.metal_girder_encased_shaft": "Metalli hirrellä koteloitu akseli",
|
||||
"block.create.millstone": "Myllykivi",
|
||||
"block.create.minecart_anchor": "Kaivusvaunu ankkuri",
|
||||
"block.create.mysterious_cuckoo_clock": "Käki kello",
|
||||
"block.create.netherite_backtank": "Netheriitti taka säiliö",
|
||||
"block.create.nixie_tube": "Nixie-putki",
|
||||
"block.create.nozzle": "Suutin",
|
||||
"block.create.oak_window": "Tammi ikkuna",
|
||||
"block.create.oak_window_pane": "Tammi-ikkunapaneeli",
|
||||
"block.create.ochrum": "Ochrumi",
|
||||
"block.create.ochrum_pillar": "Ochrumi pilari",
|
||||
"block.create.orange_sail": "Oranssi purje",
|
||||
"block.create.orange_seat": "Oranssi istuin",
|
||||
"block.create.orange_toolbox": "Oranssi työkalupakki",
|
||||
"block.create.orange_valve_handle": "Oranssi venttiilikahva",
|
||||
"block.create.ornate_iron_window": "Koristeinen rauta ikkuna",
|
||||
"block.create.ornate_iron_window_pane": "Koristeinen rauta ikkunapaneeli",
|
||||
"block.create.oxidized_copper_shingle_slab": "Hapettunut kuparipärelaatta",
|
||||
"block.create.oxidized_copper_shingle_stairs": "Hapettuneet kuparipäreportaat",
|
||||
"block.create.oxidized_copper_shingles": "Hapettuneet kuparipäreet",
|
||||
"block.create.oxidized_copper_tile_slab": "Hapettunut kuparitiililaatta",
|
||||
"block.create.oxidized_copper_tile_stairs": "Hapettuneet kuparitiiliportaat",
|
||||
"block.create.oxidized_copper_tiles": "Hapettuneet kuparitiilit",
|
||||
"block.create.peculiar_bell": "Kummallinen kello",
|
||||
"block.create.pink_nixie_tube": "Vaaleanpunainen nixie-putki",
|
||||
"block.create.pink_sail": "Vaaleanpunainen purje",
|
||||
"block.create.pink_seat": "Vaaleanpunainen istuin",
|
||||
"block.create.pink_toolbox": "Vaaleanpunainen työkalulaatikko",
|
||||
"block.create.pink_valve_handle": "Vaaleanpunainen venttiilikahva",
|
||||
"block.create.piston_extension_pole": "Männän pidennystanko",
|
||||
"block.create.placard": "Esinejuliste",
|
||||
"block.create.polished_cut_andesite": "Kiillotettu leikattu andesiitti",
|
||||
"block.create.polished_cut_andesite_slab": "Kiillotettu leikattu andesiittilaatta",
|
||||
"block.create.polished_cut_andesite_stairs": "Kiillotetut leikatut andesiittiportaat",
|
||||
"block.create.polished_cut_andesite_wall": "Kiillotettu leikattu andesiittisimuuri",
|
||||
"block.create.polished_cut_asurine": "Kiillotettu leikattu asuriini",
|
||||
"block.create.polished_cut_asurine_slab": "Kiillotettu leikattu asuriinilaatta",
|
||||
"block.create.polished_cut_asurine_stairs": "Kiillotetut leikatut asuriiniportaat",
|
||||
"block.create.polished_cut_asurine_wall": "Kiillotettu leikattu asuriinimuuri",
|
||||
"block.create.polished_cut_calcite": "Kiillotettu leikattu kalsiitti",
|
||||
"block.create.polished_cut_calcite_slab": "Kiillotettu leikattu kalsiittilaatta",
|
||||
"block.create.polished_cut_calcite_stairs": "Kiillotetut leikatut kalsiittiportaat",
|
||||
"block.create.polished_cut_calcite_wall": "Kiillotettu leikattu kalsiittimuuri",
|
||||
"block.create.polished_cut_crimsite": "Kiillotettu leikattu crimsiitti",
|
||||
"block.create.polished_cut_crimsite_slab": "Kiillotettu leikattu crimsiittilaatta",
|
||||
"block.create.polished_cut_crimsite_stairs": "Kiillotetut leikatut crimsiittiportaat",
|
||||
"block.create.polished_cut_crimsite_wall": "Kiillotettu leikattu crimsiittimuuri",
|
||||
"block.create.polished_cut_deepslate": "Kiillotettu leikattu pohjaliuskekivi",
|
||||
"block.create.polished_cut_deepslate_slab": "Kiillotettu leikattu pohjaliuskekivilaatta",
|
||||
"block.create.polished_cut_deepslate_stairs": "Kiillotetut leikatut pohjaliuskekiviportaat",
|
||||
"block.create.polished_cut_deepslate_wall": "Kiillotettu leikattu pohjaliuskekivimuuri",
|
||||
"block.create.polished_cut_diorite": "Kiillotettu leikattu dioriitti",
|
||||
"block.create.polished_cut_diorite_slab": "Kiillotettu leikattu dioriittilaatta",
|
||||
"block.create.polished_cut_diorite_stairs": "Kiillotetut leikatut dioriittiportaat",
|
||||
"block.create.polished_cut_diorite_wall": "Kiillotettu leikattu dioriittimuuri",
|
||||
"block.create.polished_cut_dripstone": "Kiillotettu leikattu tippukivikuutio",
|
||||
"block.create.polished_cut_dripstone_slab": "Kiillotettu leikattu tippukivilaatta",
|
||||
"block.create.polished_cut_dripstone_stairs": "Kiillotetut leikatut tippukiviportaat",
|
||||
"block.create.polished_cut_dripstone_wall": "Kiillotettu leikattu tippukivimuuri",
|
||||
"block.create.polished_cut_granite": "Kiillotettu leikattu graniitti",
|
||||
"block.create.polished_cut_granite_slab": "Kiillotettu leikattu graniittilaatta",
|
||||
"block.create.polished_cut_granite_stairs": "Kiillotetut leikatut graniittiportaat",
|
||||
"block.create.polished_cut_granite_wall": "Kiillotettu leikattu graniittimuuri",
|
||||
"block.create.polished_cut_limestone": "Kiillotettu leikattu kalkkikivi",
|
||||
"block.create.polished_cut_limestone_slab": "Kiillotettu leikattu kalkkikivilaatta",
|
||||
"block.create.polished_cut_limestone_stairs": "Kiillotetut leikatut kalkkikiviportaat",
|
||||
"block.create.polished_cut_limestone_wall": "Kiillotettu leikattu kalkkikivimuuri",
|
||||
"block.create.polished_cut_ochrum": "Kiillotettu leikattu okrumi",
|
||||
"block.create.polished_cut_ochrum_slab": "Kiillotettu leikattu okrumilaatta",
|
||||
"block.create.polished_cut_ochrum_stairs": "Kiillotetut leikatut okrumiportaat",
|
||||
"block.create.polished_cut_ochrum_wall": "Kiillotettu leikattu okrumimuuri",
|
||||
"block.create.polished_cut_scorchia": "Kiillotettu leikattu scorchia",
|
||||
"block.create.polished_cut_scorchia_slab": "Kiillotettu leikattu scorchialaatta",
|
||||
"block.create.polished_cut_scorchia_stairs": "Kiillotetut leikatut scorchiaportaat",
|
||||
"block.create.polished_cut_scorchia_wall": "Kiillotettu leikattu scorchiamuuri",
|
||||
"block.create.portable_fluid_interface": "Siirrettävä nesteliitäntä",
|
||||
"block.create.portable_storage_interface": "Siirrettävä varastoliitäntä",
|
||||
"block.create.purple_nixie_tube": "Violetti nixie-putki",
|
||||
"block.create.purple_sail": "Violetti Purje",
|
||||
"block.create.purple_seat": "Violetti Istuin",
|
||||
"block.create.purple_toolbox": "Violetti Työkalupakki",
|
||||
"block.create.purple_valve_handle": "Violetti venttiilikahva",
|
||||
"block.create.red_nixie_tube": "Punainen nixie-putki",
|
||||
"block.create.red_sail": "Punainen Purje",
|
||||
"block.create.red_seat": "Punainen Istuin",
|
||||
"block.create.red_toolbox": "Punainen Työkalupakki",
|
||||
"block.create.red_valve_handle": "Punainen venttiilikahva",
|
||||
"block.create.redstone_contact": "Punakivikontakti",
|
||||
"block.create.redstone_link": "Punakivilähetin",
|
||||
"block.create.rope": "Köysi",
|
||||
"block.create.rope_pulley": "Talja",
|
||||
"block.create.rose_quartz_lamp": "Ruusukvartsi Lamppu",
|
||||
"block.create.rose_quartz_tiles": "Ruusukvartsi Laatat",
|
||||
"block.create.rotation_speed_controller": "Kiertonopeuden säädin",
|
||||
"block.create.sail_frame": "Tuulimyllyn Purjekehys",
|
||||
"block.create.schematic_table": "Piirustuspöytä",
|
||||
"block.create.secondary_linear_chassis": "Toissijainen lineaarinen runko",
|
||||
"block.create.sequenced_gearshift": "Peräkkäinen suunnanvaihtaja",
|
||||
"block.create.shadow_steel_casing": "Pimeyksien kotelo",
|
||||
"block.create.shaft": "Akseli",
|
||||
"block.create.small_diorite_brick_stairs": "Pienet dioriittitiiliportaat",
|
||||
"block.create.small_diorite_brick_wall": "Pieni dioriittitiilimuuri",
|
||||
"block.create.small_diorite_bricks": "Pienet Dioriittitiilet",
|
||||
"block.create.small_dripstone_brick_slab": "Pieni tippukivitiililaatta",
|
||||
"block.create.small_scorchia_bricks": "Pienet tuhkakivitiilet",
|
||||
"block.create.smart_chute": "Älykouru",
|
||||
"block.create.smart_fluid_pipe": "Älynesteputki",
|
||||
"block.create.speedometer": "Nopeudentulkitsija",
|
||||
"block.create.spout": "Nokka",
|
||||
"block.create.spruce_window": "Kuusi ikkuna",
|
||||
"block.create.spruce_window_pane": "Kuusi ikkunapaneeli",
|
||||
"block.create.steam_engine": "Höyrymoottori",
|
||||
"block.create.steam_whistle": "Höyrypilli",
|
||||
"block.create.steam_whistle_extension": "Höyrypillipidennys",
|
||||
"block.create.sticker": "Tarra",
|
||||
"block.create.sticky_mechanical_piston": "Tarrtumamekaaninen Mäntä",
|
||||
"block.create.stressometer": "Stressimittari",
|
||||
"block.create.train_door": "Junaovi",
|
||||
"block.create.train_trapdoor": "Junaluukku",
|
||||
"block.create.veridium": "Viherkivi",
|
||||
"block.create.water_wheel": "Vesipyörä",
|
||||
"block.create.water_wheel_structure": "Suuri vesipyörä",
|
||||
"block.create.white_nixie_tube": "Valkoinen nixie-putki",
|
||||
"block.create.yellow_nixie_tube": "Keltainen nixie-putki",
|
||||
"create.display_source.observed_train_name": "Havaitun junan nimi",
|
||||
"create.display_source.train_status": "Juna-aikataulun tila",
|
||||
"create.hint.derailed_train.title": "Juna pois kiskoilta",
|
||||
"create.subtitle.whistle_train_manual": "Juna soittaa pilliä",
|
||||
"create.subtitle.whistle_train_manual_low": "Juna soittaa pilliä",
|
||||
"create.train.cannot_relocate_moving": "Liikkuvaa junaa ei voi siirtää",
|
||||
"create.train.relocate.invalid": "Junaa ei voi siirtää tähän",
|
||||
"create.train.relocate.too_far": "Junaa ei voi siirtää näin kauas",
|
||||
"create.train.status": "<i>Tietoa junasta:%1$s",
|
||||
"create.train.status.back_on_track": "Juna on palannut kiskoille",
|
||||
"create.train.status.collision": "Törmäys toisen junan kanssa",
|
||||
"create.train.status.track_missing": "Kiskot puuttuvat",
|
||||
"create.train.unnamed": "Nimetön juna",
|
||||
"create.train_assembly.sideways_controls": "Junaohjaimet eivät voi olla sivusuunnassa",
|
||||
"entity.create.super_glue": "Pikaliima",
|
||||
"item.create.andesite_alloy": "Andesiittimetalliseos",
|
||||
"item.create.brass_ingot": "Messinkiharkko",
|
||||
"item.create.brass_nugget": "Messinkikimpale",
|
||||
"item.create.brass_sheet": "Messinkilevy",
|
||||
"item.create.copper_sheet": "Kuparilevy",
|
||||
"item.create.golden_sheet": "Kultalevy",
|
||||
"item.create.iron_sheet": "Rautalevy",
|
||||
"item.create.linked_controller": "Kauko-ohjain",
|
||||
"item.create.sturdy_sheet": "Lujalevy",
|
||||
"item.create.super_glue": "Pikaliima",
|
||||
"item.create.unprocessed_obsidian_sheet": "Käsittelemätön obsidiaanilevy"
|
||||
}
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,67 +1,66 @@
|
|||
{
|
||||
"_": "Takk fyrir að þýða Create!",
|
||||
"block.create.belt": "Færiband",
|
||||
"block.create.brass_block": "Látúnkubbur",
|
||||
"block.create.chocolate": "Súkkulaði",
|
||||
"block.create.cogwheel": "Tannhjól",
|
||||
"block.create.crimsite": "Krímsít",
|
||||
"block.create.cuckoo_clock": "Gauksklukka",
|
||||
"block.create.flywheel": "Svinghjól",
|
||||
"block.create.honey": "Hunang",
|
||||
"block.create.large_cogwheel": "Stórt tannhjól",
|
||||
"block.create.limestone": "Kalksteinn",
|
||||
"block.create.millstone": "Kvarnarsteinn",
|
||||
"block.create.mysterious_cuckoo_clock": "Gauksklukka",
|
||||
"block.create.ochrum": "Okkrum",
|
||||
"block.create.placard": "Plakat",
|
||||
"block.create.raw_zinc_block": "Kubbur af hrásinki",
|
||||
"block.create.rope": "Reipi",
|
||||
"block.create.rose_quartz_block": "Rósakvarskubbur",
|
||||
"block.create.rose_quartz_lamp": "Rósakvarslampi",
|
||||
"block.create.rose_quartz_tiles": "Rósakvarsflísar",
|
||||
"block.create.scorchia": "Öskusteinn",
|
||||
"block.create.scoria": "Brennsteinn",
|
||||
"block.create.shaft": "Ás",
|
||||
"block.create.small_rose_quartz_tiles": "Rósakvarsmósaík",
|
||||
"block.create.speedometer": "Hraðamælir",
|
||||
"block.create.stressometer": "Álagsmælir",
|
||||
"block.create.track": "Járnbrautarspor",
|
||||
"block.create.track_station": "Lestarstöð",
|
||||
"block.create.train_door": "Lestarhurð",
|
||||
"block.create.train_trapdoor": "Lestarhleri",
|
||||
"block.create.veridium": "Verídíum",
|
||||
"block.create.water_wheel": "Vatnshjól",
|
||||
"block.create.zinc_block": "Sinkkubbur",
|
||||
"block.create.zinc_ore": "Sinkgrýti",
|
||||
"entity.create.contraption": "Tæki",
|
||||
"item.create.bar_of_chocolate": "Súkkulaðiplata",
|
||||
"item.create.brass_ingot": "Látúnshleifur",
|
||||
"item.create.brass_nugget": "Látúnsmoli",
|
||||
"item.create.chocolate_bucket": "Súkkulaðifata",
|
||||
"item.create.copper_nugget": "Koparmoli",
|
||||
"item.create.dough": "Deig",
|
||||
"item.create.electron_tube": "Rafeindarör",
|
||||
"item.create.polished_rose_quartz": "Slípað rósakvars",
|
||||
"item.create.powdered_obsidian": "Hrafntinnuduft",
|
||||
"item.create.raw_zinc": "Hrátt sink",
|
||||
"item.create.rose_quartz": "Rósakvars",
|
||||
"item.create.sand_paper": "Sandpappír",
|
||||
"item.create.wrench": "Skiptilykill",
|
||||
"item.create.zinc_ingot": "Sinkhleifur",
|
||||
"advancement.create.cuckoo_clock": "Nú þegar?",
|
||||
"advancement.create.rose_quartz": "Bleikir demantar",
|
||||
"advancement.create.rose_quartz.desc": "Pússaðu klumpur af rósakvars",
|
||||
"advancement.create.train.desc": "Settu saman fyrstu lestina þína",
|
||||
"create.station.create_train": "Búa til nýja lest",
|
||||
"create.station.assemble_train": "Setja saman lest",
|
||||
"create.train.unnamed": "Nafnlaus lest",
|
||||
"create.train.status": "<i> Upplýsingar um lestina: %1$s",
|
||||
"item.create.wrench.tooltip": "SKIPTILYKILL",
|
||||
"block.create.cuckoo_clock.tooltip": "GAUKSKLUKKA",
|
||||
"block.create.flywheel.tooltip": "SVINGHJÓL",
|
||||
"create.ponder.rose_quartz_lamp.header": "Rósakvarslampar",
|
||||
"create.ponder.rose_quartz_lamp.text_3": "Þegar mörgum lömpum er raðað í hóp...",
|
||||
"create.ponder.rose_quartz_lamp.text_4": "...kveikir á lampa mun merkið beinast að honum og gera alla aðra óvirka",
|
||||
"create.ponder.rose_quartz_lamp.text_6": "Einnig er hægt að kveikja eða slökkva á lampunum handvirkt með skiptilykil",
|
||||
"create.ponder.train_controls.header": "Að stjórna lestum"
|
||||
"advancement.create.cuckoo_clock": "Nú þegar?",
|
||||
"advancement.create.rose_quartz": "Bleikir demantar",
|
||||
"advancement.create.rose_quartz.desc": "Pússaðu klumpur af rósakvars",
|
||||
"advancement.create.train.desc": "Settu saman fyrstu lestina þína",
|
||||
"block.create.belt": "Færiband",
|
||||
"block.create.brass_block": "Látúnkubbur",
|
||||
"block.create.chocolate": "Súkkulaði",
|
||||
"block.create.cogwheel": "Tannhjól",
|
||||
"block.create.crimsite": "Krímsít",
|
||||
"block.create.cuckoo_clock": "Gauksklukka",
|
||||
"block.create.cuckoo_clock.tooltip": "GAUKSKLUKKA",
|
||||
"block.create.flywheel": "Svinghjól",
|
||||
"block.create.flywheel.tooltip": "SVINGHJÓL",
|
||||
"block.create.honey": "Hunang",
|
||||
"block.create.large_cogwheel": "Stórt tannhjól",
|
||||
"block.create.limestone": "Kalksteinn",
|
||||
"block.create.millstone": "Kvarnarsteinn",
|
||||
"block.create.mysterious_cuckoo_clock": "Gauksklukka",
|
||||
"block.create.ochrum": "Okkrum",
|
||||
"block.create.placard": "Plakat",
|
||||
"block.create.raw_zinc_block": "Kubbur af hrásinki",
|
||||
"block.create.rope": "Reipi",
|
||||
"block.create.rose_quartz_block": "Rósakvarskubbur",
|
||||
"block.create.rose_quartz_lamp": "Rósakvarslampi",
|
||||
"block.create.rose_quartz_tiles": "Rósakvarsflísar",
|
||||
"block.create.scorchia": "Öskusteinn",
|
||||
"block.create.scoria": "Brennsteinn",
|
||||
"block.create.shaft": "Ás",
|
||||
"block.create.small_rose_quartz_tiles": "Rósakvarsmósaík",
|
||||
"block.create.speedometer": "Hraðamælir",
|
||||
"block.create.stressometer": "Álagsmælir",
|
||||
"block.create.track": "Járnbrautarspor",
|
||||
"block.create.track_station": "Lestarstöð",
|
||||
"block.create.train_door": "Lestarhurð",
|
||||
"block.create.train_trapdoor": "Lestarhleri",
|
||||
"block.create.veridium": "Verídíum",
|
||||
"block.create.water_wheel": "Vatnshjól",
|
||||
"block.create.zinc_block": "Sinkkubbur",
|
||||
"block.create.zinc_ore": "Sinkgrýti",
|
||||
"create.ponder.rose_quartz_lamp.header": "Rósakvarslampar",
|
||||
"create.ponder.rose_quartz_lamp.text_3": "Þegar mörgum lömpum er raðað í hóp...",
|
||||
"create.ponder.rose_quartz_lamp.text_4": "...kveikir á lampa mun merkið beinast að honum og gera alla aðra óvirka",
|
||||
"create.ponder.rose_quartz_lamp.text_6": "Einnig er hægt að kveikja eða slökkva á lampunum handvirkt með skiptilykil",
|
||||
"create.ponder.train_controls.header": "Að stjórna lestum",
|
||||
"create.station.assemble_train": "Setja saman lest",
|
||||
"create.station.create_train": "Búa til nýja lest",
|
||||
"create.train.status": "<i> Upplýsingar um lestina: %1$s",
|
||||
"create.train.unnamed": "Nafnlaus lest",
|
||||
"entity.create.contraption": "Tæki",
|
||||
"item.create.bar_of_chocolate": "Súkkulaðiplata",
|
||||
"item.create.brass_ingot": "Látúnshleifur",
|
||||
"item.create.brass_nugget": "Látúnsmoli",
|
||||
"item.create.chocolate_bucket": "Súkkulaðifata",
|
||||
"item.create.copper_nugget": "Koparmoli",
|
||||
"item.create.dough": "Deig",
|
||||
"item.create.electron_tube": "Rafeindarör",
|
||||
"item.create.polished_rose_quartz": "Slípað rósakvars",
|
||||
"item.create.powdered_obsidian": "Hrafntinnuduft",
|
||||
"item.create.raw_zinc": "Hrátt sink",
|
||||
"item.create.rose_quartz": "Rósakvars",
|
||||
"item.create.sand_paper": "Sandpappír",
|
||||
"item.create.wrench": "Skiptilykill",
|
||||
"item.create.wrench.tooltip": "SKIPTILYKILL",
|
||||
"item.create.zinc_ingot": "Sinkhleifur"
|
||||
}
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,115 +1,285 @@
|
|||
{
|
||||
"_": "謝諸位譯《創藝》!",
|
||||
"block.create.acacia_window": "㭜窗",
|
||||
"block.create.acacia_window_pane": "㭜窗版",
|
||||
"block.create.adjustable_chain_gearshift": "允更鏈速箱",
|
||||
"block.create.analog_lever": "細分閘刀",
|
||||
"block.create.andesite_alloy_block": "鈉碤合金塊",
|
||||
"block.create.andesite_bars": "鈉碤檻",
|
||||
"block.create.andesite_belt_funnel": "鈉碤滾帶漏斗",
|
||||
"block.create.andesite_casing": "鈉碤機殼",
|
||||
"block.create.andesite_door": "鈉碤門",
|
||||
"block.create.andesite_encased_cogwheel": "鈉碤齒輪箱",
|
||||
"block.create.andesite_encased_large_cogwheel": "鈉碤巨齒輪箱",
|
||||
"block.create.andesite_encased_shaft": "鈉碤杆箱",
|
||||
"block.create.andesite_funnel": "鈉碤漏斗",
|
||||
"block.create.andesite_ladder": "鈉碤梯",
|
||||
"block.create.andesite_pillar": "鈉碤柱",
|
||||
"block.create.andesite_scaffolding": "鈉碤脚手架",
|
||||
"block.create.andesite_tunnel": "鈉碤隧道",
|
||||
"block.create.asurine": "皓鋅岩",
|
||||
"block.create.asurine_pillar": "皓鋅岩柱",
|
||||
"block.create.basin": "盆",
|
||||
"block.create.belt": "滾帶",
|
||||
"block.create.birch_window": "樺窗",
|
||||
"block.create.birch_window_pane": "樺窗版",
|
||||
"block.create.black_nixie_tube": "玄光管",
|
||||
"block.create.black_sail": "玄帆",
|
||||
"block.create.black_seat": "玄席",
|
||||
"block.create.black_toolbox": "玄匠箱",
|
||||
"block.create.black_valve_handle": "玄轉輪",
|
||||
"block.create.blaze_burner": "炎靈灶",
|
||||
"block.create.blue_nixie_tube": "藍光管",
|
||||
"block.create.blue_sail": "藍帆",
|
||||
"block.create.blue_seat": "藍席",
|
||||
"block.create.blue_toolbox": "藍匠箱",
|
||||
"block.create.blue_valve_handle": "藍轉輪",
|
||||
"block.create.brass_bars": "黃銅檻",
|
||||
"block.create.brass_belt_funnel": "黃銅滾帶漏斗",
|
||||
"block.create.brass_block": "黃銅塊",
|
||||
"block.create.brass_casing": "黃銅機殼",
|
||||
"block.create.brass_door": "黃銅門",
|
||||
"block.create.brass_encased_cogwheel": "黃銅齒輪箱",
|
||||
"block.create.brass_encased_large_cogwheel": "黃銅巨齒輪箱",
|
||||
"block.create.brass_encased_shaft": "黃銅杆箱",
|
||||
"block.create.brass_funnel": "黃銅漏斗",
|
||||
"block.create.brass_ladder": "黃銅梯",
|
||||
"block.create.brass_scaffolding": "黃銅脚手架",
|
||||
"block.create.brass_tunnel": "黃銅隧道",
|
||||
"block.create.brown_nixie_tube": "褐光管",
|
||||
"block.create.brown_sail": "褐帆",
|
||||
"block.create.brown_seat": "褐席",
|
||||
"block.create.cogwheel": "齒輪",
|
||||
"block.create.cut_asurine_brick_slab": "割皓鋅岩磚版",
|
||||
"block.create.cut_asurine_brick_stairs": "割皓鋅岩磚階",
|
||||
"block.create.cut_asurine_brick_wall": "割皓鋅岩磚垣",
|
||||
"block.create.cut_asurine_bricks": "割皓鋅岩磚",
|
||||
"block.create.cut_asurine_slab": "割皓鋅岩版",
|
||||
"block.create.cut_asurine_stairs": "割皓鋅岩階",
|
||||
"block.create.cut_asurine_wall": "割皓鋅岩垣",
|
||||
"block.create.cut_calcite": "割滑方石",
|
||||
"block.create.cut_calcite_brick_slab": "割滑方石磚版",
|
||||
"block.create.cut_calcite_brick_stairs": "割滑方石磚階",
|
||||
"block.create.cut_calcite_brick_wall": "割滑方石磚垣",
|
||||
"block.create.cut_calcite_bricks": "割滑方石磚",
|
||||
"block.create.cut_calcite_slab": "割滑方石版",
|
||||
"block.create.cut_calcite_stairs": "割滑方石階",
|
||||
"block.create.cut_calcite_wall": "割滑方石垣",
|
||||
"block.create.cut_crimsite": "緋鉄岩",
|
||||
"block.create.cut_crimsite_brick_slab": "割緋鉄岩磚版",
|
||||
"block.create.cut_crimsite_brick_stairs": "割緋鉄岩磚階",
|
||||
"block.create.cut_crimsite_brick_wall": "割緋鉄岩磚垣",
|
||||
"block.create.cut_crimsite_bricks": "割緋鉄岩磚",
|
||||
"block.create.cut_crimsite_slab": "割緋鉄岩版",
|
||||
"block.create.cut_crimsite_stairs": "割緋鉄岩階",
|
||||
"block.create.cut_crimsite_wall": "割緋鉄岩垣",
|
||||
"block.create.cut_deepslate": "割板巖",
|
||||
"block.create.cut_deepslate_brick_slab": "割板巖磚版",
|
||||
"block.create.cut_deepslate_brick_stairs": "割板巖磚階",
|
||||
"block.create.cut_deepslate_brick_wall": "割板巖磚垣",
|
||||
"block.create.cut_deepslate_bricks": "割板巖磚",
|
||||
"block.create.cut_deepslate_slab": "割板巖版",
|
||||
"block.create.cut_deepslate_stairs": "割板巖階",
|
||||
"block.create.cut_deepslate_wall": "割板巖垣",
|
||||
"block.create.cut_diorite": "割閃綠石",
|
||||
"block.create.cut_diorite_brick_slab": "割閃綠石磚版",
|
||||
"block.create.cut_diorite_brick_stairs": "割閃綠石磚階",
|
||||
"block.create.cut_diorite_brick_wall": "割閃綠石磚垣",
|
||||
"block.create.cut_diorite_bricks": "割閃綠石磚",
|
||||
"block.create.cut_diorite_slab": "割閃綠石版",
|
||||
"block.create.cut_diorite_stairs": "割閃綠石階",
|
||||
"block.create.cut_diorite_wall": "割閃綠石垣",
|
||||
"block.create.cut_dripstone": "割鐘乳石",
|
||||
"block.create.cut_dripstone_brick_slab": "割鐘乳石磚版",
|
||||
"block.create.cut_dripstone_brick_stairs": "割鐘乳石磚階",
|
||||
"block.create.cut_dripstone_brick_wall": "割鐘乳石磚垣",
|
||||
"block.create.cut_dripstone_bricks": "割鐘乳石磚",
|
||||
"block.create.cut_dripstone_slab": "割鐘乳石版",
|
||||
"block.create.cut_dripstone_stairs": "割鐘乳石階",
|
||||
"block.create.cut_dripstone_wall": "割鐘乳石垣",
|
||||
"block.create.cut_granite": "割花崗巖",
|
||||
"block.create.cut_granite_brick_slab": "割花崗巖磚版",
|
||||
"block.create.cut_granite_brick_stairs": "割花崗巖磚階",
|
||||
"advancement.create.root": "恭迎至創藝",
|
||||
"itemGroup.create.base": "創藝",
|
||||
"create.menu.ponder_index": "格物索引",
|
||||
"create.ponder.hold_to_ponder": "押 [%1$s] 以格物",
|
||||
"create.ponder.pondering": "格物……",
|
||||
"create.ponder.identify_mode": "塊名已示\n押 [%1$s] 以继之",
|
||||
"create.ponder.close": "畢",
|
||||
"create.ponder.identify": "示塊名",
|
||||
"create.ponder.next_up": "次:",
|
||||
"create.ponder.think_back": "三思",
|
||||
"create.ponder.welcome": "恭迎至格物界面",
|
||||
"create.ponder.index_title": "格物索引"
|
||||
"advancement.create.andesite_alloy": "堅石",
|
||||
"advancement.create.andesite_alloy.desc": "得安山合金,造最要之資",
|
||||
"advancement.create.andesite_casing": "安山之世",
|
||||
"advancement.create.andesite_casing.desc": "合安山合金於剝木皮,為君機器創基殼",
|
||||
"advancement.create.backtank": "蓄勢待發",
|
||||
"advancement.create.backtank.desc": "造銅背罐,加壓之",
|
||||
"advancement.create.belt": "海帶傳動",
|
||||
"advancement.create.belt_funnel_kiss": "比翼雙飛",
|
||||
"advancement.create.brass_casing": "黃銅之世",
|
||||
"advancement.create.burner": "活爐",
|
||||
"advancement.create.cart_pickup": "壮硕臂者",
|
||||
"advancement.create.compacting": "緊縮",
|
||||
"advancement.create.compacting.desc": "以鍛壓機和盆縮材",
|
||||
"advancement.create.contraption_actors": "奉命出行",
|
||||
"advancement.create.copper": "更堅石",
|
||||
"advancement.create.copper_casing": "銅之世",
|
||||
"advancement.create.crafter_lazy_000": "鋌而走險",
|
||||
"advancement.create.crusher_maxed_0000": "碾之",
|
||||
"advancement.create.display_link": "大數據",
|
||||
"advancement.create.drain": "細水慢流",
|
||||
"advancement.create.ejector_maxed": "跳板冠軍",
|
||||
"advancement.create.encased_fan": "生風",
|
||||
"advancement.create.encased_fan.desc": "啟風機",
|
||||
"advancement.create.fan_processing": "以粒處之",
|
||||
"advancement.create.fan_processing.desc": "以風機加工材",
|
||||
"advancement.create.funnel": "機場美學",
|
||||
"advancement.create.glass_pipe": "窺視波流",
|
||||
"advancement.create.hose_pulley": "排放",
|
||||
"advancement.create.long_travel": "遠足",
|
||||
"advancement.create.mechanical_arm": "手忙者",
|
||||
"advancement.create.mechanical_mixer": "混而合之",
|
||||
"advancement.create.mechanical_press": "铿!",
|
||||
"advancement.create.mechanical_press.desc": "以鍛壓機鍛板金",
|
||||
"advancement.create.mechanical_pump_0": "施壓",
|
||||
"advancement.create.millstone": "磨練",
|
||||
"advancement.create.potato_cannon": "噗~碰!",
|
||||
"advancement.create.pulley_maxed": "上天入地",
|
||||
"advancement.create.root": "恭迎至創藝",
|
||||
"advancement.create.root.desc": "是造機械之時也",
|
||||
"advancement.create.saw_processing": "車間中危機械也",
|
||||
"advancement.create.saw_processing.desc": "以立式機械鋸加工材",
|
||||
"advancement.create.shifting_gears": "換檔",
|
||||
"advancement.create.speed_controller": "工程师恶之",
|
||||
"advancement.create.spout": "水花四濺",
|
||||
"advancement.create.steam_engine": "強力",
|
||||
"advancement.create.steam_engine_maxed": "蒸蒸日上",
|
||||
"advancement.create.steam_whistle": "天籟之音",
|
||||
"advancement.create.stressometer": "多此一舉",
|
||||
"advancement.create.stressometer_maxed": "二力平衡",
|
||||
"advancement.create.train": "上車",
|
||||
"advancement.create.train_whistle": "嗚!嗚!",
|
||||
"advancement.create.water_supply": "取自水窪",
|
||||
"advancement.create.water_wheel": "水力學",
|
||||
"advancement.create.windmill": "微風拂過",
|
||||
"advancement.create.windmill_maxed": "強風",
|
||||
"advancement.create.wrench_goggles": "工具齊全",
|
||||
"block.create.acacia_window": "㭜窗",
|
||||
"block.create.acacia_window_pane": "㭜窗版",
|
||||
"block.create.adjustable_chain_gearshift": "允更鏈速箱",
|
||||
"block.create.analog_lever": "細分閘刀",
|
||||
"block.create.andesite_alloy_block": "鈉碤合金塊",
|
||||
"block.create.andesite_bars": "鈉碤檻",
|
||||
"block.create.andesite_belt_funnel": "鈉碤滾帶漏斗",
|
||||
"block.create.andesite_casing": "鈉碤機殼",
|
||||
"block.create.andesite_door": "鈉碤門",
|
||||
"block.create.andesite_encased_cogwheel": "鈉碤齒輪箱",
|
||||
"block.create.andesite_encased_large_cogwheel": "鈉碤巨齒輪箱",
|
||||
"block.create.andesite_encased_shaft": "鈉碤杆箱",
|
||||
"block.create.andesite_funnel": "鈉碤漏斗",
|
||||
"block.create.andesite_ladder": "鈉碤梯",
|
||||
"block.create.andesite_pillar": "鈉碤柱",
|
||||
"block.create.andesite_scaffolding": "鈉碤脚手架",
|
||||
"block.create.andesite_tunnel": "鈉碤隧道",
|
||||
"block.create.asurine": "皓鋅岩",
|
||||
"block.create.asurine_pillar": "皓鋅岩柱",
|
||||
"block.create.basin": "盆",
|
||||
"block.create.belt": "滾帶",
|
||||
"block.create.birch_window": "樺窗",
|
||||
"block.create.birch_window_pane": "樺窗版",
|
||||
"block.create.black_nixie_tube": "玄光管",
|
||||
"block.create.black_sail": "玄帆",
|
||||
"block.create.black_seat": "玄席",
|
||||
"block.create.black_toolbox": "玄匠箱",
|
||||
"block.create.black_valve_handle": "玄轉輪",
|
||||
"block.create.blaze_burner": "炎靈灶",
|
||||
"block.create.blue_nixie_tube": "藍光管",
|
||||
"block.create.blue_sail": "藍帆",
|
||||
"block.create.blue_seat": "藍席",
|
||||
"block.create.blue_toolbox": "藍匠箱",
|
||||
"block.create.blue_valve_handle": "藍轉輪",
|
||||
"block.create.brass_bars": "黃銅檻",
|
||||
"block.create.brass_belt_funnel": "黃銅滾帶漏斗",
|
||||
"block.create.brass_block": "黃銅塊",
|
||||
"block.create.brass_casing": "黃銅機殼",
|
||||
"block.create.brass_door": "黃銅門",
|
||||
"block.create.brass_encased_cogwheel": "黃銅齒輪箱",
|
||||
"block.create.brass_encased_large_cogwheel": "黃銅巨齒輪箱",
|
||||
"block.create.brass_encased_shaft": "黃銅杆箱",
|
||||
"block.create.brass_funnel": "黃銅漏斗",
|
||||
"block.create.brass_ladder": "黃銅梯",
|
||||
"block.create.brass_scaffolding": "黃銅脚手架",
|
||||
"block.create.brass_tunnel": "黃銅隧道",
|
||||
"block.create.brown_nixie_tube": "褐光管",
|
||||
"block.create.brown_sail": "褐帆",
|
||||
"block.create.brown_seat": "褐席",
|
||||
"block.create.brown_toolbox": "褐械具箧",
|
||||
"block.create.brown_valve_handle": "褐轉輪",
|
||||
"block.create.calcite_pillar": "方解石柱",
|
||||
"block.create.cart_assembler": "礦車裝配站",
|
||||
"block.create.chocolate": "巧克力",
|
||||
"block.create.chute": "滑槽",
|
||||
"block.create.clipboard": "記錄板",
|
||||
"block.create.clockwork_bearing": "鐘軸",
|
||||
"block.create.clutch": "離合器",
|
||||
"block.create.cogwheel": "齒輪",
|
||||
"block.create.content_observer": "聰穎偵測器",
|
||||
"block.create.contraption_controls": "理械台",
|
||||
"block.create.controller_rail": "可控軌道",
|
||||
"block.create.controls": "駕𤉖台",
|
||||
"block.create.copper_backtank": "銅製背罐",
|
||||
"block.create.copper_bars": "銅柵欄",
|
||||
"block.create.copper_casing": "銅裝置殼",
|
||||
"block.create.copper_door": "銅質門",
|
||||
"block.create.copper_ladder": "銅質梯",
|
||||
"block.create.copper_scaffolding": "銅鷹架",
|
||||
"block.create.copper_shingle_slab": "銅質除",
|
||||
"block.create.copper_shingle_stairs": "銅質阶梯",
|
||||
"block.create.creative_motor": "創造馬達",
|
||||
"block.create.crushing_wheel": "粉碎輪",
|
||||
"block.create.crushing_wheel_controller": "粉碎輪之樞",
|
||||
"block.create.cuckoo_clock": "布穀鳥鐘",
|
||||
"block.create.cut_asurine_brick_slab": "割皓鋅岩磚版",
|
||||
"block.create.cut_asurine_brick_stairs": "割皓鋅岩磚階",
|
||||
"block.create.cut_asurine_brick_wall": "割皓鋅岩磚垣",
|
||||
"block.create.cut_asurine_bricks": "割皓鋅岩磚",
|
||||
"block.create.cut_asurine_slab": "割皓鋅岩版",
|
||||
"block.create.cut_asurine_stairs": "割皓鋅岩階",
|
||||
"block.create.cut_asurine_wall": "割皓鋅岩垣",
|
||||
"block.create.cut_calcite": "割滑方石",
|
||||
"block.create.cut_calcite_brick_slab": "割滑方石磚版",
|
||||
"block.create.cut_calcite_brick_stairs": "割滑方石磚階",
|
||||
"block.create.cut_calcite_brick_wall": "割滑方石磚垣",
|
||||
"block.create.cut_calcite_bricks": "割滑方石磚",
|
||||
"block.create.cut_calcite_slab": "割滑方石版",
|
||||
"block.create.cut_calcite_stairs": "割滑方石階",
|
||||
"block.create.cut_calcite_wall": "割滑方石垣",
|
||||
"block.create.cut_crimsite": "緋鉄岩",
|
||||
"block.create.cut_crimsite_brick_slab": "割緋鉄岩磚版",
|
||||
"block.create.cut_crimsite_brick_stairs": "割緋鉄岩磚階",
|
||||
"block.create.cut_crimsite_brick_wall": "割緋鉄岩磚垣",
|
||||
"block.create.cut_crimsite_bricks": "割緋鉄岩磚",
|
||||
"block.create.cut_crimsite_slab": "割緋鉄岩版",
|
||||
"block.create.cut_crimsite_stairs": "割緋鉄岩階",
|
||||
"block.create.cut_crimsite_wall": "割緋鉄岩垣",
|
||||
"block.create.cut_deepslate": "割板巖",
|
||||
"block.create.cut_deepslate_brick_slab": "割板巖磚版",
|
||||
"block.create.cut_deepslate_brick_stairs": "割板巖磚階",
|
||||
"block.create.cut_deepslate_brick_wall": "割板巖磚垣",
|
||||
"block.create.cut_deepslate_bricks": "割板巖磚",
|
||||
"block.create.cut_deepslate_slab": "割板巖版",
|
||||
"block.create.cut_deepslate_stairs": "割板巖階",
|
||||
"block.create.cut_deepslate_wall": "割板巖垣",
|
||||
"block.create.cut_diorite": "割閃綠石",
|
||||
"block.create.cut_diorite_brick_slab": "割閃綠石磚版",
|
||||
"block.create.cut_diorite_brick_stairs": "割閃綠石磚階",
|
||||
"block.create.cut_diorite_brick_wall": "割閃綠石磚垣",
|
||||
"block.create.cut_diorite_bricks": "割閃綠石磚",
|
||||
"block.create.cut_diorite_slab": "割閃綠石版",
|
||||
"block.create.cut_diorite_stairs": "割閃綠石階",
|
||||
"block.create.cut_diorite_wall": "割閃綠石垣",
|
||||
"block.create.cut_dripstone": "割鐘乳石",
|
||||
"block.create.cut_dripstone_brick_slab": "割鐘乳石磚版",
|
||||
"block.create.cut_dripstone_brick_stairs": "割鐘乳石磚階",
|
||||
"block.create.cut_dripstone_brick_wall": "割鐘乳石磚垣",
|
||||
"block.create.cut_dripstone_bricks": "割鐘乳石磚",
|
||||
"block.create.cut_dripstone_slab": "割鐘乳石版",
|
||||
"block.create.cut_dripstone_stairs": "割鐘乳石階",
|
||||
"block.create.cut_dripstone_wall": "割鐘乳石垣",
|
||||
"block.create.cut_granite": "割花崗巖",
|
||||
"block.create.cut_granite_brick_slab": "割花崗巖磚版",
|
||||
"block.create.cut_granite_brick_stairs": "割花崗巖磚階",
|
||||
"block.create.deployer": "機械手",
|
||||
"block.create.depot": "置物臺",
|
||||
"block.create.elevator_contact": "呼轎廂器",
|
||||
"block.create.elevator_pulley": "梯廂滑輪",
|
||||
"block.create.encased_fan": "風機",
|
||||
"block.create.flywheel": "飛輪",
|
||||
"block.create.hand_crank": "手搖把手",
|
||||
"block.create.haunted_bell": "靈魂鐘",
|
||||
"block.create.honey": "蜜",
|
||||
"block.create.hose_pulley": "軟管滑輪",
|
||||
"block.create.large_cogwheel": "大齒輪",
|
||||
"block.create.large_water_wheel": "大水車",
|
||||
"block.create.mechanical_saw": "機械鋸",
|
||||
"block.create.millstone": "石磨",
|
||||
"block.create.mysterious_cuckoo_clock": "布穀鳥鐘",
|
||||
"block.create.powered_latch": "閂鎖器",
|
||||
"block.create.rope_pulley": "繩索滑輪",
|
||||
"block.create.scoria": "熔渣",
|
||||
"block.create.shaft": "傳動杆",
|
||||
"block.create.smart_chute": "智慧式滑槽",
|
||||
"block.create.water_wheel": "水車",
|
||||
"block.create.water_wheel_structure": "大水車",
|
||||
"create.contraption.door_control": "此處廂門控制",
|
||||
"create.menu.ponder_index": "格物索引",
|
||||
"create.ponder.categories": "創藝之屬",
|
||||
"create.ponder.close": "畢",
|
||||
"create.ponder.cog_speedup.header": "變速以齒",
|
||||
"create.ponder.cog_speedup.text_1": "齒輪相接,可改其速",
|
||||
"create.ponder.cog_speedup.text_2": "以齒輪繼大齒輪之旋,其速倍之",
|
||||
"create.ponder.cog_speedup.text_3": "以大齒輪繼齒輪之旋,其速半之",
|
||||
"create.ponder.cogwheel.header": "以齒繼力",
|
||||
"create.ponder.cogwheel.text_1": "齒輪相接,齒牙交互者可傳其力",
|
||||
"create.ponder.cogwheel.text_2": "以此道相連之齒輪,其向相左",
|
||||
"create.ponder.cogwheel_casing.header": "套殼齒輪",
|
||||
"create.ponder.cogwheel_casing.text_1": "齒輪可以黃銅機殼及鈉碤機殼飾之",
|
||||
"create.ponder.cogwheel_casing.text_2": "有殼飾者莫能連于杆",
|
||||
"create.ponder.cogwheel_casing.text_3": "可以扳手加以調之",
|
||||
"create.ponder.creative_motor_mojang.header": "Mojang之秘術",
|
||||
"create.ponder.hold_to_ponder": "押 [%1$s] 以格物",
|
||||
"create.ponder.hose_pulley.header": "使軟管滑輪摧取或排放流體",
|
||||
"create.ponder.hose_pulley.text_1": "以軟管滑輪行流體摧取或充溢之事于開闊之地,其便利哉",
|
||||
"create.ponder.hose_pulley.text_2": "得以引動力,以調軟管之末之高低",
|
||||
"create.ponder.hose_pulley.text_3": "返轉其力之向,使以收而待之",
|
||||
"create.ponder.hose_pulley.text_4": "其側相对者,管道得通也",
|
||||
"create.ponder.identify": "示塊名",
|
||||
"create.ponder.identify_mode": "塊名已示\n押 [%1$s] 以继之",
|
||||
"create.ponder.index_title": "格物索引",
|
||||
"create.ponder.large_water_wheel.header": "以大水車供旋轉力",
|
||||
"create.ponder.large_water_wheel.text_1": "大水車隨流水之勢而轉,力之源也",
|
||||
"create.ponder.large_water_wheel.text_3": "其速恰族車之半……",
|
||||
"create.ponder.large_water_wheel.text_5": "執木材擊之,其化為同貌",
|
||||
"create.ponder.next": "下一回",
|
||||
"create.ponder.next_up": "次:",
|
||||
"create.ponder.pondering": "格物……",
|
||||
"create.ponder.previous": "上一回",
|
||||
"create.ponder.subject": "此回之要",
|
||||
"create.ponder.think_back": "迴想",
|
||||
"create.ponder.water_wheel.header": "假大水車之力",
|
||||
"create.ponder.welcome": "恭迎至格物界面",
|
||||
"create.recipe.assembly.cutting": "以鋸切之",
|
||||
"create.recipe.assembly.deploying_item": "以%1$s加之",
|
||||
"create.recipe.automatic_brewing": "釀",
|
||||
"create.recipe.automatic_packing": "壓縮",
|
||||
"create.recipe.automatic_shaped": "自製",
|
||||
"create.recipe.automatic_shapeless": "攪拌",
|
||||
"create.recipe.block_cutting": "割方",
|
||||
"create.recipe.crushing": "碾",
|
||||
"create.recipe.deploying": "用",
|
||||
"create.recipe.draining": "分液",
|
||||
"create.recipe.fan_blasting": "煉",
|
||||
"create.recipe.fan_blasting.fan": "風機置于熔巖后",
|
||||
"create.recipe.fan_haunting": "覆魂",
|
||||
"create.recipe.fan_smoking": "熏",
|
||||
"create.recipe.fan_smoking.fan": "風機置于焰后",
|
||||
"create.recipe.fan_washing": "滌",
|
||||
"create.recipe.fan_washing.fan": "風機置于水后",
|
||||
"create.recipe.mechanical_crafting": "製造",
|
||||
"create.recipe.milling": "磨",
|
||||
"create.recipe.mixing": "攪和",
|
||||
"create.recipe.mystery_conversion": "幻化",
|
||||
"create.recipe.packing": "壓塑",
|
||||
"create.recipe.pressing": "壓",
|
||||
"create.recipe.sandpaper_polishing": "打磨",
|
||||
"create.recipe.sawing": "切",
|
||||
"create.recipe.spout_filling": "注液",
|
||||
"create.recipe.wood_cutting": "切木",
|
||||
"create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s %3$s",
|
||||
"create.schedule.condition.time_of_day.digital_format": "%1$s:%3$s %4$s",
|
||||
"create.schedule.condition.time_of_day.rotation.every_24": "每日",
|
||||
"create.tooltip.capacityProvided.high": "大",
|
||||
"create.tooltip.capacityProvided.low": "小",
|
||||
"create.tooltip.capacityProvided.medium": "中",
|
||||
"item.create.andesite_alloy": "安山合金",
|
||||
"item.create.honeyed_apple": "蜜漬林檎",
|
||||
"item.create.wand_of_symmetry": "對稱杖",
|
||||
"item.create.wheat_flour": "麵粉",
|
||||
"item.create.whisk": "攪拌器",
|
||||
"item.create.wrench": "扳手",
|
||||
"item.create.zinc_ingot": "鋅錠",
|
||||
"item.create.zinc_nugget": "鋅粒",
|
||||
"itemGroup.create.base": "創藝",
|
||||
"itemGroup.create.palettes": "營造之方屬創藝"
|
||||
}
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
1
src/main/resources/assets/create/lang/vi_vn.json
Normal file
1
src/main/resources/assets/create/lang/vi_vn.json
Normal file
|
@ -0,0 +1 @@
|
|||
{}
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,19 +1,20 @@
|
|||
{
|
||||
"required": true,
|
||||
"minVersion": "0.8",
|
||||
"priority": 1100,
|
||||
"package": "com.simibubi.create.foundation.mixin",
|
||||
"compatibilityLevel": "JAVA_16",
|
||||
"compatibilityLevel": "JAVA_17",
|
||||
"refmap": "create.refmap.json",
|
||||
"mixins": [
|
||||
"ClientboundMapItemDataPacketMixin",
|
||||
"ContraptionDriverInteractMixin",
|
||||
"WaterWheelFluidSpreadMixin",
|
||||
"CustomItemUseEffectsMixin",
|
||||
"EntityMixin",
|
||||
"LavaSwimmingMixin",
|
||||
"MainMixin",
|
||||
"MapItemSavedDataMixin",
|
||||
"TestCommandMixin",
|
||||
"WaterWheelFluidSpreadMixin",
|
||||
"accessor.AbstractProjectileDispenseBehaviorAccessor",
|
||||
"accessor.DispenserBlockAccessor",
|
||||
"accessor.FallingBlockEntityAccessor",
|
||||
|
@ -40,6 +41,5 @@
|
|||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
},
|
||||
"minVersion": "0.8"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue