用于以编程方式创建和编辑minecraft数据包的python库

mcpack的Python项目详细描述


mcpack

Build StatusPyPIPyPI - Python Version

A python library for programmatically creating and editing Minecraft data packs. Requires python 3.7.

frommcpackimportDataPack,Functionpack=DataPack('My cool pack','This is the description of my pack.')pack['my_cool_pack:hello']=Function('say Hello, world!\n''give @s minecraft:dead_bush\n')pack.dump('.minecraft/saves/New World/datapacks')

安装

确保您使用的是Python3.7或更高版本。可以使用pip安装包。

$ pip install mcpack

使用mcpack

Check out the examples for a quick overview.

创建数据包

DataPack类表示minecraft数据包。

frommcpackimportDataPackpack=DataPack('Test','Test description.')print(pack.name)# 'Test'print(pack.description)# 'Test description.'print(pack.pack_format)# 1print(pack.namespaces)# defaultdict(<class 'mcpack.Namespace'>, {})

可以使用^ {< CD3>}类方法加载已经存在的数据包。

frommcpackimportDataPackpack=DataPack.load('.minecraft/save/New World/datapacks/Test')

dump方法允许您生成实际的minecraft数据包。如果数据包已经存在,则该方法将引发^ {< CD5> }。通过将^ {< CD6> }参数设置为^ {CD7}},可以显式重写现有数据包。

frommcpackimportDataPackpack=DataPack('Test','Test description.')pack.dump('.minecraft/save/New World/datapacks')pack.dump('.minecraft/save/New World/datapacks',overwrite=True)

名称空间

Namespace对象保存对数据包项的引用,对每种类型的项使用单独的字典。

frommcpackimportNamespacenamespace=Namespace()print(namespace.advancements)# {}print(namespace.functions)# {}print(namespace.loot_tables)# {}print(namespace.recipes)# {}print(namespace.structures)# {}print(namespace.block_tags)# {}print(namespace.item_tags)# {}print(namespace.fluid_tags)# {}print(namespace.function_tags)# {}print(namespace.entity_type_tags)# {}

可以使用namespaces属性将命名空间添加到DataPack对象。请注意,您通常不需要自己创建名称空间。如果你想编辑一个命名空间,你只需要检索它,并且^ {CD11}}将为你创建一个空命名空间,如果它不存在。

frommcpackimportDataPackpack=DataPack('Test','Test description.')print(pack.namespaces['test'])# Namespace(...)

为了更加方便,对象的__getitem____setitem__方法被映射到namespaces属性。这意味着您可以直接从DataPack对象访问名称空间。

print(pack['test'])# Namespace(...)

将项添加到名称空间非常简单。只需将它们添加到各自的词典中。

frommcpackimport(DataPack,Advancement,Function,LootTable,Recipe,Structure,BlockTag,ItemTag,FluidTag,FunctionTag,EntityTypeTag)pack=DataPack('Test','Test description.')pack['test'].advancements['foo']=Advancement(...)pack['test'].functions['foo/spam']=Function(...)pack['test'].loot_tables['foo/egg']=LootTable(...)pack['test'].recipes['bar']=Recipe(...)pack['test'].structures['bar/spam']=Structure(...)pack['test'].block_tags['bar/egg']=BlockTag(...)pack['test'].item_tags['baz']=ItemTag(...)pack['test'].fluid_tags['baz/spam']=FluidTag(...)pack['test'].function_tags['baz/egg']=FunctionTag(...)pack['test'].entity_type_tags['qux']=EntityTypeTag(...)

也可以直接使用DataPack对象。__setitem__方法实际上检查键是否看起来像namespace:path,并自动分派项。我们现在可以将前面的代码简化很多。

frommcpackimport(DataPack,Advancement,Function,LootTable,Recipe,Structure,BlockTag,ItemTag,FluidTag,FunctionTag,EntityTypeTag)pack=DataPack('Test','Test description.')pack['test:foo']=Advancement(...)pack['test:foo/spam']=Function(...)pack['test:foo/egg']=LootTable(...)pack['test:bar']=Recipe(...)pack['test:bar/spam']=Structure(...)pack['test:bar/egg']=BlockTag(...)pack['test:baz']=ItemTag(...)pack['test:baz/spam']=FluidTag(...)pack['test:baz/egg']=FunctionTag(...)pack['test:qux']=EntityTypeTag(...)

进展

Advancement物体代表了雷射艇的进步。

frommcpackimportDataPack,Advancementpack=DataPack('Test','Test description.')pack['test:foo']=Advancement()advancement=pack['test'].advancements['foo']print(advancement.display)# Noneprint(advancement.parent)# Noneprint(advancement.criteria)# {}print(advancement.requirements)# Noneprint(advancement.rewards)# None

