Merge branch 'mc1.18/dev' into mc1.18/0.5.1

This commit is contained in:
simibubi 2023-01-16 13:43:51 +01:00
commit 46c6856b6e
234 changed files with 34993 additions and 19441 deletions

View file

@ -49,6 +49,8 @@ body:
label: Mod Version
description: The version of the mod you were using when the bug occured
options:
- "0.5.0h"
- "0.5.0g"
- "0.5.0f"
- "0.5.0e"
- "0.5.0d"

46
.github/workflows/localization.yml vendored Normal file
View file

@ -0,0 +1,46 @@
# This workflow will run Crowdin Action that will upload new texts to Crowdin, download the newest translations and create a PR
# For more information see: https://github.com/crowdin/github-action
name: Crowdin Action
# Controls when the action will run.
on:
# Only run when started manually
workflow_dispatch:
inputs:
uploadTranslations:
description: "Set to true to upload (changed) translations to Crowdin"
type: boolean
required: true
default: false
#schedule:
#- cron: '0 */6 * * *' # Every 6 hours - https://crontab.guru/#0_*/6_*_*_*
jobs:
synchronize-with-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: crowdin action
uses: crowdin/github-action@1.4.9
with:
# Upload sources to Crowdin
upload_sources: true
# Upload translations to Crowdin, only use true at initial run
upload_translations: ${{ github.event.inputs.uploadTranslations }}
# Make pull request of Crowdin translations
download_translations: true
# To download translations to the specified version branch
localization_branch_name: l10n_crowdin_translations
# Create pull request after pushing to branch
create_pull_request: true
pull_request_title: 'New Crowdin translations'
pull_request_body: 'New Crowdin pull request with translations'
pull_request_base_branch_name: 'mc1.18/dev'
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View file

@ -144,7 +144,7 @@ dependencies {
jarJar.pin(it, project.registrate_version)
}
// Uncomment once Forge fixes mixins for included jars
//jarJar(group: 'com.jozufozu.flywheel', name: "flywheel-forge-${flywheel_minecraft_version}", version: '[0.6.4,0.6.5)') {
//jarJar(group: 'com.jozufozu.flywheel', name: "flywheel-forge-${flywheel_minecraft_version}", version: '[0.6.8,0.6.9)') {
// jarJar.pin(it, project.flywheel_version)
//}

39
crowdin.yml Normal file
View file

@ -0,0 +1,39 @@
"project_id_env": "CROWDIN_PROJECT_ID"
"api_token_env": "CROWDIN_PERSONAL_TOKEN"
"base_path": "."
"preserve_hierarchy": true
"files": [
{
"source": "src/generated/resources/assets/create/lang/en_us.json",
"translation": "src/main/resources/assets/create/lang/%locale_with_underscore%.json",
"languages_mapping": {
"locale_with_underscore": {
"cs": "cs_cz",
"da": "da_dk",
"de": "de_de",
"es-CL": "es_cl",
"es-ES": "es_es",
"es-MX": "es_mx",
"fr": "fr_fr",
"hu": "hu_hu",
"it": "it_it",
"ja": "ja_jp",
"ko": "ko_kr",
"nl": "nl_nl",
"no": "no_no",
"pl": "pl_pl",
"pt-BR": "pt_br",
"pt-PT": "pt_pt",
"ro": "ro_ro",
"ru": "ru_ru",
"sv-SE": "sv_se",
"th": "th_th",
"uk": "uk_ua",
"zh-CN": "zh_cn",
"zh-TW": "zh_tw",
}
}
}
]

View file

@ -16,12 +16,12 @@ mixingradle_version = 0.7-SNAPSHOT
mixin_version = 0.8.5
librarian_version = 1.+
cursegradle_version = 1.4.0
parchment_version = 2022.07.10
parchment_version = 2022.11.06
# dependency versions
registrate_version = MC1.18.2-1.1.3
flywheel_minecraft_version = 1.18.2
flywheel_version = 0.6.5-91
flywheel_version = 0.6.8.a-99
jei_minecraft_version = 1.18.2
jei_version = 9.7.0.209
curios_minecraft_version = 1.18.2

View file

