Minecraft 1.13锻造模型资源自动生成工具

mcresources的Python项目详细描述


Minecraft资源生成器

这是一个python模块,旨在实现forge modding所需的许多json文件的简单生成。

来自Alcatrazescape 1.13"无树穿孔"的一些示例:

frommcresourcesimportResourceManagerrm=ResourceManager('notreepunching')forstonein['stone','sandstone','andesite','granite','diorite']:# Block Statesrm.blockstate(('loose_rock',stone))# Block Modelsrm.block_model(('loose_rock',stone),'minecraft:block/%s'%stone,'notreepunching:block/loose_rock')# Item Modelsrm.item_model(('rock',stone))# Crafting Recipesresult=('cobblestone'ifstone=='stone'elsestone)rm.crafting_shaped('%s_from_rocks'%result,['##','##'],'notreepunching:rock/%s'%stone,'minecraft:%s'%result)# Item Modelsfortoolin['pickaxe','shovel','axe','hoe','knife']:rm.item_model('flint_%s'%tool,parent='item/handheld')# Shaped Craftingformetalin['iron','gold','diamond']:tool_metal='tag!forge:'+('gems'ifmetal=='diamond'else'ingots')+'/'+metalmetal_prefix=metalifmetal!='gold'else'golden'rm.crafting_shaped('%s_knife'%metal,['I','S'],{'I':tool_metal,'S':'tag!forge:rods/wooden'},'notreepunching:%s_knife'%metal_prefix)# More Crafting Recipesrm.crafting_shapeless('plant_string',['notreepunching:plant_fiber']*3,'notreepunching:plant_string')

用法

mcresources可以构建forge modding所需的许多公共文件,并提供实用程序来管理更大的项目。以下概述了各种方法以及如何以最有效的方式使用它们。

mcresources生成的所有文件都将插入一个注释(''uu comment')来标识它们。这还允许mcresources通过使用clean_generated_resources()删除已生成的所有文件,允许用户查看手动创建的文件,和/或管理将旧文件更新为新配置

多个方法共有几个元素:

  • name_parts:表示特定块或项的资源位置。它可以指定为一个字符串,即'block_ruby_or e',如果块使用目录作为分隔符,则可以指定为一个列表或元组。这意味着('ore_blocks','ruby')对应于资源位置modid:ore_blocks/ruby,生成的文件ruby.json可以在modid/blockstates/ore_blocks/

  • 条件:单个条件可以指定为完全指定的字典(将逐字插入json中),也可以指定为字符串,将其扩展为{'type':string_condition}

  • 项堆栈:项堆栈可以指定为完全指定的字典(将逐字插入json)或字符串。作为字符串,它必须表示一个项资源位置,即minecraft:golden_boots将创建json{'item':'minecraft:golden_boots'}。此外,还可以在字符串前面加上标记!指定它表示标记,即标记!forge:rods/wood将创建json{'tag':'forge:rods/wood'}

阻塞状态
defblockstate(self,name_parts:strorlistortuple,model:str=None,variants:dict=None)
  • name_parts指定块资源位置,如上所示
  • model指定模型。如果不存在,则默认为modid:block/name/parts,这意味着blockstate('pink_grass')将创建文件modid/blockstates/pink_grass.json,该文件的模型为modid:block/pink_grass
  • variants指定json文件中的变量。按照通常的minecraft blockstate文件,它应该是一本字典。如果不存在,则默认为空/单个变量块:'variants':{':model}
模块式
defblock_model(self,name_parts:strorlistortuple,textures:strordict=None,parent:str='cube_all')
  • name_parts指定块资源位置,如上所示
  • 纹理指定此特定模型的纹理。如果是字符串,它将创建json:"textures":{"texture":textures}。如果作为字典提供,它将插入"纹理":纹理
  • 父项指定父模型文件
商品型号
defitem_model(self,name_parts:strorlistortuple,*textures:strordict,parent:str='item/generated')
  • 名称部分指定项目资源位置,如上所示
  • 纹理指定纹理。如果纹理作为字符串提供,即"基本层"、"中间层"…,则它将按顺序将它们指定给层,即{"layer0":"基本层"、"layer1":"中间层"……}<代码>。如果提供词典,它将以与块模型相同的方式插入词典
  • 父项指定父模型文件
不成形工艺配方
defcrafting_shapeless(self,name_parts:strorlistortuple,ingredients:strordictorlistortuple,result:strordict,group:str=None,conditions:strordictorlist=None)
  • name_parts指定配方资源位置。纸币工艺ing配方将自动添加到modid/data/recipes
  • inedients指定成分。它必须是项堆栈的列表/元组,或者是表示项堆栈的字符串或字典。有关有效的项目堆栈规范,请参见上文。
  • 结果指定配方结果或输出。它必须是单个项目堆栈
  • 指定配方所属的组
  • 条件指定要启用的配方的任何条件。它必须是有效条件标识符的列表/元组,或者是表示项堆栈的字符串或字典
成型工艺配方
defcrafting_shaped(self,name_parts:strorlistortuple,pattern:list,ingredients:strordict,result,group:str=None,conditions:strordictorlist=None)
  • name_parts指定配方资源位置。注:工艺配方自动添加到modid/data/recipes
  • 模式指定模式。它必须是一个字符串列表,即鹤嘴锄模式的['xxx','s','s']。键必须与"配料"字段中使用的键相同。
  • inedients指定成分。它可以是项堆栈的单字符键字典,也可以是单项堆栈(默认为找到的第一个键,因此,只有在只有一个唯一输入时才应使用)
  • 结果指定配方结果或输出。它必须是单个项目堆栈
  • 与上面一样
  • 条件如上所述
其他配方
defrecipe(self,name_parts:strorlistortuple,type_in:str,data_in:dict,group:str=None,conditions:strordictorlist=None)

这用于创建通过自定义反序列化程序加载的修改配方。因此,名称部分需要包含配方类型的子目录

  • 名称部分指定配方资源位置。
  • 在中键入u指定配方类型
  • data_in指定要插入配方的json数据
  • 与上面一样
  • 条件如上所述
标签
defitem_tag(self,name_parts:strorlistortuple,*values:strorlistortuple,replace:bool=False)defblock_tag(self,name_parts:strorlistortuple,*values:strorlist,replace:bool=False)

它们分别用于创建项目和块标记

  • name_parts指定标记资源位置,如上所示
  • 指定值。它可以是一个值的单个字符串,也可以是多个值的字符串列表/元组
  • replace指定json中的replace字段,即标记是否应替换先前相同的条目

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
打开OrientDB数据库时发生java错误   java Hibernate合并函数偶尔会导致主键冲突   java如何在SourceTransferndexit将msg放入MQ   JavaEclipse不正确地导入项目   Java中的数据结构,带有删除节点后所有节点的操作   java创建zip存档时,什么构成重复条目   java如何计算所有值并比较每个对象?   java Threadflipbegin在Google Pixel 3上被阻止55秒   java Eclipse Hibernate:未找到适合jdbc的驱动程序:mysql://localhost:3306/hibernatedb   java Quartz计划程序未运行   java如何从junit扩展向@Test返回值?   java忽略搜索字段中的大小写   java如何从图库中选取图像,裁剪并保存在数据分区中   java CST/CDT时区更改问题   url从Java读取Twitter页面   java是否要在每个列表项中打开WebView单击?   比较输入值的Java布尔逻辑初学者   如何在服务器端使用java从客户端的HTTP POST请求接收和解析JSON对象   javascript在一个get请求中,如何启动程序,然后使用另一个get请求停止它?