| >简体中文< | 臺灣正體 | English |
|如何修改魔法金属(施工中)|
- 许可证
- 前置
WithJson 是一个Minecraft模组,励志于让你能够使用Json “编程”!
现在WithJson 能够让你完全使用Json创造一些游戏元素而你无需学习Java编程!
我们需要在你的Minecraft游戏根目录创建一个名为ovo的文件夹。然后你要做的请检阅OVO文件夹与OVOPackage
注意:为了向你展示它是怎么工作的,我将会使用“//”作为注解块。但是它们不应该出现在你的文件中,因为Json没有注解块标记。
我们有一些将要实现的计划,比如让WithJson 能够解析Jar中的文件以及让你能够创建一套盔甲以及更多🥓 !
如果你有一些想法,传递Issues!但是如果这个想法的实现是不安全的,那么我将会从计划中移出。很抱歉!但是我不希望看到玩家因为这些不安全的代码导致游戏崩溃而苦恼。
这里有一些简单的概念是你需要知道的。
OVO文件夹与OVOPackage
WithJson 将不会创建任何东西。它只会解析文件。
所以你需要自己创建一个名为ovo
的文件夹,然后把所有的东西放进去。
“OVOPackage”是这个文件夹中的文件夹,而每个“OVOPackage”都是一个“伪造的模组”。一个模组就需要一个“Modid”。那么,让我们在ovo
文件夹中创建一个名为ovo_package.json
的文件。然后继续在ovo
文件夹中创建一个任意你喜欢的名字的文件夹,我创建了一个叫pineapple_test_package
的文件夹,现在我的ovo
文件夹里看起来就像这样:
dir: .minecraft
> ovo
>> pineapple_test_package
>> ovo_package.json
很好!现在打开ovo_package.json
,这是我们用于管理OVOPackage的Json,你需要把你所有的OVOPackage登记到这里。现在我的 ovo_package.json
看起来是这样的:
[
"pineapple_test_package"
]
如果我们有超多的OVOPackage,那么看起来应该是这样:
[
"pineapple_test_package",
"other_package"
]
注意:这时候 pineapple_test_package
的解析优先级会高于 other_package
。
很好!那么你知道的,“一个模组需要一个Modid”对吧?进入你刚创建的文件夹并创建info.json
,这是你的Modid的管理器。
现在你可以取一个任意你喜欢的名字,但你只能使用ASCALL字符集的字符。
{
"modid": "pineapple"
}
好极了!现在你做好了全部准备工作!干的好!
如果你的Modid太奇怪以至于无法识别,那么WithJson将会接管你的Modid并改为“ovo”。
好耶!我们终于开始了!
现在让我们为我们的物品创建一个创造模式物品栏
吧!
为什么我们不能使用原版的创造模式物品栏?很快就可以了!因为我花费了一些时间思考如何使用它们而不会有任何意外。那么我们会有那么多意外吗?
创建文件Group.json
。创建一个新的物品组!
[
{
"name": "pineappleGroup", // 你的物品组的名称,语言键为"itemGroup.%YourGroupName"
"icon": "minecraft:apple" // 本地注册名或物品ID,如果找不到物品则会变成苹果。
},
{ // 如果我们需要更多物品组...
......
}
]
完成!现在创建一个物品!
创建一个文件或文件夹 ,命名为Item.json
(如果是文件夹,Item
)。
如果它是一个文件夹,那么里面所有的文件都会被!如果是一个文件,那么所有物品必须在这个文件的列表里。这里是示例:
File:
file: Item.json
[
{
"name": "itemtest", // 物品注册名
"localization_name": "itemtest", // 物品本地名
"texture_name": "itemtest", // 物品材质名
"max_size": 64, // 最大堆叠量
"group": "pineappleGroup" // 创造模式组
},
{ // 更多炫酷的..
...
}
]
Folder:
dir: Item
file: itemtest.json
[
{
"name": "itemtest", // 物品注册名
"localization_name": "itemtest", // 物品本地名
"texture_name": "itemtest", // 物品材质名
"max_size": 64, // 最大堆叠量
"group": "pineappleGroup" // 创造模式组
},
{ // 更多炫酷的..
...
}
]
file: itemtest2.json
[
{
...
}
]
所以什么是“注册名”, “本地名”和“材质名”?
注册名是物品的唯一名称,如果有俩个或更多的物品拥有相同的注册名,那么游戏会因此崩溃。
本地名是语言文件中的键名,如果俩个或更多的物品拥有相同的本地名,那么它们在游戏的名称也是相同的。本地键的组合规则是:如果它们是物品,组合为 “item.%UnlocalName.name”, 如果它们是方块,组合为“tile.%UnlocalName.name”。
材质名是材质文件的名称,如果两个或者更多的物品拥有相同的材质名,那么它们在游戏里看起来一样。
就像物品,一个文件或文件夹。命名为Block.json
(如果是文件夹,Block
。)
那么我们开始:
[
{
"name": "pineapple_block",
"localization_name": "pineapple_block",
"texture_name": "pineapple_block", // 与物品相同
"hard": 5, // 硬度影响挖掘效率
"hard_level": 1, // 方块有多硬?原版的挖掘等级范围是0-3,对应Wood(木),Stone(石),Iron(铁),Diamond(钻)
"break_tool": "pickaxe", // 需要哪种工具:pickaxe(镐), axe(斧), 或 shovel(锹)
"is_glow": false, // 会发光吗?如果为true,发出15级的光照
"drop_item": "pineapple:pineapple", // 被破坏时掉落什么?如果没有,填入“null”即可。或者填入物品的注册名或物品ID
"group": "pineappleGroup"
}
]
食物的命名是 ItemFood.json
( 如果是文件夹, ItemFood
)
[
{
"name": "pineapple",
"localization_name": "pineapple",
"texture_name": "pineapple",
"max_size": 64,
"hunger": 5, // 食用后恢复多少饥饿?整数
"saturation": 0.8, // 食用后恢复多少饱食?浮点,2.0为满
"wolf": true, // 狼(和狗)会吃它吗?
"always_eat": false, // 能够吃不停吗?(就像金苹果)
"fast_food": false, // 吃的很快?
"isDrink": false, // 是饮料?
"return_item": "null", // 吃完返还什么?如果没有填“null”。或是物品注册名或物品ID
"group": "pineappleGroup"
}
]
圣诞快乐! 礼物是玩家右键后会给玩家一些物品的物品。命名是 ItemGift.json
( 如果是文件夹, ItemGift
)
这是一个测试的内容,未来可能会重构。(可能?)
[
{
"name": "pineapple_package",
"localization_name": "pineapple_package",
"texture_name": "pineapple",
"max_size": 1,
"items": [ // 列表的物品都会给玩家!
"pineapple:pineapple",
"pineapple:pineapple"
],
"group": "pineappleGroup"
}
]
有什么比一个工具更好的?两个工具!命名 ItemTool.json
(如果是文件夹, ItemTool
)
[
{
"name": "pineapple_pickaxe",
"localization_name": "pineapple_pickaxe",
"texture_name": "pineapple_pickaxe",
"toolkit": "pickaxe", // 工具类型: pickaxe, axe, shovel, hoe
"tool_meta": "iron", // 工具材质将会影响效率等工具元素: wood, stone, iron, gold, diamond
"group": "pineappleGroup"
}
]
我不知道要说点什么让武器看起来酷一些了。 命名 ItemWeapons.json
(如果是文件夹, ItemWeapons
)
[
{
"name": "pineapple_sword",
"localization_name": "pineapple_sword",
"texture_name": "pineapple_sword",
"tool_meta": "gold", // 同工具
"group": "pineappleGroup"
}
]
命名 Recipe.json
(如果是文件夹, Recipe
)
如果食谱中有一些问题,可能会导致游戏崩溃。
旧样式
在WithJson 0.1.0之前,所有食谱必须食用旧样式的。
[
{
"recipe": "smelting", // 熔炼食谱
"output": "minecraft:apple", // 产出物品
"items_list": [ // 仅第一个有效,注册名或物品ID
"minecraft:apple"
]
},
{
"recipe": "crafting_shapeless", // 无序食谱
"output": "minecraft:apple", // 产出物品
"items_list": [ // 范围可选1-9个物品
"minecraft:apple"
]
},
{
"recipe": "crafting_shaped", // 有序食谱
"output": "minecraft:apple", // 产出物品
"items_list": [ // 前三位是顺序排列
"A A",
" B ",
" ",
"A", "minecraft:apple", // 0.0.2版本开始允许你自定义字符
"B", "pineapple:pineapple" // 我的凤梨!
]
},
{
"recipe": "crafting_shaped",
"output": "minecraft:apple",
"items_list": [
"AA", // 自己尝试一下这样的效果?
"A", "minecraft:apple"
]
}
]
新样式
0.1.0, 现在Recipe.json看起来更像数据包了。
[
{
"type": "minecraft:crafting_shaped", // 有序食谱
"pattern": [
"AAA",
" ",
"AAA"
],
"key": {
"A": {
"item": "minecraft:apple"
}
},
"result": {
"item": "minecraft:apple",
"count": "10" // 这里是字符串..未来会改为整数 (#1)
}
},
{
"type": "minecraft:crafting_shapeless", // 无序食谱
"ingredients": [
{
"oredict": "plankWood" // 是的!矿物辞典!
},
{
"oredict": "plankWood"
},
{
"oredict": "plankWood"
},
{
"item": "minecraft:apple"
},
{
"item": "minecraft:apple"
},
{
"item": "minecraft:apple"
}
],
"result": {
"item": "pineapple:pineapple",
"count": "5"
}
},
{
"type": "minecraft:smelting", // 熔炼食谱
"ingredients": [
{
"item": "minecraft:apple" // 仅第一个生效
}
],
"result": {
"item": "minecraft:apple",
"count": "2"
}
}
]
删除食谱
删除一个游戏中的食谱,来自原版或者模组。命名DeleteRecipe.json
(如果是文件夹, DeleteRecipe
.)
[
"minecraft:bread",
"minecraft:cake",
"minecraft:cooked_potato"
]
一个新的群系准备好在世界中生成!命名 Biomes
(如果是文件夹, Biomes
.)
新增一个群系复杂于其他的。
[
{
"id": 123, // 群系的ID,不可与其他群系相同!
"name": "Pineapple Biome", // 群系的名称。和其他的群系相同?随你喜欢!
"weight": 10, // 生成权重
"weather_type": "WARM", // 气候标签,见下方
"biomes_tag": "HOT", // 群系标签,见下方
"flower": true, // 会生成花吗?
"color": 114514, // 颜色,十进制的颜色。
"grass_color": 114514, // 草的颜色,十进制的颜色。
"rain": true, // 会下雨(雪)吗?
"water_color": 114514 // 水的颜色,十进制颜色。
}
]
气候标签:
决定它会下雨还是下雪。
Type Rain or Snowy DESERT 无 WARM 雨 COOL 雨 ICY 雪
群系标签
他会在哪里生成?
基本 : HOT,COLD
密度 : SPARSE,DENSE
干燥 : WET,DRY
群系 : SAVANNA,CONIFEROUS,JUNGLE,SPOOKY,DEAD,LUSH,NETHER,END,MUSHROOM,MAGICAL,OCEAN,RIVER
复合 : WATER (Ocean and river)
高级 : MESA,FOREST,PLAINS,MOUNTAIN,HILLS,SWAMP,SANDY,SNOWY,WASTELAND,BEACH
制作一个资源包或在其他Jar中新增资源文件。
进入assets文件夹,创建一个与你的 info.json
中Modid相同的文件夹 .
创建這些文件夹: lang
和 textures
。 材质文件夹中需要区分方块与物品的文件夹。就像这样:
dir: pineapple
> assets
> > lang
> > > en_US.lang // 主要的语言文件!如果无法找到对应的语言将会默认读取en_US.lang。 **因此不要让他空着!**
> > > zh_CN.lang
> > > zh_TW.lang
> > textures
> > > blocks
> > > > pineapple_block.png // 是的!材质名称!
> > > items
> > > > pineapple.png // 是的!材质名称!
.......
哦不!太糟糕了!但是请放轻松,因为我将会提醒你一些你可能会犯下的错误!犯错是很令狼沮丧的,但是这也是一部分,所以不用担心!修复它们也是很炫酷的过程!
一个错误的注册名
这是一个很常见的问题,让我们重新检查物品(和方块)的名称。一个Minecraft 1.7.10本地化注册名应当是 “Modid + ItemRegisterName”的组合 (注册名,本地化名和材质名在1.7.10中是允许不一样的!)。或许我们需要一个工具来导出所有的物品的本地化注册名 ...?好主意,加入计划!(?)Json结构错误
另一个常見的错误~~,而且我经常犯~~!一个“,”?或者你缺少了必要的元素?拥有默认参数很快就会完成!(#1)一个注解
哦不!Json没有注解块!再去看看 如何开始 中的注意事项!缺少“info.json”, 或者你没有让你的ovopackage在“info.json”中登记
请确定ovopackage已经被登记了。我很确定是WithJson的问题!
提交一份Issues能够帮助WithJson做的更好!非常感谢你! :)