@ -567,22 +567,29 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
3054a5519fbf91481b0c9c8160a20679fa9530da assets/create/lang/en_ud.json
c57c7f223e483ec45f7b94a33582f2bf66c4cf60 assets/create/lang/en_us.json
4080736502d1f2367ae70d9aae33ca0314db5bd9 assets/create/lang/unfinished/de_de.json
76227addfbcb0cb33c6851fdcc915b774493b801 assets/create/lang/unfinished/es_cl.json
2cce9e6ef650c78c594d62b96cd3f976dc2affec assets/create/lang/unfinished/es_es.json
ffd78f1c2269cfc95c9cddb81f98500451f1e249 assets/create/lang/unfinished/fr_fr.json
7da0e0a81888382ef09808dc26a0acc00981bfc5 assets/create/lang/unfinished/it_it.json
777e9fcbd341e8b7c1a76400f384a7892cebd84f assets/create/lang/unfinished/ja_jp.json
3efd5341a65b265b015caff7756c93a9e62e24b2 assets/create/lang/unfinished/ko_kr.json
d69eb7e9ada984144b84adcaa66bd58d34392f93 assets/create/lang/unfinished/nl_nl.json
ef1d3c48c5b29618c7c03b862cb414450f61b2b4 assets/create/lang/unfinished/pl_pl.json
fd304a1b08cb1a26a71bf14e03427f3ea347b851 assets/create/lang/unfinished/pt_br.json
02c1b9461cf73901e7c524970fb70bc27cbeb805 assets/create/lang/unfinished/pt_pt.json
5e55fe730dadb7c4cb5f8cac65dd2288c3fc8349 assets/create/lang/unfinished/ro_ro.json
ab0235e297d83f14990c9c11c9ea494cb725c082 assets/create/lang/unfinished/ru_ru.json
2dcd9d1659d59f399b44b2d0e0e7428e248cafca assets/create/lang/unfinished/uk_ua.json
1ec8b3397df54e2af39e3e52c1ffb7c0a11a3b8b assets/create/lang/unfinished/zh_cn.json
6b2ccb147e70ae407da8686b5b989991a11bd802 assets/create/lang/unfinished/zh_tw.json
a8a98ef3d6c5d586001f26b52be79074fbbf698b assets/create/lang/unfinished/cs_cz.json
12babbc5593d305389ef8251e29531fa8301c7dc assets/create/lang/unfinished/da_dk.json
6d3b2431c3499dc73220bb81a9e3e183964d5cc0 assets/create/lang/unfinished/de_de.json
aa0b7e416178db0cf2b9ac2ecead98e86a99a80a assets/create/lang/unfinished/es_cl.json
1b383a69d1f17ffad2548959375e901bb49744b6 assets/create/lang/unfinished/es_es.json
8800449d59b970abefa17a4f4880e18e69feb045 assets/create/lang/unfinished/es_mx.json
01b50942474c627bb2071c6585fd96296daa3547 assets/create/lang/unfinished/fr_fr.json
c993975f362688389c39d6213081b5408874236a assets/create/lang/unfinished/hu_hu.json
5066f4b4a13e8a5a03f2405859508ab7bfe6bdb5 assets/create/lang/unfinished/it_it.json
5293c84a5e3d19c51fb414092c13a955f7045f33 assets/create/lang/unfinished/ja_jp.json
1d0d011e4da491eef7f69be41dd92f194a8a2872 assets/create/lang/unfinished/ko_kr.json
fd10e7de1e60c3c6537781b67e215effb3d96964 assets/create/lang/unfinished/nl_nl.json
0b1cfb3738eecd97d28ad7eb8110a4f03ef5682b assets/create/lang/unfinished/no_no.json
dd9fb706e979d00a90f5f9a947541c5b4cebc024 assets/create/lang/unfinished/pl_pl.json
086802842bb63805d358b5ea9d70aeb9d490331f assets/create/lang/unfinished/pt_br.json
538445e2d4b6626136b25a1c04a0445b00a229c5 assets/create/lang/unfinished/pt_pt.json
01bc95d3f4844e642b8f4848f325e7d2f670bcbb assets/create/lang/unfinished/ro_ro.json
967f93516721dda8974359cc5fb088e6fa50d627 assets/create/lang/unfinished/ru_ru.json
321146806a1364b3ad4feac1592df680be230e42 assets/create/lang/unfinished/sv_se.json
aa3feff9a8b3314002939bef8793c3ae4ee07758 assets/create/lang/unfinished/th_th.json
af6ce2a42851ee2b16fc156d6f0198ddf9fa8f74 assets/create/lang/unfinished/uk_ua.json
35057efca9e51b76f0ce8292e52c87c830873d1d assets/create/lang/unfinished/zh_cn.json
1c56066b9d1094dcf43a307a432b830d916c4bab assets/create/lang/unfinished/zh_tw.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -5647,22 +5654,22 @@ d79c82bc6cf59b073b2f51f5fea9c98e81d14b68 data/create/recipes/weathered_copper_ti
452d480dd50b97fce72e0c89429cf68db534c6b2 data/create/recipes/weathered_copper_tile_slab_from_weathered_copper_tiles_stonecutting.json
ac265a674626e0e832330086fd18fe0be37fc327 data/create/recipes/weathered_copper_tile_stairs.json
5942a571f79c40524bbf408775cf91de4715f2b6 data/create/recipes/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json
2d549ea56fb226c0e31e66c0391996093f8bece9 data/create/tags/blocks/brittle.json
2a2700b43614f86d3294726595cb28ed7dca4387 data/create/tags/blocks/brittle.json
d99d5c67bdffff60789a19bd51a5c5267c75e0a4 data/create/tags/blocks/casing.json
bc203f09dd7f48965d146d0bd035fb904cb75e7d data/create/tags/blocks/copycat_allow.json
d4a3b66f4b763b9a2dcdea74b7273f0ae85cb335 data/create/tags/blocks/copycat_deny.json
443f75adbf3d2f6fb0aad4b344372669470065b8 data/create/tags/blocks/fan_transparent.json
2b4c93e5a752ebf54217594766f30d8d60cb4343 data/create/tags/blocks/fan_transparent.json
ee6d2b53d81f2bed492662b6c06f46c4f2b9ef9b data/create/tags/blocks/movable_empty_collider.json
6e5d3b2123fbb00e7f439c091623619502551bca data/create/tags/blocks/non_movable.json
10781e8cfcbb3486327aace3aa00e437fb44b331 data/create/tags/blocks/ore_override_stone.json
418c6da531d6206e3cbe4049dce3db23c4270bed data/create/tags/blocks/passive_boiler_heaters.json
3492722cffa53b96d7a91f8c04d792329d902c85 data/create/tags/blocks/safe_nbt.json
760adb521c2e475a6414f97291f46c02d294fa74 data/create/tags/blocks/passive_boiler_heaters.json
9751aa15c651a076024eb52fcffa8ce6aa7a405e data/create/tags/blocks/safe_nbt.json
6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/blocks/seats.json
d063e12c9ef75f39518c6d129ea35d833464d547 data/create/tags/blocks/toolboxes.json
8861f982c335a1f17796df4af53a7d5dc91fc85a data/create/tags/blocks/tree_attachments.json
9460e92c8e483446318b849abe7e6f52dcd4a269 data/create/tags/blocks/tree_attachments.json
50936b211d94167a35ec78c89954082a336b6269 data/create/tags/blocks/valve_handles.json
eac71740fb12bdb38b5dfaa2268613d7ba82b809 data/create/tags/blocks/windmill_sails.json
74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/blocks/windowable.json
c71f8ee0103d0c1b0d1b0727f1ecdc4d1999f1f6 data/create/tags/blocks/wrench_pickup.json
96671fd75d4209280940ef774c4185f33610a64d data/create/tags/blocks/wrench_pickup.json
a8bdc387cfa6296ebcc4af14323e2ddb632234dc data/create/tags/fluids/bottomless/allow.json
74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/fluids/bottomless/deny.json
74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/items/blaze_burner_fuel/regular.json
@ -5670,6 +5677,7 @@ a8bdc387cfa6296ebcc4af14323e2ddb632234dc data/create/tags/fluids/bottomless/allo
d99d5c67bdffff60789a19bd51a5c5267c75e0a4 data/create/tags/items/casing.json
c98ffdc2780c2a7690c590f46f014aeee7b0b504 data/create/tags/items/create_ingots.json
4480f211f4a37bfee193eba945bc9f5a8d2c6e34 data/create/tags/items/crushed_ores.json
49847bfbea11808b5101c972023a7f5833fe5a14 data/create/tags/items/deployable_drink.json
67385d5198d0796ec8f0d2c6ae144c672f4317a1 data/create/tags/items/modded_stripped_logs.json
27a1074a88a7b939c811341086afece325ed724c data/create/tags/items/modded_stripped_wood.json
8c8f6658ee72bdea2fcef77bade7bfa48de784c8 data/create/tags/items/pressurized_air_sources.json
@ -5709,7 +5717,6 @@ ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/blocks/storage_blocks/b
6b73c57912934d09233ad2966110968a6109f2c9 data/forge/tags/fluids/chocolate.json
391c9b2be5740aea943a8a5fe27eb327e2d973b0 data/forge/tags/fluids/honey.json
d6a4e4fe1204b718010543a28a9b9ec4e0977bd7 data/forge/tags/fluids/tea.json
d9ffc62a496946fc4848934e7c0a6e917337f8be data/forge/tags/items/beacon_payment.json
5af3164b14c92d2d6e235b5d4eebd93cbee37c0a data/forge/tags/items/buckets/honey.json
2f7cf5a2d485f25d451da9771ed466591cfa5204 data/forge/tags/items/dough.json
2f7cf5a2d485f25d451da9771ed466591cfa5204 data/forge/tags/items/dough/wheat.json
@ -5762,6 +5769,7 @@ d622e97373b1e96632ffb0a312ef04696da0ed4d data/minecraft/tags/blocks/trapdoors.js
0ec220675cbf8a6eeb47d42b7409395a0cb6ae6e data/minecraft/tags/blocks/walls.json
e16d74571ae10007f06f3b86ddf05d3ca9b73559 data/minecraft/tags/blocks/wooden_doors.json
09d26bcd0f94459f945219997277c4fbf14adeb7 data/minecraft/tags/fluids/water.json
d9ffc62a496946fc4848934e7c0a6e917337f8be data/minecraft/tags/items/beacon_payment_items.json
e16d74571ae10007f06f3b86ddf05d3ca9b73559 data/minecraft/tags/items/doors.json
49cadea86f6b63d5065b859a0d0e7ad772cf51d6 data/minecraft/tags/items/piglin_loved.json
49a043b38ca8d4e2fa8cba9ceee3b69715a8476e data/minecraft/tags/items/slabs.json

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1019",
"_": "Missing Localizations: 1059",
"_": "->------------------------] Game Elements [------------------------<-",
@ -49,7 +49,7 @@
"block.create.brown_valve_handle": "Válvula Marrón",
"block.create.calcite_pillar": "UNLOCALIZED: Calcite Pillar",
"block.create.cart_assembler": "Ensambladora de Vagonetas",
"block.create.chocolate": "Chocolate",
"block.create.chocolate": "UNLOCALIZED: Chocolate",
"block.create.chute": "Tolvogán",
"block.create.clockwork_bearing": "Rodamiento De Relojería",
"block.create.clutch": "Embrague",
@ -869,7 +869,7 @@
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.create.base": "Create",
"itemGroup.create.base": "UNLOCALIZED: Create",
"itemGroup.create.palettes": "Create Palettes",
"death.attack.create.crush": "%1$s fué procesado por Ruedas Trituradoras",
@ -951,7 +951,7 @@
"create.generic.delay": "Retraso",
"create.generic.duration": "UNLOCALIZED: Duration",
"create.generic.timeUnit": "UNLOCALIZED: Time Unit",
"create.generic.unit.ticks": "Ticks",
"create.generic.unit.ticks": "UNLOCALIZED: Ticks",
"create.generic.unit.seconds": "Segundos",
"create.generic.unit.minutes": "Minutos",
"create.generic.daytime.hour": "UNLOCALIZED: Hour",
@ -959,9 +959,9 @@
"create.generic.daytime.second": "UNLOCALIZED: Second",
"create.generic.daytime.pm": "UNLOCALIZED: pm",
"create.generic.daytime.am": "UNLOCALIZED: am",
"create.generic.unit.rpm": "RPM",
"create.generic.unit.rpm": "UNLOCALIZED: RPM",
"create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°",
"create.generic.unit.degrees": "UNLOCALIZED: °",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "En sentido del Reloj",
@ -999,12 +999,12 @@
"create.gui.symmetryWand.orientation": "Orientación",
"create.symmetry.mirror.plane": "Reflejar una vez",
"create.symmetry.mirror.doublePlane": "Rectangular",
"create.symmetry.mirror.triplePlane": "Octagonal",
"create.symmetry.mirror.doublePlane": "UNLOCALIZED: Rectangular",
"create.symmetry.mirror.triplePlane": "UNLOCALIZED: Octagonal",
"create.orientation.orthogonal": "Ortogonal",
"create.orientation.diagonal": "Diagonal",
"create.orientation.horizontal": "Horizontal",
"create.orientation.diagonal": "UNLOCALIZED: Diagonal",
"create.orientation.horizontal": "UNLOCALIZED: Horizontal",
"create.orientation.alongZ": "En el eje Z",
"create.orientation.alongX": "en el eje X",
@ -1033,7 +1033,7 @@
"create.gui.terrainzapper.tool.place": "Colocar",
"create.gui.terrainzapper.tool.replace": "Reemplazar",
"create.gui.terrainzapper.tool.clear": "Borrar",
"create.gui.terrainzapper.tool.overlay": "Overlay",
"create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay",
"create.gui.terrainzapper.tool.flatten": "Aplanar",
"create.terrainzapper.shiftRightClickToSet": "Shift-Click Derecho para Seleccionar una Forma",
@ -1156,24 +1156,24 @@
"create.schematic.tool.deploy.description.3": "[Ctrl]-Rueda para seleccionar distancia.",
"create.schematic.tool.move.description.0": "Desplaza el esquema horizontalmente.",
"create.schematic.tool.move.description.1": "Apunta al esquema y [CTRL]-Rueda para empujarlo.",
"create.schematic.tool.move.description.2": "",
"create.schematic.tool.move.description.3": "",
"create.schematic.tool.move.description.2": "UNLOCALIZED: ",
"create.schematic.tool.move.description.3": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.0": "Desplaza el esquema verticalmente.",
"create.schematic.tool.movey.description.1": "[CTRL]-Rueda para moverlo arriba y abajo.",
"create.schematic.tool.movey.description.2": "",
"create.schematic.tool.movey.description.3": "",
"create.schematic.tool.movey.description.2": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.3": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.0": "Rota el esquema sobre su centro.",
"create.schematic.tool.rotate.description.1": "[CTRL]-Rueda para rotarlo en 90 Grados.",
"create.schematic.tool.rotate.description.2": "",
"create.schematic.tool.rotate.description.3": "",
"create.schematic.tool.rotate.description.2": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.3": "UNLOCALIZED: ",
"create.schematic.tool.print.description.0": "Instantáneamente construye la estructura en el mundo.",
"create.schematic.tool.print.description.1": "[Click-Derecho] para confirmar la ubicación en la ubicación actual.",
"create.schematic.tool.print.description.2": "Solo en Creativo.",
"create.schematic.tool.print.description.3": "",
"create.schematic.tool.print.description.3": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.0": "Gira el esquema a lo largo de la cara que seleccionaste.",
"create.schematic.tool.flip.description.1": "Apunta al esquema y [CTRL]-Rueda para voltearlo.",
"create.schematic.tool.flip.description.2": "",
"create.schematic.tool.flip.description.3": "",
"create.schematic.tool.flip.description.2": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.3": "UNLOCALIZED: ",
"create.schematics.synchronizing": "Sincronizando...",
"create.schematics.uploadTooLarge": "Tu esquema excede las limitaciones especificadas por el servidor.",
@ -1328,8 +1328,8 @@
"create.tooltip.holdForDescription": "Mantén [%1$s] para Resumen",
"create.tooltip.holdForControls": "Mantén [%1$s] para Controles",
"create.tooltip.keyShift": "Shift",
"create.tooltip.keyCtrl": "Ctrl",
"create.tooltip.keyShift": "UNLOCALIZED: Shift",
"create.tooltip.keyCtrl": "UNLOCALIZED: Ctrl",
"create.tooltip.speedRequirement": "Requqrimiento de Velocidad: %1$s",
"create.tooltip.speedRequirement.none": "Ninguno",
"create.tooltip.speedRequirement.slow": "UNLOCALIZED: Slow",
@ -1361,13 +1361,13 @@
"create.logistics.when_multiple_outputs_available": "Cuando hay varias salidas disponibles",
"create.mechanical_arm.selection_mode.round_robin": "Round Robin",
"create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin",
"create.mechanical_arm.selection_mode.forced_round_robin": "Round Robin Forzado",
"create.mechanical_arm.selection_mode.prefer_first": "Preferir Primer Objetivo",
"create.tunnel.selection_mode.split": "Separar",
"create.tunnel.selection_mode.forced_split": "Separar Forzado",
"create.tunnel.selection_mode.round_robin": "Round Robin",
"create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin",
"create.tunnel.selection_mode.forced_round_robin": "Round Robin Forzado",
"create.tunnel.selection_mode.prefer_nearest": "Preferir el Más Cercano",
"create.tunnel.selection_mode.randomize": "Aleatorizar",
@ -1387,7 +1387,7 @@
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "Actualmente distribuyendo:",
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "Click-Derecho para recuperar",
"create.linked_controller.bind_mode": "Modo de vinculación activado",
@ -1762,13 +1762,13 @@
"create.gui.config.overlay7": "Ejecuta /create overlay reset",
"create.gui.config.overlay8": "para restablecer a la posición predeterminada",
"create.command.killTPSCommand": "killtps",
"create.command.killTPSCommand": "UNLOCALIZED: killtps",
"create.command.killTPSCommand.status.slowed_by.0": "[Create]: Los ticks del servidor están actualmente siendo ralentizados por %s ms :o",
"create.command.killTPSCommand.status.slowed_by.1": "[Create]: Los ticks del servidor se ralentizan por %s ms ahora >:)",
"create.command.killTPSCommand.status.slowed_by.2": "[Create]: Los ticks del servidor han vuelto a la velocidad normal :D",
"create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps stop para devolver a los ticks del servidor a la velocidad normal",
"create.command.killTPSCommand.status.usage.1": "[Create]: usa /killtps start <tickTime> para ralentizar artificialmente los ticks del servidor",
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime",
"create.contraption.minecart_contraption_too_big": "Esta contrapción de vagoneta parece demasiado grande para recogerla",
"create.contraption.minecart_contraption_illegal_pickup": "Una fuerza mística está vinculando esta contrapción de vagoneta al mundo",
@ -1827,13 +1827,13 @@
"_": "->------------------------] Item Descriptions [------------------------<-",
"item.create.example_item.tooltip": "SAMPLE 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.",
"item.create.example_item.tooltip.summary": "UNLOCALIZED: A brief description of the item. _Underscores_ highlight a term.",
"item.create.example_item.tooltip.condition1": "UNLOCALIZED: When this",
"item.create.example_item.tooltip.behaviour1": "UNLOCALIZED: Then this item does this. (behaviours show on shift)",
"item.create.example_item.tooltip.condition2": "UNLOCALIZED: And When this",
"item.create.example_item.tooltip.behaviour2": "UNLOCALIZED: You can add as many behaviours as you like",
"item.create.example_item.tooltip.control1": "UNLOCALIZED: When Ctrl pressed",
"item.create.example_item.tooltip.action1": "UNLOCALIZED: These controls are displayed.",
"block.create.wooden_bracket.tooltip": "SOPORTE DE MADERA",
"block.create.wooden_bracket.tooltip.summary": "_Decora_ tus _Ejes, Engranajes_ y _Tuberías_ con un acogedor refuerzo de madera.",
@ -2109,13 +2109,13 @@
"create.ponder.categories": "Categorías Disponibles en Create",
"create.ponder.index_description": "Haz clic en uno de los iconos para conocer sus elementos y bloques asociados",
"create.ponder.index_title": "Índice de Reflexión",
"create.ponder.shared.rpm16": "16 RPM",
"create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM",
"create.ponder.shared.behaviour_modify_wrench": "Este comportamiento se puede modificar con una llave inglesa",
"create.ponder.shared.storage_on_contraption": "Los inventarios adjuntos a la contrapción recogerán los objetos automáticamente",
"create.ponder.shared.sneak_and": "Agáchate +",
"create.ponder.shared.rpm8": "8 RPM",
"create.ponder.shared.ctrl_and": "Ctrl +",
"create.ponder.shared.rpm32": "32 RPM",
"create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM",
"create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM",
"create.ponder.shared.rpm16_source": "Fuente: 16 RPM",
"create.ponder.shared.movement_anchors": "Con la ayuda de Chasis o La Gotita, se pueden mover estructuras más grandes.",
"create.ponder.tag.redstone": "Componentes Lógicos",
@ -2277,7 +2277,7 @@
"create.ponder.chain_gearshift.text_3": "Cuando la Caja de Cambios no está en la fuente, su velocidad será la mitad",
"create.ponder.chain_gearshift.text_4": "En ambos casos, los Conductores en Cadena en la fila siempre irán al doble la velocidad de las Cajas de Cambios",
"create.ponder.chain_gearshift.text_5": "Usando señales análogas, la razón se puede ajustar más precisamente entre 1 y 2",
"create.ponder.chain_gearshift.text_6": "12 RPM",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "Transportando Objetos a través de Tolvoganes Verticales",
"create.ponder.chute.text_1": "Los tolvoganes pueden transportar artículos verticalmente desde y hacia los inventarios.",
@ -2292,8 +2292,8 @@
"create.ponder.clockwork_bearing.header": "Animando estructuras con Rodamientos de Relojería",
"create.ponder.clockwork_bearing.text_1": "Los Rodamientos de Relojería se adjuntan a los bloques en frente",
"create.ponder.clockwork_bearing.text_2": "Al recibir Fuerza Rotacional, la estructura será rotada acorde a la hora del día",
"create.ponder.clockwork_bearing.text_3": "3:00",
"create.ponder.clockwork_bearing.text_4": "4:00",
"create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00",
"create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00",
"create.ponder.clockwork_bearing.text_5": "Haz Click-Derecho en el rodamiento para comenzar o detener la estructura",
"create.ponder.clockwork_bearing.text_6": "En frente del horario, una segunda estructura se puede añadir",
"create.ponder.clockwork_bearing.text_7": "Asegúrate de que las dos estructuras no estén unidas la una a la otra con La Gotita o un similar",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 39",
"_": "Missing Localizations: 104",
"_": "->------------------------] Game Elements [------------------------<-",
@ -49,7 +49,7 @@
"block.create.brown_valve_handle": "Asa de válvula marrón",
"block.create.calcite_pillar": "Pilar de calcita",
"block.create.cart_assembler": "Ensamblador de vagonetas",
"block.create.chocolate": "Chocolate",
"block.create.chocolate": "UNLOCALIZED: Chocolate",
"block.create.chute": "Ducto",
"block.create.clockwork_bearing": "Rodamiento tipo reloj",
"block.create.clutch": "Embrague",
@ -777,7 +777,7 @@
"advancement.create.foods.desc": "Crea bayas glaseadas con chocolate, una manzana con miel y una ensaimada; todas por la misma boquilla",
"advancement.create.diving_suit_lava": "Nadando con los lavagantes",
"advancement.create.diving_suit_lava.desc": "Intenta bucear en lava con tu equipo de buceo§7\n(Logro oculto)",
"advancement.create.chained_drain": "On a Roll",
"advancement.create.chained_drain": "UNLOCALIZED: On a Roll",
"advancement.create.chained_drain.desc": "Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)",
"advancement.create.cross_streams": "Don't cross the Streams!",
"advancement.create.cross_streams.desc": "Mira cómo dos fluidos se encuentran en tu sistema de tuberías§7\n(Logro oculto)",
@ -805,7 +805,7 @@
"advancement.create.haunted_bell.desc": "Toca una campana maldita",
"advancement.create.clockwork_bearing": "Las artefacto en punto",
"advancement.create.clockwork_bearing.desc": "Ensamblar una estructura montada sobre un rodamiento tipo reloj.",
"advancement.create.display_link": "Big Data",
"advancement.create.display_link": "UNLOCALIZED: Big Data",
"advancement.create.display_link.desc": "Usa un enlace de pantalla para visualizar información",
"advancement.create.potato_cannon": "¡Fwoomp!",
"advancement.create.potato_cannon.desc": "Derrota a un enemigo con tu cañón de patatas.",
@ -813,7 +813,7 @@
"advancement.create.extendo_grip.desc": "Hazte con un agarre extentido.",
"advancement.create.linked_controller": "Activación remota",
"advancement.create.linked_controller.desc": "Activa un enlace de redstone usando un controlador enlazado",
"advancement.create.arm_blaze_burner": "Combust-o-Tron",
"advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron",
"advancement.create.arm_blaze_burner.desc": "Instruya un brazo mecánico para alimentar su quemador de blaze.",
"advancement.create.crusher_maxed_0000": "Triturándolo",
"advancement.create.crusher_maxed_0000.desc": "Usa un par de ruedas trituradoras a máxima velocidad",
@ -869,7 +869,7 @@
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.create.base": "Create",
"itemGroup.create.base": "UNLOCALIZED: Create",
"itemGroup.create.palettes": "Paletas",
"death.attack.create.crush": "%1$s se procesó en las ruedas de trituración",
@ -912,7 +912,7 @@
"create.recipe.mixing": "Mezclando",
"create.recipe.deploying": "Desplegando",
"create.recipe.automatic_shapeless": "Elaboración automatizada de productos sin forma",
"create.recipe.automatic_brewing": "Elaboración de cerveza automatizada",
"create.recipe.automatic_brewing": "Elaboración de pociones automatizada",
"create.recipe.packing": "Compactando",
"create.recipe.automatic_packing": "Embalaje automatizado",
"create.recipe.sawing": "Aserrando",
@ -936,7 +936,7 @@
"create.recipe.assembly.cutting": "Corte con sierra",
"create.recipe.assembly.repeat": "Repetir la secuencia %1$s veces",
"create.recipe.assembly.junk": "Basura aleatoria",
"create.recipe.processing.chance": "%1$s%% Chance",
"create.recipe.processing.chance": "UNLOCALIZED: %1$s%% Chance",
"create.recipe.deploying.not_consumed": "No consumido",
"create.recipe.heat_requirement.none": "No es necesario calentar",
"create.recipe.heat_requirement.heated": "Calentado",
@ -951,22 +951,22 @@
"create.generic.delay": "Retraso",
"create.generic.duration": "Duración",
"create.generic.timeUnit": "Unidad de tiempo",
"create.generic.unit.ticks": "Ticks",
"create.generic.unit.ticks": "UNLOCALIZED: Ticks",
"create.generic.unit.seconds": "Segundos",
"create.generic.unit.minutes": "Minutos",
"create.generic.daytime.hour": "Hora",
"create.generic.daytime.minute": "Minuto",
"create.generic.daytime.second": "Segundo",
"create.generic.daytime.pm": "pm",
"create.generic.daytime.am": "am",
"create.generic.unit.rpm": "RPM",
"create.generic.daytime.pm": "UNLOCALIZED: pm",
"create.generic.daytime.am": "UNLOCALIZED: am",
"create.generic.unit.rpm": "UNLOCALIZED: RPM",
"create.generic.unit.stress": "UE",
"create.generic.unit.degrees": "°",
"create.generic.unit.degrees": "UNLOCALIZED: °",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "C",
"create.generic.clockwise": "En el sentido de las agujas del reloj",
"create.generic.counter_clockwise": "En sentido contrario a las agujas del reloj",
"create.generic.in_quotes": "\"%1$s\"",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
"create.generic.pitch": "Tono: %1$s",
"create.generic.notes": "Fa#;Fa;Mi;Re#;Re;Do#;Do;Si;La#;La;Sol#;Sol",
@ -999,16 +999,16 @@
"create.gui.symmetryWand.orientation": "Orientación",
"create.symmetry.mirror.plane": "Plano de espejo",
"create.symmetry.mirror.doublePlane": "Rectangular",
"create.symmetry.mirror.doublePlane": "UNLOCALIZED: Rectangular",
"create.symmetry.mirror.triplePlane": "Octogonal",
"create.orientation.orthogonal": "Ortogonal",
"create.orientation.diagonal": "Diagonal",
"create.orientation.horizontal": "Horizontal",
"create.orientation.diagonal": "UNLOCALIZED: Diagonal",
"create.orientation.horizontal": "UNLOCALIZED: Horizontal",
"create.orientation.alongZ": "A lo largo de Z",
"create.orientation.alongX": "A lo largo de X",
"create.gui.terrainzapper.title": "Handheld Blockzapper",
"create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper",
"create.gui.terrainzapper.searchDiagonal": "Seguir diagonales",
"create.gui.terrainzapper.searchFuzzy": "Ignorar los bordes del material",
"create.gui.terrainzapper.patternSection": "Patrón",
@ -1066,8 +1066,8 @@
"create.logistics.filter": "Filtro",
"create.logistics.recipe_filter": "Filtro para recetas",
"create.logistics.fluid_filter": "Filtro para fluidos",
"create.logistics.firstFrequency": "Freq. #1",
"create.logistics.secondFrequency": "Freq. #2",
"create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1",
"create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2",
"create.logistics.filter.apply": "Filtro aplicado a %1$s.",
"create.logistics.filter.apply_click_again": "Filtro aplicado a %1$s, haga clic de nuevo para copiar la cantidad.",
"create.logistics.filter.apply_count": "Aplicado recuento de extracciones al filtro.",
@ -1156,24 +1156,24 @@
"create.schematic.tool.deploy.description.3": "[Ctrl] + [RUEDA DEL RATÓN] para cambiar la distancia.",
"create.schematic.tool.move.description.0": "Desplaza el esquema horizontalmente.",
"create.schematic.tool.move.description.1": "Apunta al esquema y [Ctrl] + [RUEDA DEL RATÓN] para ponerlo.",
"create.schematic.tool.move.description.2": "",
"create.schematic.tool.move.description.3": "",
"create.schematic.tool.move.description.2": "UNLOCALIZED: ",
"create.schematic.tool.move.description.3": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.0": "Desplaza el esquema verticalmente..",
"create.schematic.tool.movey.description.1": "[Ctrl] + [RUEDA DEL RATÓN] para moverlo hacia arriba/abajo.",
"create.schematic.tool.movey.description.2": "",
"create.schematic.tool.movey.description.3": "",
"create.schematic.tool.movey.description.2": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.3": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.0": "Gira el esquema alrededor de su centro.",
"create.schematic.tool.rotate.description.1": "[Ctrl] + [RUEDA DEL RATÓN] para girar 90 grados.",
"create.schematic.tool.rotate.description.2": "",
"create.schematic.tool.rotate.description.3": "",
"create.schematic.tool.rotate.description.2": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.3": "UNLOCALIZED: ",
"create.schematic.tool.print.description.0": "Sitúa instantáneamente la estructura en el mundo.",
"create.schematic.tool.print.description.1": "[Clic derecho] para confirmar la colocación en el lugar actual.",
"create.schematic.tool.print.description.2": "Esta herramienta es sólo para el Modo Creativo.",
"create.schematic.tool.print.description.3": "",
"create.schematic.tool.print.description.3": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.0": "Voltea el esquema a lo largo de la cara que seleccione.",
"create.schematic.tool.flip.description.1": "Apunta al esquema y [Ctrl] + [RUEDA DEL RATÓN] para voltearlo.",
"create.schematic.tool.flip.description.2": "",
"create.schematic.tool.flip.description.3": "",
"create.schematic.tool.flip.description.2": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.3": "UNLOCALIZED: ",
"create.schematics.synchronizing": "Sincronizando...",
"create.schematics.uploadTooLarge": "Tu esquema excede las limitaciones especificadas por el servidor.",
@ -1329,7 +1329,7 @@
"create.tooltip.holdForDescription": "Mantén [%1$s] para mas información",
"create.tooltip.holdForControls": "Mantén [%1$s] para ver los controles",
"create.tooltip.keyShift": "Mayús izdo.",
"create.tooltip.keyCtrl": "Ctrl",
"create.tooltip.keyCtrl": "UNLOCALIZED: Ctrl",
"create.tooltip.speedRequirement": "Requisitos de velocidad: %1$s",
"create.tooltip.speedRequirement.none": "Ninguno",
"create.tooltip.speedRequirement.slow": "Lento",
@ -1361,13 +1361,13 @@
"create.logistics.when_multiple_outputs_available": "Cuando hay múltiples salidas disponibles",
"create.mechanical_arm.selection_mode.round_robin": "Round Robin",
"create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin",
"create.mechanical_arm.selection_mode.forced_round_robin": "Round Robin forzado",
"create.mechanical_arm.selection_mode.prefer_first": "Preferir el primero",
"create.tunnel.selection_mode.split": "División",
"create.tunnel.selection_mode.forced_split": "División forzada",
"create.tunnel.selection_mode.round_robin": "Round Robin",
"create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin",
"create.tunnel.selection_mode.forced_round_robin": "Round Robin forzado",
"create.tunnel.selection_mode.prefer_nearest": "Preferir el más cercano",
"create.tunnel.selection_mode.randomize": "Aleatorizar",
@ -1387,7 +1387,7 @@
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "Actualmente distribuye:",
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "Haga clic derecho para recuperar",
"create.linked_controller.bind_mode": "Modo de enlace activo",
@ -1430,11 +1430,11 @@
"create.boiler.lvl": "Nivel %1$s",
"create.boiler.max_lvl": "Máximo",
"create.boiler.size": "Tamaño",
"create.boiler.size_dots": "....... ",
"create.boiler.size_dots": "UNLOCALIZED: ....... ",
"create.boiler.water": "Agua",
"create.boiler.water_dots": "... ",
"create.boiler.water_dots": "UNLOCALIZED: ... ",
"create.boiler.heat": "Calor",
"create.boiler.heat_dots": "...... ",
"create.boiler.heat_dots": "UNLOCALIZED: ...... ",
"create.boiler.via_one_engine": "a través de 1 motor",
"create.boiler.via_engines": "a través de %1$s motores",
@ -1459,7 +1459,7 @@
"create.schedule.instruction.filter_edit_box": "Nombre de la estación",
"create.schedule.instruction.filter_edit_box_1": "Usa * como una letra o cifra comodín",
"create.schedule.instruction.filter_edit_box_2": "Ejemplo: 'Mi estación, Andén *'",
"create.schedule.instruction.filter_edit_box_3": "Train picks nearest unoccupied match",
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
"create.schedule.instruction.rename": "Renombrar título de la programación",
"create.schedule.instruction.rename.summary": "Nuevo título:",
"create.schedule.instruction.name_edit_box": "Título de la programación",
@ -1484,7 +1484,7 @@
"create.schedule.condition.powered.status": "Esperando a la redstone",
"create.schedule.condition.time_of_day": "Hora del día",
"create.schedule.condition.time_of_day.scheduled": "Tiempo programado: %1$s",
"create.schedule.condition.time_of_day.digital_format": "%1$s:%3$s %4$s",
"create.schedule.condition.time_of_day.digital_format": "UNLOCALIZED: %1$s:%3$s %4$s",
"create.schedule.condition.time_of_day.rotation": "Rotación",
"create.schedule.condition.time_of_day.rotation.every_24": "Cada día",
"create.schedule.condition.time_of_day.rotation.every_12": "Cada 12:00",
@ -1637,7 +1637,7 @@
"create.train.status.missing_driver": "El conductor ha desaparecido",
"create.train.status.found_driver": "Se ha encontrado un nuevo conductor",
"create.train.status.navigation_success": "Navegación exitosa",
"create.train.status.no_match": "No station on graph matches '%1$s'",
"create.train.status.no_match": "UNLOCALIZED: No station on graph matches '%1$s'",
"create.train.status.no_path": "No se ha encontrado ninguna trayectoria para ir a la siguiente parada programada",
"create.track_signal.cannot_change_mode": "No se puede cambiar el modo de esta señal",
@ -1659,33 +1659,33 @@
"create.display_link.too_far": "La posición objetivo está demasiado lejos de aquí",
"create.display_link.invalid": "El enlace no tiene un objetivo válido, prueba colocándolo de nuevo",
"create.display_link.title": "Enlace de pantalla",
"create.display_link.no_source": "Not a Display Source",
"create.display_link.no_target": "Not a Display Target",
"create.display_link.no_source": "UNLOCALIZED: Not a Display Source",
"create.display_link.no_target": "UNLOCALIZED: Not a Display Target",
"create.display_link.reading_from": "Leer de:",
"create.display_link.writing_to": "Enviar a:",
"create.display_link.attached_side": "Block on attached side",
"create.display_link.targeted_location": "Block in targeted location",
"create.display_link.attached_side": "UNLOCALIZED: Block on attached side",
"create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location",
"create.display_link.view_compatible": "Haz clic para ver todos los compatibles",
"create.display_link.information_type": "Tipo de información",
"create.display_link.display_on": "Escribir datos en:",
"create.display_link.display_on_multiline": "Empezar escribiendo en:",
"create.display_source.label": "Attached Label",
"create.display_source.label": "UNLOCALIZED: Attached Label",
"create.display_source.combine_item_names": "Combinar nombres de objetos",
"create.display_source.count_items": "Cantidad de objetos equivalentes",
"create.display_source.list_items": "Lista de objetos equivalentes",
"create.display_source.fluid_amount": "Cantidad de fluidos equivalentes",
"create.display_source.list_fluids": "Lista de fluidos equivalentes",
"create.display_source.nixie_tube": "Copiar tubos nixie",
"create.display_source.fill_level": "Container Fill Level",
"create.display_source.fill_level": "UNLOCALIZED: Container Fill Level",
"create.display_source.fill_level.display": "Formato de visualización",
"create.display_source.fill_level.percent": "Porcentaje",
"create.display_source.fill_level.progress_bar": "Barra de progreso",
"create.display_source.value_list.display": "Valor de visualización",
"create.display_source.value_list.shortened": "Acortado",
"create.display_source.value_list.full_number": "Full Number",
"create.display_source.value_list.thousand": "k",
"create.display_source.value_list.million": "m",
"create.display_source.value_list.full_number": "UNLOCALIZED: Full Number",
"create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.display_source.value_list.million": "UNLOCALIZED: m",
"create.display_source.player_deaths": "Muertes del jugador",
"create.display_source.scoreboard": "Marcador",
"create.display_source.scoreboard.objective": "ID objetivo",
@ -1705,11 +1705,11 @@
"create.display_source.train_status": "Estado de la programación del tren",
"create.display_source.station_summary": "Resumen de la estación de tren",
"create.display_source.station_summary.filter": "Filtro de nombre de estación",
"create.display_source.station_summary.train_name_column": "Train column size",
"create.display_source.station_summary.platform_column": "Platform column size",
"create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size",
"create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size",
"create.display_source.station_summary.now": "ahora",
"create.display_source.station_summary.minutes": " min",
"create.display_source.station_summary.seconds": "%1$ss",
"create.display_source.station_summary.minutes": "UNLOCALIZED: min",
"create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss",
"create.display_source.observed_train_name": "Nombre del tren detectado",
"create.display_source.max_enchant_level": "Coste máximo de encantamiento",
"create.display_source.boiler_status": "Estado de la caldera",
@ -1725,7 +1725,7 @@
"create.display_source.kinetic_stress.current": "Estrés en UE",
"create.display_source.kinetic_stress.max": "Capacidad total",
"create.display_source.kinetic_stress.remaining": "UE restantes",
"create.display_source.redstone_power": "Redstone Power",
"create.display_source.redstone_power": "UNLOCALIZED: Redstone Power",
"create.display_source.redstone_power.display": "Formato de visualización",
"create.display_source.redstone_power.number": "Número",
"create.display_source.redstone_power.progress_bar": "Barra de progreso",
@ -1737,12 +1737,12 @@
"create.display_target.single_line": "Fila única",
"create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;Ñ;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": " ; min;ahora;15s;30s;45s",
"create.flap_display.cycles.shortened_numbers": " ;K;M",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "mC;C ",
"create.flap_display.cycles.instant": " ; ",
"create.flap_display.cycles.pixel": "█;▓;▒",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "El área seleccionada es demasiado grande",
"create.super_glue.cannot_reach": "Los bloques seleccionados deben de estar conectados",
@ -1762,13 +1762,13 @@
"create.gui.config.overlay7": "Ejecute /create overlay reset",
"create.gui.config.overlay8": "para restablecer la posición por defecto",
"create.command.killTPSCommand": "killtps",
"create.command.killTPSCommand": "UNLOCALIZED: killtps",
"create.command.killTPSCommand.status.slowed_by.0": "[Create]: El tick del servidor está actualmente ralentizado en %s ms :o",
"create.command.killTPSCommand.status.slowed_by.1": "[Create]: El tick del servidor está ralentizado en %s ms ahora >:)",
"create.command.killTPSCommand.status.slowed_by.2": "[Create]: El tick del servidor ha vuelto a su velocidad normal :D",
"create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps stop para que el servidor vuelva a la velocidad normal",
"create.command.killTPSCommand.status.usage.1": "[Create]: usa /killtps start <tickTime> para ralentizar artificialmente el tick del servidor",
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime",
"create.contraption.minecart_contraption_too_big": "Este artefacto móvil de vagoneta parece demasiado grande para recogerlo",
"create.contraption.minecart_contraption_illegal_pickup": "Una fuerza mística está atando este artefacto móvil de vagoneta al mundo",
@ -2109,13 +2109,13 @@
"create.ponder.categories": "Categorías disponibles",
"create.ponder.index_description": "Haga clic en uno de los iconos para conocer sus objetos y bloques asociados",
"create.ponder.index_title": "Índice",
"create.ponder.shared.rpm16": "16 RPM",
"create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM",
"create.ponder.shared.behaviour_modify_wrench": "Este comportamiento puede modificarse mediante una llave inglesa",
"create.ponder.shared.storage_on_contraption": "Los inventarios unidos a un artefacto animado recogerán sus producciones automáticamente",
"create.ponder.shared.sneak_and": "Mayús izdo. +",
"create.ponder.shared.rpm8": "8 RPM",
"create.ponder.shared.ctrl_and": "Ctrl +",
"create.ponder.shared.rpm32": "32 RPM",
"create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM",
"create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM",
"create.ponder.shared.rpm16_source": "Fuente: 16 RPM",
"create.ponder.shared.movement_anchors": "Con la ayuda de un chasis o pegamento, se pueden mover estructuras más grandes.",
"create.ponder.tag.redstone": "Componentes lógicos",
@ -2277,7 +2277,7 @@
"create.ponder.chain_gearshift.text_3": "Siempre que la cadena de transmisión alimentada no esté en el origen, su velocidad se reducirá a la mitad",
"create.ponder.chain_gearshift.text_4": "En ambos casos, las cadenas de transmisión de la fila siempre funcionan al doble de la velocidad de la cadena de transmisión alimentada",
"create.ponder.chain_gearshift.text_5": "Utilizando señales analógicas, la relación puede ajustarse con mayor precisión, entre 1 y 2",
"create.ponder.chain_gearshift.text_6": "12 RPM",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "Transportar objetos hacia abajo a través de ductos",
"create.ponder.chute.text_1": "Los ductos pueden transportar objetos verticalmente desde y hacia los inventarios",
@ -2292,8 +2292,8 @@
"create.ponder.clockwork_bearing.header": "Animar estructuras con rodamientos tipo reloj",
"create.ponder.clockwork_bearing.text_1": "Los rodamientos tipo reloj se fijan a los bloques que tienen delante",
"create.ponder.clockwork_bearing.text_2": "Al recibir fuerza rotacional, la estructura girará según la hora del día",
"create.ponder.clockwork_bearing.text_3": "3:00",
"create.ponder.clockwork_bearing.text_4": "4:00",
"create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00",
"create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00",
"create.ponder.clockwork_bearing.text_5": "Haz clic derecho en el rodamiento para iniciar o detener la animación de la estructura",
"create.ponder.clockwork_bearing.text_6": "Delante de la manecilla de las horas se puede añadir una segunda estructura",
"create.ponder.clockwork_bearing.text_7": "Asegúrese de que las dos estructuras no están unidas entre sí con pegamento o algo similar",
@ -2996,7 +2996,7 @@
"create.ponder.train_signal_signaling.text_2": "Si un segmento está ocupado, no se le permitirá el paso a ningún otro tren",
"create.ponder.train_signal_signaling.text_3": "Por lo tanto, cada segmento solo puede albergar un tren",
"create.ponder.train_signal_signaling.text_4": "Un segundo modo de señalización está disponible usando la llave inglesa",
"create.ponder.train_signal_signaling.text_5": "Segments of a brass signal usually lead into standard signals",
"create.ponder.train_signal_signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals",
"create.ponder.train_signal_signaling.text_6": "Esta señal especial puede hacer que se paren trenes bajo una segunda condición",
"create.ponder.train_signal_signaling.text_7": "Parará a trenes, los cuales cuando entren...",
"create.ponder.train_signal_signaling.text_8": "...no serán capaces de abandonar ese segmento inmediatamente",

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 33",
"_": "Missing Localizations: 40",
"_": "->------------------------] Game Elements [------------------------<-",
@ -659,7 +659,7 @@
"item.create.sand_paper": "Carta vetrata",
"item.create.schedule": "Tabella di marcia",
"item.create.schematic": "Progetto",
"item.create.schematic_and_quill": "Pogetto e penna",
"item.create.schematic_and_quill": "Progetto e penna",
"item.create.shadow_steel": "Acciaio oscuro",
"item.create.sturdy_sheet": "Lamiera rinforzata",
"item.create.super_glue": "Super colla",
@ -968,7 +968,7 @@
"create.generic.counter_clockwise": "Senso anti-orario",
"create.generic.in_quotes": "\"%1$s\"",
"create.generic.pitch": "Intonazione: %1$s",
"create.generic.notes": "F#;F;E;D#;D;C#;C;B;A#;A;G#;G",
"create.generic.notes": "Fa#;Fa;Mi;Re#;Re;Do#;Do;Si;La#;La;Sol#;Sol",
"create.action.scroll": "Scorri",
"create.action.confirm": "Conferma",
@ -1156,24 +1156,24 @@
"create.schematic.tool.deploy.description.3": "[Ctrl] e scorri per cambiare la distanza.",
"create.schematic.tool.move.description.0": "Sposta il progetto in orizzontale.",
"create.schematic.tool.move.description.1": "Indica il progetto e premi [Ctrl] mentre scorri per spingerlo.",
"create.schematic.tool.move.description.2": "",
"create.schematic.tool.move.description.3": "",
"create.schematic.tool.move.description.2": "UNLOCALIZED: ",
"create.schematic.tool.move.description.3": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.0": "Sposta il progetto verticalmente.",
"create.schematic.tool.movey.description.1": "[Ctrl] e scorri per spostarlo su/giù.",
"create.schematic.tool.movey.description.2": "",
"create.schematic.tool.movey.description.3": "",
"create.schematic.tool.movey.description.2": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.3": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.0": "Ruota il progetto attorno al suo centro.",
"create.schematic.tool.rotate.description.1": "[Ctrl] e scorri per ruotarlo di 90 gradi.",
"create.schematic.tool.rotate.description.2": "",
"create.schematic.tool.rotate.description.3": "",
"create.schematic.tool.rotate.description.2": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.3": "UNLOCALIZED: ",
"create.schematic.tool.print.description.0": "Posiziona istantaneamente la struttura nel mondo.",
"create.schematic.tool.print.description.1": "Click destro per confermare la posizione corrente.",
"create.schematic.tool.print.description.2": "Questo strumento è solo per la modalità creativa.",
"create.schematic.tool.print.description.3": "",
"create.schematic.tool.print.description.3": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.0": "Capovolge il progetto lungo la faccia selezionata.",
"create.schematic.tool.flip.description.1": "Indica il progetto e premi [Ctrl] mentre scorri per capovolgerla.",
"create.schematic.tool.flip.description.2": "",
"create.schematic.tool.flip.description.3": "",
"create.schematic.tool.flip.description.2": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.3": "UNLOCALIZED: ",
"create.schematics.synchronizing": "Sincronizzazione...",
"create.schematics.uploadTooLarge": "Il progetto è troppo grande.",
@ -1328,7 +1328,7 @@
"create.tooltip.holdForDescription": "Tieni premuto [%1$s] per un riepilogo",
"create.tooltip.holdForControls": "Tieni premuto [%1$s] per i comandi",
"create.tooltip.keyShift": "Shift",
"create.tooltip.keyShift": "Maiusc",
"create.tooltip.keyCtrl": "Ctrl",
"create.tooltip.speedRequirement": "Velocità richiesta: %1$s",
"create.tooltip.speedRequirement.none": "Nessuna",
@ -1503,7 +1503,7 @@
"create.schedule.condition.threshold.equal": "esattamente",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s di %3$s",
"create.schedule.condition.threshold.matching_content": "Contenuto corrispondente",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.anything": "qualsiasi cosa",
"create.schedule.condition.threshold.item_measure": "Misura",
"create.schedule.condition.threshold.items": "Oggetti",
"create.schedule.condition.threshold.stacks": "Stack",
@ -1511,7 +1511,7 @@
"create.schedule.condition.threshold.status": "Carico: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Oggetto di riferimento",
"create.schedule.condition.threshold.place_item_2": "È permesso usare Filtri",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.threshold.place_item_3": "Lascia vuoto per confrontare qualsiasi cosa",
"create.schedule.condition.fluid_threshold": "Carico di fluidi",
"create.schedule.condition.item_threshold": "Carico di oggetti",
"create.schedule.condition.redstone_link": "Connessione redstone",
@ -2008,12 +2008,12 @@
"item.create.refined_radiance.tooltip": "SPLENDORE RAFFINATO",
"item.create.refined_radiance.tooltip.summary": "Un materiale cromatico forgiato dalla _luce_ _assorbita_.",
"item.create.refined_radiance.tooltip.condition1": "Work In Progress",
"item.create.refined_radiance.tooltip.condition1": "Lavori in corso",
"item.create.refined_radiance.tooltip.behaviour1": "Saranno implementati utilizzi per questo materiale in versioni future.",
"item.create.shadow_steel.tooltip": "ACCIAIO OSCURO",
"item.create.shadow_steel.tooltip.summary": "Un materiale cromatico forgiato _nel_ _vuoto_.",
"item.create.shadow_steel.tooltip.condition1": "Work In Progress",
"item.create.shadow_steel.tooltip.condition1": "Lavori in corso",
"item.create.shadow_steel.tooltip.behaviour1": "Saranno implementati utilizzi per questo materiale in versioni future.",
"item.create.linked_controller.tooltip": "PULSANTIERA DI COMANDO",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 35",
"_": "Missing Localizations: 69",
"_": "->------------------------] Game Elements [------------------------<-",
@ -397,7 +397,7 @@
"block.create.polished_cut_veridium_stairs": "磨かれた翡翠岩の切石の階段",
"block.create.polished_cut_veridium_wall": "磨かれた翡翠岩の切石の塀",
"block.create.portable_fluid_interface": "ポータブル液体インターフェース",
"block.create.portable_storage_interface": "ポータブルストレジインターフェース",
"block.create.portable_storage_interface": "ポータブルストジインターフェース",
"block.create.powered_latch": "パワードラッチ",
"block.create.powered_shaft": "パワードシャフト",
"block.create.powered_toggle_latch": "パワードトグルラッチ",
@ -499,8 +499,8 @@
"block.create.smart_fluid_pipe": "スマート液体パイプ",
"block.create.speedometer": "速度メーター",
"block.create.spout": "アイテム注液口",
"block.create.spruce_window": "マツの窓",
"block.create.spruce_window_pane": "マツの板窓",
"block.create.spruce_window": "トウヒの窓",
"block.create.spruce_window_pane": "トウヒの板窓",
"block.create.steam_engine": "蒸気エンジン",
"block.create.steam_whistle": "汽笛",
"block.create.steam_whistle_extension": "延長汽笛",
@ -595,7 +595,7 @@
"item.create.brass_hand": "真鍮の手",
"item.create.brass_ingot": "真鍮インゴット",
"item.create.brass_nugget": "真鍮塊",
"item.create.brass_sheet": "真鍮シート",
"item.create.brass_sheet": "真鍮",
"item.create.builders_tea": "建築家のお茶",
"item.create.chest_minecart_contraption": "チェスト付きからくりトロッコ",
"item.create.chocolate_bucket": "チョコレート入りバケツ",
@ -682,7 +682,7 @@
"advancement.create.andesite_alloy": "頑丈な岩",
"advancement.create.andesite_alloy.desc": "Createで最も重要な素材、安山岩合金を手に入れる。",
"advancement.create.andesite_casing": "安山岩の時代",
"advancement.create.andesite_casing.desc": "安山岩合金をに使って、基本の機械のケーシングを作る",
"advancement.create.andesite_casing.desc": "安山岩合金を樹皮を剥いだ原木に使って、基本の機械のケーシングを作る",
"advancement.create.mechanical_press": "ドン!",
"advancement.create.mechanical_press.desc": "メカニカルプレスで板を作る",
"advancement.create.encased_fan": "風のタクト",
@ -692,7 +692,7 @@
"advancement.create.saw_processing": "工房で最も恐ろしい",
"advancement.create.saw_processing.desc": "メカニカルソーを上向きに置いて素材を加工する",
"advancement.create.compacting": "小型化",
"advancement.create.compacting.desc": "プレスと鉢でより少ないアイテムからよりたくさんのアイテムを作る",
"advancement.create.compacting.desc": "メカニカルプレスと鉢でより少ないアイテムからよりたくさんのアイテムを作る",
"advancement.create.belt": "ベルトコンブア",
"advancement.create.belt.desc": "2つのシャフトをメカニカルベルトで繋ぐ",
"advancement.create.funnel": "空港の美学",
@ -717,10 +717,10 @@
"advancement.create.contraption_actors.desc": "ドリルか、ソー、ハーベスターのいずれかがついたからくりを作る",
"advancement.create.portable_storage_interface": "ドライブスルー",
"advancement.create.portable_storage_interface.desc": "ポータブルストレージインターフェースでからくりからアイテムを搬出入する",
"advancement.create.wrench_goggles": "装備支給",
"advancement.create.wrench_goggles": "装備一式",
"advancement.create.wrench_goggles.desc": "エンジニアのゴーグルとレンチを装備する",
"advancement.create.stressometer": "必要な応力は?",
"advancement.create.stressometer.desc": "動作中の応力メーターをゴーグルを通して見て、正確な値を読み取る",
"advancement.create.stressometer.desc": "エンジニアのゴーグルを通して、動作中の応力メーターから正確な値を読み取る",
"advancement.create.cuckoo_clock": "今何時?",
"advancement.create.cuckoo_clock.desc": "鳩時計が就寝の時間を告げるのを目撃する",
"advancement.create.windmill_maxed": "雄風",
@ -732,7 +732,7 @@
"advancement.create.cart_pickup": "力ずく",
"advancement.create.cart_pickup.desc": "200ブロック以上が取り付けられたからくりトロッコを回収する",
"advancement.create.anvil_plough": "鍛冶屋の大砲",
"advancement.create.anvil_plough.desc": "メカニカルプラウで金床を打ち上げる",
"advancement.create.anvil_plough.desc": "メカニカルプラウで金床を打ち出す",
"advancement.create.lava_wheel_00000": "マグマ車",
"advancement.create.lava_wheel_00000.desc": "こんなの動くべきじゃない§7\n(隠し進捗)",
"advancement.create.hand_crank_000": "トレーニングの時間",
@ -742,9 +742,9 @@
"advancement.create.stressometer_maxed": "無駄のない動き",
"advancement.create.stressometer_maxed.desc": "応力メーターがちょうど100%を指すのを読み取る§7\n(隠し進捗)",
"advancement.create.copper": "もっと頑丈な岩",
"advancement.create.copper.desc": "液体を取り扱うために、銅を貯めておく",
"advancement.create.copper.desc": "液体を取り扱うために、銅のインゴットを貯めておく",
"advancement.create.copper_casing": "銅の時代",
"advancement.create.copper_casing.desc": "銅のインゴットをに使って防水の機械のケーシングを作る",
"advancement.create.copper_casing.desc": "銅のインゴットを樹皮を剥いだ原木に使って防水の機械のケーシングを作る",
"advancement.create.spout": "ぱしゃぱしゃ",
"advancement.create.spout.desc": "アイテム注液口が液体を充填している様子を見る",
"advancement.create.drain": "回転式排液機",
@ -755,14 +755,14 @@
"advancement.create.steam_whistle.desc": "汽笛を稼働させる",
"advancement.create.backtank": "圧力、お持ち帰りで!",
"advancement.create.backtank.desc": "銅のバックタンクを作り、圧縮空気を溜める",
"advancement.create.diving_suit": "深海に潜る準備",
"advancement.create.diving_suit": "深海に出発だ!",
"advancement.create.diving_suit.desc": "銅のバックタンクと潜水ヘルメットを装備し、水に飛び込む",
"advancement.create.mechanical_pump_0": "圧をかける",
"advancement.create.mechanical_pump_0.desc": "メカニカルポンプを設置して、稼働させる",
"advancement.create.glass_pipe": "フロウ・スパイ",
"advancement.create.glass_pipe.desc": "液体が入ったパイプにレンチを使う",
"advancement.create.glass_pipe.desc": "液体が入ったプにレンチを使う",
"advancement.create.water_supply": "水たまり収集機",
"advancement.create.water_supply.desc": "パイプまたはポンプの端から、水を吸い込む",
"advancement.create.water_supply.desc": "液体パイプかメカニカルポンプの端から、水を吸い込む",
"advancement.create.hose_pulley": "工業排水",
"advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る",
"advancement.create.chocolate_bucket": "空想世界",
@ -776,7 +776,7 @@
"advancement.create.foods": "バランスのとれたおやつ",
"advancement.create.foods.desc": "チョコレートベリー、リンゴのハチミツかけ、スイートロールを全て同じ注液口で作る",
"advancement.create.diving_suit_lava": "ストライダーと泳ごう",
"advancement.create.diving_suit_lava.desc": "銅の潜水具と共にマグマダイブしてみる§7\n(隠し進捗)",
"advancement.create.diving_suit_lava.desc": "潜水具を着てマグマダイブしてみる§7\n(隠し進捗)",
"advancement.create.chained_drain": "うまく回ってます",
"advancement.create.chained_drain.desc": "並んだアイテム排液口の上をアイテムが通るのを見る§7\n(隠し進捗)",
"advancement.create.cross_streams": "液体を交差させるな!",
@ -784,9 +784,9 @@
"advancement.create.pipe_organ": "パイプオルガン",
"advancement.create.pipe_organ.desc": "音程の違う12個の汽笛を1つの液体タンクに設置する§7\n(隠し進捗)",
"advancement.create.brass": "本物の合金",
"advancement.create.brass.desc": "銅と亜鉛のインゴットをブレイズ付きミキサーを使って真鍮を作る",
"advancement.create.brass.desc": "ブレイズで加熱したメカニカルミキサーで銅と亜鉛のインゴットを合金にして真鍮を作る",
"advancement.create.brass_casing": "真鍮の時代",
"advancement.create.brass_casing.desc": "真鍮のインゴットをに使って、高度な機械のケーシングを作る。",
"advancement.create.brass_casing.desc": "真鍮のインゴットを樹皮を剥いだ原木に使って、高度な機械のケーシングを作る。",
"advancement.create.rose_quartz": "ピンク色のダイヤモンド",
"advancement.create.rose_quartz.desc": "ローズクォーツを磨く",
"advancement.create.deployer": "人工知能",
@ -816,7 +816,7 @@
"advancement.create.arm_blaze_burner": "燃料補給マシーン",
"advancement.create.arm_blaze_burner.desc": "メカニカルアームにブレイズバーナーの燃料補給をさせる",
"advancement.create.crusher_maxed_0000": "破砕の勢い",
"advancement.create.crusher_maxed_0000.desc": "破砕ホイールを最速度で稼働させる",
"advancement.create.crusher_maxed_0000.desc": "破砕ホイールを最速度で稼働させる",
"advancement.create.arm_many_targets": "整理整頓マシーン",
"advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、搬出先を設定する",
"advancement.create.potato_cannon_collide": "野菜花火",
@ -828,7 +828,7 @@
"advancement.create.crafter_lazy_000": "苦肉の策",
"advancement.create.crafter_lazy_000.desc": "メカニカルクラフターを極端に遅く稼働させ、インフラ整備を先延ばしにする§7\n(隠し進捗)",
"advancement.create.extendo_grip_dual": "脱法リーチ",
"advancement.create.extendo_grip_dual.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる§7\n(隠し進捗)",
"advancement.create.extendo_grip_dual.desc": "マジックハンドの二刀流で超人的なリーチを手に入れる§7\n(隠し進捗)",
"advancement.create.musical_arm": "DJ メカニコ",
"advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る§7\n(隠し進捗)",
"advancement.create.sturdy_sheet": "もっとも頑丈な岩",
@ -838,7 +838,7 @@
"advancement.create.train": "出発進行!",
"advancement.create.train.desc": "最初の列車を作る",
"advancement.create.conductor": "人材育成",
"advancement.create.conductor.desc": "時刻表で運転手に指示する",
"advancement.create.conductor.desc": "鉄道時刻表で運転手に指示する",
"advancement.create.track_signal": "運行管理",
"advancement.create.track_signal.desc": "鉄道信号機を設置する",
"advancement.create.display_board_0": "ダイナミックな時刻表",
@ -860,7 +860,7 @@
"advancement.create.train_roadkill": "轢き殺し",
"advancement.create.train_roadkill.desc": "列車で敵を轢く§7\n(隠し進捗)",
"advancement.create.red_signal": "運転の達人",
"advancement.create.red_signal.desc": "列車で赤信号を走る§7\n(隠し進捗)",
"advancement.create.red_signal.desc": "赤信号を無視する§7\n(隠し進捗)",
"advancement.create.train_crash": "ひどいおもてなし",
"advancement.create.train_crash.desc": "乗客として列車事故に遭遇する§7\n(隠し進捗)",
"advancement.create.train_crash_backwards": "盲点",
@ -869,7 +869,7 @@
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.create.base": "Create",
"itemGroup.create.base": "UNLOCALIZED: Create",
"itemGroup.create.palettes": "Create's 建築ブロック",
"death.attack.create.crush": "%1$sは破砕ホイールによって処理された",
@ -959,16 +959,16 @@
"create.generic.daytime.second": "秒",
"create.generic.daytime.pm": "午後",
"create.generic.daytime.am": "午前",
"create.generic.unit.rpm": "RPM",
"create.generic.unit.stress": "su",
"create.generic.unit.rpm": "UNLOCALIZED: RPM",
"create.generic.unit.stress": "UNLOCALIZED: su",
"create.generic.unit.degrees": "度",
"create.generic.unit.millibuckets": "mB",
"create.generic.unit.buckets": "B",
"create.generic.unit.millibuckets": "UNLOCALIZED: mB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "時計回り",
"create.generic.counter_clockwise": "反時計回り",
"create.generic.in_quotes": "「%1$s」",
"create.generic.pitch": "音程: %1$s",
"create.generic.notes": "F#;F;E;D#;D;C#;C;B;A#;A;G#;G",
"create.generic.notes": "UNLOCALIZED: F#;F;E;D#;D;C#;C;B;A#;A;G#;G",
"create.action.scroll": "スクロール",
"create.action.confirm": "確認",
@ -1130,7 +1130,7 @@
"create.schematicAndQuill.abort": "選択を削除しました",
"create.schematicAndQuill.title": "概略図名:",
"create.schematicAndQuill.convert": "保存してすぐに適用",
"create.schematicAndQuill.fallbackName": "My Schematic",
"create.schematicAndQuill.fallbackName": "UNLOCALIZED: My Schematic",
"create.schematicAndQuill.saved": "%1$s として保存しました",
"create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図台を使ってください",
@ -1156,24 +1156,24 @@
"create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールして距離を変更します",
"create.schematic.tool.move.description.0": "概略図を水平に動かします",
"create.schematic.tool.move.description.1": "概略図を向け、 [Ctrl]-スクロールして押し出します",
"create.schematic.tool.move.description.2": "",
"create.schematic.tool.move.description.3": "",
"create.schematic.tool.move.description.2": "UNLOCALIZED: ",
"create.schematic.tool.move.description.3": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.0": "概略図を垂直に動かします",
"create.schematic.tool.movey.description.1": "[Ctrl]-スクロールして上下に移動します",
"create.schematic.tool.movey.description.2": "",
"create.schematic.tool.movey.description.3": "",
"create.schematic.tool.movey.description.2": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.3": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.0": "概略図を中心に回転させます",
"create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールして90度回転します",
"create.schematic.tool.rotate.description.2": "",
"create.schematic.tool.rotate.description.3": "",
"create.schematic.tool.rotate.description.2": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.3": "UNLOCALIZED: ",
"create.schematic.tool.print.description.0": "構造物を即座にワールドに配置します",
"create.schematic.tool.print.description.1": "[右クリック] して、現在の場所への配置を確認します",
"create.schematic.tool.print.description.2": "このツールはクリエイティブモード専用です",
"create.schematic.tool.print.description.3": "",
"create.schematic.tool.print.description.3": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.0": "選択した面に沿って概略図を反転します",
"create.schematic.tool.flip.description.1": "概略図をポイントし、 [Ctrl]-スクロールして反転します",
"create.schematic.tool.flip.description.2": "",
"create.schematic.tool.flip.description.3": "",
"create.schematic.tool.flip.description.2": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.3": "UNLOCALIZED: ",
"create.schematics.synchronizing": "同期しています...",
"create.schematics.uploadTooLarge": "概略図が大きすぎます",
@ -1240,7 +1240,7 @@
"create.gui.filter.ignore_data": "データを無視",
"create.gui.filter.ignore_data.description": "アイテムは属性に関係なく一致します。",
"create.item_attributes.placeable": "設置できるか",
"create.item_attributes.placeable": "設置できるか",
"create.item_attributes.placeable.inverted": "設置できないか",
"create.item_attributes.consumable": "食べられるか",
"create.item_attributes.consumable.inverted": "食べられないか",
@ -1256,26 +1256,26 @@
"create.item_attributes.damaged.inverted": "破損していないか",
"create.item_attributes.badly_damaged": "ひどく損傷してるか",
"create.item_attributes.badly_damaged.inverted": "ひどく損傷していないか",
"create.item_attributes.not_stackable": "スタックできるか",
"create.item_attributes.not_stackable": "スタックできるか",
"create.item_attributes.not_stackable.inverted": "スタックできないか",
"create.item_attributes.equipable": "装備できるか",
"create.item_attributes.equipable": "装備できるか",
"create.item_attributes.equipable.inverted": "装備できないか",
"create.item_attributes.furnace_fuel": "かまどの燃料か",
"create.item_attributes.furnace_fuel.inverted": "かまどの燃料でないか",
"create.item_attributes.washable": "洗浄できるか",
"create.item_attributes.washable": "洗浄できるか",
"create.item_attributes.washable.inverted": "洗浄できないか",
"create.item_attributes.hauntable": "憑霊できるか",
"create.item_attributes.hauntable.inverted": "憑霊できないか",
"create.item_attributes.crushable": "粉砕できるか",
"create.item_attributes.crushable": "粉砕できるか",
"create.item_attributes.crushable.inverted": "粉砕できないか",
"create.item_attributes.smeltable": "精錬できるか",
"create.item_attributes.smeltable": "精錬できるか",
"create.item_attributes.smeltable.inverted": "精錬できないか",
"create.item_attributes.smokable": "燻製器で調理できるか",
"create.item_attributes.smokable": "燻製器で調理できるか",
"create.item_attributes.smokable.inverted": "燻製器で調理できないか",
"create.item_attributes.blastable": "溶鉱炉で精錬できるか",
"create.item_attributes.blastable": "溶鉱炉で精錬できるか",
"create.item_attributes.blastable.inverted": "溶鉱炉で精錬できないか",
"create.item_attributes.compostable": "UNLOCALIZED: can be composted",
"create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted",
"create.item_attributes.compostable": "コンポストできるか",
"create.item_attributes.compostable.inverted": "コンポストできないか",
"create.item_attributes.shulker_level": "%1$sシュルカーか",
"create.item_attributes.shulker_level.inverted": "%1$sシュルカーでないか",
"create.item_attributes.shulker_level.full": "満杯の",
@ -1287,7 +1287,7 @@
"create.item_attributes.in_item_group.inverted": "%1$sに属していないか",
"create.item_attributes.added_by": "%1$sによって追加されたか",
"create.item_attributes.added_by.inverted": "%1$sによって追加されていないか",
"create.item_attributes.has_enchant": "エンチャントされているか%1$s",
"create.item_attributes.has_enchant": "%1$sエンチャントされているか",
"create.item_attributes.has_enchant.inverted": "エンチャントがされていないか",
"create.item_attributes.color": "%1$sで染められているか",
"create.item_attributes.color.inverted": "%1$sで染められていないか",
@ -1328,8 +1328,8 @@
"create.tooltip.holdForDescription": "説明を表示するには [%1$s] を長押し",
"create.tooltip.holdForControls": "操作方法を確認するには [%1$s] を長押し",
"create.tooltip.keyShift": "Shift",
"create.tooltip.keyCtrl": "Ctrl",
"create.tooltip.keyShift": "UNLOCALIZED: Shift",
"create.tooltip.keyCtrl": "UNLOCALIZED: Ctrl",
"create.tooltip.speedRequirement": "必要な回転速度: %1$s",
"create.tooltip.speedRequirement.none": "無し",
"create.tooltip.speedRequirement.slow": "低速",
@ -1387,7 +1387,7 @@
"create.tooltip.deployer.punching": "モード: 攻撃",
"create.tooltip.deployer.contains": "アイテム: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "配布中:",
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "右クリックで取り出し",
"create.linked_controller.bind_mode": "割り当てモード",
@ -1432,7 +1432,7 @@
"create.boiler.size": "容量",
"create.boiler.size_dots": "... ",
"create.boiler.water": "水量",
"create.boiler.water_dots": "... ",
"create.boiler.water_dots": "UNLOCALIZED: ... ",
"create.boiler.heat": "熱量",
"create.boiler.heat_dots": "... ",
"create.boiler.via_one_engine": "1基のエンジン経由",
@ -1503,7 +1503,7 @@
"create.schedule.condition.threshold.equal": "ぴったり",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$sの%3$s",
"create.schedule.condition.threshold.matching_content": "一致する貨物",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.anything": "なんでも",
"create.schedule.condition.threshold.item_measure": "アイテム単位",
"create.schedule.condition.threshold.items": "個",
"create.schedule.condition.threshold.stacks": "スタック",
@ -1511,7 +1511,7 @@
"create.schedule.condition.threshold.status": "貨物: %1$s/%2$s%3$s",
"create.schedule.condition.threshold.place_item": "参照アイテム",
"create.schedule.condition.threshold.place_item_2": "フィルターも使えます",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.threshold.place_item_3": "空白なら任意のアイテムと一致します",
"create.schedule.condition.fluid_threshold": "液体貨物の状態",
"create.schedule.condition.item_threshold": "アイテム貨物の状態",
"create.schedule.condition.redstone_link": "レッドストーンリンク",
@ -1684,12 +1684,12 @@
"create.display_source.value_list.display": "数値の表示形式",
"create.display_source.value_list.shortened": "短縮",
"create.display_source.value_list.full_number": "完全な数値",
"create.display_source.value_list.thousand": "k",
"create.display_source.value_list.million": "m",
"create.display_source.value_list.thousand": "UNLOCALIZED: k",
"create.display_source.value_list.million": "UNLOCALIZED: m",
"create.display_source.player_deaths": "プレイヤーの死亡回数",
"create.display_source.scoreboard": "スコアボード",
"create.display_source.scoreboard.objective": "Objective ID",
"create.display_source.scoreboard.objective_not_found": "'%1$s' not found",
"create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID",
"create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found",
"create.display_source.scoreboard.objective.deaths": "プレイヤーの死亡回数",
"create.display_source.time_of_day": "現在時刻",
"create.display_source.stop_watch": "ストップウォッチ",
@ -1706,7 +1706,7 @@
"create.display_source.station_summary": "鉄道駅の概要",
"create.display_source.station_summary.filter": "駅名フィルター",
"create.display_source.station_summary.train_name_column": "列車名の表示幅",
"create.display_source.station_summary.platform_column": "プラットフォームの表示幅",
"create.display_source.station_summary.platform_column": "駅名の表示幅",
"create.display_source.station_summary.now": "到着",
"create.display_source.station_summary.minutes": "分後",
"create.display_source.station_summary.seconds": "%1$s秒後",
@ -1736,13 +1736,13 @@
"create.display_target.page": "%1$sページ目",
"create.display_target.single_line": "単一行",
"create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": " ; 分;現在;15秒;30秒;45秒",
"create.flap_display.cycles.shortened_numbers": " ;K;M",
"create.flap_display.cycles.fluid_units": "mB;B ",
"create.flap_display.cycles.instant": " ; ",
"create.flap_display.cycles.pixel": "█;▓;▒",
"create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M",
"create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ",
"create.flap_display.cycles.instant": "UNLOCALIZED: ; ",
"create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒",
"create.super_glue.too_far": "選択した範囲が大きすぎます",
"create.super_glue.cannot_reach": "選択したブロックは繋がっているべきです",
@ -1762,13 +1762,13 @@
"create.gui.config.overlay7": "オーバーレイのリセットを実行 /作成",
"create.gui.config.overlay8": "クリックして、デフォルトの位置にリセットします。",
"create.command.killTPSCommand": "killtps",
"create.command.killTPSCommand": "UNLOCALIZED: killtps",
"create.command.killTPSCommand.status.slowed_by.0": "[Create]:サーバーティックは現在 %s ms 遅くなっています :o",
"create.command.killTPSCommand.status.slowed_by.1": "[Create]: サーバーティックが %s ms 遅くなりました >:)",
"create.command.killTPSCommand.status.slowed_by.2": "[Create]: サーバーティックが通常の速度に戻りました:D",
"create.command.killTPSCommand.status.usage.0": "[Create]: /killtps stopを使用してサーバーのティックを通常の速度に戻します",
"create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start <tickTime>を使用して、サーバーのティックを意図的に遅くします",
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime",
"create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません",
"create.contraption.minecart_contraption_illegal_pickup": "超自然的な力が、からくりカートを世界に縛り付けています",
@ -1875,7 +1875,7 @@
"item.create.tree_fertilizer.tooltip.behaviour1": "_間隔の条件_に_関係なく_苗木を成長させる",
"item.create.extendo_grip.tooltip": "マジックハンド",
"item.create.extendo_grip.tooltip.summary": "ビヨヨーン着用者の_射程_を大幅に_伸ばし_ます。",
"item.create.extendo_grip.tooltip.summary": "ビヨヨーン着用者の_リーチ_を大幅に_伸ばし_ます。",
"item.create.extendo_grip.tooltip.condition1": "オフハンドに装備したとき",
"item.create.extendo_grip.tooltip.behaviour1": "_メインハンド_で使うアイテムの_射程_を_伸ばし_ます。",
"item.create.extendo_grip.tooltip.condition2": "銅のバックタンクを装備したとき",
@ -2109,13 +2109,13 @@
"create.ponder.categories": "Createで閲覧できるカテゴリ",
"create.ponder.index_description": "アイテムをクリックすると、関連するアイテムやブロックの情報が表示されます。",
"create.ponder.index_title": "思案索引",
"create.ponder.shared.rpm16": "16 RPM",
"create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM",
"create.ponder.shared.behaviour_modify_wrench": "この挙動はレンチを使って変更できます",
"create.ponder.shared.storage_on_contraption": "構造物中の収納ブロックは自動的にドロップを拾います",
"create.ponder.shared.sneak_and": "スニーク + ",
"create.ponder.shared.rpm8": "8 RPM",
"create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM",
"create.ponder.shared.ctrl_and": "Ctrl + ",
"create.ponder.shared.rpm32": "32 RPM",
"create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM",
"create.ponder.shared.rpm16_source": "動力源: 16 RPM",
"create.ponder.shared.movement_anchors": "シャーシや超粘着剤を使えば大きな構造物も動かせます",
"create.ponder.tag.redstone": "制御機械",
@ -2277,7 +2277,7 @@
"create.ponder.chain_gearshift.text_3": "信号を受けているチェーンギアシフトが動力源でない場合、速度が半分になります",
"create.ponder.chain_gearshift.text_4": "いずれの場合も、列内のチェーンドライブは常に「信号入りチェーンギアシフト」の2倍の速度で動作します",
"create.ponder.chain_gearshift.text_5": "レッドストーン信号の強度で、比率を1と2の間でより正確に調整できます",
"create.ponder.chain_gearshift.text_6": "12 RPM",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "シュートによる下方向へ運搬",
"create.ponder.chute.text_1": "シュートは、収納ブロックから垂直方向にアイテムを運搬できます",
@ -2292,8 +2292,8 @@
"create.ponder.clockwork_bearing.header": "時計仕掛けのベアリングを使った構造物のアニメーション",
"create.ponder.clockwork_bearing.text_1": "時計仕掛けのベアリングは、前面にブロックを取り付けられます",
"create.ponder.clockwork_bearing.text_2": "回転力を受けると、現在の時間に合わせて構造物が回転します",
"create.ponder.clockwork_bearing.text_3": "3:00",
"create.ponder.clockwork_bearing.text_4": "4:00",
"create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00",
"create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00",
"create.ponder.clockwork_bearing.text_5": "ベアリングを右クリックして、構造物のアニメーションを開始・停止します",
"create.ponder.clockwork_bearing.text_6": "時針の前に、2つ目の構造物を追加できます",
"create.ponder.clockwork_bearing.text_7": "2つの構造物が超粘着剤などで取り付けられていないか確認してください",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 39",
"_": "Missing Localizations: 48",
"_": "->------------------------] Game Elements [------------------------<-",
@ -425,7 +425,7 @@
"block.create.rose_quartz_block": "장밋빛 석영 블록",
"block.create.rose_quartz_lamp": "장밋빛 석영 조명",
"block.create.rose_quartz_tiles": "장밋빛 석영 타일",
"block.create.rotation_speed_controller": "회전 속도 컨트롤러",
"block.create.rotation_speed_controller": "회전 속도 제어기",
"block.create.sail_frame": "풍차 날개 틀",
"block.create.schematic_table": "설계도 탁자",
"block.create.schematicannon": "설계도 대포",
@ -680,7 +680,7 @@
"advancement.create.root": "Create!",
"advancement.create.root.desc": "장치가 있으라!",
"advancement.create.andesite_alloy": "더 단단한 재료",
"advancement.create.andesite_alloy.desc": "안산안 합금을 얻으세요. Create모드의 가장 중요한 자원입니다",
"advancement.create.andesite_alloy.desc": "안산암 합금을 얻으세요. Create 모드의 가장 중요한 자원입니다",
"advancement.create.andesite_casing": "안산암 시대",
"advancement.create.andesite_casing.desc": "안산암 합금을 나무에 붙여 기본적인 케이스를 만드세요",
"advancement.create.mechanical_press": "'깡!'",
@ -708,9 +708,9 @@
"advancement.create.windmill": "산들 바람",
"advancement.create.windmill.desc": "풍차 베어링을 작동시키세요",
"advancement.create.shifting_gears": "기어 변속",
"advancement.create.shifting_gears.desc": "크기가 다른 톱니바퀴를 연결하 장치의 속도를 바꿀 수 있습니다",
"advancement.create.shifting_gears.desc": "크기가 다른 톱니바퀴를 연결하 장치의 속도를 바꿀 수 있습니다",
"advancement.create.millstone": "나만의 작은 분쇄기",
"advancement.create.millstone.desc": "멧돌을 설치하고 작동시키세요.",
"advancement.create.millstone.desc": "맷돌을 설치하고 작동시키세요",
"advancement.create.super_glue": "영역 접착",
"advancement.create.super_glue.desc": "여러 블록을 한 그룹으로 접착시키세요",
"advancement.create.contraption_actors": "목적있는 이동",
@ -738,7 +738,7 @@
"advancement.create.hand_crank_000": "워크아웃 세션",
"advancement.create.hand_crank_000.desc": "힘이 빠질때까지 핸드 크랭크를 돌리세요§7\n(숨겨진 발전과제)",
"advancement.create.belt_funnel_kiss": "퍼널은 어떻게 태어나?",
"advancement.create.belt_funnel_kiss.desc": "두 벨트 퍼널을 만나게하세요. 쪽!",
"advancement.create.belt_funnel_kiss.desc": "벨트 위 두 퍼널을 입맞춤시키세요, 쪽!§7\n(숨겨진 발전과제)",
"advancement.create.stressometer_maxed": "완벽한 과부하",
"advancement.create.stressometer_maxed.desc": "피로도 계측기에서 100% 수치를 확인하세요§7\n(숨겨진 발전과제)",
"advancement.create.copper": "더욱 더 단단한 재료",
@ -770,7 +770,7 @@
"advancement.create.honey_drain": "자동 양봉장",
"advancement.create.honey_drain.desc": "파이프를 이용해 벌집이나 벌통에서 꿀을 빼내세요",
"advancement.create.hose_pulley_lava": "맨틀 두드리기",
"advancement.create.hose_pulley_lava.desc": "무한으로 인식되는 용암 웅덩이에서 용암을 끌어올리세요",
"advancement.create.hose_pulley_lava.desc": "줄어들지 않을 정도로 큰 용암 웅덩이에서 용암을 끌어올리세요",
"advancement.create.steam_engine_maxed": "엔진 풀가동",
"advancement.create.steam_engine_maxed.desc": "보일러를 최고 레벨로 작동시키세요",
"advancement.create.foods": "달콤한 식단",
@ -830,7 +830,7 @@
"advancement.create.extendo_grip_dual": "띠요오오오오오오용!",
"advancement.create.extendo_grip_dual.desc": "양손에 외장형 연장 팔을 들어 초월적인 사거리를 가지세요§7\n(숨겨진 발전과제)",
"advancement.create.musical_arm": "볼륨 최대로!",
"advancement.create.musical_arm.desc": "기계 팔이 주크박스를 작동시키는 것을 보세요.",
"advancement.create.musical_arm.desc": "기계 팔이 주크박스를 작동시키는 것을 보세요§7\n(숨겨진 발전과제)",
"advancement.create.sturdy_sheet": "가장 단단한 재료",
"advancement.create.sturdy_sheet.desc": "분쇄된 흑요석을 제련하여 강판을 제작하세요",
"advancement.create.train_casing_00": "물류 시대",
@ -985,8 +985,8 @@
"create.gui.scrollInput.scrollToModify": "스크롤로 수정하기",
"create.gui.scrollInput.scrollToAdjustAmount": "스크롤로 수량 조절하기",
"create.gui.scrollInput.scrollToSelect": "스크롤로 선택",
"create.gui.scrollInput.shiftScrollsFaster": "쉬프트-스크롤로 빨리 수정하기",
"create.gui.toolmenu.focusKey": "[%1$s] 눌러 세부정보 보기",
"create.gui.scrollInput.shiftScrollsFaster": "Shift-스크롤로 빨리 수정",
"create.gui.toolmenu.focusKey": "[%1$s]을(를) 눌러 세부정보 보기",
"create.gui.toolmenu.cycle": "스크롤로 순환",
"create.toolbox.unequip": "되돌리기: %1$s",
@ -1036,7 +1036,7 @@
"create.gui.terrainzapper.tool.overlay": "덮어씌우기",
"create.gui.terrainzapper.tool.flatten": "다듬기",
"create.terrainzapper.shiftRightClickToSet": "쉬프트-우클릭으로 모양 설정하기",
"create.terrainzapper.shiftRightClickToSet": "웅크리고 우클릭으로 모양을 설정하세요",
"create.terrainzapper.usingBlock": "사용 중: %1$s",
"create.terrainzapper.leftClickToSet": "좌클릭으로 재료로 쓸 블록을 선택하세요",
@ -1107,7 +1107,7 @@
"create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "축 회전",
"create.gui.sequenced_gearshift.instruction.turn_angle": "축 회전",
"create.gui.sequenced_gearshift.instruction.turn_angle.angle": "각도",
"create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "피스톤/도르래/트리 회전",
"create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "피스톤/도르래/트리 회전",
"create.gui.sequenced_gearshift.instruction.turn_distance": "장치 회전",
"create.gui.sequenced_gearshift.instruction.turn_distance.distance": "거리",
"create.gui.sequenced_gearshift.instruction.delay.descriptive": "지연 시간",
@ -1126,12 +1126,12 @@
"create.schematicAndQuill.dimensions": "설계도 크기: %1$sx%2$sx%3$s",
"create.schematicAndQuill.firstPos": "첫 번째 위치를 설정했습니다",
"create.schematicAndQuill.secondPos": "두 번째 위치를 설정했습니다",
"create.schematicAndQuill.noTarget": "[Ctrl]을(를) 누르면 허공을 선택할 수 있습니다",
"create.schematicAndQuill.noTarget": "[Ctrl]을 누르면 허공을 선택할 수 있습니다",
"create.schematicAndQuill.abort": "위치 설정을 제거했습니다",
"create.schematicAndQuill.title": "설계도 이름:",
"create.schematicAndQuill.convert": "저장하고 즉시 적용",
"create.schematicAndQuill.fallbackName": "내 설계도",
"create.schematicAndQuill.saved": "%1$s으(로) 저장했습니다",
"create.schematicAndQuill.saved": "%1$s(으)로 저장했습니다",
"create.schematic.invalid": "[!] 없는 아이템 - 설계도 테이블을 이용하세요",
"create.schematic.position": "위치",
@ -1156,24 +1156,24 @@
"create.schematic.tool.deploy.description.3": "[Ctrl]을 누르고 스크롤하면 거리를 변경합니다.",
"create.schematic.tool.move.description.0": "설계도를 수평 이동합니다.",
"create.schematic.tool.move.description.1": "설계도를 바라보며 [CTRL]을 누르고 스크롤하면 설계도를 밀어냅니다.",
"create.schematic.tool.move.description.2": "",
"create.schematic.tool.move.description.3": "",
"create.schematic.tool.move.description.2": "UNLOCALIZED: ",
"create.schematic.tool.move.description.3": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.0": "설계도를 수직 이동시킵니다.",
"create.schematic.tool.movey.description.1": "설계도를 보고 [CTRL]-스크롤로 밉니다.",
"create.schematic.tool.movey.description.2": "",
"create.schematic.tool.movey.description.3": "",
"create.schematic.tool.movey.description.2": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.3": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.0": "설계도를 돌립니다.",
"create.schematic.tool.rotate.description.1": "[CTRL]-스크롤로 90도 돌립니다.",
"create.schematic.tool.rotate.description.2": "",
"create.schematic.tool.rotate.description.3": "",
"create.schematic.tool.rotate.description.2": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.3": "UNLOCALIZED: ",
"create.schematic.tool.print.description.0": "구조물을 즉시 설치합니다.",
"create.schematic.tool.print.description.1": "[우클릭]으로 현재 지점에 설치합니다.",
"create.schematic.tool.print.description.2": "이 도구는 크리에이티브 모드 전용입니다.",
"create.schematic.tool.print.description.3": "",
"create.schematic.tool.print.description.3": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.0": "당신이 보는 면으로 설계도를 뒤집습니다.",
"create.schematic.tool.flip.description.1": "설계도를 보고 [CTRL]-스크롤로 뒤집습니다.",
"create.schematic.tool.flip.description.2": "",
"create.schematic.tool.flip.description.3": "",
"create.schematic.tool.flip.description.2": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.3": "UNLOCALIZED: ",
"create.schematics.synchronizing": "동기화 중...",
"create.schematics.uploadTooLarge": "설계도가 너무 큽니다!.",
@ -1229,7 +1229,7 @@
"create.schematicannon.status.schematicExpired": "설계도 파일이 제거됨",
"create.materialChecklist": "재료 목록",
"create.materialChecklist.blocksNotLoaded": "* 경고 *\n\n관련된 청크가 불러올 수 없어 재료 목록이 부정확할 수 있습니다.",
"create.materialChecklist.blocksNotLoaded": "* 경고 *\n\n관련된 청크가 불러와지지 않아 재료 목록이 부정확할 수 있습니다.",
"create.gui.filter.deny_list": "블랙리스트",
"create.gui.filter.deny_list.description": "위에 등록된 아이템은 통과할 수 없습니다. 빈 블랙리스트는 모든 아이템을 통과시킵니다.",
@ -1274,15 +1274,15 @@
"create.item_attributes.smokable.inverted": "훈연될 수 없음",
"create.item_attributes.blastable": "용광로에 녹일 수 있음",
"create.item_attributes.blastable.inverted": "용광로에 녹일 수 없음",
"create.item_attributes.compostable": "UNLOCALIZED: can be composted",
"create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted",
"create.item_attributes.shulker_level": "셜커가 %1$s있음",
"create.item_attributes.shulker_level.inverted": "셜커가 %1$s있지 않음",
"create.item_attributes.compostable": "퇴비로 쓸 수 있음",
"create.item_attributes.compostable.inverted": "퇴비로 쓸 수 없음",
"create.item_attributes.shulker_level": "셜커가 %1$s 있음",
"create.item_attributes.shulker_level.inverted": "셜커가 %1$s 있지 않음",
"create.item_attributes.shulker_level.full": "가득 차",
"create.item_attributes.shulker_level.empty": "비어",
"create.item_attributes.shulker_level.partial": "조금 차",
"create.item_attributes.in_tag": "%1$s로 등록됨",
"create.item_attributes.in_tag.inverted": "%1$s로 등록되지 않음",
"create.item_attributes.in_tag": "%1$s(으)로 등록됨",
"create.item_attributes.in_tag.inverted": "%1$s(으)로 등록되지 않음",
"create.item_attributes.in_item_group": "%1$s탭에 속함",
"create.item_attributes.in_item_group.inverted": "%1$s탭에 속함",
"create.item_attributes.added_by": "%1$s모드가 추가함",
@ -1293,8 +1293,8 @@
"create.item_attributes.color.inverted": "염색되지 않음",
"create.item_attributes.has_fluid": "%1$s을(를) 담고 있음",
"create.item_attributes.has_fluid.inverted": "%1$s을(를) 담고 있지 않음",
"create.item_attributes.has_name": "%1$s라는 이름을 갖고 있음",
"create.item_attributes.has_name.inverted": "%1$s라는 이름을 갖고 있지 않음",
"create.item_attributes.has_name": "%1$s(이)라는 이름을 갖고 있음",
"create.item_attributes.has_name.inverted": "%1$s(이)라는 이름을 갖고 있지 않음",
"create.item_attributes.book_author": "%1$s이(가) 작성함",
"create.item_attributes.book_author.inverted": "%1$s이(가) 작성하지 않음",
"create.item_attributes.book_copy_original": "원본임",
@ -1326,8 +1326,8 @@
"create.gui.attribute_filter.deny_list.description": "아이템이 선택된 속성이 없다면 통과시킵니다.",
"create.gui.attribute_filter.add_reference_item": "참고할 아이템을 추가하기",
"create.tooltip.holdForDescription": "[%1$s]을 눌러 설명 보기",
"create.tooltip.holdForControls": "[%1$s]을 눌러 조작법 보기",
"create.tooltip.holdForDescription": "[%1$s]을(를) 눌러 설명 보기",
"create.tooltip.holdForControls": "[%1$s]을(를) 눌러 조작법 보기",
"create.tooltip.keyShift": "Shift",
"create.tooltip.keyCtrl": "Ctrl",
"create.tooltip.speedRequirement": "요구 회전속도: %1$s",
@ -1354,9 +1354,9 @@
"create.mechanical_arm.points_outside_range": "범위 제한으로 인해 %1$s개의 선택된 지점이 해제되었습니다",
"create.weighted_ejector.target_set": "투척 지점이 설정되었습니다",
"create.weighted_ejector.target_not_valid": "인접한 블록에 발사합니다 (투척 지점이 올바르지 않습니다)",
"create.weighted_ejector.no_target": "인접한 블록에 발사합니다 (투척 지점이 설정되지 않았습니다)",
"create.weighted_ejector.targeting": "[%1$s,%2$s,%3$s]에 투척합니다",
"create.weighted_ejector.target_not_valid": "인접한 블록에 발사합니다 (투척 지점이 올바르지 않습니다)",
"create.weighted_ejector.no_target": "인접한 블록에 발사합니다 (투척 지점이 설정되지 않았습니다)",
"create.weighted_ejector.targeting": "[%1$s,%2$s,%3$s]에 투척합니다",
"create.weighted_ejector.stack_size": "투척하는 아이템의 수량",
"create.logistics.when_multiple_outputs_available": "여러 출력구가 있을 때",
@ -1382,10 +1382,10 @@
"create.tooltip.chute.fans_pull_up": "선풍기가 위에서 당김",
"create.tooltip.chute.fans_pull_down": "선풍기가 아래에서 당김",
"create.tooltip.chute.contains": "들어있는 아이템: %1$s x%2$s",
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
"create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use",
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.deployer.header": "기계손 정보",
"create.tooltip.deployer.using": "모드: 사용",
"create.tooltip.deployer.punching": "모드: 공격",
"create.tooltip.deployer.contains": "아이템: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "분배 중인 아이템:",
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "우클릭하여 회수",
@ -1466,17 +1466,17 @@
"create.schedule.instruction.name_edit_box_1": "디스플레이에 보일 문자입니다",
"create.schedule.instruction.name_edit_box_2": "기본값은 다음 정거장의 이름입니다",
"create.schedule.instruction.throttle": "최고 속도 변경",
"create.schedule.instruction.throttle.summary": "최고 속도를 %1$s로 변경",
"create.schedule.instruction.throttle.summary": "최고 속도를 %1$s(으)로 변경",
"create.schedule.instruction.throttle_edit_box": "제한",
"create.schedule.instruction.throttle_edit_box_1": "기차의 최고 속도를 설정합니다",
"create.schedule.condition_type": "조건이 맞으면 계속:",
"create.schedule.condition.editor": "조건 편집기",
"create.schedule.condition.delay": "딜레이",
"create.schedule.condition.delay_short": "멈춤: %1$s",
"create.schedule.condition.delay.status": "%1$s후 출발",
"create.schedule.condition.delay.status": "%1$s 후 출발",
"create.schedule.condition.idle": "저장소 휴식",
"create.schedule.condition.idle_short": "저장소 휴식: %1$s",
"create.schedule.condition.idle.status": "%1$s동안 저장소 멈춤",
"create.schedule.condition.idle.status": "%1$s 동안 저장소 멈춤",
"create.schedule.condition.for_x_time": "%1$s 동안",
"create.schedule.condition.unloaded": "청크 언로드",
"create.schedule.condition.unloaded.status": "청크 언로드되길 기다리는 중",
@ -1503,7 +1503,7 @@
"create.schedule.condition.threshold.equal": "다음과 동일하면",
"create.schedule.condition.threshold.x_units_of_item": "%3$s %1$s %2$s",
"create.schedule.condition.threshold.matching_content": "내용물 일치",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.anything": "아무 아이템",
"create.schedule.condition.threshold.item_measure": "아이템 단위",
"create.schedule.condition.threshold.items": "개",
"create.schedule.condition.threshold.stacks": "스택",
@ -1511,7 +1511,7 @@
"create.schedule.condition.threshold.status": "저장소: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "기준 아이템",
"create.schedule.condition.threshold.place_item_2": "필터를 사용할 수 있음",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.threshold.place_item_3": "아무 아이템을 기준으로 하려면 비우세요",
"create.schedule.condition.fluid_threshold": "액체 저장소 조건",
"create.schedule.condition.item_threshold": "아이템 저장소 조건",
"create.schedule.condition.redstone_link": "레드스톤 링크",
@ -1564,7 +1564,7 @@
"create.track.not_enough_tracks": "선로이 부족합니다",
"create.track.not_enough_pavement": "기반 블록이 부족합니다",
"create.portal_track.failed": "차원간 선로 설치할 수 없습니다:",
"create.portal_track.failed": "차원간 선로 설치할 수 없습니다:",
"create.portal_track.missing": "대상 차원문이 아직 생성되지 않았습니다",
"create.portal_track.blocked": "대상 좌표가 가로막혔습니다 (%1$s,%2$s,%3$s)",
@ -1586,7 +1586,7 @@
"create.station.train_not_aligned": "모든 객실이 일직선상에 없어",
"create.station.train_not_aligned_1": "해체할 수 없습니다",
"create.station.carriage_number": "%1$s번 객실:",
"create.station.retry": "이 문제를 해결하고 다시 시도해보세요",
"create.station.retry": "이 문제를 해결하고 다시 시도해 보세요",
"create.station.no_bogeys": "대차 없음",
"create.station.one_bogey": "대차 1개",
"create.station.more_bogeys": "대차 %1$s개",
@ -1617,7 +1617,7 @@
"create.train.unnamed": "이름없는 기차",
"create.train.cannot_relocate_moving": "움직이는 기차를 옮길 수 없습니다",
"create.train.relocate": "%1$s 놓을 선로를 클릭하세요. 쉬프트 우클릭으로 취소합니다",
"create.train.relocate": "%1$s을(를) 놓을 선로를 클릭하세요. 쉬프트 우클릭으로 취소합니다",
"create.train.relocate.abort": "이동이 취소되었습니다",
"create.train.relocate.success": "성공적으로 옮겼습니다",
"create.train.relocate.valid": "여기에 옮길 수 있습니다. 클릭하여 놓습니다",
@ -1644,7 +1644,7 @@
"create.track_signal.mode_change.entry_signal": "-> 구역이 사용중이 아니면 통과 가능",
"create.track_signal.mode_change.cross_signal": "-> 구역을 온전히 횡단가능하면 통과 가능",
"create.contraption.controls.start_controlling": "%1$s 조종합니다",
"create.contraption.controls.start_controlling": "%1$s을(를) 조종합니다",
"create.contraption.controls.stop_controlling": "구조물 조종을 멈췄습니다",
"create.contraption.controls.approach_station": "%1$s을(를) 눌러 %2$s에 접근합니다",
"create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s",
@ -1657,7 +1657,7 @@
"create.display_link.success": "성공적으로 대상과 연결되었습니다",
"create.display_link.clear": "대상 선택을 해제했습니다",
"create.display_link.too_far": "이곳은 대상과 너무 멉니다",
"create.display_link.invalid": "연결된 대상이 없습니다. 다시 시도해보세요",
"create.display_link.invalid": "연결된 대상이 없습니다. 다시 시도해 보세요",
"create.display_link.title": "디스플레이 링크",
"create.display_link.no_source": "디스플레이 정보 수집 대상이 아님",
"create.display_link.no_target": "디스플레이 정보 표시 대상이 아님",
@ -1753,21 +1753,21 @@
"create.super_glue.not_enough": "인벤토리에 접착제가 부족합니다",
"create.super_glue.success": "접착하는 중...",
"create.gui.config.overlay1": "Hi :)",
"create.gui.config.overlay2": "This is a sample overlay",
"create.gui.config.overlay3": "Click or drag with your mouse",
"create.gui.config.overlay4": "to move this preview",
"create.gui.config.overlay5": "Press ESC to exit this screen",
"create.gui.config.overlay6": "and save the new position",
"create.gui.config.overlay7": "Run /create overlay reset",
"create.gui.config.overlay8": "to reset to the default position",
"create.gui.config.overlay1": "안녕하세요 :)",
"create.gui.config.overlay2": "이 창은 오버레이 예시입니다",
"create.gui.config.overlay3": "이 오버레이를 옮기려면",
"create.gui.config.overlay4": "마우스로 클릭하거나 드래그하세요",
"create.gui.config.overlay5": "ESC를 눌러 닫고",
"create.gui.config.overlay6": "새 위치를 저장할 수 있습니다",
"create.gui.config.overlay7": "명령어 /create overlay reset 으로",
"create.gui.config.overlay8": "기본 위치로 되돌릴 수 있습니다",
"create.command.killTPSCommand": "killtps",
"create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o",
"create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)",
"create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D",
"create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed",
"create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start <tickTime> to artificially slow down the server tick",
"create.command.killTPSCommand.status.slowed_by.0": "[Create]: 서버 틱이 %s ms만큼 느려진 상태입니다 :o",
"create.command.killTPSCommand.status.slowed_by.1": "[Create]: 서버 틱이 %s ms만큼 느려졌습니다 >:)",
"create.command.killTPSCommand.status.slowed_by.2": "[Create]: 서버 틱이 원래대로 돌아왔습니다 :D",
"create.command.killTPSCommand.status.usage.0": "[Create]: 명령어 /killtps stop을 사용해서 서버 틱을 원래 속도로 되돌리세요",
"create.command.killTPSCommand.status.usage.1": "[Create]: 명령어 /killtps start <틱 시간> 을 사용해서 서버 틱을 늦추세요",
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "이 수레 구조물은 들기에 너무 큽니다!",
@ -1826,22 +1826,22 @@
"_": "->------------------------] Item Descriptions [------------------------<-",
"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.",
"item.create.example_item.tooltip": "UNLOCALIZED: EXAMPLE ITEM (just a marker that this tooltip exists)",
"item.create.example_item.tooltip.summary": "UNLOCALIZED: A brief description of the item. _Underscores_ highlight a term.",
"item.create.example_item.tooltip.condition1": "UNLOCALIZED: When this",
"item.create.example_item.tooltip.behaviour1": "UNLOCALIZED: Then this item does this. (behaviours show on shift)",
"item.create.example_item.tooltip.condition2": "UNLOCALIZED: And When this",
"item.create.example_item.tooltip.behaviour2": "UNLOCALIZED: You can add as many behaviours as you like",
"item.create.example_item.tooltip.control1": "UNLOCALIZED: When Ctrl pressed",
"item.create.example_item.tooltip.action1": "UNLOCALIZED: These controls are displayed.",
"block.create.wooden_bracket.tooltip": "나무 지지대",
"block.create.wooden_bracket.tooltip.summary": "나무를 이용해 _축, 톱니바퀴, 파이프_를 꾸며보세요.",
"block.create.wooden_bracket.tooltip.summary": "나무를 이용해 _축, 톱니바퀴, 파이프_를 꾸며 보세요.",
"block.create.metal_bracket.tooltip": "금속 지지대",
"block.create.metal_bracket.tooltip.summary": "금속을 이용해 _축, 톱니바퀴, 파이프_를 꾸며보세요.",
"block.create.metal_bracket.tooltip.summary": "금속을 이용해 _축, 톱니바퀴, 파이프_를 꾸며 보세요.",
"block.create.seat.tooltip": "SEAT",
"block.create.seat.tooltip": "좌석",
"block.create.seat.tooltip.summary": "앉아서 드라이브를 즐기세요! _움직이는 구조물_에 _플레이어_를 _고정_시킵니다. 가구용으로도 좋습니다! 다양한 색깔이 존재합니다.",
"block.create.seat.tooltip.condition1": "좌석에 우클릭",
"block.create.seat.tooltip.behaviour1": "플레이어가 좌석에 _앉습니다_. _왼쪽 쉬프트_를 눌러 좌석에서 _일어섭니다_.",
@ -1849,7 +1849,7 @@
"item.create.blaze_cake.tooltip": "블레이즈 케이크",
"item.create.blaze_cake.tooltip.summary": "열심히 일하는 _블레이즈_ _버너_의 식사입니다. 블레이즈를 더 뜨겁게 만드세요!",
"item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND",
"item.create.wand_of_symmetry.tooltip": "대칭의 지팡이",
"item.create.wand_of_symmetry.tooltip.summary": "설정된 반사 모드에 따라 블록 설치를 _똑같이_ _배치_합니다.",
"item.create.wand_of_symmetry.tooltip.condition1": "단축바에 있을 때",
"item.create.wand_of_symmetry.tooltip.behaviour1": "활성화 유지",
@ -1860,7 +1860,7 @@
"item.create.wand_of_symmetry.tooltip.control3": "웅크린 상태에서 우클릭",
"item.create.wand_of_symmetry.tooltip.action3": "_설정_ _창_을 엽니다.",
"item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER",
"item.create.handheld_worldshaper.tooltip": "크리에이티브 세계편집기",
"item.create.handheld_worldshaper.tooltip.summary": "_지형경관_을 만들 때 좋은 간편한 도구입니다.",
"item.create.handheld_worldshaper.tooltip.control1": "블록을 보고 좌클릭",
"item.create.handheld_worldshaper.tooltip.action1": "이 도구로 설치할 블록을 설정합니다.",
@ -1869,50 +1869,50 @@
"item.create.handheld_worldshaper.tooltip.control3": "웅크린 상태에서 우클릭",
"item.create.handheld_worldshaper.tooltip.action3": "_설정_ _창_을 엽니다.",
"item.create.tree_fertilizer.tooltip": "TREE FERTILIZER",
"item.create.tree_fertilizer.tooltip": "나무 비료",
"item.create.tree_fertilizer.tooltip.summary": "일반적인 나무 종류들의 성장을 촉진시킬 강력한 미네랄의 혼합물입니다.",
"item.create.tree_fertilizer.tooltip.condition1": "묘목에 사용했을 때",
"item.create.tree_fertilizer.tooltip.behaviour1": "묘목을 주위 공간과 _상관없이_ 성장시킵니다.",
"item.create.extendo_grip.tooltip": "EXTENDO GRIP",
"item.create.extendo_grip.tooltip": "외장형 연장 팔",
"item.create.extendo_grip.tooltip.summary": "띠요오옹! 사용자의 _사거리_를 늘려줍니다.",
"item.create.extendo_grip.tooltip.condition1": "다른 손에 있을 때",
"item.create.extendo_grip.tooltip.behaviour1": "_기존_ _손_에있는 아이템의 사거리를 늘립니다.",
"item.create.extendo_grip.tooltip.condition2": "구리 산소통을 착용했을 때",
"item.create.extendo_grip.tooltip.behaviour2": "_내구도_가 _소모되지_ _않고_, 탱크에서 _공기_가 _소모됩니다_.",
"item.create.potato_cannon.tooltip": "POTATO CANNON",
"item.create.potato_cannon.tooltip": "감자포",
"item.create.potato_cannon.tooltip.summary": "퐁! 집에서 키운 작물로 적을 처치하세요! _구리_ _산소통_의 산소로 움직일 수 있습니다.",
"item.create.potato_cannon.tooltip.condition1": "우클릭",
"item.create.potato_cannon.tooltip.behaviour1": "_인벤토리_에서 적당한 아이템을 _쏩니다_.",
"item.create.potato_cannon.tooltip.condition2": "구리 산소통을 착용했을 때",
"item.create.potato_cannon.tooltip.behaviour2": "_내구도_가 _소모되지_ _않고_, 탱크에서 _공기_가 _소모됩니다_.",
"item.create.filter.tooltip": "FILTER",
"item.create.filter.tooltip": "필터",
"item.create.filter.tooltip.summary": "장치의 _입력_과 _출력_을 _필터_ 목록에 따라 _조정_합니다.",
"item.create.filter.tooltip.condition1": "필터 슬롯에 있을 때",
"item.create.filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.",
"item.create.filter.tooltip.condition2": "우클릭",
"item.create.filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.",
"item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER",
"item.create.attribute_filter.tooltip": "속성 필터",
"item.create.attribute_filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _속성_ 목록에 따라 _조정_합니다.",
"item.create.attribute_filter.tooltip.condition1": "필터 슬롯에 있을 때",
"item.create.attribute_filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.",
"item.create.attribute_filter.tooltip.condition2": "우클릭",
"item.create.attribute_filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.",
"item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC",
"item.create.empty_schematic.tooltip": "빈 설계도",
"item.create.empty_schematic.tooltip.summary": "조합 재료로 쓰이거나 설계도 테이블에서 설계도를 불러올 때 쓰입니다.",
"item.create.schematic.tooltip": "SCHEMATIC",
"item.create.schematic.tooltip": "설계도",
"item.create.schematic.tooltip.summary": "세계에 구조물을 _홀로그램으로_ 불러와 지정하고 설치합니다. 지정된 홀로그램은 _설계도_ _대포_의 _작업_ _영역_이 됩니다.",
"item.create.schematic.tooltip.condition1": "들고 있을 때",
"item.create.schematic.tooltip.behaviour1": "UI의 도구로 _변경/설치_ 할 수 있습니다.",
"item.create.schematic.tooltip.control1": "웅크린 상태에서 우클릭",
"item.create.schematic.tooltip.action1": "정확한 _좌표_ 입력을 위한 창을 엽니다.",
"item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL",
"item.create.schematic_and_quill.tooltip": "설계도와 깃펜",
"item.create.schematic_and_quill.tooltip.summary": "세계에 있는 구조물을 _.nbt파일_로 저장할 때 쓰입니다.",
"item.create.schematic_and_quill.tooltip.condition1": "1단계",
"item.create.schematic_and_quill.tooltip.behaviour1": "_두_ _모서리_를 우클릭으로 선택하세요.",
@ -1920,22 +1920,22 @@
"item.create.schematic_and_quill.tooltip.behaviour2": "면을 바라보고 _Ctrl-스크롤_하여 크기를 조정하세요. 우클릭을 다시 하면 저장됩니다.",
"item.create.schematic_and_quill.tooltip.control1": "우클릭",
"item.create.schematic_and_quill.tooltip.action1": "모서리 선택 / 저장 확인",
"item.create.schematic_and_quill.tooltip.control2": "Ctrl 누르고 있을 때",
"item.create.schematic_and_quill.tooltip.control2": "Ctrl 누르고 있을 때",
"item.create.schematic_and_quill.tooltip.action2": "_Scroll_를 이용하여 거리를 조정합니다.",
"item.create.schematic_and_quill.tooltip.control3": "웅크린 상태에서 우클릭",
"item.create.schematic_and_quill.tooltip.action3": "선택 영역을 리셋하고 _삭제_합니다.",
"block.create.schematicannon.tooltip": "SCHEMATICANNON",
"block.create.schematicannon.tooltip": "설계도 대포",
"block.create.schematicannon.tooltip.summary": "장착된 설계도를 바탕으로 블록들을 _발포_합니다. _화약_을 연료로 사용하고 주변 보관함에서 아이템을 사용합니다.",
"block.create.schematicannon.tooltip.condition1": "우클릭",
"block.create.schematicannon.tooltip.behaviour1": "설정 창을 엽니다.",
"block.create.schematic_table.tooltip": "SCHEMATIC TABLE",
"block.create.schematic_table.tooltip": "설계도 탁자",
"block.create.schematic_table.tooltip.summary": "_빈_ _설계도_에 저장된 설계도를 불러옵니다.",
"block.create.schematic_table.tooltip.condition1": "빈 설계도를 넣을 때",
"block.create.schematic_table.tooltip.behaviour1": "Schematics 폴더에서 선택한 파일을 업로드합니다.",
"item.create.goggles.tooltip": "GOGGLES",
"item.create.goggles.tooltip": "엔지니어의 고글",
"item.create.goggles.tooltip.summary": "_장치 정보_를 착용자의 시야에 띄어주는 안경입니다.",
"item.create.goggles.tooltip.condition1": "장착했을 때",
"item.create.goggles.tooltip.behaviour1": "해당 장치의 _속도_, _피로도_, _용량_을 레벨에 따라 에 따라 색상 UI를 보여줍니다.",
@ -1951,15 +1951,15 @@
"item.create.wrench.tooltip.control2": "웅크린 상태에서 우클릭",
"item.create.wrench.tooltip.action2": "_장치_를 _해체_하고 _즉시_ _보관함_으로 넣습니다.",
"block.create.nozzle.tooltip": "NOZZLE",
"block.create.nozzle.tooltip": "노즐",
"block.create.nozzle.tooltip.summary": "선풍기 _앞_에 붙여 선풍기의 효과를 _전방향_으로 _확대_합니다.",
"block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK",
"block.create.cuckoo_clock.tooltip": "뻐꾸기 시계",
"block.create.cuckoo_clock.tooltip.summary": "_시간의_ _흐름_을 알고 공간을 _꾸미는_ 데 좋은 공예품입니다.",
"block.create.cuckoo_clock.tooltip.condition1": "회전할 때",
"block.create.cuckoo_clock.tooltip.behaviour1": "현재 시각을 보여주고 하루에 두 번 울립니다. 점심과 플레이어가 바로 잘 수 있는 저녁에 울립니다.",
"block.create.turntable.tooltip": "TURNTABLE",
"block.create.turntable.tooltip": "돌림판",
"block.create.turntable.tooltip.summary": "_동력_으로 _멀미_를 일으킵니다.",
"block.create.toolbox.tooltip": "공구상자",
@ -1976,7 +1976,7 @@
"block.create.stockpile_switch.tooltip.condition1": "우클릭",
"block.create.stockpile_switch.tooltip.behaviour1": "설정 창을 엽니다.",
"block.create.content_observer.tooltip": "CONTENT OBSERVER",
"block.create.content_observer.tooltip": "정보 감지기",
"block.create.content_observer.tooltip.summary": "보관함이나 벨트의 아이템을 등록된 _필터_를 이용해 _탐지_합니다. _보관함, 벨트, 슈트_ 안에 해당 아이템을 탐지하는 동안, 레드스톤 신호를 보냅니다. _퍼널_가 해당 아이템을 수송하면, _1틱_의 레드스톤 신호를 보냅니다.",
"block.create.content_observer.tooltip.condition1": "보관함를 탐지할 때",
"block.create.content_observer.tooltip.behaviour1": "해당 보관함에 _필터 아이템_이 있는 동안 _레드스톤 신호_를 방출합니다.",
@ -1988,35 +1988,35 @@
"block.create.creative_crate.tooltip.condition1": "필터에 아이템을 설정할 시",
"block.create.creative_crate.tooltip.behaviour1": "선택된 아이템을 _무한정_으로 _빼낼_ 수 있습니다. 대신 _들어간_ 아이템은 _삭제_됩니다.",
"item.create.creative_blaze_cake.tooltip": "CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip": "크리에이티브 블레이즈 케이크",
"item.create.creative_blaze_cake.tooltip.summary": "_블레이즈 버너_의 열 _세기를 조절할 수 있는_ 매우 특별한 케이크입니다. 이 케이크를 섭취한 블레이즈 버너는 _절대 꺼지지_ 않습니다.",
"item.create.creative_blaze_cake.tooltip.condition1": "블레이즈 버너에 우클릭",
"item.create.creative_blaze_cake.tooltip.behaviour1": "블레이즈 버너의 열 세기를 _고정_시킵니다. 다시 사용하면 블레이즈 버너의 열 세기를 _순환_합니다.",
"block.create.controller_rail.tooltip": "CONTROLLER RAIL",
"block.create.controller_rail.tooltip": "방향 레일",
"block.create.controller_rail.tooltip.summary": "_광산 수레_의 _이동속도_를 _세밀하게_ _조정_할 수 있는 _양방향_ _전동 레일_입니다.",
"block.create.controller_rail.tooltip.condition1": "레드스톤 신호를 받을 때",
"block.create.controller_rail.tooltip.behaviour1": "_신호 세기에 따라_ 지나가는 수레를 _가속, 감속_합니다. 레드스톤 신호는 다른 방향 레일에도 전달됩니다. 두 방향레일에 다른 세기를 전달하면 중간 레일들은 두 세기 사이의 신호를 받습니다.",
"item.create.sand_paper.tooltip": "SAND PAPER",
"item.create.sand_paper.tooltip": "사포",
"item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 기계 손이 자동으로 쓸 수 있습니다.",
"item.create.sand_paper.tooltip.condition1": "사용할 때",
"item.create.sand_paper.tooltip.behaviour1": "_다른 손_에있는 아이템과 _바닥에 있는 아이템_을 윤냅니다.",
"item.create.builders_tea.tooltip": "BUILDERS TEA",
"item.create.builders_tea.tooltip": "건축가의 차",
"item.create.builders_tea.tooltip.summary": "하루를 시작하기에 좋은 음료입니다. _새로운 영감_을 줍니다.",
"item.create.refined_radiance.tooltip": "REFINED RADIANCE",
"item.create.refined_radiance.tooltip": "정제된 광채",
"item.create.refined_radiance.tooltip.summary": "_흡수된_ _빛_으로 제련된 색채 혼합물입니다.",
"item.create.refined_radiance.tooltip.condition1": "현재 개발 중",
"item.create.refined_radiance.tooltip.behaviour1": "이 재료의 사용처는 이후 업데이트에 있을겁니다.",
"item.create.shadow_steel.tooltip": "SHADOW STEEL",
"item.create.shadow_steel.tooltip": "그림자 강철",
"item.create.shadow_steel.tooltip.summary": "_공허_에서 제련된 색채 혼합물입니다.",
"item.create.shadow_steel.tooltip.condition1": "현재 개발 중",
"item.create.shadow_steel.tooltip.behaviour1": "이 재료의 사용처는 이후 업데이트에 있을겁니다.",
"item.create.linked_controller.tooltip": "LINKED CONTROLLER",
"item.create.linked_controller.tooltip": "레드스톤 링크 조작기",
"item.create.linked_controller.tooltip.summary": "_여섯_ _버튼_으로 _레드스톤_ _링크_와 연결되는 _휴대용_ _조작기_입니다.",
"item.create.linked_controller.tooltip.condition1": "우클릭",
"item.create.linked_controller.tooltip.behaviour1": "조작기를 킵니다. 조작하면서 _움직일_ _수_ _없습니다_.",
@ -2027,12 +2027,12 @@
"item.create.linked_controller.tooltip.condition4": "독서대에 우클릭",
"item.create.linked_controller.tooltip.behaviour4": "조작기를 독서대에 올려놓아 쉽게 조작할 수 있습니다. (웅크리면서 우클릭으로 회수헙니다.)",
"item.create.diving_helmet.tooltip": "DIVING HELMET",
"item.create.diving_helmet.tooltip": "다이빙 헬멧",
"item.create.diving_helmet.tooltip.summary": "_구리_ _산소통_과 함께, 착용자가 물 속에서 _오랫동안_ _호흡_할 수 있게합니다.",
"item.create.diving_helmet.tooltip.condition1": "착용했을 때",
"item.create.diving_helmet.tooltip.behaviour1": "산소통에서 공기를 느리게 빨아들이며 _수중_ _호흡_ 효과를 제공합니다.",
"item.create.copper_backtank.tooltip": "COPPER BACKTANK",
"item.create.copper_backtank.tooltip": "구리 산소통",
"item.create.copper_backtank.tooltip.summary": "공기를 옮길 수 있는 _착용가능한_ 탱크입니다.",
"item.create.copper_backtank.tooltip.condition1": "착용했을 때",
"item.create.copper_backtank.tooltip.behaviour1": "필요한 장비에 _공기_를 제공합니다.",
@ -2046,44 +2046,44 @@
"item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics",
"item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"block.create.placard.tooltip": "PLACARD",
"block.create.placard.tooltip": "플래카드",
"block.create.placard.tooltip.summary": "_아이템_을 황동안에 _장식_하세요. 구조물에도 사용할 수 있습니다!",
"block.create.placard.tooltip.condition1": "아이템을 들고 우클릭",
"block.create.placard.tooltip.behaviour1": "플래카드에 _아이템_을 추가합니다. _이미_ 같은 아이템이 장식되어 있다면 짧게 _레드스톤 신호_를 _방출_합니다.",
"block.create.placard.tooltip.condition2": "때렸을 때",
"block.create.placard.tooltip.behaviour2": "플래카드의 아이템을 _제거_합니다.",
"block.create.flywheel.tooltip": "FLYWHEEL",
"block.create.flywheel.tooltip": "플라이휠",
"block.create.flywheel.tooltip.summary": "황동 바퀴로 _장치_를 _장식_해보세요.",
"block.create.flywheel.tooltip.condition1": "동력을 공급받을 때",
"block.create.flywheel.tooltip.behaviour1": "회전합니다.",
"item.create.diving_boots.tooltip": "DIVING BOOTS",
"item.create.diving_boots.tooltip": "다이빙 부츠",
"item.create.diving_boots.tooltip.summary": "해저를 돌아다니기에 적합한 _무거운_ _부츠_ 한 켤레입니다.",
"item.create.diving_boots.tooltip.condition1": "착용했을 때",
"item.create.diving_boots.tooltip.behaviour1": "착용자는 빠르게 가라앉고 _수영_할 수 _없습니다_. 대신 물 속에서 _걷고_, _뛸_ 수 있습니다. 또한 _벨트_에 영향받지 않습니다.",
"item.create.crafting_blueprint.tooltip": "CRAFTING BLUEPRINT",
"item.create.crafting_blueprint.tooltip": "조합 청사진",
"item.create.crafting_blueprint.tooltip.summary": "벽에 설치해 _특정_ _재료_로 더 _쉽게_ _조합_할 수 있습니다. 각 슬롯은 조합법을 나타냅니다.",
"item.create.crafting_blueprint.condition1": "빈 슬롯을 우클릭",
"item.create.crafting_blueprint.behaviour1": "_조합법_과 전시할 아이템을 설정하는 창을 엽니다.",
"item.create.crafting_blueprint.condition2": "설정된 슬롯에 우클릭",
"item.create.crafting_blueprint.behaviour2": "자신의 _인벤토리_에서 해당 슬롯의 _조합법_을 _실행_합니다. _웅크리면서_ 우클릭하면 한 번에 여러개를 조합합니다.",
"item.create.minecart_coupling.tooltip": "MINECART COUPLING",
"item.create.minecart_coupling.tooltip.summary": "당신의 모든 _수레들을 이어 _멋진 _기차_를 만들어보세요.",
"item.create.minecart_coupling.tooltip": "광산 수레 커플링",
"item.create.minecart_coupling.tooltip.summary": "당신의 모든 _수레들을 이어 _멋진 _기차_를 만들어 보세요.",
"item.create.minecart_coupling.tooltip.condition1": "광산 수레에 사용할 때",
"item.create.minecart_coupling.tooltip.behaviour1": "_두 수레를 묶어_ 이동할 때 고정된 _거리를 유지하게_ 합니다.",
"item.create.experience_nugget.tooltip": "NUGGET OF EXPERIENCE",
"item.create.experience_nugget.tooltip": "경험의 조각",
"item.create.experience_nugget.tooltip.summary": "_띵!_ 당신의 멋진 발명품에서 탄생한 _영감_의 알맹이입니다.",
"item.create.experience_nugget.tooltip.condition1": "사용했을 때",
"item.create.experience_nugget.tooltip.behaviour1": "담겨져 있던 _경험치_를 _배출_합니다.",
"block.create.peculiar_bell.tooltip": "PECULIAR BELL",
"block.create.peculiar_bell.tooltip": "귀신들린 종",
"block.create.peculiar_bell.tooltip.summary": "장식을 위한 황동 종입니다. 영혼 불꽃 위에 설치하면 _기이한_ 일이 일어난다고 합니다...",
"block.create.haunted_bell.tooltip": "HAUNTED BELL",
"block.create.haunted_bell.tooltip": "황동 종",
"block.create.haunted_bell.tooltip.summary": "지옥의 길잃은 영혼들이 씌인 _저주받은_ 종입니다.",
"block.create.haunted_bell.tooltip.condition1": "들고 있거나 종을 울릴 때",
"block.create.haunted_bell.tooltip.behaviour1": "_적대적_ _몹_이 생성되는 _빛이_ _없는_ 자리를 표시합니다.",
@ -2094,12 +2094,12 @@
"create.ponder.hold_to_ponder": "[%1$s]키를 눌러 분석하기",
"create.ponder.subject": "분석의 주제",
"create.ponder.pondering": "분석 중입니다...",
"create.ponder.identify_mode": "탐색모드가 활성화되어 있습니다. \n[%1$s] 눌러 중지합니다.",
"create.ponder.identify_mode": "탐색모드가 활성화되어 있습니다. \n[%1$s]을(를) 눌러 중지합니다.",
"create.ponder.associated": "연관된 항목들",
"create.ponder.close": "닫기",
"create.ponder.identify": "탐색",
"create.ponder.next": "다음 장면",
"create.ponder.next_up": "Up Next:",
"create.ponder.next_up": "다음 장면:",
"create.ponder.previous": "이전 장면",
"create.ponder.replay": "다시 재생",
"create.ponder.think_back": "되돌아가기",
@ -2216,8 +2216,8 @@
"create.ponder.blaze_burner.text_4": "이 시스템은 기계 손이나 기계 팔을 이용해 자동화될 수 있습니다.",
"create.ponder.brass_funnel.header": "황동 퍼널",
"create.ponder.brass_funnel.text_1": "안산암 퍼널 아이템 한 개만 뽑아냅니다.",
"create.ponder.brass_funnel.text_2": "황동 퍼널 한 스택까지 뽑을 수 있습니다.",
"create.ponder.brass_funnel.text_1": "안산암 퍼널 아이템 한 개만 뽑아냅니다.",
"create.ponder.brass_funnel.text_2": "황동 퍼널 한 스택까지 뽑을 수 있습니다.",
"create.ponder.brass_funnel.text_3": "핕터 슬롯을 스크롤하여 추출 갯수를 조절합니다.",
"create.ponder.brass_funnel.text_4": "필터 슬롯에 아이템을 사용하여 추출할 아이템 종류를 정합니다.",
@ -2247,7 +2247,7 @@
"create.ponder.cart_assembler.header": "수레 조립기로 구조물 움직이기",
"create.ponder.cart_assembler.text_1": "활성화된 수레 조립기는 지나가는 수레에 구조물을 부착합니다.",
"create.ponder.cart_assembler.text_2": "신호가 없다면, 구조물을 때어냅니다.",
"create.ponder.cart_assembler.text_2": "신호가 없다면, 구조물을 떼어 냅니다.",
"create.ponder.cart_assembler.text_3": "수레에 렌치로 우클릭하면 구조물을 들고 다닐 수 있습니다.",
"create.ponder.cart_assembler_dual.header": "한 구조물에 여러 수레 결합하기",
@ -2312,7 +2312,7 @@
"create.ponder.cogwheel.text_1": "톱니바퀴는 인접한 톱니바퀴에 동력을 전달합니다.",
"create.ponder.cogwheel.text_2": "이렇게 연결된 톱니바퀴 축은 반대방향으로 돌아갑니다.",
"create.ponder.cogwheel_casing.header": "톱니바에 케이스 씌우기",
"create.ponder.cogwheel_casing.header": "톱니바에 케이스 씌우기",
"create.ponder.cogwheel_casing.text_1": "황동, 안산암 케이스는 톱니바퀴를 꾸밀 때 사용할 수 있습니다.",
"create.ponder.cogwheel_casing.text_2": "기본적으로 케이스를 씌운 톱니바퀴는 축과 연결되지 않습니다.",
"create.ponder.cogwheel_casing.text_3": "렌치를 사용하여 축과 연결하거나 차단할 수 있습니다.",
@ -2471,13 +2471,13 @@
"create.ponder.funnel_direction.text_5": "벨트 위의 퍼널는 벨트의 움직임에 따라 아이템을 빼내거나 가져갑니다.",
"create.ponder.funnel_intro.header": "퍼널 사용하기",
"create.ponder.funnel_intro.text_1": "퍼널 보관함에서 아이템을 옮기거나 빼낼 때 유용합니다.",
"create.ponder.funnel_intro.text_1": "퍼널 보관함에서 아이템을 옮기거나 빼낼 때 유용합니다.",
"create.ponder.funnel_redstone.header": "레드스톤 신호",
"create.ponder.funnel_redstone.text_1": "레드스톤 신호를 받으면 동작을 멈춥니다.",
"create.ponder.funnel_transfer.header": "직접 수송",
"create.ponder.funnel_transfer.text_1": "퍼널 아이템을 보관함에서 다른 보관함로 옮깁니다.",
"create.ponder.funnel_transfer.text_1": "퍼널 아이템을 보관함에서 다른 보관함로 옮깁니다.",
"create.ponder.funnel_transfer.text_2": "슈트나 스마트 슈트가 이런 목적에 더 적합합니다.",
"create.ponder.funnel_transfer.text_3": "수평 방향으로는 벨트가 적합합니다.",
@ -2569,7 +2569,7 @@
"create.ponder.linear_chassis_attachment.text_3": "빈 손으로 웅크리고 우클릭하여 접착제를 없앨 수 있습니다.",
"create.ponder.linear_chassis_attachment.text_4": "직선 섀시의 접착면은 접착면 앞에 있는 블록들을 연결합니다.",
"create.ponder.linear_chassis_attachment.text_5": "렌치로 이용해 섀시의 접착 거리를 조절할 수 있습니다.",
"create.ponder.linear_chassis_attachment.text_6": "[CTRL]키를 누르고 스크롤하면 연결된 모든 섀시의 거리를 조절할 수 있습니다.",
"create.ponder.linear_chassis_attachment.text_6": "CTRL을 누르고 스크롤하면 연결된 모든 섀시의 거리를 조절할 수 있습니다.",
"create.ponder.linear_chassis_attachment.text_7": "다른 면에 블록을 붙이려면 접착제가 필요합니다.",
"create.ponder.linear_chassis_attachment.text_8": "이런 원리를 통해 구조물이 장치로써 움직일 수 있게 됩니다.",
@ -2621,7 +2621,7 @@
"create.ponder.mechanical_crafter.text_2": "렌치를 이용해, 조합기의 경로를 변경할 수 있습니다.",
"create.ponder.mechanical_crafter.text_3": "올바른 조합을 위해서는, 모든 조합기의 경로가 외부로 나가는 한 길로 이어져야합니다.",
"create.ponder.mechanical_crafter.text_4": "결과물은 경로 끝 보관함에 보내집니다.",
"create.ponder.mechanical_crafter.text_5": "조합기는 동력이 요구됩니다.",
"create.ponder.mechanical_crafter.text_5": "조합기는 동력이 필요합니다.",
"create.ponder.mechanical_crafter.text_6": "앞면을 우클릭해서 직접 아이템을 넣습니다.",
"create.ponder.mechanical_crafter.text_7": "모든 면이 아이템을 가지고 있다면, 조합이 시작됩니다.",
"create.ponder.mechanical_crafter.text_8": "모든 면이 아이템을 가지고 있지 않아도, 레드스톤 신호로 조합을 강제 시작할 수 있습니다.",
@ -2832,8 +2832,8 @@
"create.ponder.sail_frame.text_1": "날개 틀은 풍차를 만들기에 좋은 블록입니다.",
"create.ponder.sail_frame.text_2": "강력 접착제나 섀시 없이 연결할 수 있습니다",
"create.ponder.sequenced_gearshift.header": "순서화 전환기를 통한 회전 속도 제어",
"create.ponder.sequenced_gearshift.text_1": "순서화 전환기는 설정한 지시에 따라 회전됩니다.",
"create.ponder.sequenced_gearshift.header": "순서 기어쉬프트를 통한 회전 속도 제어",
"create.ponder.sequenced_gearshift.text_1": "순서 기어쉬프트는 설정한 지시에 따라 회전됩니다.",
"create.ponder.sequenced_gearshift.text_2": "오른쪽 버튼을 누르면 설정 창이 열립니다.",
"create.ponder.sequenced_gearshift.text_3": "레드스톤 신호를 받으면 설정된 지시에 따라 회전하기 시작합니다.",
"create.ponder.sequenced_gearshift.text_4": "완료되면, 다음 레드스톤 신호를 기다립니다.",
@ -2845,8 +2845,8 @@
"create.ponder.shaft_casing.header": "축에 케이스 씌우기",
"create.ponder.shaft_casing.text_1": "황동 케이스나 안산암 케이스로 축을 장식할 수 있습니다.",
"create.ponder.smart_chute.header": "스마트 슈트 통한 아이템 필터",
"create.ponder.smart_chute.text_1": "스마트 슈트 필터 기능이 있는 슈트입니다.",
"create.ponder.smart_chute.header": "스마트 슈트 통한 아이템 필터",
"create.ponder.smart_chute.text_1": "스마트 슈트 필터 기능이 있는 슈트입니다.",
"create.ponder.smart_chute.text_2": "필터 슬롯으로 아이템을 지정하여 원하는 아이템을 입출력할 수 있습니다.",
"create.ponder.smart_chute.text_3": "스크롤하여 한 번에 내보내는 아이템의 양을 조절합니다.",
"create.ponder.smart_chute.text_4": "레드스톤 신호를 받으면 작동을 멈춥니다.",
@ -2958,7 +2958,7 @@
"create.ponder.train_assembly.text_4": "조립할 때는 다른 기차가 이 정거장에 정차하지 않습니다.",
"create.ponder.train_assembly.text_5": "선로에 기차 케이스를 설치하여 새로운 대차를 만드세요.",
"create.ponder.train_assembly.text_6": "선로를 우클릭하여 다른 대차 디자인으로 변경할 수 있습니다.",
"create.ponder.train_assembly.text_7": "강력 접착제로 블록을 붙여보세요.",
"create.ponder.train_assembly.text_7": "강력 접착제로 블록을 붙여 보세요.",
"create.ponder.train_assembly.text_8": "기차는 조립될 때 창고나 통에 연료가 있다면 더 빨리 이동합니다.",
"create.ponder.train_assembly.text_9": "금고에 있는 연료는 기차가 사용하지 않습니다.",
@ -3047,7 +3047,7 @@
"create.ponder.windmill_source.header": "풍차 베어링으로 동력 생산하기",
"create.ponder.windmill_source.text_1": "풍차 베어링은 앞에 있는 블록을 부착합니다.",
"create.ponder.windmill_source.text_2": "강력 접착제로 움직일 수 있는 구조물을 만들어보세요.",
"create.ponder.windmill_source.text_2": "강력 접착제로 움직일 수 있는 구조물을 만들어 보세요.",
"create.ponder.windmill_source.text_3": "충분한 날개 블록이 있어야 풍차 역할을 합니다.",
"create.ponder.windmill_source.text_4": "우클릭으로 가동하면, 풍차 베어링은 동력을 생산합니다.",
"create.ponder.windmill_source.text_5": "날개 블록의 개수가 동력 속도를 결정합니다.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 43",
"_": "Missing Localizations: 49",
"_": "->------------------------] Game Elements [------------------------<-",
@ -581,7 +581,7 @@
"entity.create.potato_projectile": "Ziemniaczany pocisk",
"entity.create.seat": "Siedzenie",
"entity.create.stationary_contraption": "Maszyna stacjonarna",
"entity.create.super_glue": "Super Glue",
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
"fluid.create.potion": "Mikstura",
"fluid.create.tea": "Herbatka Budowniczego",
@ -662,7 +662,7 @@
"item.create.schematic_and_quill": "Schemat z piórem",
"item.create.shadow_steel": "Mroczna stal",
"item.create.sturdy_sheet": "Zbity arkusz",
"item.create.super_glue": "Super Glue",
"item.create.super_glue": "UNLOCALIZED: Super Glue",
"item.create.sweet_roll": "Słodka bułka",
"item.create.tree_fertilizer": "Nawóz do drzew",
"item.create.unprocessed_obsidian_sheet": "Nieprzerobiony arkusz obsydianowy",
@ -869,7 +869,7 @@
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.create.base": "Create",
"itemGroup.create.base": "UNLOCALIZED: Create",
"itemGroup.create.palettes": "Bloki budowlane Create",
"death.attack.create.crush": "Gracz %1$s został zgnieciony przez koło kruszące",
@ -957,18 +957,18 @@
"create.generic.daytime.hour": "Godzina",
"create.generic.daytime.minute": "Minuta",
"create.generic.daytime.second": "Sekunda",
"create.generic.daytime.pm": "pm",
"create.generic.daytime.am": "am",
"create.generic.daytime.pm": "UNLOCALIZED: pm",
"create.generic.daytime.am": "UNLOCALIZED: am",
"create.generic.unit.rpm": "Ob/min",
"create.generic.unit.stress": "JO",
"create.generic.unit.degrees": "°",
"create.generic.unit.degrees": "UNLOCALIZED: °",
"create.generic.unit.millibuckets": "%1$smW",
"create.generic.unit.buckets": "W",
"create.generic.clockwise": "Zgodnie ze wskazówkami zegara",
"create.generic.counter_clockwise": "Przeciwnie do wskazówek zegara",
"create.generic.in_quotes": "\"%1$s\"",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"",
"create.generic.pitch": "Wysokość: %1$s",
"create.generic.notes": "F#;F;E;D#;D;C#;C;B;A#;A;G#;G",
"create.generic.notes": "UNLOCALIZED: F#;F;E;D#;D;C#;C;B;A#;A;G#;G",
"create.action.scroll": "Przewiń",
"create.action.confirm": "Potwierdź",
@ -1156,24 +1156,24 @@
"create.schematic.tool.deploy.description.3": "[Ctrl]+Przewijanie, aby zmienić dystans",
"create.schematic.tool.move.description.0": "Przesuwa schemat poziomo.",
"create.schematic.tool.move.description.1": "Wskaż na schemat i [Ctrl]+Przewijaj, aby popchnąć.",
"create.schematic.tool.move.description.2": "",
"create.schematic.tool.move.description.3": "",
"create.schematic.tool.move.description.2": "UNLOCALIZED: ",
"create.schematic.tool.move.description.3": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.0": "Przesuwa schemat pionowo.",
"create.schematic.tool.movey.description.1": "[Ctrl]+Przewijanie, aby przesunąć w górę/dół.",
"create.schematic.tool.movey.description.2": "",
"create.schematic.tool.movey.description.3": "",
"create.schematic.tool.movey.description.2": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.3": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.0": "Obraca schemat wokół jego środka.",
"create.schematic.tool.rotate.description.1": "[Ctrl]+Przewijanie, aby obrócić o 90 stopni.",
"create.schematic.tool.rotate.description.2": "",
"create.schematic.tool.rotate.description.3": "",
"create.schematic.tool.rotate.description.2": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.3": "UNLOCALIZED: ",
"create.schematic.tool.print.description.0": "Natychmiastowo stawia strukturę w świecie.",
"create.schematic.tool.print.description.1": "Kliknij PPM, aby potwierdzić ustawienie w obecnej pozycji.",
"create.schematic.tool.print.description.2": "Ta funkcja jest tylko dla trybu kreatywnego.",
"create.schematic.tool.print.description.3": "",
"create.schematic.tool.print.description.3": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.0": "Odbija schemat w stronę, w jakiej wskazałeś.",
"create.schematic.tool.flip.description.1": "Wskaż na schemat [Ctrl]+Przewijaj, aby odbić",
"create.schematic.tool.flip.description.2": "",
"create.schematic.tool.flip.description.3": "",
"create.schematic.tool.flip.description.2": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.3": "UNLOCALIZED: ",
"create.schematics.synchronizing": "Synchronizacja...",
"create.schematics.uploadTooLarge": "Twój schemat przekracza limity ustanowione przez serwer.",
@ -1274,8 +1274,8 @@
"create.item_attributes.smokable.inverted": "nie może być wędzony",
"create.item_attributes.blastable": "może być stopiony w piecu hutniczym",
"create.item_attributes.blastable.inverted": "nie może być stopiony w piecu hutniczym",
"create.item_attributes.compostable": "UNLOCALIZED: can be composted",
"create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted",
"create.item_attributes.compostable": "może być kompostowane",
"create.item_attributes.compostable.inverted": "nie może być kompostowane",
"create.item_attributes.shulker_level": "jest %1$s",
"create.item_attributes.shulker_level.inverted": "nie jest %1$s",
"create.item_attributes.shulker_level.full": "pełna",
@ -1383,9 +1383,9 @@
"create.tooltip.chute.fans_pull_down": "Wiatraki ciągną od dołu",
"create.tooltip.chute.contains": "Zawiera: %1$s x%2$s",
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
"create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use",
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.deployer.using": "Tryb: Używaj",
"create.tooltip.deployer.punching": "Tryb: Atakowanie",
"create.tooltip.deployer.contains": "Przedmiot: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "Aktualnie przenosi:",
"create.tooltip.brass_tunnel.contains_entry": "> %2$sx %1$s",
"create.tooltip.brass_tunnel.retrieve": "Kliknij prawym przyciskiem, aby zabrać",
@ -1457,9 +1457,9 @@
"create.schedule.instruction.destination": "Jedź do stacji",
"create.schedule.instruction.destination.summary": "Następny przystanek:",
"create.schedule.instruction.filter_edit_box": "Nazwa stacji",
"create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard",
"create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'",
"create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match",
"create.schedule.instruction.filter_edit_box_1": "Użyj * jako symbolu wieloznacznego",
"create.schedule.instruction.filter_edit_box_2": "Przykład: 'Moja stacja, peron *'",
"create.schedule.instruction.filter_edit_box_3": "Pociąg wybiera najbliższe niezajęte miejsce",
"create.schedule.instruction.rename": "Aktualizuj tytuł harmonogramu",
"create.schedule.instruction.rename.summary": "Nowy tytuł:",
"create.schedule.instruction.name_edit_box": "Tytuł harmonogramu",
@ -1503,7 +1503,7 @@
"create.schedule.condition.threshold.equal": "dokładnie",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s: %3$s",
"create.schedule.condition.threshold.matching_content": "Pasująca zawartość",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.anything": "Cokolwiek",
"create.schedule.condition.threshold.item_measure": "Jednostka przedmiotów",
"create.schedule.condition.threshold.items": "Przemioty",
"create.schedule.condition.threshold.stacks": "Stosy",
@ -1511,7 +1511,7 @@
"create.schedule.condition.threshold.status": "Ładunek: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Przedmiot odniesienia",
"create.schedule.condition.threshold.place_item_2": "Filtry mogą zostać użyte",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.threshold.place_item_3": "Pozostaw puste, aby dopasować cokolwiek",
"create.schedule.condition.fluid_threshold": "Warunek ładunku płynów",
"create.schedule.condition.item_threshold": "Warunek ładunku przedmiotów",
"create.schedule.condition.redstone_link": "Emiter sygnału",
@ -1751,7 +1751,7 @@
"create.super_glue.first_pos": "Pierwsza pozycja zaznaczona",
"create.super_glue.abort": "Zaznaczenie odrzucone",
"create.super_glue.not_enough": "Nie wystarczająco kleju w ekwipunku",
"create.super_glue.success": "UNLOCALIZED: Applying Glue...",
"create.super_glue.success": "Stosowanie kleju...",
"create.gui.config.overlay1": "Cześć :)",
"create.gui.config.overlay2": "To jest przykładowa nakładka",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 2227",
"_": "Missing Localizations: 2252",
"_": "->------------------------] Game Elements [------------------------<-",
@ -49,7 +49,7 @@
"block.create.brown_valve_handle": "Manopla de válvula castanho",
"block.create.calcite_pillar": "UNLOCALIZED: Calcite Pillar",
"block.create.cart_assembler": "Montador de carrinho",
"block.create.chocolate": "Chocolate",
"block.create.chocolate": "UNLOCALIZED: Chocolate",
"block.create.chute": "Calha",
"block.create.clockwork_bearing": "Rolamento de relôgio",
"block.create.clutch": "Embreagem",
@ -745,7 +745,7 @@
"advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation",
"advancement.create.copper_casing": "A era do cobre",
"advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.",
"advancement.create.spout": "Sploosh",
"advancement.create.spout": "UNLOCALIZED: Sploosh",
"advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.",
"advancement.create.drain": "UNLOCALIZED: Tumble Draining",
"advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain",
@ -807,9 +807,9 @@
"advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.",
"advancement.create.display_link": "UNLOCALIZED: Big Data",
"advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information",
"advancement.create.potato_cannon": "Fwoomp!",
"advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!",
"advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.",
"advancement.create.extendo_grip": "Boioioing!",
"advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!",
"advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.",
"advancement.create.linked_controller": "UNLOCALIZED: Remote Activation",
"advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller",
@ -869,7 +869,7 @@
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.create.base": "Create",
"itemGroup.create.base": "UNLOCALIZED: Create",
"itemGroup.create.palettes": "Paletes Create",
"death.attack.create.crush": "%1$s foi processado pelas Rodas de Moer",
@ -951,7 +951,7 @@
"create.generic.delay": "Demorada",
"create.generic.duration": "UNLOCALIZED: Duration",
"create.generic.timeUnit": "UNLOCALIZED: Time Unit",
"create.generic.unit.ticks": "Ticks",
"create.generic.unit.ticks": "UNLOCALIZED: Ticks",
"create.generic.unit.seconds": "Segundos",
"create.generic.unit.minutes": "Minutos",
"create.generic.daytime.hour": "UNLOCALIZED: Hour",
@ -959,9 +959,9 @@
"create.generic.daytime.second": "UNLOCALIZED: Second",
"create.generic.daytime.pm": "UNLOCALIZED: pm",
"create.generic.daytime.am": "UNLOCALIZED: am",
"create.generic.unit.rpm": "RPM",
"create.generic.unit.rpm": "UNLOCALIZED: RPM",
"create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°",
"create.generic.unit.degrees": "UNLOCALIZED: °",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "Sentido horário",
@ -1000,11 +1000,11 @@
"create.symmetry.mirror.plane": "Espelhar uma vez",
"create.symmetry.mirror.doublePlane": "Retangular",
"create.symmetry.mirror.triplePlane": "Octagonal",
"create.symmetry.mirror.triplePlane": "UNLOCALIZED: Octagonal",
"create.orientation.orthogonal": "Ortogonal",
"create.orientation.diagonal": "Diagonal",
"create.orientation.horizontal": "Horizontal",
"create.orientation.diagonal": "UNLOCALIZED: Diagonal",
"create.orientation.horizontal": "UNLOCALIZED: Horizontal",
"create.orientation.alongZ": "Através de Z",
"create.orientation.alongX": "Através de X",
@ -1156,24 +1156,24 @@
"create.schematic.tool.deploy.description.3": "[Ctrl]-Rolar para mudar a distância.",
"create.schematic.tool.move.description.0": "Vira o Esquema Horizontalmente",
"create.schematic.tool.move.description.1": "Aponte ao Esquema e [CTRL]-Rolar para empurrar.",
"create.schematic.tool.move.description.2": "",
"create.schematic.tool.move.description.3": "",
"create.schematic.tool.move.description.2": "UNLOCALIZED: ",
"create.schematic.tool.move.description.3": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.0": "Vira o Esquema Verticalmente",
"create.schematic.tool.movey.description.1": "[CTRL]-Rolar para mover para cima/baixo",
"create.schematic.tool.movey.description.2": "",
"create.schematic.tool.movey.description.3": "",
"create.schematic.tool.movey.description.2": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.3": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.0": "Roda o Esquema em torno do seu centro.",
"create.schematic.tool.rotate.description.1": "[CTRL]-Rolar para rolar 90 Graus",
"create.schematic.tool.rotate.description.2": "",
"create.schematic.tool.rotate.description.3": "",
"create.schematic.tool.rotate.description.2": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.3": "UNLOCALIZED: ",
"create.schematic.tool.print.description.0": "Coloca estrutura no mundo instantaneamente",
"create.schematic.tool.print.description.1": "[Botão-Direito] para confirmar a posição atual.",
"create.schematic.tool.print.description.2": "Esta ferramenta é para o Modo Criativo apenas.",
"create.schematic.tool.print.description.3": "",
"create.schematic.tool.print.description.3": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.0": "Gira o Esquema ao longo da face que você selecionar.",
"create.schematic.tool.flip.description.1": "Aponte para o Esquema e [CTRL]-Rolar para virá-lo.",
"create.schematic.tool.flip.description.2": "",
"create.schematic.tool.flip.description.3": "",
"create.schematic.tool.flip.description.2": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.3": "UNLOCALIZED: ",
"create.schematics.synchronizing": "Sincronizando...",
"create.schematics.uploadTooLarge": "Seu esquema é muito grande",
@ -1826,14 +1826,14 @@
"_": "->------------------------] Item Descriptions [------------------------<-",
"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": "UNLOCALIZED: EXAMPLE ITEM (just a marker that this tooltip exists)",
"item.create.example_item.tooltip.summary": "UNLOCALIZED: A brief description of the item. _Underscores_ highlight a term.",
"item.create.example_item.tooltip.condition1": "Quando this",
"item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)",
"item.create.example_item.tooltip.behaviour1": "UNLOCALIZED: Then this item does this. (behaviours show on shift)",
"item.create.example_item.tooltip.condition2": "And Quando this",
"item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like",
"item.create.example_item.tooltip.behaviour2": "UNLOCALIZED: You can add as many behaviours as you like",
"item.create.example_item.tooltip.control1": "Quando Ctrl pressed",
"item.create.example_item.tooltip.action1": "These controls are displayed.",
"item.create.example_item.tooltip.action1": "UNLOCALIZED: These controls are displayed.",
"block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET",
"block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 686",
"_": "Missing Localizations: 739",
"_": "->------------------------] Game Elements [------------------------<-",
@ -74,7 +74,7 @@
"block.create.creative_crate": "Ladă Creativ",
"block.create.creative_fluid_tank": "Rezervor De Fluid Creativ",
"block.create.creative_motor": "Motor Creativ",
"block.create.crimsite": "Crimsite",
"block.create.crimsite": "UNLOCALIZED: Crimsite",
"block.create.crimsite_pillar": "Coloană De Crimsite",
"block.create.crimson_window": "Sticlă Stacojie",
"block.create.crimson_window_pane": "Geam Stacojiu",
@ -202,8 +202,8 @@
"block.create.dark_oak_window_pane": "Geam De Stejar Negru",
"block.create.deepslate_pillar": "Coloană De Deepslate",
"block.create.deepslate_zinc_ore": "Minereu De Zinc De Adâncime",
"block.create.deployer": "Deployer",
"block.create.depot": "Depot",
"block.create.deployer": "UNLOCALIZED: Deployer",
"block.create.depot": "UNLOCALIZED: Depot",
"block.create.diorite_pillar": "Coloană De Diorit",
"block.create.display_board": "UNLOCALIZED: Display Board",
"block.create.display_link": "UNLOCALIZED: Display Link",
@ -318,7 +318,7 @@
"block.create.nozzle": "Plasă",
"block.create.oak_window": "Sticlă De Stejar",
"block.create.oak_window_pane": "Geam De Stejar",
"block.create.ochrum": "Ochrum",
"block.create.ochrum": "UNLOCALIZED: Ochrum",
"block.create.ochrum_pillar": "Coloană De Ochrum",
"block.create.orange_sail": "Velă Portocalie",
"block.create.orange_seat": "Scaun Portocaliu",
@ -429,9 +429,9 @@
"block.create.sail_frame": "Ramă De Velă",
"block.create.schematic_table": "Masă De Schemă",
"block.create.schematicannon": "Tun De Schemă",
"block.create.scorchia": "Scorchia",
"block.create.scorchia": "UNLOCALIZED: Scorchia",
"block.create.scorchia_pillar": "Coloană De Scorchia",
"block.create.scoria": "Scoria",
"block.create.scoria": "UNLOCALIZED: Scoria",
"block.create.scoria_pillar": "Coloană De Scoria",
"block.create.secondary_linear_chassis": "Șasiu Liniar Secundar",
"block.create.sequenced_gearshift": "Schimbător De Viteze Secvențial",
@ -518,7 +518,7 @@
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
"block.create.tuff_pillar": "Coloană De Tuf",
"block.create.turntable": "Placă Turnantă",
"block.create.veridium": "Veridium",
"block.create.veridium": "UNLOCALIZED: Veridium",
"block.create.veridium_pillar": "Coloană De Veridium",
"block.create.vertical_framed_glass": "Sticlă Înrămată Verticală",
"block.create.vertical_framed_glass_pane": "Geam Înrămat Vertical",
@ -807,9 +807,9 @@
"advancement.create.clockwork_bearing.desc": "Asamblează o structură montată pe un Rulment De Ceasornic.",
"advancement.create.display_link": "UNLOCALIZED: Big Data",
"advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information",
"advancement.create.potato_cannon": "Fwoomp!",
"advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!",
"advancement.create.potato_cannon.desc": "Înfrânge un inamic cu Tunul tău De Cartofi.",
"advancement.create.extendo_grip": "Boioioing!",
"advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!",
"advancement.create.extendo_grip.desc": "Fă rost de un Mâner Extendo.",
"advancement.create.linked_controller": "UNLOCALIZED: Remote Activation",
"advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller",
@ -869,7 +869,7 @@
"_": "->------------------------] UI & Messages [------------------------<-",
"itemGroup.create.base": "Create",
"itemGroup.create.base": "UNLOCALIZED: Create",
"itemGroup.create.palettes": "Blocurile De Construit Create",
"death.attack.create.crush": "%1$s a fost procesat de către Roți De Zdrobit",
@ -943,7 +943,7 @@
"create.recipe.heat_requirement.superheated": "Super-Încălzit",
"create.generic.range": "Distanță",
"create.generic.radius": "Radius",
"create.generic.radius": "UNLOCALIZED: Radius",
"create.generic.width": "Lățime",
"create.generic.height": "Înălțime",
"create.generic.length": "Lungime",
@ -959,9 +959,9 @@
"create.generic.daytime.second": "UNLOCALIZED: Second",
"create.generic.daytime.pm": "UNLOCALIZED: pm",
"create.generic.daytime.am": "UNLOCALIZED: am",
"create.generic.unit.rpm": "RPM",
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°",
"create.generic.unit.rpm": "UNLOCALIZED: RPM",
"create.generic.unit.stress": "UNLOCALIZED: su",
"create.generic.unit.degrees": "UNLOCALIZED: °",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B",
"create.generic.clockwise": "În sensul acelor de ceasornic",
@ -1000,10 +1000,10 @@
"create.symmetry.mirror.plane": "Oglindește odată",
"create.symmetry.mirror.doublePlane": "Dreptunghiular",
"create.symmetry.mirror.triplePlane": "Octagonal",
"create.symmetry.mirror.triplePlane": "UNLOCALIZED: Octagonal",
"create.orientation.orthogonal": "Ortogonal",
"create.orientation.diagonal": "Diagonal",
"create.orientation.diagonal": "UNLOCALIZED: Diagonal",
"create.orientation.horizontal": "Orizontal",
"create.orientation.alongZ": "De-a lungul axei Z",
"create.orientation.alongX": "De-a lungul axei X",
@ -1012,7 +1012,7 @@
"create.gui.terrainzapper.searchDiagonal": "Urmărește Diagonalele",
"create.gui.terrainzapper.searchFuzzy": "Ignoră Marginile Materialelor",
"create.gui.terrainzapper.patternSection": "Tipar",
"create.gui.terrainzapper.pattern.solid": "Solid",
"create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid",
"create.gui.terrainzapper.pattern.checkered": "Tablă De Șah",
"create.gui.terrainzapper.pattern.inversecheckered": "Tablă De Șah Inversată",
"create.gui.terrainzapper.pattern.chance25": "Rostogolire 25%",
@ -1023,7 +1023,7 @@
"create.gui.terrainzapper.placement.attached": "Atașat",
"create.gui.terrainzapper.placement.inserted": "Inserat",
"create.gui.terrainzapper.brush": "Pensulă",
"create.gui.terrainzapper.brush.cuboid": "Cuboid",
"create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid",
"create.gui.terrainzapper.brush.sphere": "Sferă",
"create.gui.terrainzapper.brush.cylinder": "Cilindru",
"create.gui.terrainzapper.brush.surface": "Suprafață",
@ -1108,7 +1108,7 @@
"create.gui.sequenced_gearshift.instruction.turn_angle": "Întoarce",
"create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Unghi",
"create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Întoarce pentru a muta Piston/Scripete/Portal",
"create.gui.sequenced_gearshift.instruction.turn_distance": "Piston",
"create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston",
"create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distanță",
"create.gui.sequenced_gearshift.instruction.delay.descriptive": "Întârziere Programată",
"create.gui.sequenced_gearshift.instruction.delay": "Întârziere",
@ -1156,24 +1156,24 @@
"create.schematic.tool.deploy.description.3": "[Ctrl]-Scroll pentru a schimba distanța.",
"create.schematic.tool.move.description.0": "Deplasează Schema Orizontal.",
"create.schematic.tool.move.description.1": "Arată spre Schemă și apasă [CTRL]-Scroll ca să îl deplasezi.",
"create.schematic.tool.move.description.2": "",
"create.schematic.tool.move.description.3": "",
"create.schematic.tool.move.description.2": "UNLOCALIZED: ",
"create.schematic.tool.move.description.3": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.0": "Deplasează Schema Vertical.",
"create.schematic.tool.movey.description.1": "[CTRL]-Scroll ca să îl miști sus/jos.",
"create.schematic.tool.movey.description.2": "",
"create.schematic.tool.movey.description.3": "",
"create.schematic.tool.movey.description.2": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.3": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.0": "Rotește Schema în jurul centrului sale.",
"create.schematic.tool.rotate.description.1": "[CTRL]-Scroll ca să rotești cu 90 de Grade.",
"create.schematic.tool.rotate.description.2": "",
"create.schematic.tool.rotate.description.3": "",
"create.schematic.tool.rotate.description.2": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.3": "UNLOCALIZED: ",
"create.schematic.tool.print.description.0": "Plasează structura instant în lume.",
"create.schematic.tool.print.description.1": "[Click-Dreapta] pentru a confirma palsarea la locașia curentă.",
"create.schematic.tool.print.description.2": "Această unealtă este doar pentru Modul Creativ.",
"create.schematic.tool.print.description.3": "",
"create.schematic.tool.print.description.3": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.0": "Întoarce Schema de-a lungul feței pe care o selectezi.",
"create.schematic.tool.flip.description.1": "Arată spre Schemă și apasă [CTRL]-Scroll ca să o întorci.",
"create.schematic.tool.flip.description.2": "",
"create.schematic.tool.flip.description.3": "",
"create.schematic.tool.flip.description.2": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.3": "UNLOCALIZED: ",
"create.schematics.synchronizing": "Se Sincronizează...",
"create.schematics.uploadTooLarge": "Schemal ta depășește limitele specificate de către server.",
@ -1328,8 +1328,8 @@
"create.tooltip.holdForDescription": "Ține apăsat [%1$s] pentru Rezumat",
"create.tooltip.holdForControls": "Ține apăsat [%1$s] pentru Controale",
"create.tooltip.keyShift": "Shift",
"create.tooltip.keyCtrl": "Ctrl",
"create.tooltip.keyShift": "UNLOCALIZED: Shift",
"create.tooltip.keyCtrl": "UNLOCALIZED: Ctrl",
"create.tooltip.speedRequirement": "Cerință De Viteză: %1$s",
"create.tooltip.speedRequirement.none": "Niciunul",
"create.tooltip.speedRequirement.slow": "UNLOCALIZED: Slow",
@ -1387,7 +1387,7 @@
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "Distribuie Curent:",
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "Click Dreapta pentru a recupera",
"create.linked_controller.bind_mode": "Mod de legare activat",
@ -1753,22 +1753,22 @@
"create.super_glue.not_enough": "UNLOCALIZED: Not enough glue in inventory",
"create.super_glue.success": "UNLOCALIZED: Applying Glue...",
"create.gui.config.overlay1": "Hi :)",
"create.gui.config.overlay2": "This is a sample overlay",
"create.gui.config.overlay3": "Click or drag with your mouse",
"create.gui.config.overlay4": "to move this preview",
"create.gui.config.overlay5": "Press ESC to exit this screen",
"create.gui.config.overlay6": "and save the new position",
"create.gui.config.overlay7": "Run /create overlay reset",
"create.gui.config.overlay8": "to reset to the default position",
"create.gui.config.overlay1": "UNLOCALIZED: Hi :)",
"create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay",
"create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse",
"create.gui.config.overlay4": "UNLOCALIZED: to move this preview",
"create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen",
"create.gui.config.overlay6": "UNLOCALIZED: and save the new position",
"create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset",
"create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position",
"create.command.killTPSCommand": "killtps",
"create.command.killTPSCommand": "UNLOCALIZED: killtps",
"create.command.killTPSCommand.status.slowed_by.0": "[Create]: Ticul serverului este încetinit cu %s ms :o",
"create.command.killTPSCommand.status.slowed_by.1": "[Create]: Ticul serverului este încetinit cu %s ms acum >:)",
"create.command.killTPSCommand.status.slowed_by.2": "[Create]: Ticul serverului este înapoi la viteza normală :D",
"create.command.killTPSCommand.status.usage.0": "[Create]: folosește /killtps stop pentru a readuce ticul serverului la viteza normală",
"create.command.killTPSCommand.status.usage.1": "[Create]: folosește /killtps start <tickTime> pentru a încetini artificial ticul serverului",
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime",
"create.contraption.minecart_contraption_too_big": "Această Invenție de Vagonet pare ca este prea mare pentru a fi luat.",
"create.contraption.minecart_contraption_illegal_pickup": "O forță mistică leagă această Invenție de Vagonet de lume",
@ -2109,13 +2109,13 @@
"create.ponder.categories": "Categorii valabile în Create",
"create.ponder.index_description": "Apasă pe una dintre iconițe pentru a învăța despre Obiectele și Blocurile asociate lui",
"create.ponder.index_title": "Indecele de Chibzuire",
"create.ponder.shared.rpm16": "16 RPM",
"create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM",
"create.ponder.shared.behaviour_modify_wrench": "Acest comportament poate fi modificat folosind o Cheie",
"create.ponder.shared.storage_on_contraption": "Inventarele atașate la Invenție vor strânge dropurile lor automat",
"create.ponder.shared.sneak_and": "Furișare +",
"create.ponder.shared.rpm8": "8 RPM",
"create.ponder.shared.ctrl_and": "Ctrl +",
"create.ponder.shared.rpm32": "32 RPM",
"create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM",
"create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +",
"create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM",
"create.ponder.shared.rpm16_source": "Sursă: 16 RPM",
"create.ponder.shared.movement_anchors": "Cu ajutorul unui Șasiu sau cu Super Glue, structuri mai mari pot fi mișcate.",
"create.ponder.tag.redstone": "Componente Logice",
@ -2277,7 +2277,7 @@
"create.ponder.chain_gearshift.text_3": "În schimb, oricând Schimbătorul de Viteze Alimentat nu este la sursă, viteza lui va fi injumătățită",
"create.ponder.chain_gearshift.text_4": "În ambele cazuri, Lanțurile de Distribuție în rând mereu rulează cu viteza dublă a Schimbătorului de Viteză Alimentat",
"create.ponder.chain_gearshift.text_5": "Folsind semnale analogice, raportul poate fi adjustat mai precis între 1 și 2",
"create.ponder.chain_gearshift.text_6": "12 RPM",
"create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM",
"create.ponder.chute.header": "Transportarea Obiectelor în jos prin Tobogane",
"create.ponder.chute.text_1": "Toboganele pot transporta obiecte vertical către și de la inventare",
@ -2292,8 +2292,8 @@
"create.ponder.clockwork_bearing.header": "Animarea Structurilor folosind Rulmente de Ceasornic",
"create.ponder.clockwork_bearing.text_1": "Rulmentele de Ceasornic se atașează de blocurile din fața lor",
"create.ponder.clockwork_bearing.text_2": "La primirea Forței de Rotație, structura va fi rotită conform ora zilei",
"create.ponder.clockwork_bearing.text_3": "3:00",
"create.ponder.clockwork_bearing.text_4": "4:00",
"create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00",
"create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00",
"create.ponder.clockwork_bearing.text_5": "Click-Dreapta pe rulment pentru a începe sau a opri animarea structurii",
"create.ponder.clockwork_bearing.text_6": "În fața acului de Oră, o structură secundară poate fi adăugată",
"create.ponder.clockwork_bearing.text_7": "Asigură-te că cele două structuri nu sunt atașate între ele prin super glue sau ceva asemănător",
@ -2573,10 +2573,10 @@
"create.ponder.linear_chassis_attachment.text_7": "Atașarea blocurilor cu orice altă față necesită folosința Super Glue-ului",
"create.ponder.linear_chassis_attachment.text_8": "Folosind aceste mecanici, structuri de orice formă se pot mișca sub forma unei Invenții",
"create.ponder.linear_chassis_group.header": "Moving Linear Chassis in groups",
"create.ponder.linear_chassis_group.text_1": "Linear Chassis connect to identical Chassis blocks next to them",
"create.ponder.linear_chassis_group.text_2": "When one is moved by a Contraption, the others are dragged with it",
"create.ponder.linear_chassis_group.text_3": "Chassis of a different type or facing another direction will not attach",
"create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups",
"create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them",
"create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it",
"create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach",
"create.ponder.mechanical_arm.header": "Configurarea Brațelor Mecanice",
"create.ponder.mechanical_arm.text_1": "Brațele Mecanice trebuie să le fie atribuite intrări și ieșiri înainte să fie plasate",
@ -2830,7 +2830,7 @@
"create.ponder.sail_frame.header": "Asamblarea Morilor De Vânt folosind Rame De Vele",
"create.ponder.sail_frame.text_1": "ramele De Vele sunt blocuri folositoare cu care poți crea Mori De Vânt",
"create.ponder.sail_frame.text_2": "They will attach to blocks and each other without the need of Super Glue or Chassis Blocks",
"create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks",
"create.ponder.sequenced_gearshift.header": "Controlarea Vitezei De Rotație folosind Schimbătoare De Viteză Secvențiale",
"create.ponder.sequenced_gearshift.text_1": "Schimbătoarele De Viteză Secvențiale transmit rotație urmărind o listă de instrucțiuni planificată",