所有属性都可以在构造函数中设置。它们反映了高级json文件格式的根属性。

Check out the wiki for further details.

功能

Function对象表示minecraft函数。

frommcpackimportDataPack,Functionpack=DataPack('Test','Test description.')pack['test:foo']=Function()function=pack['test'].functions['foo']print(function.body)# ''

可以在构造函数中设置body属性。函数体对应于实际.mcfunction文件的内容。

Check out the wiki for further details.

战利品表

LootTable对象表示minecraft战利品表。

frommcpackimportDataPack,LootTablepack=DataPack('Test','Test description.')pack['test:foo']=LootTable()loot_table=pack['test'].loot_tables['foo']print(loot_table.pools)# []print(loot_table.type)# 'generic'print(loot_table.functions)# None

所有属性都可以在构造函数中设置。它们反映了loot表json文件格式的根属性。

Check out the wiki for further details.

配方

Recipe对象表示minecraft配方。

frommcpackimportDataPack,Recipepack=DataPack('Test','Test description.')pack['test:foo']=Recipe()recipe=pack['test'].recipes['foo']print(recipe.type)# 'crafting_shaped'print(recipe.group)# Noneprint(recipe.pattern)# []print(recipe.key)# {}print(recipe.ingredient)# Noneprint(recipe.ingredients)# Noneprint(recipe.result)# {}print(recipe.experience)# Noneprint(recipe.cookingtime)# Noneprint(recipe.count)# None

所有属性都可以在构造函数中设置。它们镜像配方json文件格式的根属性。

Check out the wiki for further details.

结构

Structure对象表示minecraft结构。

frommcpackimportDataPack,Structurepack=DataPack('Test','Test description.')pack['test:foo']=Structure()structure=pack['test'].structures['foo']print(structure.data_version)# Int(1503)print(structure.author)# String('')print(structure.size)# List[Int]([0, 0, 0])print(structure.palette)# List[State]([])print(structure.palettes)# List[List[State]]([])print(structure.blocks)# List[Block]([])print(structure.entities)# List[Entity]([])

所有属性都可以在构造函数中设置。它们反映结构nbt文件格式的根属性。mcpack使用^{}操作nbt数据。Structure类继承自一个nbtlib模式,该模式负责用适当的nbt标记包装python值。

Check out the wiki for further details.

标签

BlockTagItemTagFluidTagFunctionTagEntityTypeTag对象分别表示minecraft块、项、流体、函数和实体类型标记。它们在结构上都是相同的,唯一的区别是它们被写入的名称空间目录。

frommcpackimportDataPack,BlockTagpack=DataPack('Test','Test description.')pack['test:foo']=BlockTag()block_tag=pack['test'].block_tags['foo']print(block_tag.values)# []print(block_tag.replace)# False

可以在构造函数中设置valuesreplace属性。它们镜像标记json文件格式的根属性。

Check out the wiki for further details.

贡献

欢迎捐款。此项目使用^{},因此如果希望能够在本地使用此项目,则需要首先安装它。

$ curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python

现在您应该能够安装所需的依赖项。

$ poetry install

您可以使用poetry run pytest运行测试。

$ poetry run pytest

该项目还可以下载最新的minecraft版本,并对vanilla数据包运行测试。您可以使用--vanilla标志启用这些测试。

$ poetry run pytest --vanilla

许可证-MIT

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

推荐PyPI第三方库


热门话题
java字符串。替换(regex,string)以替换XML中的内容   java Spring SOAP Web服务请求日志中XML请求有效负载的元素   java在一个类中保存作业对象并在另一个类中使用(初学者)   java无法定位com。西蒙图夫斯。奥内贾尔。在web启动中启动   java可以将Spring DAO合并到服务层吗?   使用互相关的声音文件的java时间延迟   java理解C中声明的数组指针算法   regex如何在Java中找到第一个未替换的引号?   当存在插入Spring数据JPA时进行java数据库轮询   java Axis客户端调用引发classcast异常   JavaFX ControlFX对话框中的java动作按钮css样式   使用iText Java获取空页计数   返回随机文本字段输入的java   java从spring boot stomp连接到外部activemq   java控制台错误无法找到或加载主类   java NoClassDefFoundError在尝试使用JarSigner对apk文件进行签名时出错。exe   GuavaJava:对象列表到字符串列表的可能转换   java PropertyPlaceHolderConfiguration和ResourceBundleMessageSource   java无法在回调中赋值   用于旋转变换的java简洁类(减少冗余)