167 lines
5.4 KiB
Python
167 lines
5.4 KiB
Python
|
import sys
|
||
|
import os
|
||
|
import shutil
|
||
|
|
||
|
def ReadListFromFile(filename, listInstance):
|
||
|
f = open(filename, 'r', encoding='utf-8')
|
||
|
while True:
|
||
|
cache = f.readline()
|
||
|
if cache == '':
|
||
|
break;
|
||
|
cache = cache.strip()
|
||
|
if cache == '':
|
||
|
listInstance.append('')
|
||
|
continue
|
||
|
if cache.startswith('//'):
|
||
|
continue
|
||
|
listInstance.append(cache)
|
||
|
f.close()
|
||
|
|
||
|
def GetUnderlineName(strl):
|
||
|
return strl.lower().replace(',', '').replace('& ', '').replace('é', 'e').replace('-', '_').replace("'", '').replace('"', '').replace(' ', '_')
|
||
|
|
||
|
# folder creation
|
||
|
if not os.path.isdir('data/teyvatcraft/loot_tables/blocks'):
|
||
|
os.makedirs('data/teyvatcraft/loot_tables/blocks')
|
||
|
if not os.path.isdir('assets/teyvatcraft/models/block'):
|
||
|
os.makedirs('assets/teyvatcraft/models/block')
|
||
|
if not os.path.isdir('assets/teyvatcraft/models/item'):
|
||
|
os.makedirs('assets/teyvatcraft/models/item')
|
||
|
if not os.path.isdir('assets/teyvatcraft/blockstates'):
|
||
|
os.makedirs('assets/teyvatcraft/blockstates')
|
||
|
if not os.path.isdir('assets/teyvatcraft/textures/block'):
|
||
|
os.makedirs('assets/teyvatcraft/textures/block')
|
||
|
|
||
|
|
||
|
# read file
|
||
|
enList = []
|
||
|
zhList = []
|
||
|
|
||
|
ReadListFromFile('zh.txt', zhList)
|
||
|
ReadListFromFile('en.txt', enList)
|
||
|
|
||
|
if len(zhList) != len(enList):
|
||
|
print('2 files item is not matched')
|
||
|
sys.exit(0)
|
||
|
|
||
|
javaDeclareFile = open('declare.block.java', 'w', encoding='utf-8')
|
||
|
javaRegisterFile = open('register.block.java', 'w', encoding='utf-8')
|
||
|
langZhFile = open('zh_cn.block.json', 'w', encoding='utf-8')
|
||
|
langEnFile = open('en_us.block.json', 'w', encoding='utf-8')
|
||
|
for index in range(len(enList)):
|
||
|
if enList[index] == '':
|
||
|
# keep blank line in register & declare
|
||
|
javaDeclareFile.write('\n')
|
||
|
javaRegisterFile.write('\n')
|
||
|
langZhFile.write('\n')
|
||
|
langEnFile.write('\n')
|
||
|
continue
|
||
|
|
||
|
(droppedName, oreName) = enList[index].split('#')
|
||
|
dropped_underlineName = GetUnderlineName(droppedName)
|
||
|
ore_underlineName = GetUnderlineName(oreName)
|
||
|
ore_upperName = ore_underlineName.upper()
|
||
|
|
||
|
flootTables = open('data/teyvatcraft/loot_tables/blocks/' + ore_underlineName + '.json', 'w', encoding='utf-8')
|
||
|
fblockstates = open('assets/teyvatcraft/blockstates/' + ore_underlineName + '.json', 'w', encoding='utf-8')
|
||
|
fmodel = open('assets/teyvatcraft/models/block/{}.json'.format(ore_underlineName), 'w', encoding='utf-8')
|
||
|
fmodelItem = open('assets/teyvatcraft/models/item/{}.json'.format(ore_underlineName), 'w', encoding='utf-8')
|
||
|
|
||
|
flootTables.write('''{{
|
||
|
"type": "minecraft:block",
|
||
|
"pools": [
|
||
|
{{
|
||
|
"rolls": 1,
|
||
|
"entries": [
|
||
|
{{
|
||
|
"type": "minecraft:alternatives",
|
||
|
"children": [
|
||
|
{{
|
||
|
"type": "minecraft:item",
|
||
|
"conditions": [
|
||
|
{{
|
||
|
"condition": "minecraft:match_tool",
|
||
|
"predicate": {{
|
||
|
"enchantments": [
|
||
|
{{
|
||
|
"enchantment": "minecraft:silk_touch",
|
||
|
"levels": {{
|
||
|
"min": 1
|
||
|
}}
|
||
|
}}
|
||
|
]
|
||
|
}}
|
||
|
}}
|
||
|
],
|
||
|
"name": "teyvatcraft:{}"
|
||
|
}},
|
||
|
{{
|
||
|
"type": "minecraft:item",
|
||
|
"functions": [
|
||
|
{{
|
||
|
"function": "minecraft:set_count",
|
||
|
"count": {{
|
||
|
"min": 1.0,
|
||
|
"max": 2.0,
|
||
|
"type": "minecraft:uniform"
|
||
|
}}
|
||
|
}},
|
||
|
{{
|
||
|
"function": "minecraft:apply_bonus",
|
||
|
"enchantment": "minecraft:fortune",
|
||
|
"formula": "minecraft:uniform_bonus_count",
|
||
|
"parameters": {{
|
||
|
"bonusMultiplier": 1
|
||
|
}}
|
||
|
}},
|
||
|
{{
|
||
|
"function": "minecraft:explosion_decay"
|
||
|
}}
|
||
|
],
|
||
|
"name": "teyvatcraft:{}"
|
||
|
}}
|
||
|
]
|
||
|
}}
|
||
|
]
|
||
|
}}
|
||
|
]
|
||
|
}}'''.format(ore_underlineName, dropped_underlineName))
|
||
|
|
||
|
fblockstates.write('''{{
|
||
|
"variants": {{
|
||
|
"": {{
|
||
|
"model": "teyvatcraft:block/{}"
|
||
|
}}
|
||
|
}}
|
||
|
}}'''.format(ore_underlineName))
|
||
|
|
||
|
fmodel.write('''{{
|
||
|
"parent": "minecraft:block/cube_all",
|
||
|
"textures": {{
|
||
|
"all": "teyvatcraft:block/{}"
|
||
|
}}
|
||
|
}}'''.format(ore_underlineName))
|
||
|
|
||
|
fmodelItem.write('''{{
|
||
|
"parent": "teyvatcraft:block/{}"
|
||
|
}}'''.format(ore_underlineName))
|
||
|
|
||
|
flootTables.close()
|
||
|
fblockstates.close()
|
||
|
fmodel.close()
|
||
|
fmodelItem.close()
|
||
|
|
||
|
javaDeclareFile.write('public static final Block {} = new OreBlock(getOreBlockSettings(1, 3.0f));\n'.format(ore_upperName))
|
||
|
javaRegisterFile.write('Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "{}"), {});\n'.format(ore_underlineName, ore_upperName))
|
||
|
|
||
|
langZhFile.write('"block.teyvatcraft.{}": "{}",\n'.format(ore_underlineName, zhList[index].split('#')[1]))
|
||
|
langEnFile.write('"block.teyvatcraft.{}": "{}",\n'.format(ore_underlineName, enList[index].split('#')[1].replace('"', '')))
|
||
|
|
||
|
shutil.copyfile('stone.png', 'assets/teyvatcraft/textures/block/{}.png'.format(ore_underlineName))
|
||
|
|
||
|
|
||
|
javaDeclareFile.close()
|
||
|
javaRegisterFile.close()
|
||
|
langZhFile.close()
|
||
|
langEnFile.close()
|