View file

@ -1,12 +1,12 @@
{
"_": "Missing Localizations: 31",
"_": "Missing Localizations: 48",
"_": "->------------------------] Game Elements [------------------------<-",
"block.create.acacia_window": "金合欢木窗户",
"block.create.acacia_window_pane": "金合欢木窗户板",
"block.create.adjustable_chain_gearshift": "可调节链式传动箱",
"block.create.analog_lever": "模拟拉杆",
"block.create.analog_lever": "模拟信号拉杆",
"block.create.andesite_belt_funnel": "安山岩传送带漏斗",
"block.create.andesite_casing": "安山机壳",
"block.create.andesite_encased_cogwheel": "安山齿轮箱",
@ -228,8 +228,8 @@
"block.create.framed_glass_door": "边框玻璃门",
"block.create.framed_glass_pane": "边框玻璃板",
"block.create.framed_glass_trapdoor": "边框玻璃活板门",
"block.create.gantry_carriage": "起重机取物器",
"block.create.gantry_shaft": "起重机",
"block.create.gantry_carriage": "起重机滑架",
"block.create.gantry_shaft": "起重机桥架",
"block.create.gearbox": "十字齿轮箱",
"block.create.gearshift": "反转齿轮箱",
"block.create.glass_fluid_pipe": "玻璃流体管道",
@ -295,10 +295,10 @@
"block.create.magenta_seat": "品红色坐垫",
"block.create.magenta_toolbox": "品红色工具箱",
"block.create.magenta_valve_handle": "品红色阀门手轮",
"block.create.mechanical_arm": "动力臂",
"block.create.mechanical_arm": "机械臂",
"block.create.mechanical_bearing": "动力轴承",
"block.create.mechanical_crafter": "动力合成器",
"block.create.mechanical_drill": "动力钻头",
"block.create.mechanical_crafter": "机械工作台",
"block.create.mechanical_drill": "机械钻头",
"block.create.mechanical_harvester": "动力收割机",
"block.create.mechanical_mixer": "动力搅拌器",
"block.create.mechanical_piston": "动力活塞",
@ -396,8 +396,8 @@
"block.create.polished_cut_veridium_slab": "磨制切制辉绿矿台阶",
"block.create.polished_cut_veridium_stairs": "磨制切制辉绿矿楼梯",
"block.create.polished_cut_veridium_wall": "磨制切制辉绿矿墙",
"block.create.portable_fluid_interface": "移动式流体接口",
"block.create.portable_storage_interface": "移动式存储接口",
"block.create.portable_fluid_interface": "移动式流体接口",
"block.create.portable_storage_interface": "移动式物品对接口",
"block.create.powered_latch": "锁存器",
"block.create.powered_shaft": "动力曲轴",
"block.create.powered_toggle_latch": "转换锁存器",
@ -421,7 +421,7 @@
"block.create.redstone_link": "无线红石信号终端",
"block.create.refined_radiance_casing": "光辉机壳",
"block.create.rope": "绳索",
"block.create.rope_pulley": "绳索滑轮",
"block.create.rope_pulley": "绳索绞车",
"block.create.rose_quartz_block": "玫瑰石英块",
"block.create.rose_quartz_lamp": "玫瑰石英灯",
"block.create.rose_quartz_tiles": "玫瑰石英砖块",
@ -501,7 +501,7 @@
"block.create.spout": "注液器",
"block.create.spruce_window": "云杉木窗户",
"block.create.spruce_window_pane": "云杉木窗户板",
"block.create.steam_engine": "蒸汽引擎",
"block.create.steam_engine": "蒸汽",
"block.create.steam_whistle": "蒸汽笛",
"block.create.steam_whistle_extension": "蒸汽笛加长段",
"block.create.sticker": "黏着器",
@ -577,10 +577,10 @@
"entity.create.carriage_contraption": "车厢装置",
"entity.create.contraption": "装置",
"entity.create.crafting_blueprint": "合成蓝图",
"entity.create.gantry_contraption": "起重装置",
"entity.create.gantry_contraption": "起重装置",
"entity.create.potato_projectile": "被发射的土豆",
"entity.create.seat": "坐垫",
"entity.create.stationary_contraption": "固定装置",
"entity.create.stationary_contraption": "静止的装置",
"entity.create.super_glue": "强力胶",
"fluid.create.potion": "药水",
@ -634,7 +634,7 @@
"item.create.furnace_minecart_contraption": "装配过的动力矿车",
"item.create.goggles": "工程师护目镜",
"item.create.golden_sheet": "金板",
"item.create.handheld_worldshaper": "手持式环境塑形器",
"item.create.handheld_worldshaper": "手持式环境改造器",
"item.create.honey_bucket": "蜂蜜桶",
"item.create.honeyed_apple": "蜜渍苹果",
"item.create.incomplete_precision_mechanism": "精密构件(半成品)",
@ -682,16 +682,16 @@
"advancement.create.andesite_alloy": "安如顽石",
"advancement.create.andesite_alloy.desc": "获取机械动力的最重要资源——安山合金",
"advancement.create.andesite_casing": "安山时代",
"advancement.create.andesite_casing.desc": "使用安山合金和去皮原木来制造一个安山机壳",
"advancement.create.andesite_casing.desc": "对去皮原木使用安山合金来制造一个安山机壳",
"advancement.create.mechanical_press": "铿!",
"advancement.create.mechanical_press.desc": "使用动力辊压机压扁物品制成板材",
"advancement.create.encased_fan": "御风者",
"advancement.create.encased_fan.desc": "放置一个鼓风机并且让它开始工作",
"advancement.create.fan_processing": "粒子加工",
"advancement.create.fan_processing.desc": "使用鼓风机加工材料",
"advancement.create.fan_processing.desc": "使用鼓风机加工材料",
"advancement.create.saw_processing": "车间中的危险机械",
"advancement.create.saw_processing.desc": "使用动力锯来加工材料",
"advancement.create.compacting": "紧致化",
"advancement.create.saw_processing.desc": "使用朝上的动力锯来加工材料",
"advancement.create.compacting": "压制物品",
"advancement.create.compacting.desc": "使用动力辊压机与工作盆将多个物品压缩成一个",
"advancement.create.belt": "海带传动",
"advancement.create.belt.desc": "用传送带连接两个传动杆",
@ -716,11 +716,11 @@
"advancement.create.contraption_actors": "有目的地行动",
"advancement.create.contraption_actors.desc": "创建一个带有动力钻头、动力锯或者动力收割机的移动装置",
"advancement.create.portable_storage_interface": "顺道交换",
"advancement.create.portable_storage_interface.desc": "用移动式储存接口从移动装置中取出或输入物品",
"advancement.create.portable_storage_interface.desc": "用移动式储存接口从移动装置中取出或输入物品",
"advancement.create.wrench_goggles": "一应俱全",
"advancement.create.wrench_goggles.desc": "同时装备工程师护目镜与扳手",
"advancement.create.stressometer": "应力数是给呆子看的",
"advancement.create.stressometer.desc": "在应力表和工程师护目镜的辅助下获取准确读数",
"advancement.create.stressometer.desc": "用应力表和工程师护目镜获取准确读数",
"advancement.create.cuckoo_clock": "到点了吗?",
"advancement.create.cuckoo_clock.desc": "目睹你的布谷鸟闹钟提醒你睡觉",
"advancement.create.windmill_maxed": "强风肆虐",
@ -807,9 +807,9 @@
"advancement.create.clockwork_bearing.desc": "组装安装在发条轴承上的装置",
"advancement.create.display_link": "大数据",
"advancement.create.display_link.desc": "用翻牌显示器可视化资讯",
"advancement.create.potato_cannon": "Fwoomp!",
"advancement.create.potato_cannon": "噗~嘭!",
"advancement.create.potato_cannon.desc": "用土豆加农炮击杀一个生物",
"advancement.create.extendo_grip": "Boioioing!",
"advancement.create.extendo_grip": "弹性极佳",
"advancement.create.extendo_grip.desc": "获得一个伸缩机械手",
"advancement.create.linked_controller": "层层遥控",
"advancement.create.linked_controller.desc": "用无线红石遥控器激活无线红石终端",
@ -961,7 +961,7 @@
"create.generic.daytime.am": "am",
"create.generic.unit.rpm": "RPM",
"create.generic.unit.stress": "su",
"create.generic.unit.degrees": "°",
"create.generic.unit.degrees": "",
"create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "B",
"create.generic.clockwise": "顺时针方向",
@ -1156,24 +1156,24 @@
"create.schematic.tool.deploy.description.3": "按住 [Ctrl] 鼠标滚动更改距离",
"create.schematic.tool.move.description.0": "水平移动蓝图",
"create.schematic.tool.move.description.1": "选定蓝图,然后按住 [Ctrl] 鼠标滚动移动",
"create.schematic.tool.move.description.2": "",
"create.schematic.tool.move.description.3": "",
"create.schematic.tool.move.description.2": "UNLOCALIZED: ",
"create.schematic.tool.move.description.3": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.0": "垂直移动蓝图",
"create.schematic.tool.movey.description.1": "按住 [Ctrl] 鼠标滚动上下移动",
"create.schematic.tool.movey.description.2": "",
"create.schematic.tool.movey.description.3": "",
"create.schematic.tool.movey.description.2": "UNLOCALIZED: ",
"create.schematic.tool.movey.description.3": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.0": "围绕蓝图中心旋转蓝图",
"create.schematic.tool.rotate.description.1": "按住 [Ctrl] 鼠标滚动旋转90度",
"create.schematic.tool.rotate.description.2": "",
"create.schematic.tool.rotate.description.3": "",
"create.schematic.tool.rotate.description.2": "UNLOCALIZED: ",
"create.schematic.tool.rotate.description.3": "UNLOCALIZED: ",
"create.schematic.tool.print.description.0": "立即将结构放置在世界上",
"create.schematic.tool.print.description.1": "[右击] 确认当前位置",
"create.schematic.tool.print.description.2": "该工具仅适用于创造模式",
"create.schematic.tool.print.description.3": "",
"create.schematic.tool.print.description.3": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.0": "沿你选择的面翻转蓝图",
"create.schematic.tool.flip.description.1": "指向蓝图,然后按住 [Ctrl] 鼠标滚动将其翻转",
"create.schematic.tool.flip.description.2": "",
"create.schematic.tool.flip.description.3": "",
"create.schematic.tool.flip.description.2": "UNLOCALIZED: ",
"create.schematic.tool.flip.description.3": "UNLOCALIZED: ",
"create.schematics.synchronizing": "正在同步……",
"create.schematics.uploadTooLarge": "你的蓝图超出了服务器指定的限制",
@ -1738,7 +1738,7 @@
"create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z",
"create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9",
"create.flap_display.cycles.arrival_time": " ; min;now;15s;30s;45s",
"create.flap_display.cycles.arrival_time": " ;分;现在;15秒;30秒;45秒",
"create.flap_display.cycles.shortened_numbers": " ;K;M",
"create.flap_display.cycles.fluid_units": "mB;B ",
"create.flap_display.cycles.instant": " ; ",
@ -1753,7 +1753,7 @@
"create.super_glue.not_enough": "物品栏内强力胶不足",
"create.super_glue.success": "正在上胶……",
"create.gui.config.overlay1": "Hi :)",
"create.gui.config.overlay1": " :)",
"create.gui.config.overlay2": "这是一个叠加层例子",
"create.gui.config.overlay3": "点击拖拽你的鼠标",
"create.gui.config.overlay4": "来移动这个预览",
@ -1826,14 +1826,14 @@
"_": "->------------------------] Item Descriptions [------------------------<-",
"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.",
"item.create.example_item.tooltip": "UNLOCALIZED: EXAMPLE ITEM (just a marker that this tooltip exists)",
"item.create.example_item.tooltip.summary": "UNLOCALIZED: A brief description of the item. _Underscores_ highlight a term.",
"item.create.example_item.tooltip.condition1": "UNLOCALIZED: When this",
"item.create.example_item.tooltip.behaviour1": "UNLOCALIZED: Then this item does this. (behaviours show on shift)",
"item.create.example_item.tooltip.condition2": "UNLOCALIZED: And When this",
"item.create.example_item.tooltip.behaviour2": "UNLOCALIZED: You can add as many behaviours as you like",
"item.create.example_item.tooltip.control1": "UNLOCALIZED: When Ctrl pressed",
"item.create.example_item.tooltip.action1": "UNLOCALIZED: These controls are displayed.",
"block.create.wooden_bracket.tooltip": "木质支架",
"block.create.wooden_bracket.tooltip.summary": "用这种给人温馨感的木质支架_装饰_你的_传动杆__齿轮_和_管道_吧。",

View file

@ -25,10 +25,10 @@
"create:redstone_link",
"create:peculiar_bell",
"create:haunted_bell",
"#minecraft:doors",
"#minecraft:beds",
"minecraft:flower_pot",
"minecraft:bell",
"minecraft:cocoa"
"minecraft:cocoa",
"minecraft:flower_pot",
"#minecraft:beds",
"#minecraft:doors"
]
}

View file

@ -4,8 +4,9 @@
"create:blaze_burner",
"create:lit_blaze_burner",
"create:sail_frame",
"#minecraft:fences",
"minecraft:iron_bars",
"#minecraft:campfires",
"minecraft:iron_bars"
"#minecraft:fences",
"#minecraft:leaves"
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:cobweb",
"minecraft:powder_snow",
"#minecraft:fence_gates"
]
}

View file

@ -3,9 +3,9 @@
"values": [
"create:blaze_burner",
"create:lit_blaze_burner",
"#minecraft:fire",
"#minecraft:campfires",
"minecraft:magma_block",
"minecraft:lava"
"minecraft:lava",
"#minecraft:campfires",
"#minecraft:fire"
]
}

View file

@ -27,7 +27,7 @@
"create:placard",
"create:pulse_repeater",
"create:pulse_extender",
"#minecraft:signs",
"#minecraft:banners"
"#minecraft:banners",
"#minecraft:signs"
]
}

View file

@ -2,9 +2,9 @@
"replace": false,
"values": [
"minecraft:bee_nest",
"minecraft:vine",
"minecraft:cocoa",
"minecraft:moss_carpet",
"minecraft:shroomlight",
"minecraft:cocoa"
"minecraft:vine"
]
}

View file

@ -1,4 +0,0 @@
{
"replace": false,
"values": []
}

View file

@ -1,9 +1,6 @@
{
"replace": false,
"values": [
"#minecraft:rails",
"#minecraft:buttons",
"#minecraft:pressure_plates",
"minecraft:redstone_wire",
"minecraft:redstone_torch",
"minecraft:repeater",
@ -17,6 +14,9 @@
"minecraft:tripwire_hook",
"minecraft:daylight_detector",
"minecraft:target",
"minecraft:hopper"
"minecraft:hopper",
"#minecraft:buttons",
"#minecraft:pressure_plates",
"#minecraft:rails"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:milk_bucket",
"minecraft:potion"
]
}

View file

@ -2,16 +2,17 @@ package com.simibubi.create;
import static com.simibubi.create.AllInteractionBehaviours.interactionBehaviour;
import static com.simibubi.create.AllMovementBehaviours.movementBehaviour;
import static com.simibubi.create.AllTags.axeOnly;
import static com.simibubi.create.AllTags.axeOrPickaxe;
import static com.simibubi.create.AllTags.pickaxeOnly;
import static com.simibubi.create.AllTags.tagBlockAndItem;
import static com.simibubi.create.Create.REGISTRATE;
import static com.simibubi.create.content.AllSections.SCHEMATICS;
import static com.simibubi.create.content.logistics.block.display.AllDisplayBehaviours.assignDataBehaviour;
import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock;
import static com.simibubi.create.foundation.data.BlockStateGen.simpleCubeAll;
import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures;
import static com.simibubi.create.foundation.data.ModelGen.customItemModel;
import static com.simibubi.create.foundation.data.TagGen.axeOnly;
import static com.simibubi.create.foundation.data.TagGen.axeOrPickaxe;
import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly;
import static com.simibubi.create.foundation.data.TagGen.tagBlockAndItem;
import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.AllTags.AllItemTags;
@ -286,8 +287,9 @@ import net.minecraftforge.common.Tags;
public class AllBlocks {
private static final CreateRegistrate REGISTRATE = Create.registrate()
.creativeModeTab(() -> Create.BASE_CREATIVE_TAB);
static {
REGISTRATE.creativeModeTab(() -> Create.BASE_CREATIVE_TAB);
}
// Schematics

View file

@ -53,7 +53,7 @@ public class AllContainerTypes {
private static <C extends AbstractContainerMenu, S extends Screen & MenuAccess<C>> MenuEntry<C> register(
String name, ForgeMenuFactory<C> factory, NonNullSupplier<ScreenFactory<C, S>> screenFactory) {
return Create.registrate()
return Create.REGISTRATE
.menu(name, factory, screenFactory)
.register();
}

View file

@ -1,8 +1,9 @@
package com.simibubi.create;
import static com.simibubi.create.Create.REGISTRATE;
import com.simibubi.create.content.curiosities.armor.CapacityEnchantment;
import com.simibubi.create.content.curiosities.weapons.PotatoRecoveryEnchantment;
import com.simibubi.create.foundation.data.CreateRegistrate;
import com.tterrag.registrate.util.entry.RegistryEntry;
import net.minecraft.world.entity.EquipmentSlot;
@ -11,8 +12,6 @@ import net.minecraft.world.item.enchantment.EnchantmentCategory;
public class AllEnchantments {
private static final CreateRegistrate REGISTRATE = Create.registrate();
public static final RegistryEntry<PotatoRecoveryEnchantment> POTATO_RECOVERY = REGISTRATE.object("potato_recovery")
.enchantment(EnchantmentCategory.BOW, PotatoRecoveryEnchantment::new)
.addSlots(EquipmentSlot.MAINHAND, EquipmentSlot.OFFHAND)

View file

@ -73,7 +73,7 @@ public class AllEntityTypes {
MobCategory group, int range, int updateFrequency, boolean sendVelocity, boolean immuneToFire,
NonNullConsumer<EntityType.Builder<T>> propertyBuilder) {
String id = Lang.asId(name);
return (CreateEntityBuilder<T, ?>) Create.registrate()
return (CreateEntityBuilder<T, ?>) Create.REGISTRATE
.entity(id, factory, group)
.properties(b -> b.setTrackingRange(range)
.setUpdateInterval(updateFrequency)

View file

@ -1,5 +1,7 @@
package com.simibubi.create;
import static com.simibubi.create.Create.REGISTRATE;
import javax.annotation.Nullable;
import com.simibubi.create.AllTags.AllFluidTags;
@ -7,7 +9,6 @@ import com.simibubi.create.content.contraptions.fluids.VirtualFluid;
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid;
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.PotionFluidAttributes;
import com.simibubi.create.content.palettes.AllPaletteStoneTypes;
import com.simibubi.create.foundation.data.CreateRegistrate;
import com.tterrag.registrate.util.entry.FluidEntry;
import net.minecraft.core.BlockPos;
@ -20,8 +21,6 @@ import net.minecraftforge.fluids.ForgeFlowingFluid;
public class AllFluids {
private static final CreateRegistrate REGISTRATE = Create.registrate();
public static final FluidEntry<PotionFluid> POTION =
REGISTRATE.virtualFluid("potion", PotionFluidAttributes::new, PotionFluid::new)
.lang("Potion")

View file

@ -4,6 +4,7 @@ import static com.simibubi.create.AllTags.forgeItemTag;
import static com.simibubi.create.AllTags.AllItemTags.CREATE_INGOTS;
import static com.simibubi.create.AllTags.AllItemTags.CRUSHED_ORES;
import static com.simibubi.create.AllTags.AllItemTags.PLATES;
import static com.simibubi.create.Create.REGISTRATE;
import static com.simibubi.create.content.AllSections.CURIOSITIES;
import static com.simibubi.create.content.AllSections.KINETICS;
import static com.simibubi.create.content.AllSections.LOGISTICS;
@ -72,8 +73,9 @@ import net.minecraftforge.common.Tags;
public class AllItems {
private static final CreateRegistrate REGISTRATE = Create.registrate()
.creativeModeTab(() -> Create.BASE_CREATIVE_TAB);
static {
REGISTRATE.creativeModeTab(() -> Create.BASE_CREATIVE_TAB);
}
// Schematics

View file

@ -2,19 +2,17 @@ package com.simibubi.create;
import static com.simibubi.create.AllTags.NameSpace.FORGE;
import static com.simibubi.create.AllTags.NameSpace.MOD;
import static com.simibubi.create.AllTags.NameSpace.QUARK;
import static com.simibubi.create.AllTags.NameSpace.TIC;
import java.util.Collections;
import com.simibubi.create.foundation.data.CreateRegistrate;
import com.simibubi.create.foundation.data.recipe.Mods;
import com.simibubi.create.foundation.data.TagGen;
import com.simibubi.create.foundation.utility.Lang;
import com.tterrag.registrate.builders.BlockBuilder;
import com.tterrag.registrate.builders.ItemBuilder;
import com.tterrag.registrate.providers.ProviderType;
import com.tterrag.registrate.util.nullness.NonNullFunction;
import net.minecraft.data.tags.TagsProvider.TagAppender;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.FluidTags;
@ -23,23 +21,15 @@ import net.minecraft.tags.TagKey;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
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.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.Tags;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.IForgeRegistryEntry;
public class AllTags {
private static final CreateRegistrate REGISTRATE = Create.registrate()
.creativeModeTab(() -> Create.BASE_CREATIVE_TAB);
public static <T extends IForgeRegistryEntry<T>> TagKey<T> optionalTag(IForgeRegistry<T> registry,
ResourceLocation id) {
return registry.tags()
@ -62,34 +52,32 @@ public class AllTags {
return forgeTag(ForgeRegistries.FLUIDS, path);
}
@Deprecated(forRemoval = true)
public static <T extends Block, P> NonNullFunction<BlockBuilder<T, P>, BlockBuilder<T, P>> axeOrPickaxe() {
return b -> b.tag(BlockTags.MINEABLE_WITH_AXE)
.tag(BlockTags.MINEABLE_WITH_PICKAXE);
return TagGen.axeOrPickaxe();
}
@Deprecated(forRemoval = true)
public static <T extends Block, P> NonNullFunction<BlockBuilder<T, P>, BlockBuilder<T, P>> axeOnly() {
return b -> b.tag(BlockTags.MINEABLE_WITH_AXE);
return TagGen.axeOnly();
}
@Deprecated(forRemoval = true)
public static <T extends Block, P> NonNullFunction<BlockBuilder<T, P>, BlockBuilder<T, P>> pickaxeOnly() {
return b -> b.tag(BlockTags.MINEABLE_WITH_PICKAXE);
return TagGen.pickaxeOnly();
}
@Deprecated(forRemoval = true)
public static <T extends Block, P> NonNullFunction<BlockBuilder<T, P>, ItemBuilder<BlockItem, BlockBuilder<T, P>>> tagBlockAndItem(
String... path) {
return b -> {
for (String p : path)
b.tag(forgeBlockTag(p));
ItemBuilder<BlockItem, BlockBuilder<T, P>> item = b.item();
for (String p : path)
item.tag(forgeItemTag(p));
return item;
};
return TagGen.tagBlockAndItem(path);
}
public enum NameSpace {
MOD(Create.ID, false, true), FORGE("forge"), TIC("tconstruct"), QUARK("quark")
MOD(Create.ID, false, true),
FORGE("forge"),
TIC("tconstruct"),
QUARK("quark")
;
@ -106,25 +94,23 @@ public class AllTags {
this.optionalDefault = optionalDefault;
this.alwaysDatagenDefault = alwaysDatagenDefault;
}
}
public enum AllBlockTags {
BRITTLE,
CASING,
FAN_TRANSPARENT,
NON_MOVABLE,
MOVABLE_EMPTY_COLLIDER,
ORE_OVERRIDE_STONE,
PASSIVE_BOILER_HEATERS,
SAFE_NBT,
SEATS,
TOOLBOXES,
TREE_ATTACHMENTS,
VALVE_HANDLES,
WINDMILL_SAILS,
WINDOWABLE,
WRENCH_PICKUP,
TREE_ATTACHMENTS,
COPYCAT_ALLOW,
COPYCAT_DENY,
@ -132,11 +118,12 @@ public class AllTags {
WG_STONE(FORGE),
SLIMY_LOGS(TIC),
NON_DOUBLE_DOOR(NameSpace.QUARK),
NON_DOUBLE_DOOR(QUARK),
;
public final TagKey<Block> tag;
public final boolean alwaysDatagen;
AllBlockTags() {
this(MOD);
@ -161,9 +148,7 @@ public class AllTags {
} else {
tag = BlockTags.create(id);
}
if (alwaysDatagen) {
REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, prov -> prov.tag(tag));
}
this.alwaysDatagen = alwaysDatagen;
}
@SuppressWarnings("deprecation")
@ -176,42 +161,18 @@ public class AllTags {
return state.is(tag);
}
public void add(Block... values) {
REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, prov -> prov.tag(tag)
.add(values));
private static void init() {
}
public void addOptional(Mods mod, String... ids) {
REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, prov -> {
TagAppender<Block> builder = prov.tag(tag);
for (String id : ids)
builder.addOptional(mod.asResource(id));
});
}
public void includeIn(TagKey<Block> parent) {
REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, prov -> prov.tag(parent)
.addTag(tag));
}
public void includeIn(AllBlockTags parent) {
includeIn(parent.tag);
}
public void includeAll(TagKey<Block> child) {
REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, prov -> prov.tag(tag)
.addTag(child));
}
}
public enum AllItemTags {
BLAZE_BURNER_FUEL_REGULAR(MOD, "blaze_burner_fuel/regular"),
BLAZE_BURNER_FUEL_SPECIAL(MOD, "blaze_burner_fuel/special"),
CASING,
CREATE_INGOTS,
CRUSHED_ORES,
MODDED_STRIPPED_LOGS,
MODDED_STRIPPED_WOOD,
PRESSURIZED_AIR_SOURCES,
SANDPAPER,
SEATS,
@ -221,18 +182,17 @@ public class AllTags {
VALVE_HANDLES,
VANILLA_STRIPPED_LOGS,
VANILLA_STRIPPED_WOOD,
MODDED_STRIPPED_LOGS,
MODDED_STRIPPED_WOOD,
DEPLOYABLE_DRINK,
STRIPPED_LOGS(FORGE),
STRIPPED_WOOD(FORGE),
BEACON_PAYMENT(FORGE),
PLATES(FORGE),
WRENCH(FORGE, "tools/wrench")
;
public final TagKey<Item> tag;
public final boolean alwaysDatagen;
AllItemTags() {
this(MOD);
@ -257,9 +217,7 @@ public class AllTags {
} else {
tag = ItemTags.create(id);
}
if (alwaysDatagen) {
REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.tag(tag));
}
this.alwaysDatagen = alwaysDatagen;
}
@SuppressWarnings("deprecation")
@ -272,37 +230,11 @@ public class AllTags {
return stack.is(tag);
}
public void add(Item... values) {
REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.tag(tag)
.add(values));
private static void init() {
}
public void addOptional(Mods mod, String... ids) {
REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> {
TagAppender<Item> builder = prov.tag(tag);
for (String id : ids)
builder.addOptional(mod.asResource(id));
});
}
public void includeIn(TagKey<Item> parent) {
REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.tag(parent)
.addTag(tag));
}
public void includeIn(AllItemTags parent) {
includeIn(parent.tag);
}
public void includeAll(TagKey<Item> child) {
REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.tag(tag)
.addTag(child));
}
}
public enum AllFluidTags {
BOTTOMLESS_ALLOW(MOD, "bottomless/allow"),
BOTTOMLESS_DENY(MOD, "bottomless/deny"),
@ -311,6 +243,7 @@ public class AllTags {
;
public final TagKey<Fluid> tag;
public final boolean alwaysDatagen;
AllFluidTags() {
this(MOD);
@ -335,9 +268,7 @@ public class AllTags {
} else {
tag = FluidTags.create(id);
}
if (alwaysDatagen) {
REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, prov -> prov.tag(tag));
}
this.alwaysDatagen = alwaysDatagen;
}
@SuppressWarnings("deprecation")
@ -349,128 +280,13 @@ public class AllTags {
return state.is(tag);
}
public void add(Fluid... values) {
REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, prov -> prov.tag(tag)
.add(values));
}
public void includeIn(TagKey<Fluid> parent) {
REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, prov -> prov.tag(parent)
.addTag(tag));
}
public void includeIn(AllFluidTags parent) {
includeIn(parent.tag);
}
public void includeAll(TagKey<Fluid> child) {
REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, prov -> prov.tag(tag)
.addTag(child));
}
}
public static void register() {
AllFluidTags.BOTTOMLESS_ALLOW.add(Fluids.WATER, Fluids.LAVA);
AllItemTags.VANILLA_STRIPPED_LOGS.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);
AllItemTags.VANILLA_STRIPPED_LOGS.includeIn(AllItemTags.STRIPPED_LOGS);
AllItemTags.VANILLA_STRIPPED_WOOD.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);
AllItemTags.VANILLA_STRIPPED_WOOD.includeIn(AllItemTags.STRIPPED_WOOD);
AllItemTags.CREATE_INGOTS.includeIn(AllItemTags.BEACON_PAYMENT);
AllItemTags.CREATE_INGOTS.includeIn(Tags.Items.INGOTS);
AllItemTags.UPRIGHT_ON_BELT.add(Items.GLASS_BOTTLE, Items.POTION, Items.SPLASH_POTION, Items.LINGERING_POTION,
Items.HONEY_BOTTLE, Items.CAKE);
AllItemTags.SLEEPERS.add(Items.STONE_SLAB, Items.SMOOTH_STONE_SLAB, Items.ANDESITE_SLAB);
AllBlockTags.WINDMILL_SAILS.includeAll(BlockTags.WOOL);
AllBlockTags.BRITTLE.includeAll(BlockTags.DOORS);
AllBlockTags.BRITTLE.includeAll(BlockTags.BEDS);
AllBlockTags.BRITTLE.add(Blocks.FLOWER_POT, Blocks.BELL, Blocks.COCOA);
AllBlockTags.FAN_TRANSPARENT.includeAll(BlockTags.FENCES);
AllBlockTags.FAN_TRANSPARENT.includeAll(BlockTags.CAMPFIRES);
AllBlockTags.FAN_TRANSPARENT.add(Blocks.IRON_BARS);
AllBlockTags.PASSIVE_BOILER_HEATERS.includeAll(BlockTags.FIRE);
AllBlockTags.PASSIVE_BOILER_HEATERS.includeAll(BlockTags.CAMPFIRES);
AllBlockTags.PASSIVE_BOILER_HEATERS.add(Blocks.MAGMA_BLOCK, Blocks.LAVA);
AllBlockTags.SAFE_NBT.includeAll(BlockTags.SIGNS);
AllBlockTags.SAFE_NBT.includeAll(BlockTags.BANNERS);
AllBlockTags.COPYCAT_ALLOW.add(Blocks.BARREL);
AllBlockTags.COPYCAT_DENY.includeAll(BlockTags.CAULDRONS);
AllBlockTags.COPYCAT_DENY.includeAll(BlockTags.SAPLINGS);
AllBlockTags.COPYCAT_DENY.includeAll(BlockTags.CLIMBABLE);
AllBlockTags.WRENCH_PICKUP.includeAll(BlockTags.RAILS);
AllBlockTags.WRENCH_PICKUP.includeAll(BlockTags.BUTTONS);
AllBlockTags.WRENCH_PICKUP.includeAll(BlockTags.PRESSURE_PLATES);
AllBlockTags.WRENCH_PICKUP.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);
AllBlockTags.TREE_ATTACHMENTS.add(Blocks.BEE_NEST, Blocks.VINE, Blocks.MOSS_CARPET, Blocks.SHROOMLIGHT,
Blocks.COCOA);
AllBlockTags.ORE_OVERRIDE_STONE.includeAll(BlockTags.STONE_ORE_REPLACEABLES);
registerCompat();
}
private static void registerCompat() {
AllBlockTags.NON_MOVABLE.addOptional(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");
strippedWoodCompat(Mods.ARS_N, "blue_archwood", "purple_archwood", "green_archwood", "red_archwood");
strippedWoodCompat(Mods.BTN, "livingwood", "dreamwood");
strippedWoodCompat(Mods.FA, "cherrywood", "mysterywood");
strippedWoodCompat(Mods.HEX, "akashic");
strippedWoodCompat(Mods.ID, "menril");
strippedWoodCompat(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");
strippedWoodCompat(Mods.SG, "netherwood");
strippedWoodCompat(Mods.TF, "twilight_oak", "canopy", "mangrove", "dark", "time", "transformation", "mining",
"sorting");
strippedWoodCompat(Mods.TIC, "greenheart", "skyroot", "bloodshroom");
strippedWoodCompat(Mods.AP, "twisted");
strippedWoodCompat(Mods.Q, "azalea", "blossom");
strippedWoodCompat(Mods.ECO, "coconut", "walnut", "azalea");
strippedWoodCompat(Mods.BOP, "fir", "redwood", "cherry", "mahogany", "jacaranda", "palm", "willow", "dead",
"magic", "umbran", "hellbark");
strippedWoodCompat(Mods.BSK, "bluebright", "starlit", "frostbright", "lunar", "dusk", "maple", "cherry");
AllItemTags.MODDED_STRIPPED_LOGS.addOptional(Mods.BYG, "stripped_bulbis_stem");
AllItemTags.MODDED_STRIPPED_WOOD.addOptional(Mods.BYG, "stripped_bulbis_wood");
AllItemTags.MODDED_STRIPPED_LOGS.includeIn(AllItemTags.STRIPPED_LOGS);
AllItemTags.MODDED_STRIPPED_WOOD.includeIn(AllItemTags.STRIPPED_WOOD);
}
private static void strippedWoodCompat(Mods mod, String... woodtypes) {
for (int i = 0; i < woodtypes.length; i++) {
String type = woodtypes[i];
String strippedPre = mod.strippedIsSuffix ? "" : "stripped_";
String strippedPost = mod.strippedIsSuffix ? "_stripped" : "";
AllItemTags.MODDED_STRIPPED_LOGS.addOptional(mod, strippedPre + type + "_log" + strippedPost);
AllItemTags.MODDED_STRIPPED_WOOD.addOptional(mod,
strippedPre + type + (mod.omitWoodSuffix ? "" : "_wood") + strippedPost);
private static void init() {
}
}
public static void init() {
AllBlockTags.init();
AllItemTags.init();
AllFluidTags.init();
}
}

View file

@ -1,5 +1,6 @@
package com.simibubi.create;
import static com.simibubi.create.Create.REGISTRATE;
import static com.simibubi.create.content.logistics.block.display.AllDisplayBehaviours.assignDataBehaviourTE;
import com.simibubi.create.content.contraptions.base.CutoutRotatingInstance;
@ -54,6 +55,7 @@ import com.simibubi.create.content.contraptions.components.saw.SawInstance;
import com.simibubi.create.content.contraptions.components.saw.SawRenderer;
import com.simibubi.create.content.contraptions.components.saw.SawTileEntity;
import com.simibubi.create.content.contraptions.components.steam.PoweredShaftTileEntity;
import com.simibubi.create.content.contraptions.components.steam.SteamEngineInstance;
import com.simibubi.create.content.contraptions.components.steam.SteamEngineRenderer;
import com.simibubi.create.content.contraptions.components.steam.SteamEngineTileEntity;
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleRenderer;
@ -209,41 +211,41 @@ import com.tterrag.registrate.util.entry.BlockEntityEntry;
public class AllTileEntities {
// Schematics
public static final BlockEntityEntry<SchematicannonTileEntity> SCHEMATICANNON = Create.registrate()
public static final BlockEntityEntry<SchematicannonTileEntity> SCHEMATICANNON = REGISTRATE
.tileEntity("schematicannon", SchematicannonTileEntity::new)
.instance(() -> SchematicannonInstance::new)
.validBlocks(AllBlocks.SCHEMATICANNON)
.renderer(() -> SchematicannonRenderer::new)
.register();
public static final BlockEntityEntry<SchematicTableTileEntity> SCHEMATIC_TABLE = Create.registrate()
public static final BlockEntityEntry<SchematicTableTileEntity> SCHEMATIC_TABLE = REGISTRATE
.tileEntity("schematic_table", SchematicTableTileEntity::new)
.validBlocks(AllBlocks.SCHEMATIC_TABLE)
.register();
// Kinetics
public static final BlockEntityEntry<BracketedKineticTileEntity> BRACKETED_KINETIC = Create.registrate()
public static final BlockEntityEntry<BracketedKineticTileEntity> BRACKETED_KINETIC = REGISTRATE
.tileEntity("simple_kinetic", BracketedKineticTileEntity::new)
.instance(() -> BracketedKineticTileInstance::new, false)
.validBlocks(AllBlocks.SHAFT, AllBlocks.COGWHEEL, AllBlocks.LARGE_COGWHEEL)
.renderer(() -> BracketedKineticTileRenderer::new)
.register();
public static final BlockEntityEntry<CreativeMotorTileEntity> MOTOR = Create.registrate()
public static final BlockEntityEntry<CreativeMotorTileEntity> MOTOR = REGISTRATE
.tileEntity("motor", CreativeMotorTileEntity::new)
.instance(() -> HalfShaftInstance::new, false)
.validBlocks(AllBlocks.CREATIVE_MOTOR)
.renderer(() -> CreativeMotorRenderer::new)
.register();
public static final BlockEntityEntry<GearboxTileEntity> GEARBOX = Create.registrate()
public static final BlockEntityEntry<GearboxTileEntity> GEARBOX = REGISTRATE
.tileEntity("gearbox", GearboxTileEntity::new)
.instance(() -> GearboxInstance::new, false)
.validBlocks(AllBlocks.GEARBOX)
.renderer(() -> GearboxRenderer::new)
.register();
public static final BlockEntityEntry<KineticTileEntity> ENCASED_SHAFT = Create.registrate()
public static final BlockEntityEntry<KineticTileEntity> ENCASED_SHAFT = REGISTRATE
.tileEntity("encased_shaft", KineticTileEntity::new)
.instance(() -> ShaftInstance::new, false)
.validBlocks(AllBlocks.ANDESITE_ENCASED_SHAFT, AllBlocks.BRASS_ENCASED_SHAFT, AllBlocks.ENCASED_CHAIN_DRIVE,
@ -251,62 +253,62 @@ public class AllTileEntities {
.renderer(() -> ShaftRenderer::new)
.register();
public static final BlockEntityEntry<SimpleKineticTileEntity> ENCASED_COGWHEEL = Create.registrate()
public static final BlockEntityEntry<SimpleKineticTileEntity> ENCASED_COGWHEEL = REGISTRATE
.tileEntity("encased_cogwheel", SimpleKineticTileEntity::new)
.instance(() -> EncasedCogInstance::small, false)
.validBlocks(AllBlocks.ANDESITE_ENCASED_COGWHEEL, AllBlocks.BRASS_ENCASED_COGWHEEL)
.renderer(() -> EncasedCogRenderer::small)
.register();
public static final BlockEntityEntry<SimpleKineticTileEntity> ENCASED_LARGE_COGWHEEL = Create.registrate()
public static final BlockEntityEntry<SimpleKineticTileEntity> ENCASED_LARGE_COGWHEEL = REGISTRATE
.tileEntity("encased_large_cogwheel", SimpleKineticTileEntity::new)
.instance(() -> EncasedCogInstance::large, false)
.validBlocks(AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL, AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL)
.renderer(() -> EncasedCogRenderer::large)
.register();
public static final BlockEntityEntry<AdjustablePulleyTileEntity> ADJUSTABLE_PULLEY = Create.registrate()
public static final BlockEntityEntry<AdjustablePulleyTileEntity> ADJUSTABLE_PULLEY = REGISTRATE
.tileEntity("adjustable_pulley", AdjustablePulleyTileEntity::new)
.instance(() -> ShaftInstance::new, false)
.validBlocks(AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT)
.renderer(() -> ShaftRenderer::new)
.register();
public static final BlockEntityEntry<EncasedFanTileEntity> ENCASED_FAN = Create.registrate()
public static final BlockEntityEntry<EncasedFanTileEntity> ENCASED_FAN = REGISTRATE
.tileEntity("encased_fan", EncasedFanTileEntity::new)
.instance(() -> FanInstance::new, false)
.validBlocks(AllBlocks.ENCASED_FAN)
.renderer(() -> EncasedFanRenderer::new)
.register();
public static final BlockEntityEntry<NozzleTileEntity> NOZZLE = Create.registrate()
public static final BlockEntityEntry<NozzleTileEntity> NOZZLE = REGISTRATE
.tileEntity("nozzle", NozzleTileEntity::new)
.validBlocks(AllBlocks.NOZZLE)
// .renderer(() -> renderer)
.register();
public static final BlockEntityEntry<ClutchTileEntity> CLUTCH = Create.registrate()
public static final BlockEntityEntry<ClutchTileEntity> CLUTCH = REGISTRATE
.tileEntity("clutch", ClutchTileEntity::new)
.instance(() -> SplitShaftInstance::new, false)
.validBlocks(AllBlocks.CLUTCH)
.renderer(() -> SplitShaftRenderer::new)
.register();
public static final BlockEntityEntry<GearshiftTileEntity> GEARSHIFT = Create.registrate()
public static final BlockEntityEntry<GearshiftTileEntity> GEARSHIFT = REGISTRATE
.tileEntity("gearshift", GearshiftTileEntity::new)
.instance(() -> SplitShaftInstance::new, false)
.validBlocks(AllBlocks.GEARSHIFT)
.renderer(() -> SplitShaftRenderer::new)
.register();
public static final BlockEntityEntry<TurntableTileEntity> TURNTABLE = Create.registrate()
public static final BlockEntityEntry<TurntableTileEntity> TURNTABLE = REGISTRATE
.tileEntity("turntable", TurntableTileEntity::new)
.instance(() -> SingleRotatingInstance::new, false)
.validBlocks(AllBlocks.TURNTABLE)
.renderer(() -> KineticTileEntityRenderer::new)
.register();
public static final BlockEntityEntry<HandCrankTileEntity> HAND_CRANK = Create.registrate()
public static final BlockEntityEntry<HandCrankTileEntity> HAND_CRANK = REGISTRATE
.tileEntity("hand_crank", HandCrankTileEntity::new)
.instance(() -> HandCrankInstance::new)
.validBlocks(AllBlocks.HAND_CRANK, AllBlocks.COPPER_VALVE_HANDLE)
@ -314,227 +316,227 @@ public class AllTileEntities {
.renderer(() -> HandCrankRenderer::new)
.register();
public static final BlockEntityEntry<CuckooClockTileEntity> CUCKOO_CLOCK = Create.registrate()
public static final BlockEntityEntry<CuckooClockTileEntity> CUCKOO_CLOCK = REGISTRATE
.tileEntity("cuckoo_clock", CuckooClockTileEntity::new)
.instance(() -> HorizontalHalfShaftInstance::new)
.validBlocks(AllBlocks.CUCKOO_CLOCK, AllBlocks.MYSTERIOUS_CUCKOO_CLOCK)
.renderer(() -> CuckooClockRenderer::new)
.register();
public static final BlockEntityEntry<GantryShaftTileEntity> GANTRY_SHAFT = Create.registrate()
public static final BlockEntityEntry<GantryShaftTileEntity> GANTRY_SHAFT = REGISTRATE
.tileEntity("gantry_shaft", GantryShaftTileEntity::new)
.instance(() -> SingleRotatingInstance::new, false)
.validBlocks(AllBlocks.GANTRY_SHAFT)
.renderer(() -> KineticTileEntityRenderer::new)
.register();
public static final BlockEntityEntry<GantryCarriageTileEntity> GANTRY_PINION = Create.registrate()
public static final BlockEntityEntry<GantryCarriageTileEntity> GANTRY_PINION = REGISTRATE
.tileEntity("gantry_pinion", GantryCarriageTileEntity::new)
.instance(() -> GantryCarriageInstance::new)
.validBlocks(AllBlocks.GANTRY_CARRIAGE)
.renderer(() -> GantryCarriageRenderer::new)
.register();
public static final BlockEntityEntry<PumpTileEntity> MECHANICAL_PUMP = Create.registrate()
public static final BlockEntityEntry<PumpTileEntity> MECHANICAL_PUMP = REGISTRATE
.tileEntity("mechanical_pump", PumpTileEntity::new)
.instance(() -> PumpCogInstance::new)
.validBlocks(AllBlocks.MECHANICAL_PUMP)
.renderer(() -> PumpRenderer::new)
.register();
public static final BlockEntityEntry<SmartFluidPipeTileEntity> SMART_FLUID_PIPE = Create.registrate()
public static final BlockEntityEntry<SmartFluidPipeTileEntity> SMART_FLUID_PIPE = REGISTRATE
.tileEntity("smart_fluid_pipe", SmartFluidPipeTileEntity::new)
.validBlocks(AllBlocks.SMART_FLUID_PIPE)
.renderer(() -> SmartTileEntityRenderer::new)
.register();
public static final BlockEntityEntry<FluidPipeTileEntity> FLUID_PIPE = Create.registrate()
public static final BlockEntityEntry<FluidPipeTileEntity> FLUID_PIPE = REGISTRATE
.tileEntity("fluid_pipe", FluidPipeTileEntity::new)
.validBlocks(AllBlocks.FLUID_PIPE)
.register();
public static final BlockEntityEntry<FluidPipeTileEntity> ENCASED_FLUID_PIPE = Create.registrate()
public static final BlockEntityEntry<FluidPipeTileEntity> ENCASED_FLUID_PIPE = REGISTRATE
.tileEntity("encased_fluid_pipe", FluidPipeTileEntity::new)
.validBlocks(AllBlocks.ENCASED_FLUID_PIPE)
.register();
public static final BlockEntityEntry<StraightPipeTileEntity> GLASS_FLUID_PIPE = Create.registrate()
public static final BlockEntityEntry<StraightPipeTileEntity> GLASS_FLUID_PIPE = REGISTRATE
.tileEntity("glass_fluid_pipe", StraightPipeTileEntity::new)
.validBlocks(AllBlocks.GLASS_FLUID_PIPE)
.renderer(() -> TransparentStraightPipeRenderer::new)
.register();
public static final BlockEntityEntry<FluidValveTileEntity> FLUID_VALVE = Create.registrate()
public static final BlockEntityEntry<FluidValveTileEntity> FLUID_VALVE = REGISTRATE
.tileEntity("fluid_valve", FluidValveTileEntity::new)
.instance(() -> FluidValveInstance::new)
.validBlocks(AllBlocks.FLUID_VALVE)
.renderer(() -> FluidValveRenderer::new)
.register();
public static final BlockEntityEntry<FluidTankTileEntity> FLUID_TANK = Create.registrate()
public static final BlockEntityEntry<FluidTankTileEntity> FLUID_TANK = REGISTRATE
.tileEntity("fluid_tank", FluidTankTileEntity::new)
.validBlocks(AllBlocks.FLUID_TANK)
.renderer(() -> FluidTankRenderer::new)
.register();
public static final BlockEntityEntry<CreativeFluidTankTileEntity> CREATIVE_FLUID_TANK = Create.registrate()
public static final BlockEntityEntry<CreativeFluidTankTileEntity> CREATIVE_FLUID_TANK = REGISTRATE
.tileEntity("creative_fluid_tank", CreativeFluidTankTileEntity::new)
.validBlocks(AllBlocks.CREATIVE_FLUID_TANK)
.renderer(() -> FluidTankRenderer::new)
.register();
public static final BlockEntityEntry<HosePulleyTileEntity> HOSE_PULLEY = Create.registrate()
public static final BlockEntityEntry<HosePulleyTileEntity> HOSE_PULLEY = REGISTRATE
.tileEntity("hose_pulley", HosePulleyTileEntity::new)
.instance(() -> HosePulleyInstance::new)
.validBlocks(AllBlocks.HOSE_PULLEY)
.renderer(() -> HosePulleyRenderer::new)
.register();
public static final BlockEntityEntry<SpoutTileEntity> SPOUT = Create.registrate()
public static final BlockEntityEntry<SpoutTileEntity> SPOUT = REGISTRATE
.tileEntity("spout", SpoutTileEntity::new)
.validBlocks(AllBlocks.SPOUT)
.renderer(() -> SpoutRenderer::new)
.register();
public static final BlockEntityEntry<ItemDrainTileEntity> ITEM_DRAIN = Create.registrate()
public static final BlockEntityEntry<ItemDrainTileEntity> ITEM_DRAIN = REGISTRATE
.tileEntity("item_drain", ItemDrainTileEntity::new)
.validBlocks(AllBlocks.ITEM_DRAIN)
.renderer(() -> ItemDrainRenderer::new)
.register();
public static final BlockEntityEntry<BeltTileEntity> BELT = Create.registrate()
public static final BlockEntityEntry<BeltTileEntity> BELT = REGISTRATE
.tileEntity("belt", BeltTileEntity::new)
.instance(() -> BeltInstance::new, BeltTileEntity::shouldRenderNormally)
.validBlocks(AllBlocks.BELT)
.renderer(() -> BeltRenderer::new)
.register();
public static final BlockEntityEntry<ChuteTileEntity> CHUTE = Create.registrate()
public static final BlockEntityEntry<ChuteTileEntity> CHUTE = REGISTRATE
.tileEntity("chute", ChuteTileEntity::new)
.validBlocks(AllBlocks.CHUTE)
.renderer(() -> ChuteRenderer::new)
.register();
public static final BlockEntityEntry<SmartChuteTileEntity> SMART_CHUTE = Create.registrate()
public static final BlockEntityEntry<SmartChuteTileEntity> SMART_CHUTE = REGISTRATE
.tileEntity("smart_chute", SmartChuteTileEntity::new)
.validBlocks(AllBlocks.SMART_CHUTE)
.renderer(() -> SmartChuteRenderer::new)
.register();
public static final BlockEntityEntry<BeltTunnelTileEntity> ANDESITE_TUNNEL = Create.registrate()
public static final BlockEntityEntry<BeltTunnelTileEntity> ANDESITE_TUNNEL = REGISTRATE
.tileEntity("andesite_tunnel", BeltTunnelTileEntity::new)
.instance(() -> BeltTunnelInstance::new)
.validBlocks(AllBlocks.ANDESITE_TUNNEL)
.renderer(() -> BeltTunnelRenderer::new)
.register();
public static final BlockEntityEntry<BrassTunnelTileEntity> BRASS_TUNNEL = Create.registrate()
public static final BlockEntityEntry<BrassTunnelTileEntity> BRASS_TUNNEL = REGISTRATE
.tileEntity("brass_tunnel", BrassTunnelTileEntity::new)
.instance(() -> BeltTunnelInstance::new)
.validBlocks(AllBlocks.BRASS_TUNNEL)
.renderer(() -> BeltTunnelRenderer::new)
.register();
public static final BlockEntityEntry<ArmTileEntity> MECHANICAL_ARM = Create.registrate()
public static final BlockEntityEntry<ArmTileEntity> MECHANICAL_ARM = REGISTRATE
.tileEntity("mechanical_arm", ArmTileEntity::new)
.instance(() -> ArmInstance::new)
.validBlocks(AllBlocks.MECHANICAL_ARM)
.renderer(() -> ArmRenderer::new)
.register();
public static final BlockEntityEntry<ItemVaultTileEntity> ITEM_VAULT = Create.registrate()
public static final BlockEntityEntry<ItemVaultTileEntity> ITEM_VAULT = REGISTRATE
.tileEntity("item_vault", ItemVaultTileEntity::new)
.validBlocks(AllBlocks.ITEM_VAULT)
.register();
public static final BlockEntityEntry<MechanicalPistonTileEntity> MECHANICAL_PISTON = Create.registrate()
public static final BlockEntityEntry<MechanicalPistonTileEntity> MECHANICAL_PISTON = REGISTRATE
.tileEntity("mechanical_piston", MechanicalPistonTileEntity::new)
.instance(() -> ShaftInstance::new, false)
.validBlocks(AllBlocks.MECHANICAL_PISTON, AllBlocks.STICKY_MECHANICAL_PISTON)
.renderer(() -> MechanicalPistonRenderer::new)
.register();
public static final BlockEntityEntry<WindmillBearingTileEntity> WINDMILL_BEARING = Create.registrate()
public static final BlockEntityEntry<WindmillBearingTileEntity> WINDMILL_BEARING = REGISTRATE
.tileEntity("windmill_bearing", WindmillBearingTileEntity::new)
.instance(() -> BearingInstance::new)
.validBlocks(AllBlocks.WINDMILL_BEARING)
.renderer(() -> BearingRenderer::new)
.register();
public static final BlockEntityEntry<MechanicalBearingTileEntity> MECHANICAL_BEARING = Create.registrate()
public static final BlockEntityEntry<MechanicalBearingTileEntity> MECHANICAL_BEARING = REGISTRATE
.tileEntity("mechanical_bearing", MechanicalBearingTileEntity::new)
.instance(() -> BearingInstance::new)
.validBlocks(AllBlocks.MECHANICAL_BEARING)
.renderer(() -> BearingRenderer::new)
.register();
public static final BlockEntityEntry<ClockworkBearingTileEntity> CLOCKWORK_BEARING = Create.registrate()
public static final BlockEntityEntry<ClockworkBearingTileEntity> CLOCKWORK_BEARING = REGISTRATE
.tileEntity("clockwork_bearing", ClockworkBearingTileEntity::new)
.instance(() -> BearingInstance::new)
.validBlocks(AllBlocks.CLOCKWORK_BEARING)
.renderer(() -> BearingRenderer::new)
.register();
public static final BlockEntityEntry<PulleyTileEntity> ROPE_PULLEY = Create.registrate()
public static final BlockEntityEntry<PulleyTileEntity> ROPE_PULLEY = REGISTRATE
.tileEntity("rope_pulley", PulleyTileEntity::new)
.instance(() -> RopePulleyInstance::new, false)
.validBlocks(AllBlocks.ROPE_PULLEY)
.renderer(() -> PulleyRenderer::new)
.register();
public static final BlockEntityEntry<ElevatorPulleyTileEntity> ELEVATOR_PULLEY = Create.registrate()
.tileEntity("elevator_pulley", ElevatorPulleyTileEntity::new)
public static final BlockEntityEntry<ElevatorPulleyTileEntity> ELEVATOR_PULLEY =
REGISTRATE.tileEntity("elevator_pulley", ElevatorPulleyTileEntity::new)
// .instance(() -> ElevatorPulleyInstance::new, false)
.validBlocks(AllBlocks.ELEVATOR_PULLEY)
.renderer(() -> ElevatorPulleyRenderer::new)
.register();
.validBlocks(AllBlocks.ELEVATOR_PULLEY)
.renderer(() -> ElevatorPulleyRenderer::new)
.register();
public static final BlockEntityEntry<ElevatorContactTileEntity> ELEVATOR_CONTACT = Create.registrate()
.tileEntity("elevator_contact", ElevatorContactTileEntity::new)
.validBlocks(AllBlocks.ELEVATOR_CONTACT)
.register();
public static final BlockEntityEntry<ElevatorContactTileEntity> ELEVATOR_CONTACT =
REGISTRATE.tileEntity("elevator_contact", ElevatorContactTileEntity::new)
.validBlocks(AllBlocks.ELEVATOR_CONTACT)
.register();
public static final BlockEntityEntry<ChassisTileEntity> CHASSIS = Create.registrate()
public static final BlockEntityEntry<ChassisTileEntity> CHASSIS = REGISTRATE
.tileEntity("chassis", ChassisTileEntity::new)
.validBlocks(AllBlocks.RADIAL_CHASSIS, AllBlocks.LINEAR_CHASSIS, AllBlocks.SECONDARY_LINEAR_CHASSIS)
// .renderer(() -> renderer)
.register();
public static final BlockEntityEntry<StickerTileEntity> STICKER = Create.registrate()
public static final BlockEntityEntry<StickerTileEntity> STICKER = REGISTRATE
.tileEntity("sticker", StickerTileEntity::new)
.instance(() -> StickerInstance::new, false)
.validBlocks(AllBlocks.STICKER)
.renderer(() -> StickerRenderer::new)
.register();
public static final BlockEntityEntry<ContraptionControlsTileEntity> CONTRAPTION_CONTROLS = Create.registrate()
.tileEntity("contraption_controls", ContraptionControlsTileEntity::new)
.validBlocks(AllBlocks.CONTRAPTION_CONTROLS)
.renderer(() -> ContraptionControlsRenderer::new)
.register();
public static final BlockEntityEntry<DrillTileEntity> DRILL = Create.registrate()
public static final BlockEntityEntry<ContraptionControlsTileEntity> CONTRAPTION_CONTROLS =
REGISTRATE.tileEntity("contraption_controls", ContraptionControlsTileEntity::new)
.validBlocks(AllBlocks.CONTRAPTION_CONTROLS)
.renderer(() -> ContraptionControlsRenderer::new)
.register();
public static final BlockEntityEntry<DrillTileEntity> DRILL = REGISTRATE
.tileEntity("drill", DrillTileEntity::new)
.instance(() -> DrillInstance::new, false)
.validBlocks(AllBlocks.MECHANICAL_DRILL)
.renderer(() -> DrillRenderer::new)
.register();
public static final BlockEntityEntry<SawTileEntity> SAW = Create.registrate()
public static final BlockEntityEntry<SawTileEntity> SAW = REGISTRATE
.tileEntity("saw", SawTileEntity::new)
.instance(() -> SawInstance::new)
.validBlocks(AllBlocks.MECHANICAL_SAW)
.renderer(() -> SawRenderer::new)
.register();
public static final BlockEntityEntry<HarvesterTileEntity> HARVESTER = Create.registrate()
public static final BlockEntityEntry<HarvesterTileEntity> HARVESTER = REGISTRATE
.tileEntity("harvester", HarvesterTileEntity::new)
.validBlocks(AllBlocks.MECHANICAL_HARVESTER)
.renderer(() -> HarvesterRenderer::new)
.register();
public static final BlockEntityEntry<PortableItemInterfaceTileEntity> PORTABLE_STORAGE_INTERFACE =
Create.registrate()
REGISTRATE
.tileEntity("portable_storage_interface", PortableItemInterfaceTileEntity::new)
.instance(() -> PSIInstance::new)
.validBlocks(AllBlocks.PORTABLE_STORAGE_INTERFACE)
@ -542,47 +544,48 @@ public class AllTileEntities {
.register();
public static final BlockEntityEntry<PortableFluidInterfaceTileEntity> PORTABLE_FLUID_INTERFACE =
Create.registrate()
REGISTRATE
.tileEntity("portable_fluid_interface", PortableFluidInterfaceTileEntity::new)
.instance(() -> PSIInstance::new)
.validBlocks(AllBlocks.PORTABLE_FLUID_INTERFACE)
.renderer(() -> PortableStorageInterfaceRenderer::new)
.register();
public static final BlockEntityEntry<SteamEngineTileEntity> STEAM_ENGINE = Create.registrate()
public static final BlockEntityEntry<SteamEngineTileEntity> STEAM_ENGINE = REGISTRATE
.tileEntity("steam_engine", SteamEngineTileEntity::new)
.instance(() -> SteamEngineInstance::new, false)
.validBlocks(AllBlocks.STEAM_ENGINE)
.renderer(() -> SteamEngineRenderer::new)
.register();
public static final BlockEntityEntry<WhistleTileEntity> STEAM_WHISTLE = Create.registrate()
public static final BlockEntityEntry<WhistleTileEntity> STEAM_WHISTLE = REGISTRATE
.tileEntity("steam_whistle", WhistleTileEntity::new)
.validBlocks(AllBlocks.STEAM_WHISTLE)
.renderer(() -> WhistleRenderer::new)
.register();
public static final BlockEntityEntry<PoweredShaftTileEntity> POWERED_SHAFT = Create.registrate()
public static final BlockEntityEntry<PoweredShaftTileEntity> POWERED_SHAFT = REGISTRATE
.tileEntity("powered_shaft", PoweredShaftTileEntity::new)
.instance(() -> SingleRotatingInstance::new, false)
.validBlocks(AllBlocks.POWERED_SHAFT)
.renderer(() -> KineticTileEntityRenderer::new)
.register();
public static final BlockEntityEntry<FlywheelTileEntity> FLYWHEEL = Create.registrate()
public static final BlockEntityEntry<FlywheelTileEntity> FLYWHEEL = REGISTRATE
.tileEntity("flywheel", FlywheelTileEntity::new)
.instance(() -> FlyWheelInstance::new, false)
.validBlocks(AllBlocks.FLYWHEEL)
.renderer(() -> FlywheelRenderer::new)
.register();
public static final BlockEntityEntry<MillstoneTileEntity> MILLSTONE = Create.registrate()
public static final BlockEntityEntry<MillstoneTileEntity> MILLSTONE = REGISTRATE
.tileEntity("millstone", MillstoneTileEntity::new)
.instance(() -> MillStoneCogInstance::new, false)
.validBlocks(AllBlocks.MILLSTONE)
.renderer(() -> MillstoneRenderer::new)
.register();
public static final BlockEntityEntry<CrushingWheelTileEntity> CRUSHING_WHEEL = Create.registrate()
public static final BlockEntityEntry<CrushingWheelTileEntity> CRUSHING_WHEEL = REGISTRATE
.tileEntity("crushing_wheel", CrushingWheelTileEntity::new)
.instance(() -> CutoutRotatingInstance::new, false)
.validBlocks(AllBlocks.CRUSHING_WHEEL)
@ -590,114 +593,114 @@ public class AllTileEntities {
.register();
public static final BlockEntityEntry<CrushingWheelControllerTileEntity> CRUSHING_WHEEL_CONTROLLER =
Create.registrate()
REGISTRATE
.tileEntity("crushing_wheel_controller", CrushingWheelControllerTileEntity::new)
.validBlocks(AllBlocks.CRUSHING_WHEEL_CONTROLLER)
// .renderer(() -> renderer)
.register();
public static final BlockEntityEntry<WaterWheelTileEntity> WATER_WHEEL = Create.registrate()
public static final BlockEntityEntry<WaterWheelTileEntity> WATER_WHEEL = REGISTRATE
.tileEntity("water_wheel", WaterWheelTileEntity::new)
.instance(() -> CutoutRotatingInstance::new, false)
.validBlocks(AllBlocks.WATER_WHEEL)
.renderer(() -> KineticTileEntityRenderer::new)
.register();
public static final BlockEntityEntry<MechanicalPressTileEntity> MECHANICAL_PRESS = Create.registrate()
public static final BlockEntityEntry<MechanicalPressTileEntity> MECHANICAL_PRESS = REGISTRATE
.tileEntity("mechanical_press", MechanicalPressTileEntity::new)
.instance(() -> PressInstance::new)
.validBlocks(AllBlocks.MECHANICAL_PRESS)
.renderer(() -> MechanicalPressRenderer::new)
.register();
public static final BlockEntityEntry<MechanicalMixerTileEntity> MECHANICAL_MIXER = Create.registrate()
public static final BlockEntityEntry<MechanicalMixerTileEntity> MECHANICAL_MIXER = REGISTRATE
.tileEntity("mechanical_mixer", MechanicalMixerTileEntity::new)
.instance(() -> MixerInstance::new)
.validBlocks(AllBlocks.MECHANICAL_MIXER)
.renderer(() -> MechanicalMixerRenderer::new)
.register();
public static final BlockEntityEntry<DeployerTileEntity> DEPLOYER = Create.registrate()
public static final BlockEntityEntry<DeployerTileEntity> DEPLOYER = REGISTRATE
.tileEntity("deployer", DeployerTileEntity::new)
.instance(() -> DeployerInstance::new)
.validBlocks(AllBlocks.DEPLOYER)
.renderer(() -> DeployerRenderer::new)
.register();
public static final BlockEntityEntry<BasinTileEntity> BASIN = Create.registrate()
public static final BlockEntityEntry<BasinTileEntity> BASIN = REGISTRATE
.tileEntity("basin", BasinTileEntity::new)
.validBlocks(AllBlocks.BASIN)
.renderer(() -> BasinRenderer::new)
.register();
public static final BlockEntityEntry<BlazeBurnerTileEntity> HEATER = Create.registrate()
public static final BlockEntityEntry<BlazeBurnerTileEntity> HEATER = REGISTRATE
.tileEntity("blaze_heater", BlazeBurnerTileEntity::new)
.validBlocks(AllBlocks.BLAZE_BURNER)
.renderer(() -> BlazeBurnerRenderer::new)
.register();
public static final BlockEntityEntry<MechanicalCrafterTileEntity> MECHANICAL_CRAFTER = Create.registrate()
public static final BlockEntityEntry<MechanicalCrafterTileEntity> MECHANICAL_CRAFTER = REGISTRATE
.tileEntity("mechanical_crafter", MechanicalCrafterTileEntity::new)
.instance(() -> MechanicalCrafterInstance::new)
.validBlocks(AllBlocks.MECHANICAL_CRAFTER)
.renderer(() -> MechanicalCrafterRenderer::new)
.register();
public static final BlockEntityEntry<SequencedGearshiftTileEntity> SEQUENCED_GEARSHIFT = Create.registrate()
public static final BlockEntityEntry<SequencedGearshiftTileEntity> SEQUENCED_GEARSHIFT = REGISTRATE
.tileEntity("sequenced_gearshift", SequencedGearshiftTileEntity::new)
.instance(() -> SplitShaftInstance::new, false)
.validBlocks(AllBlocks.SEQUENCED_GEARSHIFT)
.renderer(() -> SplitShaftRenderer::new)
.register();
public static final BlockEntityEntry<SpeedControllerTileEntity> ROTATION_SPEED_CONTROLLER = Create.registrate()
public static final BlockEntityEntry<SpeedControllerTileEntity> ROTATION_SPEED_CONTROLLER = REGISTRATE
.tileEntity("rotation_speed_controller", SpeedControllerTileEntity::new)
.instance(() -> ShaftInstance::new)
.validBlocks(AllBlocks.ROTATION_SPEED_CONTROLLER)
.renderer(() -> SpeedControllerRenderer::new)
.register();
public static final BlockEntityEntry<SpeedGaugeTileEntity> SPEEDOMETER = Create.registrate()
public static final BlockEntityEntry<SpeedGaugeTileEntity> SPEEDOMETER = REGISTRATE
.tileEntity("speedometer", SpeedGaugeTileEntity::new)
.instance(() -> GaugeInstance.Speed::new)
.validBlocks(AllBlocks.SPEEDOMETER)
.renderer(() -> GaugeRenderer::speed)
.register();
public static final BlockEntityEntry<StressGaugeTileEntity> STRESSOMETER = Create.registrate()
public static final BlockEntityEntry<StressGaugeTileEntity> STRESSOMETER = REGISTRATE
.tileEntity("stressometer", StressGaugeTileEntity::new)
.instance(() -> GaugeInstance.Stress::new)
.validBlocks(AllBlocks.STRESSOMETER)
.renderer(() -> GaugeRenderer::stress)
.register();
public static final BlockEntityEntry<AnalogLeverTileEntity> ANALOG_LEVER = Create.registrate()
public static final BlockEntityEntry<AnalogLeverTileEntity> ANALOG_LEVER = REGISTRATE
.tileEntity("analog_lever", AnalogLeverTileEntity::new)
.instance(() -> AnalogLeverInstance::new, false)
.validBlocks(AllBlocks.ANALOG_LEVER)
.renderer(() -> AnalogLeverRenderer::new)
.register();
public static final BlockEntityEntry<PlacardTileEntity> PLACARD = Create.registrate()
public static final BlockEntityEntry<PlacardTileEntity> PLACARD = REGISTRATE
.tileEntity("placard", PlacardTileEntity::new)
.validBlocks(AllBlocks.PLACARD)
.renderer(() -> PlacardRenderer::new)
.register();
public static final BlockEntityEntry<CartAssemblerTileEntity> CART_ASSEMBLER = Create.registrate()
public static final BlockEntityEntry<CartAssemblerTileEntity> CART_ASSEMBLER = REGISTRATE
.tileEntity("cart_assembler", CartAssemblerTileEntity::new)
.validBlocks(AllBlocks.CART_ASSEMBLER)
// .renderer(() -> renderer)
.register();
// Logistics
public static final BlockEntityEntry<RedstoneLinkTileEntity> REDSTONE_LINK = Create.registrate()
public static final BlockEntityEntry<RedstoneLinkTileEntity> REDSTONE_LINK = REGISTRATE
.tileEntity("redstone_link", RedstoneLinkTileEntity::new)
.validBlocks(AllBlocks.REDSTONE_LINK)
.renderer(() -> SmartTileEntityRenderer::new)
.register();
public static final BlockEntityEntry<NixieTubeTileEntity> NIXIE_TUBE = Create.registrate()
public static final BlockEntityEntry<NixieTubeTileEntity> NIXIE_TUBE = REGISTRATE
.tileEntity("nixie_tube", NixieTubeTileEntity::new)
.validBlocks(AllBlocks.ORANGE_NIXIE_TUBE)
.validBlocks(AllBlocks.NIXIE_TUBES.toArray())
@ -706,38 +709,38 @@ public class AllTileEntities {
.onRegister(assignDataBehaviourTE(new NixieTubeDisplaySource()))
.register();
public static final BlockEntityEntry<DisplayLinkTileEntity> DISPLAY_LINK = Create.registrate()
public static final BlockEntityEntry<DisplayLinkTileEntity> DISPLAY_LINK = REGISTRATE
.tileEntity("display_link", DisplayLinkTileEntity::new)
.validBlocks(AllBlocks.DISPLAY_LINK)
.renderer(() -> DisplayLinkRenderer::new)
.register();
public static final BlockEntityEntry<StockpileSwitchTileEntity> STOCKPILE_SWITCH = Create.registrate()
public static final BlockEntityEntry<StockpileSwitchTileEntity> STOCKPILE_SWITCH = REGISTRATE
.tileEntity("stockpile_switch", StockpileSwitchTileEntity::new)
.validBlocks(AllBlocks.STOCKPILE_SWITCH)
.renderer(() -> SmartTileEntityRenderer::new)
.register();
public static final BlockEntityEntry<CreativeCrateTileEntity> CREATIVE_CRATE = Create.registrate()
public static final BlockEntityEntry<CreativeCrateTileEntity> CREATIVE_CRATE = REGISTRATE
.tileEntity("creative_crate", CreativeCrateTileEntity::new)
.validBlocks(AllBlocks.CREATIVE_CRATE)
.renderer(() -> SmartTileEntityRenderer::new)
.register();
public static final BlockEntityEntry<DepotTileEntity> DEPOT = Create.registrate()
public static final BlockEntityEntry<DepotTileEntity> DEPOT = REGISTRATE
.tileEntity("depot", DepotTileEntity::new)
.validBlocks(AllBlocks.DEPOT)
.renderer(() -> DepotRenderer::new)
.register();
public static final BlockEntityEntry<EjectorTileEntity> WEIGHTED_EJECTOR = Create.registrate()
public static final BlockEntityEntry<EjectorTileEntity> WEIGHTED_EJECTOR = REGISTRATE
.tileEntity("weighted_ejector", EjectorTileEntity::new)
.instance(() -> EjectorInstance::new)
.validBlocks(AllBlocks.WEIGHTED_EJECTOR)
.renderer(() -> EjectorRenderer::new)
.register();
public static final BlockEntityEntry<FunnelTileEntity> FUNNEL = Create.registrate()
public static final BlockEntityEntry<FunnelTileEntity> FUNNEL = REGISTRATE
.tileEntity("funnel", FunnelTileEntity::new)
.instance(() -> FunnelInstance::new)
.validBlocks(AllBlocks.BRASS_FUNNEL, AllBlocks.BRASS_BELT_FUNNEL, AllBlocks.ANDESITE_FUNNEL,
@ -745,108 +748,108 @@ public class AllTileEntities {
.renderer(() -> FunnelRenderer::new)
.register();
public static final BlockEntityEntry<ContentObserverTileEntity> CONTENT_OBSERVER = Create.registrate()
public static final BlockEntityEntry<ContentObserverTileEntity> CONTENT_OBSERVER = REGISTRATE
.tileEntity("content_observer", ContentObserverTileEntity::new)
.validBlocks(AllBlocks.CONTENT_OBSERVER)
.renderer(() -> SmartTileEntityRenderer::new)
.register();
public static final BlockEntityEntry<PulseExtenderTileEntity> PULSE_EXTENDER = Create.registrate()
public static final BlockEntityEntry<PulseExtenderTileEntity> PULSE_EXTENDER = REGISTRATE
.tileEntity("pulse_extender", PulseExtenderTileEntity::new)
.instance(() -> BrassDiodeInstance::new, false)
.validBlocks(AllBlocks.PULSE_EXTENDER)
.renderer(() -> BrassDiodeRenderer::new)
.register();
public static final BlockEntityEntry<PulseRepeaterTileEntity> PULSE_REPEATER = Create.registrate()
public static final BlockEntityEntry<PulseRepeaterTileEntity> PULSE_REPEATER = REGISTRATE
.tileEntity("pulse_repeater", PulseRepeaterTileEntity::new)
.instance(() -> BrassDiodeInstance::new, false)
.validBlocks(AllBlocks.PULSE_REPEATER)
.renderer(() -> BrassDiodeRenderer::new)
.register();
public static final BlockEntityEntry<LecternControllerTileEntity> LECTERN_CONTROLLER = Create.registrate()
public static final BlockEntityEntry<LecternControllerTileEntity> LECTERN_CONTROLLER = REGISTRATE
.tileEntity("lectern_controller", LecternControllerTileEntity::new)
.validBlocks(AllBlocks.LECTERN_CONTROLLER)
.renderer(() -> LecternControllerRenderer::new)
.register();
// Curiosities
public static final BlockEntityEntry<BacktankTileEntity> BACKTANK = Create.registrate()
public static final BlockEntityEntry<BacktankTileEntity> BACKTANK = REGISTRATE
.tileEntity("backtank", BacktankTileEntity::new)
.instance(() -> BacktankInstance::new)
.validBlocks(AllBlocks.COPPER_BACKTANK, AllBlocks.NETHERITE_BACKTANK)
.renderer(() -> BacktankRenderer::new)
.register();
public static final BlockEntityEntry<PeculiarBellTileEntity> PECULIAR_BELL = Create.registrate()
public static final BlockEntityEntry<PeculiarBellTileEntity> PECULIAR_BELL = REGISTRATE
.tileEntity("peculiar_bell", PeculiarBellTileEntity::new)
.validBlocks(AllBlocks.PECULIAR_BELL)
.renderer(() -> BellRenderer::new)
.register();
public static final BlockEntityEntry<HauntedBellTileEntity> HAUNTED_BELL = Create.registrate()
public static final BlockEntityEntry<HauntedBellTileEntity> HAUNTED_BELL = REGISTRATE
.tileEntity("cursed_bell", HauntedBellTileEntity::new)
.validBlocks(AllBlocks.HAUNTED_BELL)
.renderer(() -> BellRenderer::new)
.register();
public static final BlockEntityEntry<ToolboxTileEntity> TOOLBOX = Create.registrate()
public static final BlockEntityEntry<ToolboxTileEntity> TOOLBOX = REGISTRATE
.tileEntity("toolbox", ToolboxTileEntity::new)
.instance(() -> ToolBoxInstance::new, false)
.validBlocks(AllBlocks.TOOLBOXES.toArray())
.renderer(() -> ToolboxRenderer::new)
.register();
public static final BlockEntityEntry<TrackTileEntity> TRACK = Create.registrate()
public static final BlockEntityEntry<TrackTileEntity> TRACK = REGISTRATE
.tileEntity("track", TrackTileEntity::new)
.instance(() -> TrackInstance::new)
.renderer(() -> TrackRenderer::new)
.validBlocks(AllBlocks.TRACK)
.register();
public static final BlockEntityEntry<FakeTrackTileEntity> FAKE_TRACK = Create.registrate()
public static final BlockEntityEntry<FakeTrackTileEntity> FAKE_TRACK = REGISTRATE
.tileEntity("fake_track", FakeTrackTileEntity::new)
.validBlocks(AllBlocks.FAKE_TRACK)
.register();
public static final BlockEntityEntry<StandardBogeyTileEntity> BOGEY = Create.registrate()
public static final BlockEntityEntry<StandardBogeyTileEntity> BOGEY = REGISTRATE
.tileEntity("bogey", StandardBogeyTileEntity::new)
.renderer(() -> BogeyTileEntityRenderer::new)
.validBlocks(AllBlocks.SMALL_BOGEY, AllBlocks.LARGE_BOGEY)
.register();
public static final BlockEntityEntry<StationTileEntity> TRACK_STATION = Create.registrate()
public static final BlockEntityEntry<StationTileEntity> TRACK_STATION = REGISTRATE
.tileEntity("track_station", StationTileEntity::new)
.renderer(() -> StationRenderer::new)
.validBlocks(AllBlocks.TRACK_STATION)
.register();
public static final BlockEntityEntry<SlidingDoorTileEntity> SLIDING_DOOR = Create.registrate()
public static final BlockEntityEntry<SlidingDoorTileEntity> SLIDING_DOOR = REGISTRATE
.tileEntity("sliding_door", SlidingDoorTileEntity::new)
.renderer(() -> SlidingDoorRenderer::new)
.validBlocks(AllBlocks.TRAIN_DOOR, AllBlocks.FRAMED_GLASS_DOOR)
.register();
public static final BlockEntityEntry<CopycatTileEntity> UNIVERSAL_FRAME = Create.registrate()
public static final BlockEntityEntry<CopycatTileEntity> UNIVERSAL_FRAME = REGISTRATE
.tileEntity("universal_frame", CopycatTileEntity::new)
.validBlocks(AllBlocks.COPYCAT_PANEL, AllBlocks.COPYCAT_STEP)
.register();
public static final BlockEntityEntry<FlapDisplayTileEntity> FLAP_DISPLAY = Create.registrate()
public static final BlockEntityEntry<FlapDisplayTileEntity> FLAP_DISPLAY = REGISTRATE
.tileEntity("flap_display", FlapDisplayTileEntity::new)
.instance(() -> MechanicalCrafterInstance::new)
.renderer(() -> FlapDisplayRenderer::new)
.validBlocks(AllBlocks.DISPLAY_BOARD)
.register();
public static final BlockEntityEntry<SignalTileEntity> TRACK_SIGNAL = Create.registrate()
public static final BlockEntityEntry<SignalTileEntity> TRACK_SIGNAL = REGISTRATE
.tileEntity("track_signal", SignalTileEntity::new)
.renderer(() -> SignalRenderer::new)
.validBlocks(AllBlocks.TRACK_SIGNAL)
.register();
public static final BlockEntityEntry<TrackObserverTileEntity> TRACK_OBSERVER = Create.registrate()
public static final BlockEntityEntry<TrackObserverTileEntity> TRACK_OBSERVER = REGISTRATE
.tileEntity("track_observer", TrackObserverTileEntity::new)
.renderer(() -> TrackObserverRenderer::new)
.validBlocks(AllBlocks.TRACK_OBSERVER)

View file

@ -2,11 +2,11 @@ package com.simibubi.create;
import java.util.Random;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.slf4j.Logger;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.mojang.logging.LogUtils;
import com.simibubi.create.api.behaviour.BlockSpoutingBehaviour;
import com.simibubi.create.compat.Mods;
import com.simibubi.create.compat.curios.Curios;
@ -29,8 +29,10 @@ import com.simibubi.create.foundation.block.CopperRegistries;
import com.simibubi.create.foundation.command.ServerLagger;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.ContraptionMovementSetting;
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.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;
@ -41,7 +43,6 @@ import com.simibubi.create.foundation.worldgen.AllFeatures;
import com.simibubi.create.foundation.worldgen.AllOreFeatureConfigEntries;
import com.simibubi.create.foundation.worldgen.AllPlacementModifiers;
import com.simibubi.create.foundation.worldgen.BuiltinRegistration;
import com.tterrag.registrate.util.nullness.NonNullSupplier;
import net.minecraft.data.DataGenerator;
import net.minecraft.resources.ResourceLocation;
@ -68,12 +69,18 @@ public class Create {
public static final String NAME = "Create";
public static final String VERSION = "0.5.1-unstable";
public static final Logger LOGGER = LogManager.getLogger();
public static final Logger LOGGER = LogUtils.getLogger();
public static final Gson GSON = new GsonBuilder().setPrettyPrinting()
.disableHtmlEscaping()
.create();
/** Use the {@link Random} of a local {@link Level} or {@link Entity} or create one */
@Deprecated
public static final Random RANDOM = new Random();
public static final CreateRegistrate REGISTRATE = CreateRegistrate.create(ID);
public static final CreativeModeTab BASE_CREATIVE_TAB = new CreateItemGroup();
public static final CreativeModeTab PALETTES_CREATIVE_TAB = new PalettesItemGroup();
@ -82,11 +89,6 @@ public class Create {
public static final TorquePropagator TORQUE_PROPAGATOR = new TorquePropagator();
public static final GlobalRailwayManager RAILWAYS = new GlobalRailwayManager();
public static final ServerLagger LAGGER = new ServerLagger();
/** Use the {@link Random} of a local {@link Level} or {@link Entity} or create one */
@Deprecated
public static final Random RANDOM = new Random();
private static final NonNullSupplier<CreateRegistrate> REGISTRATE = CreateRegistrate.lazy(ID);
public Create() {
onCtor();
@ -99,11 +101,13 @@ public class Create {
.getModEventBus();
IEventBus forgeEventBus = MinecraftForge.EVENT_BUS;
REGISTRATE.registerEventListeners(modEventBus);
AllSoundEvents.prepare();
AllTags.init();
AllBlocks.register();
AllItems.register();
AllFluids.register();
AllTags.register();
AllPaletteBlocks.register();
AllContainerTypes.register();
AllEntityTypes.register();
@ -138,7 +142,7 @@ public class Create {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> CreateClient.onCtorClient(modEventBus, forgeEventBus));
Mods.CURIOS.executeIfInstalled(() -> Curios::init);
Mods.CURIOS.executeIfInstalled(() -> () -> Curios.init(modEventBus, forgeEventBus));
}
public static void init(final FMLCommonSetupEvent event) {
@ -155,9 +159,10 @@ public class Create {
}
public static void gatherData(GatherDataEvent event) {
TagGen.datagen();
DataGenerator gen = event.getGenerator();
if (event.includeClient()) {
gen.addProvider(new LangMerger(gen));
gen.addProvider(new LangMerger(gen, ID, "Create", AllLangPartials.values()));
gen.addProvider(AllSoundEvents.provider(gen));
}
if (event.includeServer()) {
@ -170,10 +175,6 @@ public class Create {
}
}
public static CreateRegistrate registrate() {
return REGISTRATE.get();
}
public static ResourceLocation asResource(String path) {
return new ResourceLocation(ID, path);
}

View file

@ -13,7 +13,9 @@ import net.minecraftforge.fml.ModList;
public enum Mods {
DYNAMICTREES,
TCONSTRUCT,
CURIOS;
CURIOS,
STORAGEDRAWERS,
XLPACKETS;
/**
* @return a boolean of whether the mod is loaded or not based on mod id

View file

@ -1,40 +1,44 @@
package com.simibubi.create.compat.curios;
import java.util.concurrent.atomic.AtomicBoolean;
import com.simibubi.create.AllItems;
import com.simibubi.create.content.contraptions.goggles.GogglesItem;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.InterModComms;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import top.theillusivec4.curios.api.CuriosCapability;
import top.theillusivec4.curios.api.SlotTypeMessage;
import top.theillusivec4.curios.api.SlotTypePreset;
import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler;
public class Curios {
public static void init() {
FMLJavaModLoadingContext.get().getModEventBus().addListener(Curios::onInterModEnqueue);
FMLJavaModLoadingContext.get().getModEventBus().addListener(Curios::onClientSetup);
public static void init(IEventBus modEventBus, IEventBus forgeEventBus) {
modEventBus.addListener(Curios::onInterModEnqueue);
modEventBus.addListener(Curios::onClientSetup);
GogglesItem.addIsWearingPredicate(player -> {
AtomicBoolean hasGoggles = new AtomicBoolean(false);
player.getCapability(CuriosCapability.INVENTORY).ifPresent(handler -> {
ICurioStacksHandler stacksHandler = handler.getCurios().get("head");
if(stacksHandler != null) hasGoggles.set(stacksHandler.getStacks().getStackInSlot(0).getItem() == AllItems.GOGGLES.get());
});
return hasGoggles.get();
});
GogglesItem.addIsWearingPredicate(player -> player.getCapability(CuriosCapability.INVENTORY)
.map(handler -> {
ICurioStacksHandler stacksHandler = handler.getCurios()
.get("head");
if (stacksHandler == null)
return false;
if (stacksHandler.getSlots() == 0)
return false;
return AllItems.GOGGLES.isIn(stacksHandler.getStacks()
.getStackInSlot(0));
})
.orElse(false));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(CuriosRenderers::onLayerRegister));
DistExecutor.unsafeRunWhenOn(Dist.CLIENT,
() -> () -> modEventBus.addListener(CuriosRenderers::onLayerRegister));
}
private static void onInterModEnqueue(final InterModEnqueueEvent event) {
InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.HEAD.getMessageBuilder().build());
InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.HEAD.getMessageBuilder()
.build());
}
private static void onClientSetup(final FMLClientSetupEvent event) {

View file

@ -1,10 +1,13 @@
package com.simibubi.create.compat.jei.category;
import java.util.List;
import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.compat.jei.category.animations.AnimatedDeployer;
import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.utility.Lang;
@ -34,22 +37,28 @@ public class DeployingCategory extends CreateRecipeCategory<DeployerApplicationR
.addSlot(RecipeIngredientRole.INPUT, 51, 5)
.setBackground(getRenderedSlot(), -1, -1)
.addIngredients(recipe.getRequiredHeldItem());
builder
.addSlot(RecipeIngredientRole.OUTPUT, 132, 51)
.setBackground(getRenderedSlot(recipe.getRollableResults().get(0)), -1, -1)
.addItemStack(recipe.getResultItem())
.addTooltipCallback(addStochasticTooltip(recipe.getRollableResults().get(0)));
if (recipe.shouldKeepHeldItem()) {
handItemSlot.addTooltipCallback((recipeSlotView, tooltip) -> tooltip.add(1, Lang.translateDirect("recipe.deploying.not_consumed").withStyle(ChatFormatting.GOLD)));
List<ProcessingOutput> results = recipe.getRollableResults();
boolean single = results.size() == 1;
for (int i = 0; i < results.size(); i++) {
ProcessingOutput output = results.get(i);
int xOffset = i % 2 == 0 ? 0 : 19;
int yOffset = (i / 2) * -19;
builder.addSlot(RecipeIngredientRole.OUTPUT, single ? 132 : 132 + xOffset, 51 + yOffset)
.setBackground(getRenderedSlot(output), -1, -1)
.addItemStack(output.getStack())
.addTooltipCallback(addStochasticTooltip(output));
}
if (recipe.shouldKeepHeldItem())
handItemSlot.addTooltipCallback((recipeSlotView, tooltip) -> tooltip.add(1, Lang.translateDirect("recipe.deploying.not_consumed").withStyle(ChatFormatting.GOLD)));
}
@Override
public void draw(DeployerApplicationRecipe recipe, IRecipeSlotsView recipeSlotsView, PoseStack matrixStack, double mouseX, double mouseY) {
AllGuiTextures.JEI_SHADOW.render(matrixStack, 62, 57);
AllGuiTextures.JEI_DOWN_ARROW.render(matrixStack, 126, 29);
AllGuiTextures.JEI_DOWN_ARROW.render(matrixStack, 126, 29 + (recipe.getRollableResults().size() > 2 ? -19 : 0));
deployer.draw(matrixStack, getBackground().getWidth() / 2 - 13, 22);
}

View file

@ -1,5 +1,6 @@
package com.simibubi.create.compat.jei.category;
import java.util.List;
import java.util.Optional;
import javax.annotation.ParametersAreNonnullByDefault;
@ -8,6 +9,7 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.gui.element.GuiGameElement;
import com.simibubi.create.foundation.utility.Lang;
@ -46,10 +48,17 @@ public class ItemApplicationCategory extends CreateRecipeCategory<ItemApplicatio
: (view, tooltip) -> {}
);
builder.addSlot(RecipeIngredientRole.OUTPUT, 132, 38)
.setBackground(getRenderedSlot(recipe.getRollableResults().get(0)), -1, -1)
.addItemStack(recipe.getResultItem())
.addTooltipCallback(addStochasticTooltip(recipe.getRollableResults().get(0)));
List<ProcessingOutput> results = recipe.getRollableResults();
boolean single = results.size() == 1;
for (int i = 0; i < results.size(); i++) {
ProcessingOutput output = results.get(i);
int xOffset = i % 2 == 0 ? 0 : 19;
int yOffset = (i / 2) * -19;
builder.addSlot(RecipeIngredientRole.OUTPUT, single ? 132 : 132 + xOffset, 38 + yOffset)
.setBackground(getRenderedSlot(output), -1, -1)
.addItemStack(output.getStack())
.addTooltipCallback(addStochasticTooltip(output));
}
}
@Override

View file

@ -0,0 +1,41 @@
package com.simibubi.create.compat.storageDrawers;
import com.simibubi.create.compat.Mods;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.items.IItemHandler;
public class StorageDrawers {
public static boolean isDrawer(BlockEntity tile) {
return tile != null && Mods.STORAGEDRAWERS.asId()
.equals(tile.getType()
.getRegistryName()
.getNamespace());
}
public static float getTrueFillLevel(IItemHandler inv, FilteringBehaviour filtering) {
float occupied = 0;
float totalSpace = 0;
for (int slot = 1; slot < inv.getSlots(); slot++) {
ItemStack stackInSlot = inv.getStackInSlot(slot);
int space = inv.getSlotLimit(slot);
int count = stackInSlot.getCount();
if (space == 0)
continue;
totalSpace += 1;
if (filtering.test(stackInSlot))
occupied += count * (1f / space);
}
if (totalSpace == 0)
return 0;
return occupied / totalSpace;
}
}

View file

@ -16,12 +16,12 @@ public enum AllSections {
/** Item transport and other Utility */
LOGISTICS(Palette.Yellow),
/** Tools for strucuture movement and replication */
/** Tools for structure movement and replication */
SCHEMATICS(Palette.Blue),
/** Decorative blocks */
PALETTES(Palette.Green),
/** Helpful gadgets and other shenanigans */
CURIOSITIES(Palette.Purple),
@ -33,7 +33,7 @@ public enum AllSections {
;
private Palette tooltipPalette;
private final Palette tooltipPalette;
private AllSections(Palette tooltipPalette) {
this.tooltipPalette = tooltipPalette;
@ -51,12 +51,12 @@ public enum AllSections {
}
static AllSections ofItem(Item item) {
return Create.registrate()
return Create.REGISTRATE
.getSection(item);
}
static AllSections ofBlock(Block block) {
return Create.registrate()
return Create.REGISTRATE
.getSection(block);
}

View file

@ -61,7 +61,11 @@ public class KineticDebugger {
}
public static boolean isActive() {
return Minecraft.getInstance().options.renderDebug && AllConfigs.CLIENT.rainbowDebug.get();
return isF3DebugModeActive() && AllConfigs.CLIENT.rainbowDebug.get();
}
public static boolean isF3DebugModeActive() {
return Minecraft.getInstance().options.renderDebug;
}
public static KineticTileEntity getSelectedTE() {

View file

@ -1,6 +1,7 @@
package com.simibubi.create.content.contraptions.base;
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.item.ItemDescription.Palette;
import net.minecraft.core.BlockPos;
@ -44,6 +45,11 @@ public abstract class KineticBlock extends Block implements IRotate {
kineticTileEntity.preventSpeedUpdate = 2;
}
}
@Override
public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) {
ITE.onRemove(pState, pLevel, pPos, pNewState);
}
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {

View file

@ -184,18 +184,13 @@ public class KineticTileEntity extends SmartTileEntity implements IHaveGoggleInf
}
@Override
public void setRemoved() {
super.setRemoved();
}
@Override
protected void setRemovedNotDueToChunkUnload() {
public void remove() {
if (!level.isClientSide) {
if (hasNetwork())
getOrCreateNetwork().remove(this);
detachKinetics();
}
super.setRemovedNotDueToChunkUnload();
super.remove();
}
@Override

View file

@ -73,10 +73,10 @@ public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity {
}
@Override
public void setRemoved() {
public void invalidate() {
super.invalidate();
if (!level.isClientSide && destroyProgress != 0)
level.destroyBlockProgress(breakerId, breakingPos, -1);
super.setRemoved();
}
@Override

View file

@ -112,8 +112,8 @@ public abstract class PortableStorageInterfaceTileEntity extends SmartTileEntity
}
@Override
public void setRemoved() {
super.setRemoved();
public void invalidate() {
super.invalidate();
invalidateCapability();
}

View file

@ -95,7 +95,7 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock
}
}
if (state.hasBlockEntity() && state.getBlock() != newState.getBlock()) {
if (state.hasBlockEntity() && !state.is(newState.getBlock())) {
MechanicalCrafterTileEntity crafter = CrafterHelper.getCrafter(worldIn, pos);
if (crafter != null) {
if (crafter.covered)
@ -121,9 +121,9 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock
ConnectedInputHandler.toggleConnection(worldIn, pos, otherPos);
}
worldIn.removeBlockEntity(pos);
}
super.onRemove(state, worldIn, pos, newState, isMoving);
}
public static Pointing pointingFromFacing(Direction pointingFace, Direction blockFacing) {

View file

@ -215,9 +215,9 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity {
}
@Override
public void setRemoved() {
public void invalidate() {
super.invalidate();
invSupplier.invalidate();
super.setRemoved();
}
public int getCountDownSpeed() {

View file

@ -70,6 +70,9 @@ public class HandCrankBlock extends DirectionalKineticBlock
@Override
public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn,
BlockHitResult hit) {
if (player.isSpectator())
return InteractionResult.PASS;
withTileEntityDo(worldIn, pos, te -> te.turn(player.isShiftKeyDown()));
player.causeFoodExhaustion(getRotationSpeed() * AllConfigs.SERVER.kinetics.crankHungerMultiplier.getF());

View file

@ -47,17 +47,14 @@ public class CrushingWheelBlock extends RotatedPillarKineticBlock implements ITE
@Override
public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
for (Direction d : Iterate.directions) {
if (d.getAxis() == state.getValue(AXIS))
continue;
if (AllBlocks.CRUSHING_WHEEL_CONTROLLER.has(worldIn.getBlockState(pos.relative(d))))
worldIn.setBlockAndUpdate(pos.relative(d), Blocks.AIR.defaultBlockState());
worldIn.removeBlock(pos.relative(d), isMoving);
}
if (state.hasBlockEntity() && state.getBlock() != newState.getBlock()) {
worldIn.removeBlockEntity(pos);
}
super.onRemove(state, worldIn, pos, newState, isMoving);
}
public void updateControllers(BlockState state, Level world, BlockPos pos, Direction side) {

View file

@ -32,7 +32,7 @@ public class DeployerApplicationRecipe extends ItemApplicationRecipe implements
@Override
protected int getMaxOutputCount() {
return 2;
return 4;
}
public static DeployerApplicationRecipe convert(Recipe<?> sandpaperRecipe) {

View file

@ -8,8 +8,6 @@ import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock;
import com.simibubi.create.content.contraptions.components.AssemblyOperatorUseContext;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
@ -61,20 +59,9 @@ public class DeployerBlock extends DirectionalAxisKineticBlock implements ITE<De
@Override
public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
if (state.hasBlockEntity() && state.getBlock() != newState.getBlock()) {
withTileEntityDo(worldIn, pos, te -> {
if (te.player != null && !isMoving) {
te.player.getInventory()
.dropAll();
te.overflowItems.forEach(itemstack -> te.player.drop(itemstack, true, false));
te.player.discard();
te.player = null;
}
});
TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE);
worldIn.removeBlockEntity(pos);
}
if (!isMoving && !state.is(newState.getBlock()))
withTileEntityDo(worldIn, pos, DeployerTileEntity::discardPlayer);
super.onRemove(state, worldIn, pos, newState, isMoving);
}
@Override

View file

@ -13,6 +13,7 @@ import org.apache.commons.lang3.tuple.Pair;
import com.google.common.collect.Multimap;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.AllTags.AllItemTags;
import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode;
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlockItem;
@ -180,12 +181,18 @@ public class DeployerHandler {
.consumesAction())
success = true;
}
if (!success && stack.isEdible() && entity instanceof Player) {
Player playerEntity = (Player) entity;
FoodProperties foodProperties = item.getFoodProperties(stack, player);
if (playerEntity.canEat(foodProperties.canAlwaysEat())) {
playerEntity.eat(world, stack);
if (!success && entity instanceof Player playerEntity) {
if (stack.isEdible()) {
FoodProperties foodProperties = item.getFoodProperties(stack, player);
if (playerEntity.canEat(foodProperties.canAlwaysEat())) {
playerEntity.eat(world, stack);
player.spawnedItemEffects = stack.copy();
success = true;
}
}
if (AllItemTags.DEPLOYABLE_DRINK.matches(stack)) {
player.spawnedItemEffects = stack.copy();
player.setItemInHand(hand, stack.finishUsingItem(world, playerEntity));
success = true;
}
}
@ -229,8 +236,7 @@ public class DeployerHandler {
LeftClickBlock event = ForgeHooks.onLeftClickBlock(player, clickedPos, face);
if (event.isCanceled())
return;
if (BlockHelper.extinguishFire(world, player, clickedPos, face)) // FIXME: is there an equivalent in world,
// as there was in 1.15?
if (BlockHelper.extinguishFire(world, player, clickedPos, face))
return;
if (event.getUseBlock() != DENY)
clickedState.attack(world, clickedPos, player);
@ -320,6 +326,8 @@ public class DeployerHandler {
}
if (item == Items.ENDER_PEARL)
return;
if (AllItemTags.DEPLOYABLE_DRINK.matches(item))
return;
// buckets create their own ray, We use a fake wall to contain the active area
Level itemUseWorld = world;

View file

@ -434,9 +434,19 @@ public class DeployerTileEntity extends KineticTileEntity {
return super.createRenderBoundingBox().inflate(3);
}
public void discardPlayer() {
if (player == null)
return;
player.getInventory()
.dropAll();
overflowItems.forEach(itemstack -> player.drop(itemstack, true, false));
player.discard();
player = null;
}
@Override
public void setRemoved() {
super.setRemoved();
public void invalidate() {
super.invalidate();
if (invHandler != null)
invHandler.invalidate();
}

View file

@ -43,8 +43,6 @@ public class ManualApplicationRecipe extends ItemApplicationRecipe {
BlockPos pos = event.getPos();
BlockState blockState = level.getBlockState(pos);
if (level.isClientSide())
return;
if (heldItem.isEmpty())
return;
if (blockState.isAir())
@ -65,6 +63,12 @@ public class ManualApplicationRecipe extends ItemApplicationRecipe {
if (foundRecipe.isEmpty())
return;
event.setCancellationResult(InteractionResult.SUCCESS);
event.setCanceled(true);
if (level.isClientSide())
return;
level.playSound(null, pos, SoundEvents.COPPER_BREAK, SoundSource.PLAYERS, 1, 1.45f);
ManualApplicationRecipe recipe = (ManualApplicationRecipe) foundRecipe.get();
@ -75,9 +79,11 @@ public class ManualApplicationRecipe extends ItemApplicationRecipe {
recipe.rollResults()
.forEach(stack -> Block.popResource(level, pos, stack));
boolean creative = event.getPlayer() != null && event.getPlayer()
.isCreative();
boolean unbreakable = heldItem.hasTag() && heldItem.getTag()
.getBoolean("Unbreakable");
boolean keepHeld = recipe.shouldKeepHeldItem();
boolean keepHeld = recipe.shouldKeepHeldItem() || creative;
if (!unbreakable && !keepHeld) {
if (heldItem.isDamageableItem())
@ -87,9 +93,6 @@ public class ManualApplicationRecipe extends ItemApplicationRecipe {
}
awardAdvancements(event.getPlayer(), transformedBlock);
event.setCancellationResult(InteractionResult.SUCCESS);
event.setCanceled(true);
}
private static void awardAdvancements(Player player, BlockState placed) {

View file

@ -36,14 +36,6 @@ public class EncasedFanBlock extends DirectionalKineticBlock implements ITE<Enca
blockUpdate(stateIn, worldIn, pos);
}
@Override
public void onRemove(BlockState state, Level world, BlockPos pos, BlockState p_196243_4_, boolean p_196243_5_) {
if (state.hasBlockEntity() && (state.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasBlockEntity())) {
withTileEntityDo(world, pos, EncasedFanTileEntity::updateChute);
world.removeBlockEntity(pos);
}
}
@Override
public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos,
boolean isMoving) {

View file

@ -84,6 +84,12 @@ public class EncasedFanTileEntity extends KineticTileEntity implements IAirCurre
return speed > 0 ? facing : facing.getOpposite();
}
@Override
public void remove() {
super.remove();
updateChute();
}
@Override
public boolean isSourceRemoved() {
return remove;

View file

@ -5,7 +5,6 @@ import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.contraptions.base.KineticBlock;
import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.item.ItemHelper;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
@ -118,18 +117,6 @@ public class MillstoneBlock extends KineticBlock implements ITE<MillstoneTileEnt
itemEntity.setItem(remainder);
}
@Override
public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
if (state.hasBlockEntity() && state.getBlock() != newState.getBlock()) {
withTileEntityDo(worldIn, pos, te -> {
ItemHelper.dropContents(worldIn, pos, te.inputInv);
ItemHelper.dropContents(worldIn, pos, te.outputInv);
});
worldIn.removeBlockEntity(pos);
}
}
@Override
public Axis getRotationAxis(BlockState state) {
return Axis.Y;

View file

@ -6,6 +6,7 @@ import java.util.Optional;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.item.ItemHelper;
import com.simibubi.create.foundation.sound.SoundScapes;
import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
@ -116,10 +117,17 @@ public class MillstoneTileEntity extends KineticTileEntity {
}
@Override
public void setRemoved() {
super.setRemoved();
public void invalidate() {
super.invalidate();
capability.invalidate();
}
@Override
public void destroy() {
super.destroy();
ItemHelper.dropContents(level, worldPosition, inputInv);
ItemHelper.dropContents(level, worldPosition, outputInv);
}
private void process() {
RecipeWrapper inventoryIn = new RecipeWrapper(inputInv);

View file

@ -7,9 +7,6 @@ import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock;
import com.simibubi.create.content.contraptions.components.actors.DrillBlock;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.item.ItemHelper;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
@ -102,16 +99,6 @@ public class SawBlock extends DirectionalAxisKineticBlock implements ITE<SawTile
: super.hasShaftTowards(world, pos, state, face);
}
@Override
public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
if (!state.hasBlockEntity() || state.getBlock() == newState.getBlock())
return;
withTileEntityDo(worldIn, pos, te -> ItemHelper.dropContents(worldIn, pos, te.inventory));
TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE);
worldIn.removeBlockEntity(pos);
}
@Override
public Class<SawTileEntity> getTileEntityClass() {
return SawTileEntity.class;

View file

@ -15,7 +15,6 @@ import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableList;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.AllTags;
import com.simibubi.create.content.contraptions.components.actors.BlockBreakingKineticTileEntity;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingInventory;
@ -256,9 +255,15 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
}
@Override
public void setRemoved() {
public void invalidate() {
super.invalidate();
invProvider.invalidate();
super.setRemoved();
}
@Override
public void destroy() {
super.destroy();
ItemHelper.dropContents(level, worldPosition, inventory);
}
@Override

View file

@ -0,0 +1,103 @@
package com.simibubi.create.content.contraptions.components.steam;
import com.jozufozu.flywheel.api.MaterialManager;
import com.jozufozu.flywheel.api.instance.DynamicInstance;
import com.jozufozu.flywheel.backend.instancing.blockentity.BlockEntityInstance;
import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.materials.model.ModelData;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.foundation.utility.AngleHelper;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.util.Mth;
public class SteamEngineInstance extends BlockEntityInstance<SteamEngineTileEntity> implements DynamicInstance {
protected final ModelData piston;
protected final ModelData linkage;
protected final ModelData connector;
public SteamEngineInstance(MaterialManager materialManager, SteamEngineTileEntity blockEntity) {
super(materialManager, blockEntity);
piston = materialManager.defaultSolid()
.material(Materials.TRANSFORMED)
.getModel(AllBlockPartials.ENGINE_PISTON, blockState)
.createInstance();
linkage = materialManager.defaultSolid()
.material(Materials.TRANSFORMED)
.getModel(AllBlockPartials.ENGINE_LINKAGE, blockState)
.createInstance();
connector = materialManager.defaultSolid()
.material(Materials.TRANSFORMED)
.getModel(AllBlockPartials.ENGINE_CONNECTOR, blockState)
.createInstance();
}
@Override
public void beginFrame() {
Float angle = blockEntity.getTargetAngle();
if (angle == null) {
piston.setEmptyTransform();
linkage.setEmptyTransform();
connector.setEmptyTransform();
return;
}
Direction facing = SteamEngineBlock.getFacing(blockState);
Axis facingAxis = facing.getAxis();
Axis axis = Axis.Y;
PoweredShaftTileEntity shaft = blockEntity.getShaft();
if (shaft != null)
axis = KineticTileEntityRenderer.getRotationAxisOf(shaft);
boolean roll90 = facingAxis.isHorizontal() && axis == Axis.Y || facingAxis.isVertical() && axis == Axis.Z;
float sine = Mth.sin(angle);
float sine2 = Mth.sin(angle - Mth.HALF_PI);
float piston = ((1 - sine) / 4) * 24 / 16f;
transformed(this.piston, facing, roll90)
.translate(0, piston, 0);
transformed(linkage, facing, roll90)
.centre()
.translate(0, 1, 0)
.unCentre()
.translate(0, piston, 0)
.translate(0, 4 / 16f, 8 / 16f)
.rotateX(sine2 * 23f)
.translate(0, -4 / 16f, -8 / 16f);
transformed(connector, facing, roll90)
.translate(0, 2, 0)
.centre()
.rotateXRadians(-angle + Mth.HALF_PI)
.unCentre();
}
protected ModelData transformed(ModelData modelData, Direction facing, boolean roll90) {
return modelData.loadIdentity()
.translate(getInstancePosition())
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing) + 90)
.rotateY(roll90 ? -90 : 0)
.unCentre();
}
@Override
public void updateLight() {
relight(pos, piston, linkage, connector);
}
@Override
protected void remove() {
piston.delete();
linkage.delete();
connector.delete();
}
}

View file

@ -1,5 +1,6 @@
package com.simibubi.create.content.contraptions.components.steam;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.core.PartialModel;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
@ -25,7 +26,12 @@ public class SteamEngineRenderer extends SafeTileEntityRenderer<SteamEngineTileE
@Override
protected void renderSafe(SteamEngineTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
int light, int overlay) {
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
if (Backend.canUseInstancing(te.getLevel()))
return;
Float angle = te.getTargetAngle();
if (angle == null)
return;
BlockState blockState = te.getBlockState();
Direction facing = SteamEngineBlock.getFacing(blockState);
@ -36,22 +42,20 @@ public class SteamEngineRenderer extends SafeTileEntityRenderer<SteamEngineTileE
if (shaft != null)
axis = KineticTileEntityRenderer.getRotationAxisOf(shaft);
Float angle = te.getTargetAngle();
if (angle == null)
return;
boolean roll90 = facingAxis.isHorizontal() && axis == Axis.Y || facingAxis.isVertical() && axis == Axis.Z;
float sine = Mth.sin(angle);
float sine2 = Mth.sin(angle - Mth.HALF_PI);
float piston = ((1 - sine) / 4) * 24 / 16f;
boolean roll90 = facingAxis.isHorizontal() && axis == Axis.Y || facingAxis.isVertical() && axis == Axis.Z;
transformed(AllBlockPartials.ENGINE_PISTON, blockState, facing).rotateY(roll90 ? -90 : 0)
.unCentre()
.light(light)
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
transformed(AllBlockPartials.ENGINE_PISTON, blockState, facing, roll90)
.translate(0, piston, 0)
.light(light)
.renderInto(ms, vb);
transformed(AllBlockPartials.ENGINE_LINKAGE, blockState, facing).rotateY(roll90 ? -90 : 0)
transformed(AllBlockPartials.ENGINE_LINKAGE, blockState, facing, roll90)
.centre()
.translate(0, 1, 0)
.unCentre()
.translate(0, piston, 0)
@ -61,21 +65,22 @@ public class SteamEngineRenderer extends SafeTileEntityRenderer<SteamEngineTileE
.light(light)
.renderInto(ms, vb);
transformed(AllBlockPartials.ENGINE_CONNECTOR, blockState, facing).rotateY(roll90 ? -90 : 0)
.unCentre()
.light(light)
transformed(AllBlockPartials.ENGINE_CONNECTOR, blockState, facing, roll90)
.translate(0, 2, 0)
.centre()
.rotateXRadians(-angle + Mth.HALF_PI)
.unCentre()
.light(light)
.renderInto(ms, vb);
}
private SuperByteBuffer transformed(PartialModel model, BlockState blockState, Direction facing) {
private SuperByteBuffer transformed(PartialModel model, BlockState blockState, Direction facing, boolean roll90) {
return CachedBufferer.partial(model, blockState)
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing) + 90);
.rotateX(AngleHelper.verticalAngle(facing) + 90)
.rotateY(roll90 ? -90 : 0)
.unCentre();
}
@Override

View file

@ -134,11 +134,11 @@ public class SteamEngineTileEntity extends SmartTileEntity implements IHaveGoggl
}
@Override
protected void setRemovedNotDueToChunkUnload() {
public void remove() {
PoweredShaftTileEntity shaft = getShaft();
if (shaft != null)
shaft.remove(worldPosition);
super.setRemovedNotDueToChunkUnload();
super.remove();
}
@Override
@ -219,18 +219,16 @@ public class SteamEngineTileEntity extends SmartTileEntity implements IHaveGoggl
Direction facing = SteamEngineBlock.getFacing(getBlockState());
for (int i = 0; i < 2; i++) {
Vec3 offset = VecHelper.rotate(new Vec3(0, 0, 1).add(VecHelper.offsetRandomly(Vec3.ZERO, level.random, 1)
.multiply(1, 1, 0)
.normalize()
.scale(.5f)), AngleHelper.verticalAngle(facing), Axis.X);
offset = VecHelper.rotate(offset, AngleHelper.horizontalAngle(facing), Axis.Y);
Vec3 v = offset.scale(.5f)
.add(Vec3.atCenterOf(worldPosition));
Vec3 m = offset.subtract(Vec3.atLowerCornerOf(facing.getNormal())
.scale(.75f));
level.addParticle(new SteamJetParticleData(1), v.x, v.y, v.z, m.x, m.y, m.z);
}
Vec3 offset = VecHelper.rotate(new Vec3(0, 0, 1).add(VecHelper.offsetRandomly(Vec3.ZERO, level.random, 1)
.multiply(1, 1, 0)
.normalize()
.scale(.5f)), AngleHelper.verticalAngle(facing), Axis.X);
offset = VecHelper.rotate(offset, AngleHelper.horizontalAngle(facing), Axis.Y);
Vec3 v = offset.scale(.5f)
.add(Vec3.atCenterOf(worldPosition));
Vec3 m = offset.subtract(Vec3.atLowerCornerOf(facing.getNormal())
.scale(.75f));
level.addParticle(new SteamJetParticleData(1), v.x, v.y, v.z, m.x, m.y, m.z);
prevAngle = angle;
}

View file

@ -193,8 +193,7 @@ public class WhistleBlock extends Block implements ITE<WhistleTileEntity>, IWren
@Override
public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) {
if (pState.hasBlockEntity() && (!pState.is(pNewState.getBlock()) || !pNewState.hasBlockEntity()))
pLevel.removeBlockEntity(pPos);
ITE.onRemove(pState, pLevel, pPos, pNewState);
FluidTankBlock.updateBoilerState(pState, pLevel, pPos.relative(getAttachedDirection(pState)));
}

View file

@ -55,19 +55,20 @@ public class WhistleTileEntity extends SmartTileEntity implements IHaveGoggleInf
public void updatePitch() {
BlockPos currentPos = worldPosition.above();
int prevPitch = pitch;
for (pitch = 0; pitch <= 24; pitch += 2) {
int newPitch;
for (newPitch = 0; newPitch <= 24; newPitch += 2) {
BlockState blockState = level.getBlockState(currentPos);
if (!AllBlocks.STEAM_WHISTLE_EXTENSION.has(blockState))
break;
if (blockState.getValue(WhistleExtenderBlock.SHAPE) == WhistleExtenderShape.SINGLE) {
pitch++;
newPitch++;
break;
}
currentPos = currentPos.above();
}
if (prevPitch == pitch)
if (pitch == newPitch)
return;
pitch = newPitch;
notifyUpdate();

View file

@ -1,6 +1,5 @@
package com.simibubi.create.content.contraptions.components.structureMovement;
import java.io.IOException;
import java.util.Collection;
import java.util.IdentityHashMap;
import java.util.List;
@ -11,11 +10,11 @@ import java.util.UUID;
import javax.annotation.Nullable;
import com.simibubi.create.foundation.utility.ContraptionData;
import org.apache.commons.lang3.mutable.MutableInt;
import org.apache.commons.lang3.tuple.MutablePair;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllMovementBehaviours;
@ -45,7 +44,6 @@ import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.nbt.Tag;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
@ -97,7 +95,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
/*
* staleTicks are a band-aid to prevent a frame or two of missing blocks between
* contraption discard and off-thread block placement on disassembly
*
*
* FIXME this timeout should be longer but then also cancelled early based on a
* chunk rebuild listener
*/
@ -117,7 +115,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
return;
contraption.onEntityCreated(this);
}
@Override
public void move(MoverType pType, Vec3 pPos) {
if (pType == MoverType.SHULKER)
@ -141,7 +139,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
public boolean collisionEnabled() {
return true;
}
public void registerColliding(Entity collidingEntity) {
collidingEntities.put(collidingEntity, new MutableInt());
}
@ -320,7 +318,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
public Vec3 toGlobalVector(Vec3 localVec, float partialTicks) {
return toGlobalVector(localVec, partialTicks, false);
}
public Vec3 toGlobalVector(Vec3 localVec, float partialTicks, boolean prevAnchor) {
Vec3 anchor = prevAnchor ? getPrevAnchorVec() : getAnchorVec();
Vec3 rotationOffset = VecHelper.getCenterOf(BlockPos.ZERO);
@ -330,7 +328,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
.add(anchor);
return localVec;
}
public Vec3 toLocalVector(Vec3 localVec, float partialTicks) {
return toLocalVector(localVec, partialTicks, false);
}
@ -547,7 +545,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
public Vec3 getAnchorVec() {
return position();
}
public Vec3 getPrevAnchorVec() {
return getPrevPositionVec();
}
@ -599,22 +597,10 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
CompoundTag compound = new CompoundTag();
writeAdditional(compound, true);
try {
ByteArrayDataOutput dataOutput = ByteStreams.newDataOutput();
NbtIo.write(compound, dataOutput);
byte[] byteArray = dataOutput.toByteArray();
int estimatedPacketSize = byteArray.length;
if (estimatedPacketSize > 2_000_000) {
Create.LOGGER.warn("Could not send Contraption Spawn Data (Packet too big): "
+ getContraption().getType().id + " @" + position() + " (" + getUUID().toString() + ")");
buffer.writeNbt(new CompoundTag());
return;
}
} catch (IOException e) {
e.printStackTrace();
buffer.writeNbt(new CompoundTag());
return;
if (ContraptionData.isTooLargeForSync(compound)) {
String info = getContraption().getType().id + " @" + position() + " (" + getStringUUID() + ")";
Create.LOGGER.warn("Could not send Contraption Spawn Data (Packet too big): " + info);
compound = null;
}
buffer.writeNbt(compound);
@ -634,7 +620,10 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
@Override
public void readSpawnData(FriendlyByteBuf additionalData) {
readAdditional(additionalData.readNbt(), true);
CompoundTag nbt = additionalData.readAnySizeNbt();
if (nbt != null) {
readAdditional(nbt, true);
}
}
@Override
@ -757,7 +746,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
protected abstract float getStalledAngle();
protected abstract void handleStallInformation(float x, float y, float z, float angle);
protected abstract void handleStallInformation(double x, double y, double z, float angle);
@OnlyIn(Dist.CLIENT)
protected void handleBlockChange(BlockPos localPos, BlockState newState) {
@ -824,7 +813,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
public Vec3 getContactPointMotion(Vec3 globalContactPoint) {
if (prevPosInvalid)
return Vec3.ZERO;
Vec3 contactPoint = toGlobalVector(toLocalVector(globalContactPoint, 0, true), 1, true);
Vec3 contraptionLocalMovement = contactPoint.subtract(globalContactPoint);
Vec3 contraptionAnchorMovement = position().subtract(getPrevPositionVec());

View file

@ -46,7 +46,6 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.DiodeBlock;
import net.minecraft.world.level.block.DoorBlock;
import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock;
import net.minecraft.world.level.block.FenceGateBlock;
import net.minecraft.world.level.block.FlowerPotBlock;
import net.minecraft.world.level.block.GrindstoneBlock;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
@ -175,15 +174,13 @@ public class BlockMovementChecks {
private static boolean isMovementNecessaryFallback(BlockState state, Level world, BlockPos pos) {
if (isBrittle(state))
return true;
if (state.getBlock() instanceof FenceGateBlock)
return true;
if (state.getMaterial()
if (!state.getMaterial()
.isReplaceable())
return false;
if (state.getCollisionShape(world, pos)
return true;
if (!state.getCollisionShape(world, pos)
.isEmpty())
return false;
return true;
return true;
return AllBlockTags.MOVABLE_EMPTY_COLLIDER.matches(state);
}
private static boolean isMovementAllowedFallback(BlockState state, Level world, BlockPos pos) {

View file

@ -753,10 +753,12 @@ public abstract class Contraption {
ListTag actorsNBT = new ListTag();
for (MutablePair<StructureBlockInfo, MovementContext> actor : getActors()) {
MovementBehaviour behaviour = AllMovementBehaviours.getBehaviour(actor.left.state);
if (behaviour == null)
continue;
CompoundTag compound = new CompoundTag();
compound.put("Pos", NbtUtils.writeBlockPos(actor.left.pos));
AllMovementBehaviours.getBehaviour(actor.left.state)
.writeExtraData(actor.right);
behaviour.writeExtraData(actor.right);
actor.right.writeToNBT(compound);
actorsNBT.add(compound);
}
@ -1136,7 +1138,8 @@ public abstract class Contraption {
for (MutablePair<StructureBlockInfo, MovementContext> pair : actors) {
MovementContext context = new MovementContext(world, pair.left, this);
MovementBehaviour behaviour = AllMovementBehaviours.getBehaviour(pair.left.state);
behaviour.startMoving(context);
if (behaviour != null)
behaviour.startMoving(context);
pair.setRight(context);
if (behaviour instanceof ContraptionControlsMovement)
disableActorOnStart(context);
@ -1193,8 +1196,12 @@ public abstract class Contraption {
}
public void forEachActor(Level world, BiConsumer<MovementBehaviour, MovementContext> callBack) {
for (MutablePair<StructureBlockInfo, MovementContext> pair : actors)
callBack.accept(AllMovementBehaviours.getBehaviour(pair.getLeft().state), pair.getRight());
for (MutablePair<StructureBlockInfo, MovementContext> pair : actors) {
MovementBehaviour behaviour = AllMovementBehaviours.getBehaviour(pair.getLeft().state);
if (behaviour == null)
continue;
callBack.accept(behaviour, pair.getRight());
}
}
protected boolean shouldUpdateAfterMovement(StructureBlockInfo info) {

View file

@ -352,6 +352,9 @@ public class ContraptionCollider {
if (surfaceCollision.isTrue()) {
contraptionEntity.registerColliding(entity);
entity.fallDistance = 0;
for (Entity rider : entity.getIndirectPassengers())
if (getPlayerType(rider) == PlayerType.CLIENT)
AllPackets.channel.sendToServer(new ClientMotionPacket(rider.getDeltaMovement(), true, 0));
boolean canWalk = bounce != 0 || slide == 0;
if (canWalk || !rotation.hasVerticalRotation()) {
if (canWalk)

View file

@ -12,31 +12,32 @@ import net.minecraftforge.network.NetworkEvent.Context;
public class ContraptionStallPacket extends SimplePacketBase {
int entityID;
float x;
float y;
float z;
double x;
double y;
double z;
float angle;
public ContraptionStallPacket(int entityID, double posX, double posY, double posZ, float angle) {
this.entityID = entityID;
this.x = (float) posX;
this.y = (float) posY;
this.z = (float) posZ;
this.x = posX;
this.y = posY;
this.z = posZ;
this.angle = angle;
}
public ContraptionStallPacket(FriendlyByteBuf buffer) {
entityID = buffer.readInt();
x = buffer.readFloat();
y = buffer.readFloat();
z = buffer.readFloat();
x = buffer.readDouble();
y = buffer.readDouble();
z = buffer.readDouble();
angle = buffer.readFloat();
}
@Override
public void write(FriendlyByteBuf buffer) {
buffer.writeInt(entityID);
writeAll(buffer, x, y, z, angle);
writeAll(buffer, x, y, z);
buffer.writeFloat(angle);
}
@Override
@ -46,9 +47,9 @@ public class ContraptionStallPacket extends SimplePacketBase {
context.get().setPacketHandled(true);
}
private void writeAll(FriendlyByteBuf buffer, float... floats) {
for (float f : floats)
buffer.writeFloat(f);
private void writeAll(FriendlyByteBuf buffer, double... doubles) {
for (double d : doubles)
buffer.writeDouble(d);
}
}

View file

@ -233,7 +233,7 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
}
@Override
protected void handleStallInformation(float x, float y, float z, float angle) {
protected void handleStallInformation(double x, double y, double z, float angle) {
setPosRaw(x, y, z);
this.angle = this.prevAngle = angle;
}

View file

@ -515,7 +515,7 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
}
@Override
protected void handleStallInformation(float x, float y, float z, float angle) {
protected void handleStallInformation(double x, double y, double z, float angle) {
yaw = angle;
}

View file

@ -372,15 +372,10 @@ public class ClockworkBearingTileEntity extends KineticTileEntity
}
@Override
public void setRemoved() {
super.setRemoved();
}
@Override
protected void setRemovedNotDueToChunkUnload() {
public void remove() {
if (!level.isClientSide)
disassemble();
super.setRemovedNotDueToChunkUnload();
super.remove();
}
@Override

View file

@ -59,15 +59,10 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity
}
@Override
public void setRemoved() {
super.setRemoved();
}
@Override
protected void setRemovedNotDueToChunkUnload() {
public void remove() {
if (!level.isClientSide)
disassemble();
super.setRemovedNotDueToChunkUnload();
super.remove();
}
@Override

View file

@ -21,6 +21,8 @@ import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
@ -94,6 +96,7 @@ public class SailBlock extends WrenchableDirectionalBlock {
if (heldItem.getItem() instanceof ShearsItem) {
if (!world.isClientSide)
world.playSound(null, pos, SoundEvents.SHEEP_SHEAR, SoundSource.BLOCKS, 1.0f, 1.0f);
applyDye(state, world, pos, ray.getLocation(), null);
return InteractionResult.SUCCESS;
}
@ -104,6 +107,7 @@ public class SailBlock extends WrenchableDirectionalBlock {
DyeColor color = DyeColor.getColor(heldItem);
if (color != null) {
if (!world.isClientSide)
world.playSound(null, pos, SoundEvents.DYE_USE, SoundSource.BLOCKS, 1.0f, 1.1f - world.random.nextFloat() * .2f);
applyDye(state, world, pos, ray.getLocation(), color);
return InteractionResult.SUCCESS;
}

View file

@ -165,7 +165,7 @@ public class GantryContraptionEntity extends AbstractContraptionEntity {
public void lerpTo(double x, double y, double z, float yw, float pt, int inc, boolean t) {}
@Override
protected void handleStallInformation(float x, float y, float z, float angle) {
protected void handleStallInformation(double x, double y, double z, float angle) {
setPosRaw(x, y, z);
clientOffsetDiff = 0;
}

View file

@ -1,14 +1,15 @@
package com.simibubi.create.content.contraptions.components.structureMovement.mounted;
import java.io.IOException;
import java.util.List;
import javax.annotation.Nullable;
import com.simibubi.create.foundation.utility.ContraptionData;
import net.minecraft.network.chat.MutableComponent;
import org.apache.commons.lang3.tuple.MutablePair;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllMovementBehaviours;
import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceMovement;
@ -18,6 +19,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Con
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.ContraptionMovementSetting;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.NBTHelper;
@ -30,7 +32,6 @@ import net.minecraft.core.NonNullList;
import net.minecraft.core.dispenser.DefaultDispenseItemBehavior;
import net.minecraft.core.dispenser.DispenseItemBehavior;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo;
import net.minecraft.tags.BlockTags;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
@ -205,6 +206,8 @@ public class MinecartContraptionItem extends Item {
Player player = event.getPlayer();
if (player == null || entity == null)
return;
if (!AllConfigs.SERVER.kinetics.survivalContraptionPickup.get() && !player.isCreative())
return;
ItemStack wrench = player.getItemInHand(event.getHand());
if (!AllItems.WRENCH.isIn(wrench))
@ -248,18 +251,10 @@ public class MinecartContraptionItem extends Item {
ItemStack generatedStack = create(type, oce).setHoverName(entity.getCustomName());
try {
ByteArrayDataOutput dataOutput = ByteStreams.newDataOutput();
NbtIo.write(generatedStack.serializeNBT(), dataOutput);
int estimatedPacketSize = dataOutput.toByteArray().length;
if (estimatedPacketSize > 2_000_000) {
player.displayClientMessage(Lang.translateDirect("contraption.minecart_contraption_too_big")
.withStyle(ChatFormatting.RED), true);
return;
}
} catch (IOException e) {
e.printStackTrace();
if (ContraptionData.isTooLargeForPickup(generatedStack.serializeNBT())) {
MutableComponent message = Lang.translateDirect("contraption.minecart_contraption_too_big")
.withStyle(ChatFormatting.RED);
player.displayClientMessage(message, true);
return;
}

View file

@ -184,16 +184,11 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity
}
@Override
public void setRemoved() {
super.setRemoved();
}
@Override
protected void setRemovedNotDueToChunkUnload() {
public void remove() {
this.remove = true;
if (!level.isClientSide)
disassemble();
super.setRemovedNotDueToChunkUnload();
super.remove();
}
@Override

View file

@ -47,18 +47,17 @@ public class PulleyBlock extends HorizontalAxisKineticBlock implements ITE<Pulle
}
}
@Override
public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
if (state.getBlock() != newState.getBlock()) {
if (!worldIn.isClientSide) {
BlockState below = worldIn.getBlockState(pos.below());
if (below.getBlock() instanceof RopeBlockBase)
worldIn.destroyBlock(pos.below(), true);
}
if (state.hasBlockEntity())
worldIn.removeBlockEntity(pos);
}
}
@Override
public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
super.onRemove(state, worldIn, pos, newState, isMoving);
if (state.is(newState.getBlock()))
return;
if (worldIn.isClientSide)
return;
BlockState below = worldIn.getBlockState(pos.below());
if (below.getBlock() instanceof RopeBlockBase)
worldIn.destroyBlock(pos.below(), true);
}
public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn,
BlockHitResult hit) {

View file

@ -64,6 +64,7 @@ public abstract class ContraptionRenderingWorld<C extends ContraptionRenderInfo>
.map(Reference::get)
.filter(Objects::nonNull)
.map(AbstractContraptionEntity::getContraption)
.filter(Objects::nonNull) // contraptions that are too large will not be synced, and un-synced contraptions will be null
.forEach(this::getRenderInfo);
}

View file

@ -120,8 +120,9 @@ public class FlwContraption extends ContraptionRenderInfo {
}
public void invalidate() {
for (ArrayModelRenderer buffer : renderLayers.values()) {
buffer.delete();
for (ArrayModelRenderer renderer : renderLayers.values()) {
renderer.delete();
renderer.getModel().delete();
}
renderLayers.clear();

View file

@ -53,6 +53,7 @@ public class ClientMotionPacket extends SimplePacketBase {
sender.causeFallDamage(sender.fallDistance, 1, DamageSource.FALL);
sender.fallDistance = 0;
sender.connection.aboveGroundTickCount = 0;
sender.connection.aboveGroundVehicleTickCount = 0;
}
AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> sender),
new LimbSwingUpdatePacket(sender.getId(), sender.position(), limbSwing));

View file

@ -26,16 +26,16 @@ public class LimbSwingUpdatePacket extends SimplePacketBase {
public LimbSwingUpdatePacket(FriendlyByteBuf buffer) {
entityId = buffer.readInt();
position = new Vec3(buffer.readFloat(), buffer.readFloat(), buffer.readFloat());
position = new Vec3(buffer.readDouble(), buffer.readDouble(), buffer.readDouble());
limbSwing = buffer.readFloat();
}
@Override
public void write(FriendlyByteBuf buffer) {
buffer.writeInt(entityId);
buffer.writeFloat((float) position.x);
buffer.writeFloat((float) position.y);
buffer.writeFloat((float) position.z);
buffer.writeDouble(position.x);
buffer.writeDouble(position.y);
buffer.writeDouble(position.z);
buffer.writeFloat(limbSwing);
}

View file

@ -157,11 +157,10 @@ public class PumpBlock extends DirectionalKineticBlock
@Override
public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) {
boolean blockTypeChanged = state.getBlock() != newState.getBlock();
boolean blockTypeChanged = !state.is(newState.getBlock());
if (blockTypeChanged && !world.isClientSide)
FluidPropagator.propagateChangedPipe(world, pos, state);
if (state.hasBlockEntity() && (blockTypeChanged || !newState.hasBlockEntity()))
world.removeBlockEntity(pos);
super.onRemove(state, world, pos, newState, isMoving);
}
@Override

View file

@ -86,7 +86,7 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
while (!queue.isEmpty()) {
// Dont dequeue here, so we can decide not to dequeue a valid entry when
// simulating
BlockPos currentPos = queue.first().pos;
BlockPos currentPos = queue.first().pos();
BlockState blockState = world.getBlockState(currentPos);
BlockState emptied = blockState;
Fluid fluid = Fluids.EMPTY;
@ -262,25 +262,31 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
}
private void continueSearch() {
fluid = search(fluid, frontier, visited, (e, d) -> {
queue.enqueue(new BlockPosEntry(e, d));
validationSet.add(e);
}, false);
try {
fluid = search(fluid, frontier, visited, (e, d) -> {
queue.enqueue(new BlockPosEntry(e, d));
validationSet.add(e);
}, false);
} catch (ChunkNotLoadedException e) {
tileEntity.sendData();
frontier.clear();
visited.clear();
}
Level world = getWorld();
int maxBlocks = maxBlocks();
if (visited.size() > maxBlocks && canDrainInfinitely(fluid)) {
if (visited.size() > maxBlocks && canDrainInfinitely(fluid) && !queue.isEmpty()) {
infinite = true;
// Find first block with valid fluid
while (true) {
BlockPos first = queue.first().pos;
BlockPos first = queue.first().pos();
if (canPullFluidsFrom(world.getBlockState(first), first) != FluidBlockType.SOURCE) {
queue.dequeue();
continue;
}
break;
}
BlockPos firstValid = queue.first().pos;
BlockPos firstValid = queue.first().pos();
frontier.clear();
visited.clear();
queue.clear();
@ -297,7 +303,14 @@ public class FluidDrainingBehaviour extends FluidManipulationBehaviour {
}
private void continueValidation() {
search(fluid, validationFrontier, validationVisited, (e, d) -> newValidationSet.add(e), false);
try {
search(fluid, validationFrontier, validationVisited, (e, d) -> newValidationSet.add(e), false);
} catch (ChunkNotLoadedException e) {
validationFrontier.clear();
validationVisited.clear();
setLongValidationTimer();
return;
}
int maxBlocks = maxBlocks();
if (validationVisited.size() > maxBlocks && canDrainInfinitely(fluid)) {

View file

@ -71,8 +71,16 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour {
}
protected void continueValidation(Fluid fluid) {
search(fluid, infinityCheckFrontier, infinityCheckVisited,
(p, d) -> infinityCheckFrontier.add(new BlockPosEntry(p, d)), true);
try {
search(fluid, infinityCheckFrontier, infinityCheckVisited,
(p, d) -> infinityCheckFrontier.add(new BlockPosEntry(p, d)), true);
} catch (ChunkNotLoadedException e) {
infinityCheckFrontier.clear();
infinityCheckVisited.clear();
setLongValidationTimer();
return;
}
int maxBlocks = maxBlocks();
if (infinityCheckVisited.size() > maxBlocks && maxBlocks != -1 && !fillInfinite()) {
@ -154,7 +162,7 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour {
boolean success = false;
for (int i = 0; !success && !queue.isEmpty() && i < searchedPerTick; i++) {
BlockPosEntry entry = queue.first();
BlockPos currentPos = entry.pos;
BlockPos currentPos = entry.pos();
if (visited.contains(currentPos)) {
queue.dequeue();
@ -223,7 +231,7 @@ public class FluidFillingBehaviour extends FluidManipulationBehaviour {
SpaceType nextSpaceType = getAtPos(world, offsetPos, fluid);
if (nextSpaceType != SpaceType.BLOCKING)
queue.enqueue(new BlockPosEntry(offsetPos, entry.distance + 1));
queue.enqueue(new BlockPosEntry(offsetPos, entry.distance() + 1));
}
}

View file

@ -14,6 +14,7 @@ import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.core.BlockPos;
@ -35,23 +36,20 @@ import net.minecraftforge.fluids.FluidStack;
public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
protected static class BlockPosEntry {
public BlockPos pos;
public int distance;
public BlockPosEntry(BlockPos pos, int distance) {
this.pos = pos;
this.distance = distance;
}
public static record BlockPosEntry(BlockPos pos, int distance) {
};
public static class ChunkNotLoadedException extends Exception {
private static final long serialVersionUID = 1L;
}
BoundingBox affectedArea;
BlockPos rootPos;
boolean infinite;
protected boolean counterpartActed;
// Search
static final int searchedPerTick = 256;
static final int searchedPerTick = 1024;
static final int validationTimerMin = 160;
List<BlockPosEntry> frontier;
Set<BlockPos> visited;
@ -143,7 +141,7 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
}
protected Fluid search(Fluid fluid, List<BlockPosEntry> frontier, Set<BlockPos> visited,
BiConsumer<BlockPos, Integer> add, boolean searchDownward) {
BiConsumer<BlockPos, Integer> add, boolean searchDownward) throws ChunkNotLoadedException {
Level world = getWorld();
int maxBlocks = maxBlocks();
int maxRange = canDrainInfinitely(fluid) ? maxRange() : maxRange() / 2;
@ -158,6 +156,9 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
continue;
visited.add(currentPos);
if (!world.isLoaded(currentPos))
throw new ChunkNotLoadedException();
FluidState fluidState = world.getFluidState(currentPos);
if (fluidState.isEmpty())
continue;
@ -175,6 +176,8 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
continue;
BlockPos offsetPos = currentPos.relative(side);
if (!world.isLoaded(offsetPos))
throw new ChunkNotLoadedException();
if (visited.contains(offsetPos))
continue;
if (offsetPos.distSqr(rootPos) > maxRangeSq)
@ -221,6 +224,8 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
@Override
public void write(CompoundTag nbt, boolean clientPacket) {
if (infinite)
NBTHelper.putMarker(nbt, "Infinite");
if (rootPos != null)
nbt.put("LastPos", NbtUtils.writeBlockPos(rootPos));
if (affectedArea != null) {
@ -234,6 +239,7 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
@Override
public void read(CompoundTag nbt, boolean clientPacket) {
infinite = nbt.contains("Infinite");
if (nbt.contains("LastPos"))
rootPos = NbtUtils.readBlockPos(nbt.getCompound("LastPos"));
if (nbt.contains("AffectedAreaFrom") && nbt.contains("AffectedAreaTo"))
@ -243,30 +249,21 @@ public abstract class FluidManipulationBehaviour extends TileEntityBehaviour {
}
public enum BottomlessFluidMode implements Predicate<Fluid> {
ALLOW_ALL {
@Override
public boolean test(Fluid fluid) {
return true;
}
},
DENY_ALL {
@Override
public boolean test(Fluid fluid) {
return false;
}
},
ALLOW_BY_TAG {
@Override
public boolean test(Fluid fluid) {
return AllFluidTags.BOTTOMLESS_ALLOW.matches(fluid);
}
},
DENY_BY_TAG {
@Override
public boolean test(Fluid fluid) {
return !AllFluidTags.BOTTOMLESS_DENY.matches(fluid);
}
};
ALLOW_ALL(fluid -> true),
DENY_ALL(fluid -> false),
ALLOW_BY_TAG(fluid -> AllFluidTags.BOTTOMLESS_ALLOW.matches(fluid)),
DENY_BY_TAG(fluid -> !AllFluidTags.BOTTOMLESS_DENY.matches(fluid));
private final Predicate<Fluid> predicate;
BottomlessFluidMode(Predicate<Fluid> predicate) {
this.predicate = predicate;
}
@Override
public boolean test(Fluid fluid) {
return predicate.test(fluid);
}
}
}

View file

@ -4,14 +4,12 @@ import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock;
import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
@ -71,18 +69,7 @@ public class HosePulleyBlock extends HorizontalKineticBlock implements ITE<HoseP
}
return prefferedSide == null ? null : prefferedSide.getOpposite();
}
@Override
public void onRemove(BlockState p_196243_1_, Level world, BlockPos pos, BlockState p_196243_4_,
boolean p_196243_5_) {
if (p_196243_1_.hasBlockEntity()
&& (p_196243_1_.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasBlockEntity())) {
TileEntityBehaviour.destroy(world, pos, FluidDrainingBehaviour.TYPE);
TileEntityBehaviour.destroy(world, pos, FluidFillingBehaviour.TYPE);
world.removeBlockEntity(pos);
}
}
@Override
public Class<HosePulleyTileEntity> getTileEntityClass() {
return HosePulleyTileEntity.class;

View file

@ -147,6 +147,8 @@ public class HosePulleyTileEntity extends KineticTileEntity {
@Override
protected void write(CompoundTag compound, boolean clientPacket) {
if (clientPacket)
offset.forceNextSync();
compound.put("Offset", offset.writeNBT());
compound.put("Tank", internalTank.writeToNBT(new CompoundTag()));
super.write(compound, clientPacket);
@ -164,8 +166,8 @@ public class HosePulleyTileEntity extends KineticTileEntity {
}
@Override
public void setRemoved() {
super.setRemoved();
public void invalidate() {
super.invalidate();
capability.invalidate();
}

View file

@ -252,8 +252,8 @@ public class ItemDrainTileEntity extends SmartTileEntity implements IHaveGoggleI
}
@Override
public void setRemoved() {
super.setRemoved();
public void invalidate() {
super.invalidate();
for (LazyOptional<ItemDrainItemHandler> lazyOptional : itemHandlers.values())
lazyOptional.invalidate();
}

View file

@ -90,11 +90,10 @@ public class FluidValveBlock extends DirectionalAxisKineticBlock
@Override
public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) {
boolean blockTypeChanged = state.getBlock() != newState.getBlock();
boolean blockTypeChanged = !state.is(newState.getBlock());
if (blockTypeChanged && !world.isClientSide)
FluidPropagator.propagateChangedPipe(world, pos, state);
if (state.hasBlockEntity() && (blockTypeChanged || !newState.hasBlockEntity()))
world.removeBlockEntity(pos);
super.onRemove(state, world, pos, newState, isMoving);
}
@Override

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