diff --git a/.gradle/7.5.1/checksums/checksums.lock b/.gradle/7.5.1/checksums/checksums.lock
index a309034c..f16f220b 100644
Binary files a/.gradle/7.5.1/checksums/checksums.lock and b/.gradle/7.5.1/checksums/checksums.lock differ
diff --git a/.gradle/7.5.1/checksums/md5-checksums.bin b/.gradle/7.5.1/checksums/md5-checksums.bin
index ba56b3f1..864de8e2 100644
Binary files a/.gradle/7.5.1/checksums/md5-checksums.bin and b/.gradle/7.5.1/checksums/md5-checksums.bin differ
diff --git a/.gradle/7.5.1/checksums/sha1-checksums.bin b/.gradle/7.5.1/checksums/sha1-checksums.bin
index 3bd9ef7b..0358534a 100644
Binary files a/.gradle/7.5.1/checksums/sha1-checksums.bin and b/.gradle/7.5.1/checksums/sha1-checksums.bin differ
diff --git a/.gradle/7.5.1/executionHistory/executionHistory.bin b/.gradle/7.5.1/executionHistory/executionHistory.bin
index 0ccaf932..3fa23e27 100644
Binary files a/.gradle/7.5.1/executionHistory/executionHistory.bin and b/.gradle/7.5.1/executionHistory/executionHistory.bin differ
diff --git a/.gradle/7.5.1/executionHistory/executionHistory.lock b/.gradle/7.5.1/executionHistory/executionHistory.lock
index a12148a1..abdc4876 100644
Binary files a/.gradle/7.5.1/executionHistory/executionHistory.lock and b/.gradle/7.5.1/executionHistory/executionHistory.lock differ
diff --git a/.gradle/7.5.1/fileHashes/fileHashes.bin b/.gradle/7.5.1/fileHashes/fileHashes.bin
index 630e23cb..5d51f66e 100644
Binary files a/.gradle/7.5.1/fileHashes/fileHashes.bin and b/.gradle/7.5.1/fileHashes/fileHashes.bin differ
diff --git a/.gradle/7.5.1/fileHashes/fileHashes.lock b/.gradle/7.5.1/fileHashes/fileHashes.lock
index 4eb88f7e..afa3c80e 100644
Binary files a/.gradle/7.5.1/fileHashes/fileHashes.lock and b/.gradle/7.5.1/fileHashes/fileHashes.lock differ
diff --git a/.gradle/7.5.1/fileHashes/resourceHashesCache.bin b/.gradle/7.5.1/fileHashes/resourceHashesCache.bin
index ada8cd18..89fc4128 100644
Binary files a/.gradle/7.5.1/fileHashes/resourceHashesCache.bin and b/.gradle/7.5.1/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 5d35749e..e32278a8 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index 6097301c..b6fa060d 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/README.assets/8e5892c67c6d87da5dc57b66735ea83.jpg b/README.assets/8e5892c67c6d87da5dc57b66735ea83.jpg
new file mode 100644
index 00000000..9aa8e10a
Binary files /dev/null and b/README.assets/8e5892c67c6d87da5dc57b66735ea83.jpg differ
diff --git a/README.assets/c6ced12b7f725785b67e6a6425c4ab0.jpg b/README.assets/c6ced12b7f725785b67e6a6425c4ab0.jpg
new file mode 100644
index 00000000..1faa5de0
Binary files /dev/null and b/README.assets/c6ced12b7f725785b67e6a6425c4ab0.jpg differ
diff --git a/README.assets/e2cc398d9f2396808d6a8a832c1bacd.jpg b/README.assets/e2cc398d9f2396808d6a8a832c1bacd.jpg
new file mode 100644
index 00000000..5d8f9ea1
Binary files /dev/null and b/README.assets/e2cc398d9f2396808d6a8a832c1bacd.jpg differ
diff --git a/README.md b/README.md
index ef38341e..69d026ed 100644
--- a/README.md
+++ b/README.md
@@ -30,13 +30,13 @@ A check mark is complete
* [ ] Armors
* [ ] Tools
* [ ] Achievements
-* [ ] Mineral
+* [x] Mineral
* [ ] Chest and Backpack
-* [ ] Wood
+* [x] Wood(There are bugs that cannot be fixed)
* [ ] Dimension
* [ ] Small Boss
* [ ] Technoblade items
-* [ ] FINEL boss(making)
+* [ ] FINEL boss
## Cooperation
@@ -46,12 +46,14 @@ If you would like to work with me on this project (or any other project). Please
## About Author
-The author of this mod is a junior high school student, which also makes it slow to update the mod.
-
-Besides, I am in the third grade of junior high school now, and the senior high school entrance examination is approaching, so I will update it more slowly, mainly during the Chinese holidays.
+The author of this module is a high school student, which also causes the update time to be slow.
## Sponsor
I don't have the Paypal, so please use Alipay or Wechat.
-![1668321374055](image/README/1668321374055.png)
+![8e5892c67c6d87da5dc57b66735ea83](./README.assets/8e5892c67c6d87da5dc57b66735ea83.jpg)
+
+![e2cc398d9f2396808d6a8a832c1bacd](./README.assets/e2cc398d9f2396808d6a8a832c1bacd.jpg)
+
+![c6ced12b7f725785b67e6a6425c4ab0](./README.assets/c6ced12b7f725785b67e6a6425c4ab0.jpg)
diff --git a/README_CN.assets/8e5892c67c6d87da5dc57b66735ea83-1691637888881-3.jpg b/README_CN.assets/8e5892c67c6d87da5dc57b66735ea83-1691637888881-3.jpg
new file mode 100644
index 00000000..9aa8e10a
Binary files /dev/null and b/README_CN.assets/8e5892c67c6d87da5dc57b66735ea83-1691637888881-3.jpg differ
diff --git a/README_CN.assets/8e5892c67c6d87da5dc57b66735ea83.jpg b/README_CN.assets/8e5892c67c6d87da5dc57b66735ea83.jpg
new file mode 100644
index 00000000..9aa8e10a
Binary files /dev/null and b/README_CN.assets/8e5892c67c6d87da5dc57b66735ea83.jpg differ
diff --git a/README_CN.assets/c6ced12b7f725785b67e6a6425c4ab0.jpg b/README_CN.assets/c6ced12b7f725785b67e6a6425c4ab0.jpg
new file mode 100644
index 00000000..1faa5de0
Binary files /dev/null and b/README_CN.assets/c6ced12b7f725785b67e6a6425c4ab0.jpg differ
diff --git a/README_CN.assets/e2cc398d9f2396808d6a8a832c1bacd-1691637926643-5.jpg b/README_CN.assets/e2cc398d9f2396808d6a8a832c1bacd-1691637926643-5.jpg
new file mode 100644
index 00000000..5d8f9ea1
Binary files /dev/null and b/README_CN.assets/e2cc398d9f2396808d6a8a832c1bacd-1691637926643-5.jpg differ
diff --git a/README_CN.assets/e2cc398d9f2396808d6a8a832c1bacd.jpg b/README_CN.assets/e2cc398d9f2396808d6a8a832c1bacd.jpg
new file mode 100644
index 00000000..5d8f9ea1
Binary files /dev/null and b/README_CN.assets/e2cc398d9f2396808d6a8a832c1bacd.jpg differ
diff --git a/README_CN.md b/README_CN.md
index 7643acc7..ebe47ffc 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -10,8 +10,6 @@
由灰风制作的压缩草重制版将原模组的1.7.10版本更新为1.16.5。我会逐步完善并添加原作者之前没有添加的内容。
-我由于某些原因将永久不会再mcbbs上发布任何内容,也不会再登录与使用mcbbs,如果需要发布相关内容可以联系我。(一般來説我都會同意的)
-
---
本项目从2023.5.5开始重写,具体完成日期未知,预计3个月。
@@ -26,9 +24,9 @@
* [ ] 盔甲
* [ ] 工具
* [ ] 成就
-* [ ] 矿物
+* [x] 矿物
* [ ] 箱子与背包
-* [ ] 木头
+* [x] 木头(有无法修复的BUG)
* [ ] 维度
* [ ] 小Boss
* [ ] Technoblade物品
@@ -42,11 +40,14 @@
# 关于作者
-本模组的作者是一名初中生,这也导致更新模组的时间较为缓慢。
-而且现在已经初中三年级,临近中考,更新也会更为缓慢,主要会在假期更新。
+本模组的作者是一名高中生,这也导致更新模组的时间较为缓慢。
# 赞助
我没有Paypal,所以请用支付宝或微信支付。
-![1668321409087](image/README_CN/1668321409087.png)
+![8e5892c67c6d87da5dc57b66735ea83](./README_CN.assets/8e5892c67c6d87da5dc57b66735ea83-1691637888881-3.jpg)
+
+![e2cc398d9f2396808d6a8a832c1bacd](./README_CN.assets/e2cc398d9f2396808d6a8a832c1bacd-1691637926643-5.jpg)
+
+![c6ced12b7f725785b67e6a6425c4ab0](./README_CN.assets/c6ced12b7f725785b67e6a6425c4ab0.jpg)
diff --git a/compressed_grass.mcreator b/compressed_grass.mcreator
index 63498fe8..15b61ae6 100644
--- a/compressed_grass.mcreator
+++ b/compressed_grass.mcreator
@@ -900,88 +900,416 @@
]
},
"path": "~/Chest"
+ },
+ {
+ "name": "SecondaryCompressedGrassArmorArmor",
+ "type": "armor",
+ "sortid": 61,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "secondary_compressed_grass_armor_armor",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/compressed_grass/models/item/secondary_compressed_grass_armor_armor_helmet.json",
+ "src/main/resources/assets/compressed_grass/models/item/secondary_compressed_grass_armor_armor_boots.json",
+ "src/main/resources/assets/compressed_grass/models/item/secondary_compressed_grass_armor_armor_chestplate.json",
+ "src/main/java/net/mcreator/compressedgrass/item/SecondaryCompressedGrassArmorArmorItem.java",
+ "src/main/resources/assets/compressed_grass/models/item/secondary_compressed_grass_armor_armor_leggings.json"
+ ]
+ },
+ "path": "~/Armor/Level 2"
+ },
+ {
+ "name": "SecondaryCompressedGrassArmorArmorHelmetRecipe",
+ "type": "recipe",
+ "sortid": 62,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "secondary_compressed_grass_armor_armor_helmet_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/secondary_compressed_grass_armor_armor_helmet_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 2"
+ },
+ {
+ "name": "SecondaryCompressedGrassArmorArmorChestplateRecipe",
+ "type": "recipe",
+ "sortid": 63,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "secondary_compressed_grass_armor_armor_chestplate_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/secondary_compressed_grass_armor_armor_chestplate_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 2"
+ },
+ {
+ "name": "SecondaryCompressedGrassArmorArmorLeggingsRecipe",
+ "type": "recipe",
+ "sortid": 64,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "secondary_compressed_grass_armor_armor_leggings_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/secondary_compressed_grass_armor_armor_leggings_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 2"
+ },
+ {
+ "name": "SecondaryCompressedGrassArmorArmorBootsRecipe",
+ "type": "recipe",
+ "sortid": 65,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "secondary_compressed_grass_armor_armor_boots_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/secondary_compressed_grass_armor_armor_boots_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 2"
+ },
+ {
+ "name": "TertiaryCompressedGrassArmorArmor",
+ "type": "armor",
+ "sortid": 66,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "tertiary_compressed_grass_armor_armor",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/compressed_grass/models/item/tertiary_compressed_grass_armor_armor_boots.json",
+ "src/main/java/net/mcreator/compressedgrass/item/TertiaryCompressedGrassArmorArmorItem.java",
+ "src/main/resources/assets/compressed_grass/models/item/tertiary_compressed_grass_armor_armor_helmet.json",
+ "src/main/resources/assets/compressed_grass/models/item/tertiary_compressed_grass_armor_armor_chestplate.json",
+ "src/main/resources/assets/compressed_grass/models/item/tertiary_compressed_grass_armor_armor_leggings.json"
+ ]
+ },
+ "path": "~/Armor/Level 3"
+ },
+ {
+ "name": "TertiaryCompressedGrassArmorArmorHelmetRecipe",
+ "type": "recipe",
+ "sortid": 67,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "tertiary_compressed_grass_armor_armor_helmet_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/tertiary_compressed_grass_armor_armor_helmet_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 3"
+ },
+ {
+ "name": "TertiaryCompressedGrassArmorArmorChestplateRecipe",
+ "type": "recipe",
+ "sortid": 68,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "tertiary_compressed_grass_armor_armor_chestplate_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/tertiary_compressed_grass_armor_armor_chestplate_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 3"
+ },
+ {
+ "name": "TertiaryCompressedGrassArmorArmorLeggingsRecipe",
+ "type": "recipe",
+ "sortid": 69,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "tertiary_compressed_grass_armor_armor_leggings_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/tertiary_compressed_grass_armor_armor_leggings_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 3"
+ },
+ {
+ "name": "TertiaryCompressedGrassArmorArmorBootsRecipe",
+ "type": "recipe",
+ "sortid": 70,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "tertiary_compressed_grass_armor_armor_boots_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/tertiary_compressed_grass_armor_armor_boots_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 3"
+ },
+ {
+ "name": "GrassFurnace",
+ "type": "block",
+ "sortid": 71,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "grass_furnace",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/compressedgrass/block/entity/GrassFurnaceBlockEntity.java",
+ "src/main/resources/assets/compressed_grass/models/item/grass_furnace.json",
+ "src/main/java/net/mcreator/compressedgrass/block/GrassFurnaceBlock.java",
+ "src/main/resources/assets/compressed_grass/blockstates/grass_furnace.json",
+ "src/main/resources/assets/compressed_grass/models/block/grass_furnace.json"
+ ]
+ },
+ "path": "~/Furnace"
+ },
+ {
+ "name": "GrassFurnaceGui",
+ "type": "gui",
+ "sortid": 72,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "grass_furnace_gui",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/compressedgrass/network/GrassFurnaceGuiSlotMessage.java",
+ "src/main/java/net/mcreator/compressedgrass/world/inventory/GrassFurnaceGuiMenu.java",
+ "src/main/java/net/mcreator/compressedgrass/client/gui/GrassFurnaceGuiScreen.java"
+ ]
+ },
+ "path": "~/Furnace"
+ },
+ {
+ "name": "GrassFurnaceGuiOpenPeriod",
+ "type": "procedure",
+ "sortid": 73,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "grass_furnace_gui_open_period",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/compressedgrass/procedures/GrassFurnaceGuiOpenPeriodProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Furnace"
+ },
+ {
+ "name": "GrassFurnaceSynthesis",
+ "type": "recipe",
+ "sortid": 74,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "grass_furnace_synthesis",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/grass_furnace_synthesis.json"
+ ]
+ },
+ "path": "~/Furnace"
+ },
+ {
+ "name": "QuaternaryCompressedGrassArmorArmor",
+ "type": "armor",
+ "sortid": 75,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "quaternary_compressed_grass_armor_armor",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/compressed_grass/models/item/quaternary_compressed_grass_armor_armor_chestplate.json",
+ "src/main/resources/assets/compressed_grass/models/item/quaternary_compressed_grass_armor_armor_leggings.json",
+ "src/main/resources/assets/compressed_grass/models/item/quaternary_compressed_grass_armor_armor_helmet.json",
+ "src/main/resources/assets/compressed_grass/models/item/quaternary_compressed_grass_armor_armor_boots.json",
+ "src/main/java/net/mcreator/compressedgrass/item/QuaternaryCompressedGrassArmorArmorItem.java"
+ ]
+ },
+ "path": "~/Armor/Level 4"
+ },
+ {
+ "name": "QuaternaryCompressedGrassArmorArmorHelmetRecipe",
+ "type": "recipe",
+ "sortid": 76,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "quaternary_compressed_grass_armor_armor_helmet_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/quaternary_compressed_grass_armor_armor_helmet_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 4"
+ },
+ {
+ "name": "QuaternaryCompressedGrassArmorArmorChestplateRecipe",
+ "type": "recipe",
+ "sortid": 77,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "quaternary_compressed_grass_armor_armor_chestplate_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/quaternary_compressed_grass_armor_armor_chestplate_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 4"
+ },
+ {
+ "name": "QuaternaryCompressedGrassArmorArmorLeggingsRecipe",
+ "type": "recipe",
+ "sortid": 78,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "quaternary_compressed_grass_armor_armor_leggings_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/quaternary_compressed_grass_armor_armor_leggings_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 4"
+ },
+ {
+ "name": "QuaternaryCompressedGrassArmorArmorBootsRecipe",
+ "type": "recipe",
+ "sortid": 79,
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "quaternary_compressed_grass_armor_armor_boots_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/compressed_grass/recipes/quaternary_compressed_grass_armor_armor_boots_recipe.json"
+ ]
+ },
+ "path": "~/Armor/Level 4"
}
],
"variable_elements": [],
"sound_elements": [],
"language_map": {
"en_us": {
- "biome.compressed_grass.grass_biome": "Grass Biome",
- "item.compressed_grass.grass_ore_armor_chestplate": "Grass Ore Chestplate",
+ "item.compressed_grass.tertiary_compressed_grass_armor_armor_boots": "Tertiary Compressed Grass Boots",
"block.compressed_grass.grass_ore_block": "Grass Ore Block",
"item.compressed_grass.grass_ore_ingot": "Grass Ore Ingot",
- "item.compressed_grass.grass_ore_armor_boots": "Grass Ore Boots",
"item.compressed_grass.quaternary_compressed_grass": "Quaternary Compressed Grass",
- "block.compressed_grass.grass_ore_ore": "Grass Ore",
- "item.compressed_grass.tertiary_compressed_grass": "Tertiary Compressed Grass",
"block.compressed_grass.grass_wood_fence_gate": "Grass Fence Gate",
- "item.compressed_grass.primary_armor_leggings": "Primary Compressed Grass Leggings",
+ "item.compressed_grass.tertiary_compressed_grass_armor_armor_chestplate": "Tertiary Compressed Grass Chestplate",
"item_group.compressed_grass.compressed_grass": "Compressed Grass",
+ "item.compressed_grass.quaternary_compressed_grass_armor_armor_helmet": "Quaternary Compressed Grass Helmet",
+ "item.compressed_grass.secondary_compressed_grass_armor_armor_boots": "Secondary Compressed Grass Boots",
+ "item.compressed_grass.primary_armor_boots": "Primary Compressed Grass Boots",
+ "block.compressed_grass.grass_wood_pressure_plate": "Grass Pressure Plate",
+ "item.compressed_grass.quaternary_compressed_grass_armor_armor_chestplate": "Quaternary Compressed Grass Chestplate",
+ "item.compressed_grass.grass_ore_hoe": "Grass Ore Hoe",
+ "block.compressed_grass.grass_wood_log": "Grass Log",
+ "block.compressed_grass.grass_wood_fence": "Grass Fence",
+ "item.compressed_grass.quaternary_compressed_grass_armor_armor_boots": "Quaternary Compressed Grass Boots",
+ "gui.compressed_grass.grass_chest_gui.label_i_try_to_add_sth_insteresting_he": "I try to add",
+ "block.compressed_grass.grass_chest": "Grass Chest",
+ "gui.compressed_grass.grass_chest_gui.label_left_and_right": "(Left/Right)",
+ "item.compressed_grass.secondary_compressed_grass_armor_armor_chestplate": "Secondary Compressed Grass Chestplate",
+ "item.compressed_grass.grass_ore_armor_helmet": "Grass Ore Helmet",
+ "item.compressed_grass.secondary_compressed_grass": "Secondary Compressed Grass",
+ "biome.compressed_grass.grass_biome": "Grass Biome",
+ "item.compressed_grass.grass_ore_armor_chestplate": "Grass Ore Chestplate",
+ "item.compressed_grass.quaternary_compressed_grass_armor_armor_leggings": "Quaternary Compressed Grass Leggings",
+ "item.compressed_grass.grass_ore_armor_boots": "Grass Ore Boots",
+ "item.compressed_grass.secondary_compressed_grass_armor_armor_leggings": "Secondary Compressed Grass Leggings",
+ "item.compressed_grass.tertiary_compressed_grass": "Tertiary Compressed Grass",
+ "block.compressed_grass.grass_ore_ore": "Grass Ore",
+ "item.compressed_grass.primary_armor_leggings": "Primary Compressed Grass Leggings",
"gui.compressed_grass.grass_chest_gui.label_sth_instere": "sth instere-",
"item.compressed_grass.grass_ore_axe": "Grass Ore Axe",
+ "block.compressed_grass.grass_furnace": "Grass Furnace",
"block.compressed_grass.grass_wood_wood": "Grass Wood",
"item.compressed_grass.primary_armor_chestplate": "Primary Compressed Grass Chestplate",
- "item.compressed_grass.primary_armor_boots": "Primary Compressed Grass Boots",
"gui.compressed_grass.grass_chest_gui.label_ting_here": "-ting here",
"item.compressed_grass.grass_ore_armor_leggings": "Grass Ore Leggings",
"block.compressed_grass.grass_wood_slab": "Grass Slab",
- "block.compressed_grass.grass_wood_pressure_plate": "Grass Pressure Plate",
- "item.compressed_grass.grass_ore_hoe": "Grass Ore Hoe",
- "block.compressed_grass.grass_wood_log": "Grass Log",
- "block.compressed_grass.grass_wood_fence": "Grass Fence",
"item.compressed_grass.grass_ore_sword": "Grass Ore Sword",
- "gui.compressed_grass.grass_chest_gui.label_i_try_to_add_sth_insteresting_he": "I try to add",
"item.compressed_grass.grass_ore_pickaxe": "Grass Ore Pickaxe",
"block.compressed_grass.grass_wood_leaves": "Grass Leaves",
+ "item.compressed_grass.tertiary_compressed_grass_armor_armor_leggings": "Tertiary Compressed Grass Leggings",
"item.compressed_grass.primary_compressed_grass": "Primary Compressed Grass",
"block.compressed_grass.grass_wood_button": "Grass Button",
"item.compressed_grass.primary_armor_helmet": "Primary Compressed Grass Helmet",
- "block.compressed_grass.grass_chest": "Grass Chest",
- "gui.compressed_grass.grass_chest_gui.label_left_and_right": "(Left/Right)",
+ "item.compressed_grass.secondary_compressed_grass_armor_armor_helmet": "Secondary Compressed Grass Helmet",
"block.compressed_grass.grass_wood_planks": "Grass Planks",
+ "item.compressed_grass.tertiary_compressed_grass_armor_armor_helmet": "Tertiary Compressed Grass Helmet",
"item.compressed_grass.grass_ore_shovel": "Grass Ore Shovel",
- "block.compressed_grass.grass_wood_stairs": "Grass Stairs",
- "item.compressed_grass.grass_ore_armor_helmet": "Grass Ore Helmet",
- "item.compressed_grass.secondary_compressed_grass": "Secondary Compressed Grass"
+ "block.compressed_grass.grass_wood_stairs": "Grass Stairs"
},
"zh_cn": {
- "biome.compressed_grass.grass_biome": "草群系",
- "item.compressed_grass.grass_ore_armor_chestplate": "草矿胸甲",
+ "item.compressed_grass.tertiary_compressed_grass_armor_armor_boots": "三级压缩草靴子",
"block.compressed_grass.grass_ore_block": "草块",
"item.compressed_grass.grass_ore_ingot": "草锭",
- "item.compressed_grass.grass_ore_armor_boots": "草矿靴子",
"item.compressed_grass.quaternary_compressed_grass": "四级压缩草",
"block.compressed_grass.grass_wood_fence_gate": "草木栅栏门",
+ "item_group.compressed_grass.compressed_grass": "压缩草",
+ "item.compressed_grass.tertiary_compressed_grass_armor_armor_chestplate": "三级压缩草胸甲",
+ "item.compressed_grass.quaternary_compressed_grass_armor_armor_helmet": "四级压缩草头盔",
+ "item.compressed_grass.secondary_compressed_grass_armor_armor_boots": "二级压缩草靴子",
+ "item.compressed_grass.primary_armor_boots": "一级压缩草靴子",
+ "block.compressed_grass.grass_wood_pressure_plate": "草木压力板",
+ "item.compressed_grass.quaternary_compressed_grass_armor_armor_chestplate": "四级压缩草胸甲",
+ "item.compressed_grass.grass_ore_hoe": "草矿锄",
+ "block.compressed_grass.grass_wood_log": "草木树干",
+ "block.compressed_grass.grass_wood_fence": "草木栅栏",
+ "item.compressed_grass.quaternary_compressed_grass_armor_armor_boots": "四级压缩草靴子",
+ "gui.compressed_grass.grass_chest_gui.label_i_try_to_add_sth_insteresting_he": "我想添加",
+ "gui.compressed_grass.grass_chest_gui.label_left_and_right": "(左/右)",
+ "block.compressed_grass.grass_chest": "草箱",
+ "item.compressed_grass.secondary_compressed_grass_armor_armor_chestplate": "二级压缩草胸甲",
+ "item.compressed_grass.grass_ore_armor_helmet": "草矿头盔",
+ "item.compressed_grass.secondary_compressed_grass": "二级压缩草",
+ "biome.compressed_grass.grass_biome": "草群系",
+ "item.compressed_grass.grass_ore_armor_chestplate": "草矿胸甲",
+ "item.compressed_grass.quaternary_compressed_grass_armor_armor_leggings": "四级压缩草护腿",
+ "item.compressed_grass.grass_ore_armor_boots": "草矿靴子",
+ "item.compressed_grass.secondary_compressed_grass_armor_armor_leggings": "二级压缩草护腿",
"item.compressed_grass.tertiary_compressed_grass": "三级压缩草",
"block.compressed_grass.grass_ore_ore": "草矿",
"item.compressed_grass.primary_armor_leggings": "一级压缩草护腿",
- "item_group.compressed_grass.compressed_grass": "压缩草",
"gui.compressed_grass.grass_chest_gui.label_sth_instere": "一些有趣",
"item.compressed_grass.grass_ore_axe": "草矿斧",
+ "block.compressed_grass.grass_furnace": "草炉",
"block.compressed_grass.grass_wood_wood": "草木木板",
"item.compressed_grass.primary_armor_chestplate": "一级压缩草胸甲",
- "item.compressed_grass.primary_armor_boots": "一级压缩草靴子",
"gui.compressed_grass.grass_chest_gui.label_ting_here": "的在这里",
"item.compressed_grass.grass_ore_armor_leggings": "草矿护腿",
"block.compressed_grass.grass_wood_slab": "草木半阶",
- "block.compressed_grass.grass_wood_pressure_plate": "草木压力板",
- "item.compressed_grass.grass_ore_hoe": "草矿锄",
- "block.compressed_grass.grass_wood_log": "草木树干",
- "block.compressed_grass.grass_wood_fence": "草木栅栏",
"item.compressed_grass.grass_ore_sword": "草矿剑",
- "gui.compressed_grass.grass_chest_gui.label_i_try_to_add_sth_insteresting_he": "我想添加",
"item.compressed_grass.grass_ore_pickaxe": "草矿镐",
"block.compressed_grass.grass_wood_leaves": "草木树叶",
+ "item.compressed_grass.tertiary_compressed_grass_armor_armor_leggings": "三级压缩草护腿",
"item.compressed_grass.primary_compressed_grass": "一级压缩草",
"block.compressed_grass.grass_wood_button": "草木按钮",
"item.compressed_grass.primary_armor_helmet": "一级压缩草头盔",
- "block.compressed_grass.grass_chest": "草箱",
- "gui.compressed_grass.grass_chest_gui.label_left_and_right": "(左/右)",
+ "item.compressed_grass.secondary_compressed_grass_armor_armor_helmet": "二级压缩草头盔",
"block.compressed_grass.grass_wood_planks": "草木木桩",
+ "item.compressed_grass.tertiary_compressed_grass_armor_armor_helmet": "三级压缩草头盔",
"item.compressed_grass.grass_ore_shovel": "草矿铲",
- "block.compressed_grass.grass_wood_stairs": "草木台阶",
- "item.compressed_grass.grass_ore_armor_helmet": "草矿头盔",
- "item.compressed_grass.secondary_compressed_grass": "二级压缩草"
+ "block.compressed_grass.grass_wood_stairs": "草木台阶"
}
},
"foldersRoot": {
@@ -1038,6 +1366,18 @@
{
"name": "Level 1",
"children": []
+ },
+ {
+ "name": "Level 2",
+ "children": []
+ },
+ {
+ "name": "Level 3",
+ "children": []
+ },
+ {
+ "name": "Level 4",
+ "children": []
}
]
},
@@ -1073,6 +1413,10 @@
{
"name": "Biome",
"children": []
+ },
+ {
+ "name": "Furnace",
+ "children": []
}
]
},
diff --git a/elements/GrassFurnace.mod.json b/elements/GrassFurnace.mod.json
new file mode 100644
index 00000000..73bbc769
--- /dev/null
+++ b/elements/GrassFurnace.mod.json
@@ -0,0 +1,313 @@
+{
+ "_fv": 43,
+ "_type": "block",
+ "definition": {
+ "texture": "grassore_ore_block",
+ "textureTop": "grassore_ore_block",
+ "textureLeft": "grassore_ore_block",
+ "textureFront": "grassore_ore_block",
+ "textureRight": "grassore_ore_block",
+ "textureBack": "grassore_ore_block",
+ "renderType": 2,
+ "customModelName": "grassfurnace:default",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": true,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 1.0,
+ "Mz": 16.0,
+ "subtract": false
+ },
+ {
+ "mx": 0.0,
+ "my": 1.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 7.0,
+ "Mz": 1.0,
+ "subtract": false
+ },
+ {
+ "mx": 0.0,
+ "my": 1.0,
+ "mz": 15.0,
+ "Mx": 1.0,
+ "My": 7.0,
+ "Mz": 16.0,
+ "subtract": false
+ },
+ {
+ "mx": 15.0,
+ "my": 1.0,
+ "mz": 15.0,
+ "Mx": 16.0,
+ "My": 7.0,
+ "Mz": 16.0,
+ "subtract": false
+ },
+ {
+ "mx": 15.0,
+ "my": 1.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 7.0,
+ "Mz": 1.0,
+ "subtract": false
+ },
+ {
+ "mx": 1.0,
+ "my": 1.0,
+ "mz": 0.0,
+ "Mx": 15.0,
+ "My": 4.0,
+ "Mz": 1.0,
+ "subtract": false
+ },
+ {
+ "mx": 1.0,
+ "my": 1.0,
+ "mz": 15.0,
+ "Mx": 15.0,
+ "My": 4.0,
+ "Mz": 16.0,
+ "subtract": false
+ },
+ {
+ "mx": 15.0,
+ "my": 1.0,
+ "mz": 1.0,
+ "Mx": 16.0,
+ "My": 4.0,
+ "Mz": 15.0,
+ "subtract": false
+ },
+ {
+ "mx": 0.0,
+ "my": 1.0,
+ "mz": 1.0,
+ "Mx": 1.0,
+ "My": 4.0,
+ "Mz": 15.0,
+ "subtract": false
+ },
+ {
+ "mx": 1.0,
+ "my": 2.0,
+ "mz": 1.0,
+ "Mx": 15.0,
+ "My": 4.0,
+ "Mz": 15.0,
+ "subtract": false
+ },
+ {
+ "mx": 1.0,
+ "my": 4.0,
+ "mz": 0.0,
+ "Mx": 15.0,
+ "My": 7.0,
+ "Mz": 0.0,
+ "subtract": false
+ },
+ {
+ "mx": 1.0,
+ "my": 4.0,
+ "mz": 16.0,
+ "Mx": 15.0,
+ "My": 7.0,
+ "Mz": 16.0,
+ "subtract": false
+ },
+ {
+ "mx": 0.0,
+ "my": 4.0,
+ "mz": 1.0,
+ "Mx": 0.0,
+ "My": 7.0,
+ "Mz": 15.0,
+ "subtract": false
+ },
+ {
+ "mx": 16.0,
+ "my": 4.0,
+ "mz": 1.0,
+ "Mx": 16.0,
+ "My": 7.0,
+ "Mz": 15.0,
+ "subtract": false
+ },
+ {
+ "mx": 0.0,
+ "my": 7.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 8.0,
+ "Mz": 16.0,
+ "subtract": false
+ },
+ {
+ "mx": 0.0,
+ "my": 8.0,
+ "mz": 0.0,
+ "Mx": 3.0,
+ "My": 13.0,
+ "Mz": 3.0,
+ "subtract": false
+ },
+ {
+ "mx": 13.0,
+ "my": 8.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 13.0,
+ "Mz": 3.0,
+ "subtract": false
+ },
+ {
+ "mx": 13.0,
+ "my": 8.0,
+ "mz": 13.0,
+ "Mx": 16.0,
+ "My": 13.0,
+ "Mz": 16.0,
+ "subtract": false
+ },
+ {
+ "mx": 0.0,
+ "my": 8.0,
+ "mz": 13.0,
+ "Mx": 3.0,
+ "My": 13.0,
+ "Mz": 16.0,
+ "subtract": false
+ },
+ {
+ "mx": 0.0,
+ "my": 13.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 15.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "name": "Grass Furnace",
+ "specialInfo": [],
+ "hardness": 1.0,
+ "resistance": 10.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "CUSTOM:CompressedGrass"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 0,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "GROUND"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "breakHarvestLevel": 1,
+ "isBonemealable": false,
+ "hasInventory": true,
+ "guiBoundTo": "GrassFurnaceGui",
+ "openGUIOnRightClick": true,
+ "inventorySize": 3,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE#0"
+ },
+ {
+ "value": "Blocks.STONE#1"
+ },
+ {
+ "value": "Blocks.STONE#3"
+ },
+ {
+ "value": "Blocks.STONE#5"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/GrassFurnaceGui.mod.json b/elements/GrassFurnaceGui.mod.json
new file mode 100644
index 00000000..53e5cd25
--- /dev/null
+++ b/elements/GrassFurnaceGui.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 43,
+ "_type": "gui",
+ "definition": {
+ "type": 1,
+ "width": 176,
+ "height": 166,
+ "inventoryOffsetX": 0,
+ "inventoryOffsetY": 0,
+ "renderBgLayer": true,
+ "doesPauseGame": false,
+ "components": [
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 0,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "onSlotChanged": {
+ "name": "GrassFurnaceGuiOpenPeriod"
+ },
+ "x": 159,
+ "y": 71
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 1,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 249,
+ "y": 71
+ }
+ }
+ ],
+ "gridSettings": {
+ "sx": 18,
+ "sy": 18,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/GrassFurnaceGuiOpenPeriod.mod.json b/elements/GrassFurnaceGuiOpenPeriod.mod.json
new file mode 100644
index 00000000..fd2d8e4c
--- /dev/null
+++ b/elements/GrassFurnaceGuiOpenPeriod.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 43,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerANDLTThis tests if the output slot has less than 64 items in it if it's true than it will run the rest of the conditions.1640CUSTOM:GrassOreOreThese procedure blocks remove one item from the fule and smelting slots except for the output slot.01This gets the number from the output slot then adds the amount to the output slot. This item should be the smelted result item. Note that +1 is the amount you are smelting.1ADD11CUSTOM:GrassOreIngot"
+ }
+}
\ No newline at end of file
diff --git a/elements/GrassFurnaceSynthesis.mod.json b/elements/GrassFurnaceSynthesis.mod.json
new file mode 100644
index 00000000..fcc50bd4
--- /dev/null
+++ b/elements/GrassFurnaceSynthesis.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Blocks.ANDESITE_WALL"
+ },
+ {
+ "value": "CUSTOM:GrassOreBlock"
+ },
+ {
+ "value": "Blocks.ANDESITE_WALL"
+ },
+ {
+ "value": "Blocks.CHISELED_DEEPSLATE"
+ },
+ {
+ "value": "Items.LAVA_BUCKET"
+ },
+ {
+ "value": "Blocks.CHISELED_DEEPSLATE"
+ },
+ {
+ "value": "Blocks.DEEPSLATE_BRICK_WALL"
+ },
+ {
+ "value": "CUSTOM:GrassOreIngot"
+ },
+ {
+ "value": "Blocks.DEEPSLATE_BRICK_WALL"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:GrassFurnace"
+ },
+ "name": "grass_furnace_synthesis",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/GrassOreOre.mod.json b/elements/GrassOreOre.mod.json
index 15d5ca06..05fcf276 100644
--- a/elements/GrassOreOre.mod.json
+++ b/elements/GrassOreOre.mod.json
@@ -36,7 +36,7 @@
"name": "Grass Ore",
"specialInfo": [],
"hardness": 9.0,
- "resistance": 12.041123426403463,
+ "resistance": 7.0,
"hasGravity": false,
"isWaterloggable": false,
"creativeTab": {
@@ -44,7 +44,7 @@
},
"destroyTool": "pickaxe",
"customDrop": {
- "value": "CUSTOM:GrassOreIngot"
+ "value": ""
},
"dropAmount": 1,
"useLootTableForDrops": false,
@@ -136,9 +136,9 @@
}
],
"generationShape": "UNIFORM",
- "frequencyPerChunks": 2,
+ "frequencyPerChunks": 1,
"frequencyOnChunk": 1,
- "minGenerateHeight": -64,
- "maxGenerateHeight": -32
+ "minGenerateHeight": -40,
+ "maxGenerateHeight": -30
}
}
\ No newline at end of file
diff --git a/elements/GrassOreOreSmelting.mod.json b/elements/GrassOreOreSmelting.mod.json
index d812cef3..d459c844 100644
--- a/elements/GrassOreOreSmelting.mod.json
+++ b/elements/GrassOreOreSmelting.mod.json
@@ -6,42 +6,10 @@
"recipeRetstackSize": 1,
"group": "",
"cookingBookCategory": "MISC",
- "xpReward": 2.0999999999999996,
- "cookingTime": 200,
+ "xpReward": 5.0,
+ "cookingTime": 400,
"craftingBookCategory": "MISC",
"recipeShapeless": false,
- "recipeSlots": [
- {
- "value": ""
- },
- {
- "value": ""
- },
- {
- "value": ""
- },
- {
- "value": ""
- },
- {
- "value": ""
- },
- {
- "value": ""
- },
- {
- "value": ""
- },
- {
- "value": ""
- },
- {
- "value": ""
- }
- ],
- "recipeReturnStack": {
- "value": ""
- },
"smeltingInputStack": {
"value": "CUSTOM:GrassOreOre"
},
diff --git a/elements/PrimaryArmor.mod.json b/elements/PrimaryArmor.mod.json
index 2e900020..8df8a8c1 100644
--- a/elements/PrimaryArmor.mod.json
+++ b/elements/PrimaryArmor.mod.json
@@ -11,7 +11,7 @@
"enableBoots": true,
"textureBoots": "primary_boots",
"creativeTab": {
- "value": "COMBAT"
+ "value": "CUSTOM:CompressedGrass"
},
"armorTextureFile": "primary",
"helmetName": "Primary Compressed Grass Helmet",
diff --git a/elements/QuaternaryCompressedGrassArmorArmor.mod.json b/elements/QuaternaryCompressedGrassArmorArmor.mod.json
new file mode 100644
index 00000000..88ade54f
--- /dev/null
+++ b/elements/QuaternaryCompressedGrassArmorArmor.mod.json
@@ -0,0 +1,70 @@
+{
+ "_fv": 43,
+ "_type": "armor",
+ "definition": {
+ "enableHelmet": true,
+ "textureHelmet": "quaternarycompressedgrassarmor_head",
+ "enableBody": true,
+ "textureBody": "quaternarycompressedgrassarmor_body",
+ "enableLeggings": true,
+ "textureLeggings": "quaternarycompressedgrassarmor_leggings",
+ "enableBoots": true,
+ "textureBoots": "quaternarycompressedgrassarmor_boots",
+ "creativeTab": {
+ "value": "CUSTOM:CompressedGrass"
+ },
+ "armorTextureFile": "quaternarycompressedgrassarmor",
+ "helmetName": "Quaternary Compressed Grass Helmet",
+ "bodyName": "Quaternary Compressed Grass Chestplate",
+ "leggingsName": "Quaternary Compressed Grass Leggings",
+ "bootsName": "Quaternary Compressed Grass Boots",
+ "helmetSpecialInfo": [],
+ "bodySpecialInfo": [],
+ "leggingsSpecialInfo": [],
+ "bootsSpecialInfo": [],
+ "helmetModelName": "Default",
+ "helmetModelPart": "Helmet",
+ "helmetModelTexture": "From armor",
+ "bodyModelName": "Default",
+ "bodyModelPart": "Body",
+ "armsModelPartL": "Arms L",
+ "armsModelPartR": "Arms R",
+ "bodyModelTexture": "From armor",
+ "leggingsModelName": "Default",
+ "leggingsModelPartL": "Leggings L",
+ "leggingsModelPartR": "Leggings R",
+ "leggingsModelTexture": "From armor",
+ "bootsModelName": "Default",
+ "bootsModelPartL": "Boots L",
+ "bootsModelPartR": "Boots R",
+ "bootsModelTexture": "From armor",
+ "helmetItemRenderType": 0,
+ "helmetItemCustomModelName": "Normal",
+ "bodyItemRenderType": 0,
+ "bodyItemCustomModelName": "Normal",
+ "leggingsItemRenderType": 0,
+ "leggingsItemCustomModelName": "Normal",
+ "bootsItemRenderType": 0,
+ "bootsItemCustomModelName": "Normal",
+ "helmetImmuneToFire": false,
+ "bodyImmuneToFire": false,
+ "leggingsImmuneToFire": false,
+ "bootsImmuneToFire": false,
+ "maxDamage": 12,
+ "damageValueHelmet": 2,
+ "damageValueBody": 4,
+ "damageValueLeggings": 5,
+ "damageValueBoots": 2,
+ "enchantability": 7,
+ "toughness": 0.1,
+ "knockbackResistance": 0.1,
+ "equipSound": {
+ "value": ""
+ },
+ "repairItems": [
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/QuaternaryCompressedGrassArmorArmorBootsRecipe.mod.json b/elements/QuaternaryCompressedGrassArmorArmorBootsRecipe.mod.json
new file mode 100644
index 00000000..cfbaf423
--- /dev/null
+++ b/elements/QuaternaryCompressedGrassArmorArmorBootsRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:QuaternaryCompressedGrassArmorArmor.boots"
+ },
+ "name": "quaternary_compressed_grass_armor_armor_boots_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/QuaternaryCompressedGrassArmorArmorChestplateRecipe.mod.json b/elements/QuaternaryCompressedGrassArmorArmorChestplateRecipe.mod.json
new file mode 100644
index 00000000..48eed1f7
--- /dev/null
+++ b/elements/QuaternaryCompressedGrassArmorArmorChestplateRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:QuaternaryCompressedGrassArmorArmor.body"
+ },
+ "name": "quaternary_compressed_grass_armor_armor_chestplate_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/QuaternaryCompressedGrassArmorArmorHelmetRecipe.mod.json b/elements/QuaternaryCompressedGrassArmorArmorHelmetRecipe.mod.json
new file mode 100644
index 00000000..d3d95ca9
--- /dev/null
+++ b/elements/QuaternaryCompressedGrassArmorArmorHelmetRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:QuaternaryCompressedGrassArmorArmor.helmet"
+ },
+ "name": "quaternary_compressed_grass_armor_armor_helmet_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/QuaternaryCompressedGrassArmorArmorLeggingsRecipe.mod.json b/elements/QuaternaryCompressedGrassArmorArmorLeggingsRecipe.mod.json
new file mode 100644
index 00000000..0a6d6e10
--- /dev/null
+++ b/elements/QuaternaryCompressedGrassArmorArmorLeggingsRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:QuaternaryCompressedGrass"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:QuaternaryCompressedGrassArmorArmor.legs"
+ },
+ "name": "quaternary_compressed_grass_armor_armor_leggings_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SecondaryCompressedGrassArmorArmor.mod.json b/elements/SecondaryCompressedGrassArmorArmor.mod.json
new file mode 100644
index 00000000..7dc9d0f9
--- /dev/null
+++ b/elements/SecondaryCompressedGrassArmorArmor.mod.json
@@ -0,0 +1,70 @@
+{
+ "_fv": 43,
+ "_type": "armor",
+ "definition": {
+ "enableHelmet": true,
+ "textureHelmet": "secondarycompressedgrassarmor_head",
+ "enableBody": true,
+ "textureBody": "secondarycompressedgrassarmor_body",
+ "enableLeggings": true,
+ "textureLeggings": "secondarycompressedgrassarmor_leggings",
+ "enableBoots": true,
+ "textureBoots": "secondarycompressedgrassarmor_boots",
+ "creativeTab": {
+ "value": "CUSTOM:CompressedGrass"
+ },
+ "armorTextureFile": "secondarycompressedgrassarmor",
+ "helmetName": "Secondary Compressed Grass Helmet",
+ "bodyName": "Secondary Compressed Grass Chestplate",
+ "leggingsName": "Secondary Compressed Grass Leggings",
+ "bootsName": "Secondary Compressed Grass Boots",
+ "helmetSpecialInfo": [],
+ "bodySpecialInfo": [],
+ "leggingsSpecialInfo": [],
+ "bootsSpecialInfo": [],
+ "helmetModelName": "Default",
+ "helmetModelPart": "Helmet",
+ "helmetModelTexture": "From armor",
+ "bodyModelName": "Default",
+ "bodyModelPart": "Body",
+ "armsModelPartL": "Arms L",
+ "armsModelPartR": "Arms R",
+ "bodyModelTexture": "From armor",
+ "leggingsModelName": "Default",
+ "leggingsModelPartL": "Leggings L",
+ "leggingsModelPartR": "Leggings R",
+ "leggingsModelTexture": "From armor",
+ "bootsModelName": "Default",
+ "bootsModelPartL": "Boots L",
+ "bootsModelPartR": "Boots R",
+ "bootsModelTexture": "From armor",
+ "helmetItemRenderType": 0,
+ "helmetItemCustomModelName": "Normal",
+ "bodyItemRenderType": 0,
+ "bodyItemCustomModelName": "Normal",
+ "leggingsItemRenderType": 0,
+ "leggingsItemCustomModelName": "Normal",
+ "bootsItemRenderType": 0,
+ "bootsItemCustomModelName": "Normal",
+ "helmetImmuneToFire": false,
+ "bodyImmuneToFire": false,
+ "leggingsImmuneToFire": false,
+ "bootsImmuneToFire": false,
+ "maxDamage": 9,
+ "damageValueHelmet": 1,
+ "damageValueBody": 3,
+ "damageValueLeggings": 4,
+ "damageValueBoots": 1,
+ "enchantability": 5,
+ "toughness": 0.1,
+ "knockbackResistance": 0.1,
+ "equipSound": {
+ "value": ""
+ },
+ "repairItems": [
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/SecondaryCompressedGrassArmorArmorBootsRecipe.mod.json b/elements/SecondaryCompressedGrassArmorArmorBootsRecipe.mod.json
new file mode 100644
index 00000000..37c778f8
--- /dev/null
+++ b/elements/SecondaryCompressedGrassArmorArmorBootsRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SecondaryCompressedGrassArmorArmor.boots"
+ },
+ "name": "secondary_compressed_grass_armor_armor_boots_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SecondaryCompressedGrassArmorArmorChestplateRecipe.mod.json b/elements/SecondaryCompressedGrassArmorArmorChestplateRecipe.mod.json
new file mode 100644
index 00000000..3bf49509
--- /dev/null
+++ b/elements/SecondaryCompressedGrassArmorArmorChestplateRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SecondaryCompressedGrassArmorArmor.body"
+ },
+ "name": "secondary_compressed_grass_armor_armor_chestplate_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SecondaryCompressedGrassArmorArmorHelmetRecipe.mod.json b/elements/SecondaryCompressedGrassArmorArmorHelmetRecipe.mod.json
new file mode 100644
index 00000000..7c46d800
--- /dev/null
+++ b/elements/SecondaryCompressedGrassArmorArmorHelmetRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SecondaryCompressedGrassArmorArmor.helmet"
+ },
+ "name": "secondary_compressed_grass_armor_armor_helmet_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SecondaryCompressedGrassArmorArmorLeggingsRecipe.mod.json b/elements/SecondaryCompressedGrassArmorArmorLeggingsRecipe.mod.json
new file mode 100644
index 00000000..c8516cf1
--- /dev/null
+++ b/elements/SecondaryCompressedGrassArmorArmorLeggingsRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SecondaryCompressedGrass"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SecondaryCompressedGrassArmorArmor.legs"
+ },
+ "name": "secondary_compressed_grass_armor_armor_leggings_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/TertiaryCompressedGrassArmorArmor.mod.json b/elements/TertiaryCompressedGrassArmorArmor.mod.json
new file mode 100644
index 00000000..4baf80be
--- /dev/null
+++ b/elements/TertiaryCompressedGrassArmorArmor.mod.json
@@ -0,0 +1,70 @@
+{
+ "_fv": 43,
+ "_type": "armor",
+ "definition": {
+ "enableHelmet": true,
+ "textureHelmet": "tertiarycompressedgrassarmor_head",
+ "enableBody": true,
+ "textureBody": "tertiarycompressedgrassarmor_body",
+ "enableLeggings": true,
+ "textureLeggings": "tertiarycompressedgrassarmor_leggings",
+ "enableBoots": true,
+ "textureBoots": "tertiarycompressedgrassarmor_boots",
+ "creativeTab": {
+ "value": "CUSTOM:CompressedGrass"
+ },
+ "armorTextureFile": "tertiarycompressedgrassarmor",
+ "helmetName": "Tertiary Compressed Grass Helmet",
+ "bodyName": "Tertiary Compressed Grass Chestplate",
+ "leggingsName": "Tertiary Compressed Grass Leggings",
+ "bootsName": "Tertiary Compressed Grass Boots",
+ "helmetSpecialInfo": [],
+ "bodySpecialInfo": [],
+ "leggingsSpecialInfo": [],
+ "bootsSpecialInfo": [],
+ "helmetModelName": "Default",
+ "helmetModelPart": "Helmet",
+ "helmetModelTexture": "From armor",
+ "bodyModelName": "Default",
+ "bodyModelPart": "Body",
+ "armsModelPartL": "Arms L",
+ "armsModelPartR": "Arms R",
+ "bodyModelTexture": "From armor",
+ "leggingsModelName": "Default",
+ "leggingsModelPartL": "Leggings L",
+ "leggingsModelPartR": "Leggings R",
+ "leggingsModelTexture": "From armor",
+ "bootsModelName": "Default",
+ "bootsModelPartL": "Boots L",
+ "bootsModelPartR": "Boots R",
+ "bootsModelTexture": "From armor",
+ "helmetItemRenderType": 0,
+ "helmetItemCustomModelName": "Normal",
+ "bodyItemRenderType": 0,
+ "bodyItemCustomModelName": "Normal",
+ "leggingsItemRenderType": 0,
+ "leggingsItemCustomModelName": "Normal",
+ "bootsItemRenderType": 0,
+ "bootsItemCustomModelName": "Normal",
+ "helmetImmuneToFire": false,
+ "bodyImmuneToFire": false,
+ "leggingsImmuneToFire": false,
+ "bootsImmuneToFire": false,
+ "maxDamage": 11,
+ "damageValueHelmet": 1,
+ "damageValueBody": 4,
+ "damageValueLeggings": 4,
+ "damageValueBoots": 1,
+ "enchantability": 6,
+ "toughness": 0.1,
+ "knockbackResistance": 0.1,
+ "equipSound": {
+ "value": ""
+ },
+ "repairItems": [
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/TertiaryCompressedGrassArmorArmorBootsRecipe.mod.json b/elements/TertiaryCompressedGrassArmorArmorBootsRecipe.mod.json
new file mode 100644
index 00000000..8aab6696
--- /dev/null
+++ b/elements/TertiaryCompressedGrassArmorArmorBootsRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:TertiaryCompressedGrassArmorArmor.boots"
+ },
+ "name": "tertiary_compressed_grass_armor_armor_boots_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/TertiaryCompressedGrassArmorArmorChestplateRecipe.mod.json b/elements/TertiaryCompressedGrassArmorArmorChestplateRecipe.mod.json
new file mode 100644
index 00000000..276098b9
--- /dev/null
+++ b/elements/TertiaryCompressedGrassArmorArmorChestplateRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:TertiaryCompressedGrassArmorArmor.body"
+ },
+ "name": "tertiary_compressed_grass_armor_armor_chestplate_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/TertiaryCompressedGrassArmorArmorHelmetRecipe.mod.json b/elements/TertiaryCompressedGrassArmorArmorHelmetRecipe.mod.json
new file mode 100644
index 00000000..57483edd
--- /dev/null
+++ b/elements/TertiaryCompressedGrassArmorArmorHelmetRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:TertiaryCompressedGrassArmorArmor.helmet"
+ },
+ "name": "tertiary_compressed_grass_armor_armor_helmet_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/TertiaryCompressedGrassArmorArmorLeggingsRecipe.mod.json b/elements/TertiaryCompressedGrassArmorArmorLeggingsRecipe.mod.json
new file mode 100644
index 00000000..6deffc5f
--- /dev/null
+++ b/elements/TertiaryCompressedGrassArmorArmorLeggingsRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 43,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:TertiaryCompressedGrass"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:TertiaryCompressedGrassArmorArmor.legs"
+ },
+ "name": "tertiary_compressed_grass_armor_armor_leggings_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/icon.png b/icon.png
new file mode 100644
index 00000000..d151842a
Binary files /dev/null and b/icon.png differ
diff --git a/model/GrassFurnace/GrassFurnace.bbmodel b/model/GrassFurnace/GrassFurnace.bbmodel
new file mode 100644
index 00000000..4cc6ee76
--- /dev/null
+++ b/model/GrassFurnace/GrassFurnace.bbmodel
@@ -0,0 +1 @@
+{"meta":{"format_version":"4.5","model_format":"java_block","box_uv":false},"name":"GrassFurnace","parent":"","ambientocclusion":true,"front_gui_light":false,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"unhandled_root_fields":{},"resolution":{"width":32,"height":32},"elements":[{"name":"底部","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,0,0],"to":[16,1,16],"autouv":0,"color":7,"origin":[0,0,0],"faces":{"north":{"uv":[16,0,32,1],"texture":0},"east":{"uv":[16,1,32,2],"texture":0},"south":{"uv":[16,2,32,3],"texture":0},"west":{"uv":[16,3,32,4],"texture":0},"up":{"uv":[16,16,0,0],"texture":0},"down":{"uv":[16,16,0,32],"texture":0}},"type":"cube","uuid":"37a9b9db-2dc6-d822-879d-c9fc22abbe2f"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,1,0],"to":[1,7,1],"autouv":0,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,2,12],"texture":1},"east":{"uv":[2,0,4,12],"texture":1},"south":{"uv":[4,0,6,12],"texture":1},"west":{"uv":[6,0,8,12],"texture":1},"up":{"uv":[10,2,8,0],"texture":1},"down":{"uv":[10,2,8,4],"texture":1}},"type":"cube","uuid":"d6798fc5-08fa-ebbb-b4dd-6451b12deebf"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,1,15],"to":[1,7,16],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,2,12],"texture":1},"east":{"uv":[0,0,2,12],"texture":1},"south":{"uv":[0,0,2,12],"texture":1},"west":{"uv":[0,0,2,12],"texture":1},"up":{"uv":[0,0,2,2],"texture":1},"down":{"uv":[0,0,2,2],"texture":1}},"type":"cube","uuid":"b7916b01-6174-a199-6768-9b7ab5276a16"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[15,1,15],"to":[16,7,16],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,2,12],"texture":1},"east":{"uv":[0,0,2,12],"texture":1},"south":{"uv":[0,0,2,12],"texture":1},"west":{"uv":[0,0,2,12],"texture":1},"up":{"uv":[0,0,2,2],"texture":1},"down":{"uv":[0,0,2,2],"texture":1}},"type":"cube","uuid":"38749677-c9fe-3f67-7b77-748faed99151"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[15,1,0],"to":[16,7,1],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,2,12],"texture":1},"east":{"uv":[0,0,2,12],"texture":1},"south":{"uv":[0,0,2,12],"texture":1},"west":{"uv":[0,0,2,12],"texture":1},"up":{"uv":[0,0,2,2],"texture":1},"down":{"uv":[0,0,2,2],"texture":1}},"type":"cube","uuid":"c7a589cc-7f9f-e9f0-b653-f18a2ee58733"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[1,1,0],"to":[15,4,1],"autouv":0,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,28,6],"texture":2},"east":{"uv":[0,16,2,22],"texture":2},"south":{"uv":[0,6,28,12],"texture":2},"west":{"uv":[2,16,4,22],"texture":2},"up":{"uv":[28,14,0,12],"texture":2},"down":{"uv":[28,14,0,16],"texture":2}},"type":"cube","uuid":"e0c0884a-c02c-f7a0-b74e-2925241d7ac8"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[1,1,15],"to":[15,4,16],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,28,6],"texture":2},"east":{"uv":[0,0,2,6],"texture":2},"south":{"uv":[0,0,28,6],"texture":2},"west":{"uv":[0,0,2,6],"texture":2},"up":{"uv":[0,0,28,2],"texture":2},"down":{"uv":[0,0,28,2],"texture":2}},"type":"cube","uuid":"09fcad0f-7d9a-a0b9-3ba7-1899b3cbac28"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[15,1,1],"to":[16,4,15],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,2,6],"texture":2},"east":{"uv":[0,0,28,6],"texture":2},"south":{"uv":[0,0,2,6],"texture":2},"west":{"uv":[0,0,28,6],"texture":2},"up":{"uv":[0,0,2,28],"texture":2},"down":{"uv":[0,0,2,28],"texture":2}},"type":"cube","uuid":"ffdcb222-b61b-143a-665f-9ce890821880"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,1,1],"to":[1,4,15],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,2,6],"texture":2},"east":{"uv":[0,0,28,6],"texture":2},"south":{"uv":[0,0,2,6],"texture":2},"west":{"uv":[0,0,28,6],"texture":2},"up":{"uv":[0,0,2,28],"texture":2},"down":{"uv":[0,0,2,28],"texture":2}},"type":"cube","uuid":"07b02425-fd96-dd62-1015-c07a6e047912"},{"name":"隔层","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,7,0],"to":[16,8,16],"autouv":0,"color":7,"origin":[0,0,0],"faces":{"north":{"uv":[16,0,32,1],"texture":5},"east":{"uv":[16,1,32,2],"texture":5},"south":{"uv":[16,2,32,3],"texture":5},"west":{"uv":[16,3,32,4],"texture":5},"up":{"uv":[16,16,0,0],"texture":5},"down":{"uv":[16,16,0,32],"texture":5}},"type":"cube","uuid":"b638d391-bc7d-7d87-c29a-d0caa78d0599"},{"name":"岩浆","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[1,2,1],"to":[15,4,15],"autouv":0,"color":7,"origin":[0,0,0],"faces":{"north":{"uv":[14,0,28,2],"texture":3},"east":{"uv":[14,2,28,4],"texture":3},"south":{"uv":[14,4,28,6],"texture":3},"west":{"uv":[14,6,28,8],"texture":3},"up":{"uv":[14,14,0,0],"texture":3},"down":{"uv":[14,14,0,28],"texture":3}},"type":"cube","uuid":"0a4ae906-9986-e137-0408-b7d3ffda8deb"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,8,0],"to":[3,13,3],"autouv":0,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,6,10],"texture":6},"east":{"uv":[6,0,12,10],"texture":6},"south":{"uv":[0,10,6,20],"texture":6},"west":{"uv":[6,10,12,20],"texture":6},"up":{"uv":[18,6,12,0],"texture":6},"down":{"uv":[18,6,12,12],"texture":6}},"type":"cube","uuid":"d3516c6c-776f-c88f-8578-3b023f694fc1"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[13,8,0],"to":[16,13,3],"autouv":0,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[6,0,9,5],"texture":6},"east":{"uv":[6,5,9,10],"texture":6},"south":{"uv":[9,0,12,5],"texture":6},"west":{"uv":[9,5,12,10],"texture":6},"up":{"uv":[18,6,15,3],"texture":6},"down":{"uv":[9,15,6,18],"texture":6}},"type":"cube","uuid":"26176011-985f-d6cc-cecd-d71cec332b90"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[13,8,13],"to":[16,13,16],"autouv":0,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,10,3,15],"texture":6},"east":{"uv":[3,10,6,15],"texture":6},"south":{"uv":[6,10,9,15],"texture":6},"west":{"uv":[9,10,12,15],"texture":6},"up":{"uv":[18,9,15,6],"texture":6},"down":{"uv":[12,15,9,18],"texture":6}},"type":"cube","uuid":"736be20d-bb6d-f3ad-6a72-9c4385fc04aa"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,8,13],"to":[3,13,16],"autouv":0,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[12,0,15,5],"texture":6},"east":{"uv":[12,5,15,10],"texture":6},"south":{"uv":[12,10,15,15],"texture":6},"west":{"uv":[0,15,3,20],"texture":6},"up":{"uv":[18,12,15,9],"texture":6},"down":{"uv":[15,15,12,18],"texture":6}},"type":"cube","uuid":"b9ab93a2-1b26-b92f-3837-ee5af75cafc6"},{"name":"顶层","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,13,0],"to":[16,15,16],"autouv":0,"color":7,"origin":[0,0,0],"faces":{"north":{"uv":[16,0,32,2],"texture":7},"east":{"uv":[16,2,32,4],"texture":7},"south":{"uv":[16,4,32,6],"texture":7},"west":{"uv":[16,6,32,8],"texture":7},"up":{"uv":[16,16,0,0],"texture":7},"down":{"uv":[16,16,0,32],"texture":7}},"type":"cube","uuid":"224bdbfd-2d95-8b9a-2a08-f86133d51e8a"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[1,4,0],"to":[15,7,0],"autouv":0,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,28,6],"texture":4},"east":{"uv":[0,0,0,6],"texture":4},"south":{"uv":[0,6,28,12],"texture":4},"west":{"uv":[0,0,0,6],"texture":4},"up":{"uv":[28,0,0,0],"texture":4},"down":{"uv":[28,0,0,0],"texture":4}},"type":"cube","uuid":"8b9f9339-9ef0-1317-599d-c83abdca6959"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[1,4,16],"to":[15,7,16],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,28,6],"texture":4},"east":{"uv":[0,0,0,6],"texture":4},"south":{"uv":[0,0,28,6],"texture":4},"west":{"uv":[0,0,0,6],"texture":4},"up":{"uv":[0,0,28,0],"texture":4},"down":{"uv":[0,0,28,0],"texture":4}},"type":"cube","uuid":"0729d88c-8dfd-a0a3-84f7-37e79182bc77"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,4,1],"to":[0,7,15],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,0,6],"texture":4},"east":{"uv":[0,0,28,6],"texture":4},"south":{"uv":[0,0,0,6],"texture":4},"west":{"uv":[0,0,28,6],"texture":4},"up":{"uv":[0,0,0,28],"texture":4},"down":{"uv":[0,0,0,28],"texture":4}},"type":"cube","uuid":"9a8fb6af-9f95-4eb8-3463-132384cd30f4"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[16,4,1],"to":[16,7,15],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,0,6],"texture":4},"east":{"uv":[0,0,28,6],"texture":4},"south":{"uv":[0,0,0,6],"texture":4},"west":{"uv":[0,0,28,6],"texture":4},"up":{"uv":[0,0,0,28],"texture":4},"down":{"uv":[0,0,0,28],"texture":4}},"type":"cube","uuid":"cae874c0-2f12-9943-3ff7-eae17c6d527b"}],"outliner":["37a9b9db-2dc6-d822-879d-c9fc22abbe2f",{"name":"底四角","origin":[0,0,0],"color":0,"uuid":"8a2bf3a1-23ac-3cdc-0110-c582e582d233","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"四角柱","origin":[0,0,0],"color":0,"uuid":"df903c0c-674b-12f0-27f9-67c944c2a29a","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["d6798fc5-08fa-ebbb-b4dd-6451b12deebf","b7916b01-6174-a199-6768-9b7ab5276a16","38749677-c9fe-3f67-7b77-748faed99151","c7a589cc-7f9f-e9f0-b653-f18a2ee58733"]},{"name":"四角壁","origin":[0,0,0],"color":0,"uuid":"fbacfeb1-a1cf-b0f1-826e-b053c182e9e7","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["e0c0884a-c02c-f7a0-b74e-2925241d7ac8","09fcad0f-7d9a-a0b9-3ba7-1899b3cbac28","ffdcb222-b61b-143a-665f-9ce890821880","07b02425-fd96-dd62-1015-c07a6e047912"]}]},"0a4ae906-9986-e137-0408-b7d3ffda8deb",{"name":"岩浆遮罩","origin":[0,0,0],"color":0,"uuid":"5b5f6b8b-6f47-aee5-7cb3-c72eb4f53753","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["8b9f9339-9ef0-1317-599d-c83abdca6959","0729d88c-8dfd-a0a3-84f7-37e79182bc77","9a8fb6af-9f95-4eb8-3463-132384cd30f4","cae874c0-2f12-9943-3ff7-eae17c6d527b"]},"b638d391-bc7d-7d87-c29a-d0caa78d0599",{"name":"上四角","origin":[8,8,8],"color":0,"uuid":"f059b078-9608-0cda-b29e-09ba8c2d83c3","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["d3516c6c-776f-c88f-8578-3b023f694fc1","26176011-985f-d6cc-cecd-d71cec332b90","736be20d-bb6d-f3ad-6a72-9c4385fc04aa","b9ab93a2-1b26-b92f-3837-ee5af75cafc6"]},"224bdbfd-2d95-8b9a-2a08-f86133d51e8a"],"textures":[{"path":"E:\\Project\\CompressedGrassReborn-Forge\\model\\GrassFurnace\\底部.png","name":"底部.png","folder":"","namespace":"","id":"0","particle":true,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"2b280efd-9d0f-f215-6dcf-636d6fec1ac7","relative_path":"../底部.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAENJREFUWEft0kENACAMBEEqADvI44E87FQAiOiDkMwp2Ewu+hynPVwI+F4g147KhcofEECAAAECBAgQIECAAAECVYELTmZ3IZkf+vIAAAAASUVORK5CYII="},{"path":"E:\\Project\\CompressedGrassReborn-Forge\\model\\GrassFurnace\\四角柱.png","name":"四角柱.png","folder":"","namespace":"","id":"1","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"761cd3c2-066a-2ab8-f4b3-9e98bc74910c","relative_path":"../四角柱.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADZJREFUOE9jjI1P+M+ABhYvXMCILoaLz0h1A0ixHeQqDBcMQQOIDW2csTBqAAPRSXY0EHGnFgBuTxgR5QppLwAAAABJRU5ErkJggg=="},{"path":"E:\\Project\\CompressedGrassReborn-Forge\\model\\GrassFurnace\\四角壁.png","name":"四角壁.png","folder":"","namespace":"","id":"2","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"1d065378-69a1-301f-b6f9-e4c0abc83e8a","relative_path":"../四角壁.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADhJREFUOE9jlJKS/s9ABnj27CkjSBvjqAHDKgxg8UpqkoCng4E1gFzb4Ul5YA0gNdTR1YOzJCUAAJ2fOBFm/KRqAAAAAElFTkSuQmCC"},{"path":"E:\\Project\\CompressedGrassReborn-Forge\\model\\GrassFurnace\\岩浆.png","name":"岩浆.png","folder":"","namespace":"","id":"3","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"bbe1f3f9-7494-8cc7-8d82-f1cf77f793fa","relative_path":"../岩浆.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAVhJREFUWEftl8sRwjAMROMCaIMiOFAXJVAZNxqgDQqAMSAiNivJmZHgApdkbCM/a/Vx2nk/3abXb7uTt/l5OT3f9Vwfw7Wj6zbHqeldWgfoxrQBNKY39Oa6YYST9XKIBcD1MHsAF4tBTaxhmWeiMdMDsgk77YgE3um1XBQAN9AweHrciMXDMpJmaUwJLEMyruVhwFYMYcy4ACwbogAUGAtwdRCKXl5AWinopbPMrZLAS000xHQfGWs9DdlpraiW05cBIDVKUgJgpQ0LsHQAKcXM5RosSqcRvdmady/QZRd7A/tjagxE9KxIlQB4ZbVMAuyGI32+eyzNAzoIMei8S0gqAKablfsaMA1AJBithlZNjwLZmn+UYt3/2b3wJ2kY3f3SJYgqIXqhDMC67aA0JQBWC2ZQaQDyYWJ9lFi14CsAX+mGOg3X5HKaB9ZsWrH240OxYoPI5h/gDvxV7iEBCf/YAAAAAElFTkSuQmCC"},{"path":"E:\\Project\\CompressedGrassReborn-Forge\\model\\GrassFurnace\\岩浆遮罩.png","name":"岩浆遮罩.png","folder":"","namespace":"","id":"4","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"d5e02ebc-8378-46f5-b6e5-16daa367f91f","relative_path":"../岩浆遮罩.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAACxJREFUOE9j3HFtpiQDGcBDK/05SBvjqAFUCAMyIgBFC+OoAQyjYcBAeRgAAOc5GBGr/cEvAAAAAElFTkSuQmCC"},{"path":"E:\\Project\\CompressedGrassReborn-Forge\\model\\GrassFurnace\\隔层.png","name":"隔层.png","folder":"","namespace":"","id":"5","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"1e7c5988-38a3-be85-02a3-8f9fae3a678e","relative_path":"../隔层.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAD9JREFUWEft0kENACAMBEFqo/iXRm1QEX0QkjkFm8lF5r7r4ULA9wJVJyYXGn9AAAECBAgQIECAAAECBAhMBRrScXVZ9hxCkwAAAABJRU5ErkJggg=="},{"path":"E:\\Project\\CompressedGrassReborn-Forge\\model\\GrassFurnace\\上四角.png","name":"上四角.png","folder":"","namespace":"","id":"6","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"48501edb-75e5-55e2-ca96-efddafe0ef98","relative_path":"../上四角.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADlJREFUOE9jLC0r/89AAHR3dTLiUsI4agAD7cMAXwyAYoagCwbOAEI2wxIWzhRGKHWOGoAIIYoDEQB0ligR1rgyqwAAAABJRU5ErkJggg=="},{"path":"E:\\Project\\CompressedGrassReborn-Forge\\model\\GrassFurnace\\顶层.png","name":"顶层.png","folder":"","namespace":"","id":"7","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"c676e2f1-b970-fe47-894a-69bf06e63797","relative_path":"../顶层.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERJREFUWEdjFFxl8Z9hAAHjqANGQ2A0BIZ8CLwPO8FISTFCcTkw6oDREBgNgdEQGA2B0RAYDYHREBgNgdEQGA0BSkMAAAVAb7EyHSK3AAAAAElFTkSuQmCC"}],"display":{"thirdperson_righthand":{"translation":[0,2.25,2.25],"scale":[0.3,0.3,0.3]},"thirdperson_lefthand":{"rotation":[-90,0,0],"translation":[0,-2,-2.5],"scale":[0.3,0.3,0.3]},"ground":{"scale":[0.3,0.3,0.3]},"gui":{"scale":[0.7,0.7,0]},"fixed":{"scale":[0.7,0.7,0.7]}}}
\ No newline at end of file
diff --git a/model/GrassFurnace/GrassFurnace.json b/model/GrassFurnace/GrassFurnace.json
new file mode 100644
index 00000000..1e2329d7
--- /dev/null
+++ b/model/GrassFurnace/GrassFurnace.json
@@ -0,0 +1,318 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "底部",
+ "1": "四角柱",
+ "2": "四角壁",
+ "3": "岩浆",
+ "4": "岩浆遮罩",
+ "5": "隔层",
+ "6": "上四角",
+ "7": "顶层",
+ "particle": "底部"
+ },
+ "elements": [
+ {
+ "name": "底部",
+ "from": [0, 0, 0],
+ "to": [16, 1, 16],
+ "faces": {
+ "north": {"uv": [8, 0, 16, 0.5], "texture": "#0"},
+ "east": {"uv": [8, 0.5, 16, 1], "texture": "#0"},
+ "south": {"uv": [8, 1, 16, 1.5], "texture": "#0"},
+ "west": {"uv": [8, 1.5, 16, 2], "texture": "#0"},
+ "up": {"uv": [8, 8, 0, 0], "texture": "#0"},
+ "down": {"uv": [8, 8, 0, 16], "texture": "#0"}
+ }
+ },
+ {
+ "from": [0, 1, 0],
+ "to": [1, 7, 1],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "east": {"uv": [1, 0, 2, 6], "texture": "#1"},
+ "south": {"uv": [2, 0, 3, 6], "texture": "#1"},
+ "west": {"uv": [3, 0, 4, 6], "texture": "#1"},
+ "up": {"uv": [5, 1, 4, 0], "texture": "#1"},
+ "down": {"uv": [5, 1, 4, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [0, 1, 15],
+ "to": [1, 7, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "east": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "south": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "west": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "up": {"uv": [0, 0, 1, 1], "texture": "#1"},
+ "down": {"uv": [0, 0, 1, 1], "texture": "#1"}
+ }
+ },
+ {
+ "from": [15, 1, 15],
+ "to": [16, 7, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "east": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "south": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "west": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "up": {"uv": [0, 0, 1, 1], "texture": "#1"},
+ "down": {"uv": [0, 0, 1, 1], "texture": "#1"}
+ }
+ },
+ {
+ "from": [15, 1, 0],
+ "to": [16, 7, 1],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "east": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "south": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "west": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "up": {"uv": [0, 0, 1, 1], "texture": "#1"},
+ "down": {"uv": [0, 0, 1, 1], "texture": "#1"}
+ }
+ },
+ {
+ "from": [1, 1, 0],
+ "to": [15, 4, 1],
+ "faces": {
+ "north": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "east": {"uv": [0, 8, 1, 11], "texture": "#2"},
+ "south": {"uv": [0, 3, 14, 6], "texture": "#2"},
+ "west": {"uv": [1, 8, 2, 11], "texture": "#2"},
+ "up": {"uv": [14, 7, 0, 6], "texture": "#2"},
+ "down": {"uv": [14, 7, 0, 8], "texture": "#2"}
+ }
+ },
+ {
+ "from": [1, 1, 15],
+ "to": [15, 4, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "east": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "south": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "west": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "up": {"uv": [0, 0, 14, 1], "texture": "#2"},
+ "down": {"uv": [0, 0, 14, 1], "texture": "#2"}
+ }
+ },
+ {
+ "from": [15, 1, 1],
+ "to": [16, 4, 15],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "east": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "south": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "west": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "up": {"uv": [0, 0, 1, 14], "texture": "#2"},
+ "down": {"uv": [0, 0, 1, 14], "texture": "#2"}
+ }
+ },
+ {
+ "from": [0, 1, 1],
+ "to": [1, 4, 15],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "east": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "south": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "west": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "up": {"uv": [0, 0, 1, 14], "texture": "#2"},
+ "down": {"uv": [0, 0, 1, 14], "texture": "#2"}
+ }
+ },
+ {
+ "name": "岩浆",
+ "from": [1, 2, 1],
+ "to": [15, 4, 15],
+ "faces": {
+ "north": {"uv": [7, 0, 14, 1], "texture": "#3"},
+ "east": {"uv": [7, 1, 14, 2], "texture": "#3"},
+ "south": {"uv": [7, 2, 14, 3], "texture": "#3"},
+ "west": {"uv": [7, 3, 14, 4], "texture": "#3"},
+ "up": {"uv": [7, 7, 0, 0], "texture": "#3"},
+ "down": {"uv": [7, 7, 0, 14], "texture": "#3"}
+ }
+ },
+ {
+ "from": [1, 4, 0],
+ "to": [15, 7, 0],
+ "faces": {
+ "north": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "east": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "south": {"uv": [0, 3, 14, 6], "texture": "#4"},
+ "west": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "up": {"uv": [14, 0, 0, 0], "texture": "#4"},
+ "down": {"uv": [14, 0, 0, 0], "texture": "#4"}
+ }
+ },
+ {
+ "from": [1, 4, 16],
+ "to": [15, 7, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "east": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "south": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "west": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "up": {"uv": [0, 0, 14, 0], "texture": "#4"},
+ "down": {"uv": [0, 0, 14, 0], "texture": "#4"}
+ }
+ },
+ {
+ "from": [0, 4, 1],
+ "to": [0, 7, 15],
+ "faces": {
+ "north": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "east": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "south": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "west": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "up": {"uv": [0, 0, 0, 14], "texture": "#4"},
+ "down": {"uv": [0, 0, 0, 14], "texture": "#4"}
+ }
+ },
+ {
+ "from": [16, 4, 1],
+ "to": [16, 7, 15],
+ "faces": {
+ "north": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "east": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "south": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "west": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "up": {"uv": [0, 0, 0, 14], "texture": "#4"},
+ "down": {"uv": [0, 0, 0, 14], "texture": "#4"}
+ }
+ },
+ {
+ "name": "隔层",
+ "from": [0, 7, 0],
+ "to": [16, 8, 16],
+ "faces": {
+ "north": {"uv": [8, 0, 16, 0.5], "texture": "#5"},
+ "east": {"uv": [8, 0.5, 16, 1], "texture": "#5"},
+ "south": {"uv": [8, 1, 16, 1.5], "texture": "#5"},
+ "west": {"uv": [8, 1.5, 16, 2], "texture": "#5"},
+ "up": {"uv": [8, 8, 0, 0], "texture": "#5"},
+ "down": {"uv": [8, 8, 0, 16], "texture": "#5"}
+ }
+ },
+ {
+ "from": [0, 8, 0],
+ "to": [3, 13, 3],
+ "faces": {
+ "north": {"uv": [0, 0, 3, 5], "texture": "#6"},
+ "east": {"uv": [3, 0, 6, 5], "texture": "#6"},
+ "south": {"uv": [0, 5, 3, 10], "texture": "#6"},
+ "west": {"uv": [3, 5, 6, 10], "texture": "#6"},
+ "up": {"uv": [9, 3, 6, 0], "texture": "#6"},
+ "down": {"uv": [9, 3, 6, 6], "texture": "#6"}
+ }
+ },
+ {
+ "from": [13, 8, 0],
+ "to": [16, 13, 3],
+ "faces": {
+ "north": {"uv": [3, 0, 4.5, 2.5], "texture": "#6"},
+ "east": {"uv": [3, 2.5, 4.5, 5], "texture": "#6"},
+ "south": {"uv": [4.5, 0, 6, 2.5], "texture": "#6"},
+ "west": {"uv": [4.5, 2.5, 6, 5], "texture": "#6"},
+ "up": {"uv": [9, 3, 7.5, 1.5], "texture": "#6"},
+ "down": {"uv": [4.5, 7.5, 3, 9], "texture": "#6"}
+ }
+ },
+ {
+ "from": [13, 8, 13],
+ "to": [16, 13, 16],
+ "faces": {
+ "north": {"uv": [0, 5, 1.5, 7.5], "texture": "#6"},
+ "east": {"uv": [1.5, 5, 3, 7.5], "texture": "#6"},
+ "south": {"uv": [3, 5, 4.5, 7.5], "texture": "#6"},
+ "west": {"uv": [4.5, 5, 6, 7.5], "texture": "#6"},
+ "up": {"uv": [9, 4.5, 7.5, 3], "texture": "#6"},
+ "down": {"uv": [6, 7.5, 4.5, 9], "texture": "#6"}
+ }
+ },
+ {
+ "from": [0, 8, 13],
+ "to": [3, 13, 16],
+ "faces": {
+ "north": {"uv": [6, 0, 7.5, 2.5], "texture": "#6"},
+ "east": {"uv": [6, 2.5, 7.5, 5], "texture": "#6"},
+ "south": {"uv": [6, 5, 7.5, 7.5], "texture": "#6"},
+ "west": {"uv": [0, 7.5, 1.5, 10], "texture": "#6"},
+ "up": {"uv": [9, 6, 7.5, 4.5], "texture": "#6"},
+ "down": {"uv": [7.5, 7.5, 6, 9], "texture": "#6"}
+ }
+ },
+ {
+ "name": "顶层",
+ "from": [0, 13, 0],
+ "to": [16, 15, 16],
+ "faces": {
+ "north": {"uv": [8, 0, 16, 1], "texture": "#7"},
+ "east": {"uv": [8, 1, 16, 2], "texture": "#7"},
+ "south": {"uv": [8, 2, 16, 3], "texture": "#7"},
+ "west": {"uv": [8, 3, 16, 4], "texture": "#7"},
+ "up": {"uv": [8, 8, 0, 0], "texture": "#7"},
+ "down": {"uv": [8, 8, 0, 16], "texture": "#7"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "translation": [0, 2.25, 2.25],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [-90, 0, 0],
+ "translation": [0, -2, -2.5],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "ground": {
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "gui": {
+ "scale": [0.7, 0.7, 0]
+ },
+ "fixed": {
+ "scale": [0.7, 0.7, 0.7]
+ }
+ },
+ "groups": [
+ 0,
+ {
+ "name": "底四角",
+ "origin": [0, 0, 0],
+ "color": 0,
+ "children": [
+ {
+ "name": "四角柱",
+ "origin": [0, 0, 0],
+ "color": 0,
+ "children": [1, 2, 3, 4]
+ },
+ {
+ "name": "四角壁",
+ "origin": [0, 0, 0],
+ "color": 0,
+ "children": [5, 6, 7, 8]
+ }
+ ]
+ },
+ 9,
+ {
+ "name": "岩浆遮罩",
+ "origin": [0, 0, 0],
+ "color": 0,
+ "children": [10, 11, 12, 13]
+ },
+ 14,
+ {
+ "name": "上四角",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [15, 16, 17, 18]
+ },
+ 19
+ ]
+}
\ No newline at end of file
diff --git a/model/GrassFurnace/texture/GrassFurnaceBottom.png b/model/GrassFurnace/texture/GrassFurnaceBottom.png
new file mode 100644
index 00000000..c24702c7
Binary files /dev/null and b/model/GrassFurnace/texture/GrassFurnaceBottom.png differ
diff --git a/model/GrassFurnace/texture/GrassFurnaceFourCornersBelow.png b/model/GrassFurnace/texture/GrassFurnaceFourCornersBelow.png
new file mode 100644
index 00000000..d3917ed2
Binary files /dev/null and b/model/GrassFurnace/texture/GrassFurnaceFourCornersBelow.png differ
diff --git a/model/GrassFurnace/texture/GrassFurnaceFourPillarsAbove.png b/model/GrassFurnace/texture/GrassFurnaceFourPillarsAbove.png
new file mode 100644
index 00000000..e73ee2fd
Binary files /dev/null and b/model/GrassFurnace/texture/GrassFurnaceFourPillarsAbove.png differ
diff --git a/model/GrassFurnace/texture/GrassFurnaceFourWallsBelow.png b/model/GrassFurnace/texture/GrassFurnaceFourWallsBelow.png
new file mode 100644
index 00000000..2ddac3f6
Binary files /dev/null and b/model/GrassFurnace/texture/GrassFurnaceFourWallsBelow.png differ
diff --git a/model/GrassFurnace/texture/GrassFurnaceInterlayer.png b/model/GrassFurnace/texture/GrassFurnaceInterlayer.png
new file mode 100644
index 00000000..0a30701c
Binary files /dev/null and b/model/GrassFurnace/texture/GrassFurnaceInterlayer.png differ
diff --git a/model/GrassFurnace/texture/GrassFurnaceLava.png b/model/GrassFurnace/texture/GrassFurnaceLava.png
new file mode 100644
index 00000000..a87e1df4
Binary files /dev/null and b/model/GrassFurnace/texture/GrassFurnaceLava.png differ
diff --git a/model/GrassFurnace/texture/GrassFurnaceLavaMask.png b/model/GrassFurnace/texture/GrassFurnaceLavaMask.png
new file mode 100644
index 00000000..f3e66a5f
Binary files /dev/null and b/model/GrassFurnace/texture/GrassFurnaceLavaMask.png differ
diff --git a/model/GrassFurnace/texture/GrassFurnaceTop.png b/model/GrassFurnace/texture/GrassFurnaceTop.png
new file mode 100644
index 00000000..0dd45dec
Binary files /dev/null and b/model/GrassFurnace/texture/GrassFurnaceTop.png differ
diff --git "a/model/GrassFurnace/\344\270\212\345\233\233\350\247\222.png" "b/model/GrassFurnace/\344\270\212\345\233\233\350\247\222.png"
new file mode 100644
index 00000000..e73ee2fd
Binary files /dev/null and "b/model/GrassFurnace/\344\270\212\345\233\233\350\247\222.png" differ
diff --git "a/model/GrassFurnace/\345\233\233\350\247\222\345\243\201.png" "b/model/GrassFurnace/\345\233\233\350\247\222\345\243\201.png"
new file mode 100644
index 00000000..2ddac3f6
Binary files /dev/null and "b/model/GrassFurnace/\345\233\233\350\247\222\345\243\201.png" differ
diff --git "a/model/GrassFurnace/\345\233\233\350\247\222\346\237\261.png" "b/model/GrassFurnace/\345\233\233\350\247\222\346\237\261.png"
new file mode 100644
index 00000000..d3917ed2
Binary files /dev/null and "b/model/GrassFurnace/\345\233\233\350\247\222\346\237\261.png" differ
diff --git "a/model/GrassFurnace/\345\262\251\346\265\206.png" "b/model/GrassFurnace/\345\262\251\346\265\206.png"
new file mode 100644
index 00000000..a87e1df4
Binary files /dev/null and "b/model/GrassFurnace/\345\262\251\346\265\206.png" differ
diff --git "a/model/GrassFurnace/\345\262\251\346\265\206\351\201\256\347\275\251.png" "b/model/GrassFurnace/\345\262\251\346\265\206\351\201\256\347\275\251.png"
new file mode 100644
index 00000000..f3e66a5f
Binary files /dev/null and "b/model/GrassFurnace/\345\262\251\346\265\206\351\201\256\347\275\251.png" differ
diff --git "a/model/GrassFurnace/\345\272\225\351\203\250.png" "b/model/GrassFurnace/\345\272\225\351\203\250.png"
new file mode 100644
index 00000000..c24702c7
Binary files /dev/null and "b/model/GrassFurnace/\345\272\225\351\203\250.png" differ
diff --git "a/model/GrassFurnace/\351\232\224\345\261\202.png" "b/model/GrassFurnace/\351\232\224\345\261\202.png"
new file mode 100644
index 00000000..0a30701c
Binary files /dev/null and "b/model/GrassFurnace/\351\232\224\345\261\202.png" differ
diff --git "a/model/GrassFurnace/\351\241\266\345\261\202.png" "b/model/GrassFurnace/\351\241\266\345\261\202.png"
new file mode 100644
index 00000000..0dd45dec
Binary files /dev/null and "b/model/GrassFurnace/\351\241\266\345\261\202.png" differ
diff --git a/models/grassfurnace.json b/models/grassfurnace.json
new file mode 100644
index 00000000..1e2329d7
--- /dev/null
+++ b/models/grassfurnace.json
@@ -0,0 +1,318 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "底部",
+ "1": "四角柱",
+ "2": "四角壁",
+ "3": "岩浆",
+ "4": "岩浆遮罩",
+ "5": "隔层",
+ "6": "上四角",
+ "7": "顶层",
+ "particle": "底部"
+ },
+ "elements": [
+ {
+ "name": "底部",
+ "from": [0, 0, 0],
+ "to": [16, 1, 16],
+ "faces": {
+ "north": {"uv": [8, 0, 16, 0.5], "texture": "#0"},
+ "east": {"uv": [8, 0.5, 16, 1], "texture": "#0"},
+ "south": {"uv": [8, 1, 16, 1.5], "texture": "#0"},
+ "west": {"uv": [8, 1.5, 16, 2], "texture": "#0"},
+ "up": {"uv": [8, 8, 0, 0], "texture": "#0"},
+ "down": {"uv": [8, 8, 0, 16], "texture": "#0"}
+ }
+ },
+ {
+ "from": [0, 1, 0],
+ "to": [1, 7, 1],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "east": {"uv": [1, 0, 2, 6], "texture": "#1"},
+ "south": {"uv": [2, 0, 3, 6], "texture": "#1"},
+ "west": {"uv": [3, 0, 4, 6], "texture": "#1"},
+ "up": {"uv": [5, 1, 4, 0], "texture": "#1"},
+ "down": {"uv": [5, 1, 4, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [0, 1, 15],
+ "to": [1, 7, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "east": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "south": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "west": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "up": {"uv": [0, 0, 1, 1], "texture": "#1"},
+ "down": {"uv": [0, 0, 1, 1], "texture": "#1"}
+ }
+ },
+ {
+ "from": [15, 1, 15],
+ "to": [16, 7, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "east": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "south": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "west": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "up": {"uv": [0, 0, 1, 1], "texture": "#1"},
+ "down": {"uv": [0, 0, 1, 1], "texture": "#1"}
+ }
+ },
+ {
+ "from": [15, 1, 0],
+ "to": [16, 7, 1],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "east": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "south": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "west": {"uv": [0, 0, 1, 6], "texture": "#1"},
+ "up": {"uv": [0, 0, 1, 1], "texture": "#1"},
+ "down": {"uv": [0, 0, 1, 1], "texture": "#1"}
+ }
+ },
+ {
+ "from": [1, 1, 0],
+ "to": [15, 4, 1],
+ "faces": {
+ "north": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "east": {"uv": [0, 8, 1, 11], "texture": "#2"},
+ "south": {"uv": [0, 3, 14, 6], "texture": "#2"},
+ "west": {"uv": [1, 8, 2, 11], "texture": "#2"},
+ "up": {"uv": [14, 7, 0, 6], "texture": "#2"},
+ "down": {"uv": [14, 7, 0, 8], "texture": "#2"}
+ }
+ },
+ {
+ "from": [1, 1, 15],
+ "to": [15, 4, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "east": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "south": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "west": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "up": {"uv": [0, 0, 14, 1], "texture": "#2"},
+ "down": {"uv": [0, 0, 14, 1], "texture": "#2"}
+ }
+ },
+ {
+ "from": [15, 1, 1],
+ "to": [16, 4, 15],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "east": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "south": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "west": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "up": {"uv": [0, 0, 1, 14], "texture": "#2"},
+ "down": {"uv": [0, 0, 1, 14], "texture": "#2"}
+ }
+ },
+ {
+ "from": [0, 1, 1],
+ "to": [1, 4, 15],
+ "faces": {
+ "north": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "east": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "south": {"uv": [0, 0, 1, 3], "texture": "#2"},
+ "west": {"uv": [0, 0, 14, 3], "texture": "#2"},
+ "up": {"uv": [0, 0, 1, 14], "texture": "#2"},
+ "down": {"uv": [0, 0, 1, 14], "texture": "#2"}
+ }
+ },
+ {
+ "name": "岩浆",
+ "from": [1, 2, 1],
+ "to": [15, 4, 15],
+ "faces": {
+ "north": {"uv": [7, 0, 14, 1], "texture": "#3"},
+ "east": {"uv": [7, 1, 14, 2], "texture": "#3"},
+ "south": {"uv": [7, 2, 14, 3], "texture": "#3"},
+ "west": {"uv": [7, 3, 14, 4], "texture": "#3"},
+ "up": {"uv": [7, 7, 0, 0], "texture": "#3"},
+ "down": {"uv": [7, 7, 0, 14], "texture": "#3"}
+ }
+ },
+ {
+ "from": [1, 4, 0],
+ "to": [15, 7, 0],
+ "faces": {
+ "north": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "east": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "south": {"uv": [0, 3, 14, 6], "texture": "#4"},
+ "west": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "up": {"uv": [14, 0, 0, 0], "texture": "#4"},
+ "down": {"uv": [14, 0, 0, 0], "texture": "#4"}
+ }
+ },
+ {
+ "from": [1, 4, 16],
+ "to": [15, 7, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "east": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "south": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "west": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "up": {"uv": [0, 0, 14, 0], "texture": "#4"},
+ "down": {"uv": [0, 0, 14, 0], "texture": "#4"}
+ }
+ },
+ {
+ "from": [0, 4, 1],
+ "to": [0, 7, 15],
+ "faces": {
+ "north": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "east": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "south": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "west": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "up": {"uv": [0, 0, 0, 14], "texture": "#4"},
+ "down": {"uv": [0, 0, 0, 14], "texture": "#4"}
+ }
+ },
+ {
+ "from": [16, 4, 1],
+ "to": [16, 7, 15],
+ "faces": {
+ "north": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "east": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "south": {"uv": [0, 0, 0, 3], "texture": "#4"},
+ "west": {"uv": [0, 0, 14, 3], "texture": "#4"},
+ "up": {"uv": [0, 0, 0, 14], "texture": "#4"},
+ "down": {"uv": [0, 0, 0, 14], "texture": "#4"}
+ }
+ },
+ {
+ "name": "隔层",
+ "from": [0, 7, 0],
+ "to": [16, 8, 16],
+ "faces": {
+ "north": {"uv": [8, 0, 16, 0.5], "texture": "#5"},
+ "east": {"uv": [8, 0.5, 16, 1], "texture": "#5"},
+ "south": {"uv": [8, 1, 16, 1.5], "texture": "#5"},
+ "west": {"uv": [8, 1.5, 16, 2], "texture": "#5"},
+ "up": {"uv": [8, 8, 0, 0], "texture": "#5"},
+ "down": {"uv": [8, 8, 0, 16], "texture": "#5"}
+ }
+ },
+ {
+ "from": [0, 8, 0],
+ "to": [3, 13, 3],
+ "faces": {
+ "north": {"uv": [0, 0, 3, 5], "texture": "#6"},
+ "east": {"uv": [3, 0, 6, 5], "texture": "#6"},
+ "south": {"uv": [0, 5, 3, 10], "texture": "#6"},
+ "west": {"uv": [3, 5, 6, 10], "texture": "#6"},
+ "up": {"uv": [9, 3, 6, 0], "texture": "#6"},
+ "down": {"uv": [9, 3, 6, 6], "texture": "#6"}
+ }
+ },
+ {
+ "from": [13, 8, 0],
+ "to": [16, 13, 3],
+ "faces": {
+ "north": {"uv": [3, 0, 4.5, 2.5], "texture": "#6"},
+ "east": {"uv": [3, 2.5, 4.5, 5], "texture": "#6"},
+ "south": {"uv": [4.5, 0, 6, 2.5], "texture": "#6"},
+ "west": {"uv": [4.5, 2.5, 6, 5], "texture": "#6"},
+ "up": {"uv": [9, 3, 7.5, 1.5], "texture": "#6"},
+ "down": {"uv": [4.5, 7.5, 3, 9], "texture": "#6"}
+ }
+ },
+ {
+ "from": [13, 8, 13],
+ "to": [16, 13, 16],
+ "faces": {
+ "north": {"uv": [0, 5, 1.5, 7.5], "texture": "#6"},
+ "east": {"uv": [1.5, 5, 3, 7.5], "texture": "#6"},
+ "south": {"uv": [3, 5, 4.5, 7.5], "texture": "#6"},
+ "west": {"uv": [4.5, 5, 6, 7.5], "texture": "#6"},
+ "up": {"uv": [9, 4.5, 7.5, 3], "texture": "#6"},
+ "down": {"uv": [6, 7.5, 4.5, 9], "texture": "#6"}
+ }
+ },
+ {
+ "from": [0, 8, 13],
+ "to": [3, 13, 16],
+ "faces": {
+ "north": {"uv": [6, 0, 7.5, 2.5], "texture": "#6"},
+ "east": {"uv": [6, 2.5, 7.5, 5], "texture": "#6"},
+ "south": {"uv": [6, 5, 7.5, 7.5], "texture": "#6"},
+ "west": {"uv": [0, 7.5, 1.5, 10], "texture": "#6"},
+ "up": {"uv": [9, 6, 7.5, 4.5], "texture": "#6"},
+ "down": {"uv": [7.5, 7.5, 6, 9], "texture": "#6"}
+ }
+ },
+ {
+ "name": "顶层",
+ "from": [0, 13, 0],
+ "to": [16, 15, 16],
+ "faces": {
+ "north": {"uv": [8, 0, 16, 1], "texture": "#7"},
+ "east": {"uv": [8, 1, 16, 2], "texture": "#7"},
+ "south": {"uv": [8, 2, 16, 3], "texture": "#7"},
+ "west": {"uv": [8, 3, 16, 4], "texture": "#7"},
+ "up": {"uv": [8, 8, 0, 0], "texture": "#7"},
+ "down": {"uv": [8, 8, 0, 16], "texture": "#7"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "translation": [0, 2.25, 2.25],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [-90, 0, 0],
+ "translation": [0, -2, -2.5],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "ground": {
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "gui": {
+ "scale": [0.7, 0.7, 0]
+ },
+ "fixed": {
+ "scale": [0.7, 0.7, 0.7]
+ }
+ },
+ "groups": [
+ 0,
+ {
+ "name": "底四角",
+ "origin": [0, 0, 0],
+ "color": 0,
+ "children": [
+ {
+ "name": "四角柱",
+ "origin": [0, 0, 0],
+ "color": 0,
+ "children": [1, 2, 3, 4]
+ },
+ {
+ "name": "四角壁",
+ "origin": [0, 0, 0],
+ "color": 0,
+ "children": [5, 6, 7, 8]
+ }
+ ]
+ },
+ 9,
+ {
+ "name": "岩浆遮罩",
+ "origin": [0, 0, 0],
+ "color": 0,
+ "children": [10, 11, 12, 13]
+ },
+ 14,
+ {
+ "name": "上四角",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [15, 16, 17, 18]
+ },
+ 19
+ ]
+}
\ No newline at end of file
diff --git a/models/grassfurnace.json.textures b/models/grassfurnace.json.textures
new file mode 100644
index 00000000..d670651e
--- /dev/null
+++ b/models/grassfurnace.json.textures
@@ -0,0 +1,17 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "grassfurnacebottom",
+ "1": "grassfurnacefourcornersbelow",
+ "2": "grassfurnacefourwallsbelow",
+ "3": "grassfurnacelava",
+ "4": "grassfurnacelavamask",
+ "5": "grassfurnaceinterlayer",
+ "6": "grassfurnacefourpillarsabove",
+ "7": "grassfurnacetop"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/mcreator/compressedgrass/block/GrassFurnaceBlock.java b/src/main/java/net/mcreator/compressedgrass/block/GrassFurnaceBlock.java
new file mode 100644
index 00000000..7d583bb2
--- /dev/null
+++ b/src/main/java/net/mcreator/compressedgrass/block/GrassFurnaceBlock.java
@@ -0,0 +1,137 @@
+
+package net.mcreator.compressedgrass.block;
+
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.phys.shapes.VoxelShape;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.phys.shapes.CollisionContext;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.level.storage.loot.LootContext;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.EntityBlock;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.MenuProvider;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.Containers;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.compressedgrass.world.inventory.GrassFurnaceGuiMenu;
+import net.mcreator.compressedgrass.block.entity.GrassFurnaceBlockEntity;
+
+import java.util.List;
+import java.util.Collections;
+
+import io.netty.buffer.Unpooled;
+
+public class GrassFurnaceBlock extends Block implements EntityBlock {
+ public GrassFurnaceBlock() {
+ super(BlockBehaviour.Properties.of(Material.STONE).sound(SoundType.GRAVEL).strength(1f, 10f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false));
+ }
+
+ @Override
+ public boolean propagatesSkylightDown(BlockState state, BlockGetter reader, BlockPos pos) {
+ return true;
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 0;
+ }
+
+ @Override
+ public VoxelShape getVisualShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
+ return Shapes.empty();
+ }
+
+ @Override
+ public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
+ return Shapes.or(box(0, 0, 0, 16, 1, 16), box(0, 1, 0, 1, 7, 1), box(0, 1, 15, 1, 7, 16), box(15, 1, 15, 16, 7, 16), box(15, 1, 0, 16, 7, 1), box(1, 1, 0, 15, 4, 1), box(1, 1, 15, 15, 4, 16), box(15, 1, 1, 16, 4, 15), box(0, 1, 1, 1, 4, 15),
+ box(1, 2, 1, 15, 4, 15), box(0, 7, 0, 16, 8, 16), box(0, 8, 0, 3, 13, 3), box(13, 8, 0, 16, 13, 3), box(13, 8, 13, 16, 13, 16), box(0, 8, 13, 3, 13, 16), box(0, 13, 0, 16, 15, 16));
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+
+ @Override
+ public InteractionResult use(BlockState blockstate, Level world, BlockPos pos, Player entity, InteractionHand hand, BlockHitResult hit) {
+ super.use(blockstate, world, pos, entity, hand, hit);
+ if (entity instanceof ServerPlayer player) {
+ NetworkHooks.openScreen(player, new MenuProvider() {
+ @Override
+ public Component getDisplayName() {
+ return Component.literal("Grass Furnace");
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) {
+ return new GrassFurnaceGuiMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(pos));
+ }
+ }, pos);
+ }
+ return InteractionResult.SUCCESS;
+ }
+
+ @Override
+ public MenuProvider getMenuProvider(BlockState state, Level worldIn, BlockPos pos) {
+ BlockEntity tileEntity = worldIn.getBlockEntity(pos);
+ return tileEntity instanceof MenuProvider menuProvider ? menuProvider : null;
+ }
+
+ @Override
+ public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
+ return new GrassFurnaceBlockEntity(pos, state);
+ }
+
+ @Override
+ public boolean triggerEvent(BlockState state, Level world, BlockPos pos, int eventID, int eventParam) {
+ super.triggerEvent(state, world, pos, eventID, eventParam);
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ return blockEntity == null ? false : blockEntity.triggerEvent(eventID, eventParam);
+ }
+
+ @Override
+ public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) {
+ if (state.getBlock() != newState.getBlock()) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity instanceof GrassFurnaceBlockEntity be) {
+ Containers.dropContents(world, pos, be);
+ world.updateNeighbourForOutputSignal(pos, this);
+ }
+ super.onRemove(state, world, pos, newState, isMoving);
+ }
+ }
+
+ @Override
+ public boolean hasAnalogOutputSignal(BlockState state) {
+ return true;
+ }
+
+ @Override
+ public int getAnalogOutputSignal(BlockState blockState, Level world, BlockPos pos) {
+ BlockEntity tileentity = world.getBlockEntity(pos);
+ if (tileentity instanceof GrassFurnaceBlockEntity be)
+ return AbstractContainerMenu.getRedstoneSignalFromContainer(be);
+ else
+ return 0;
+ }
+}
diff --git a/src/main/java/net/mcreator/compressedgrass/block/GrassOreOreBlock.java b/src/main/java/net/mcreator/compressedgrass/block/GrassOreOreBlock.java
index f16a7fbd..2ae2b756 100644
--- a/src/main/java/net/mcreator/compressedgrass/block/GrassOreOreBlock.java
+++ b/src/main/java/net/mcreator/compressedgrass/block/GrassOreOreBlock.java
@@ -13,14 +13,12 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.core.BlockPos;
-import net.mcreator.compressedgrass.init.CompressedGrassModItems;
-
import java.util.List;
import java.util.Collections;
public class GrassOreOreBlock extends Block {
public GrassOreOreBlock() {
- super(BlockBehaviour.Properties.of(Material.STONE).sound(SoundType.STONE).strength(9f, 12.0411234264f).requiresCorrectToolForDrops());
+ super(BlockBehaviour.Properties.of(Material.STONE).sound(SoundType.STONE).strength(9f, 7f).requiresCorrectToolForDrops());
}
@Override
@@ -40,6 +38,6 @@ public List getDrops(BlockState state, LootContext.Builder builder) {
List dropsOriginal = super.getDrops(state, builder);
if (!dropsOriginal.isEmpty())
return dropsOriginal;
- return Collections.singletonList(new ItemStack(CompressedGrassModItems.GRASS_ORE_INGOT.get()));
+ return Collections.singletonList(new ItemStack(this, 1));
}
}
diff --git a/src/main/java/net/mcreator/compressedgrass/block/entity/GrassFurnaceBlockEntity.java b/src/main/java/net/mcreator/compressedgrass/block/entity/GrassFurnaceBlockEntity.java
new file mode 100644
index 00000000..0110603f
--- /dev/null
+++ b/src/main/java/net/mcreator/compressedgrass/block/entity/GrassFurnaceBlockEntity.java
@@ -0,0 +1,143 @@
+package net.mcreator.compressedgrass.block.entity;
+
+import net.minecraftforge.items.wrapper.SidedInvWrapper;
+import net.minecraftforge.items.IItemHandler;
+import net.minecraftforge.common.util.LazyOptional;
+import net.minecraftforge.common.capabilities.ForgeCapabilities;
+import net.minecraftforge.common.capabilities.Capability;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.WorldlyContainer;
+import net.minecraft.world.ContainerHelper;
+import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.NonNullList;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.compressedgrass.world.inventory.GrassFurnaceGuiMenu;
+import net.mcreator.compressedgrass.init.CompressedGrassModBlockEntities;
+
+import javax.annotation.Nullable;
+
+import java.util.stream.IntStream;
+
+import io.netty.buffer.Unpooled;
+
+public class GrassFurnaceBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer {
+ private NonNullList stacks = NonNullList.withSize(3, ItemStack.EMPTY);
+ private final LazyOptional extends IItemHandler>[] handlers = SidedInvWrapper.create(this, Direction.values());
+
+ public GrassFurnaceBlockEntity(BlockPos position, BlockState state) {
+ super(CompressedGrassModBlockEntities.GRASS_FURNACE.get(), position, state);
+ }
+
+ @Override
+ public void load(CompoundTag compound) {
+ super.load(compound);
+ if (!this.tryLoadLootTable(compound))
+ this.stacks = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY);
+ ContainerHelper.loadAllItems(compound, this.stacks);
+ }
+
+ @Override
+ public void saveAdditional(CompoundTag compound) {
+ super.saveAdditional(compound);
+ if (!this.trySaveLootTable(compound)) {
+ ContainerHelper.saveAllItems(compound, this.stacks);
+ }
+ }
+
+ @Override
+ public ClientboundBlockEntityDataPacket getUpdatePacket() {
+ return ClientboundBlockEntityDataPacket.create(this);
+ }
+
+ @Override
+ public CompoundTag getUpdateTag() {
+ return this.saveWithFullMetadata();
+ }
+
+ @Override
+ public int getContainerSize() {
+ return stacks.size();
+ }
+
+ @Override
+ public boolean isEmpty() {
+ for (ItemStack itemstack : this.stacks)
+ if (!itemstack.isEmpty())
+ return false;
+ return true;
+ }
+
+ @Override
+ public Component getDefaultName() {
+ return Component.literal("grass_furnace");
+ }
+
+ @Override
+ public int getMaxStackSize() {
+ return 64;
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory) {
+ return new GrassFurnaceGuiMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition));
+ }
+
+ @Override
+ public Component getDisplayName() {
+ return Component.literal("Grass Furnace");
+ }
+
+ @Override
+ protected NonNullList getItems() {
+ return this.stacks;
+ }
+
+ @Override
+ protected void setItems(NonNullList stacks) {
+ this.stacks = stacks;
+ }
+
+ @Override
+ public boolean canPlaceItem(int index, ItemStack stack) {
+ return true;
+ }
+
+ @Override
+ public int[] getSlotsForFace(Direction side) {
+ return IntStream.range(0, this.getContainerSize()).toArray();
+ }
+
+ @Override
+ public boolean canPlaceItemThroughFace(int index, ItemStack stack, @Nullable Direction direction) {
+ return this.canPlaceItem(index, stack);
+ }
+
+ @Override
+ public boolean canTakeItemThroughFace(int index, ItemStack stack, Direction direction) {
+ return true;
+ }
+
+ @Override
+ public LazyOptional getCapability(Capability capability, @Nullable Direction facing) {
+ if (!this.remove && facing != null && capability == ForgeCapabilities.ITEM_HANDLER)
+ return handlers[facing.ordinal()].cast();
+ return super.getCapability(capability, facing);
+ }
+
+ @Override
+ public void setRemoved() {
+ super.setRemoved();
+ for (LazyOptional extends IItemHandler> handler : handlers)
+ handler.invalidate();
+ }
+}
diff --git a/src/main/java/net/mcreator/compressedgrass/client/gui/GrassFurnaceGuiScreen.java b/src/main/java/net/mcreator/compressedgrass/client/gui/GrassFurnaceGuiScreen.java
new file mode 100644
index 00000000..71c7eed9
--- /dev/null
+++ b/src/main/java/net/mcreator/compressedgrass/client/gui/GrassFurnaceGuiScreen.java
@@ -0,0 +1,80 @@
+package net.mcreator.compressedgrass.client.gui;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.chat.Component;
+import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
+
+import net.mcreator.compressedgrass.world.inventory.GrassFurnaceGuiMenu;
+
+import java.util.HashMap;
+
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.blaze3d.systems.RenderSystem;
+
+public class GrassFurnaceGuiScreen extends AbstractContainerScreen {
+ private final static HashMap guistate = GrassFurnaceGuiMenu.guistate;
+ private final Level world;
+ private final int x, y, z;
+ private final Player entity;
+
+ public GrassFurnaceGuiScreen(GrassFurnaceGuiMenu container, Inventory inventory, Component text) {
+ super(container, inventory, text);
+ this.world = container.world;
+ this.x = container.x;
+ this.y = container.y;
+ this.z = container.z;
+ this.entity = container.entity;
+ this.imageWidth = 176;
+ this.imageHeight = 166;
+ }
+
+ private static final ResourceLocation texture = new ResourceLocation("compressed_grass:textures/screens/grass_furnace_gui.png");
+
+ @Override
+ public void render(PoseStack ms, int mouseX, int mouseY, float partialTicks) {
+ this.renderBackground(ms);
+ super.render(ms, mouseX, mouseY, partialTicks);
+ this.renderTooltip(ms, mouseX, mouseY);
+ }
+
+ @Override
+ protected void renderBg(PoseStack ms, float partialTicks, int gx, int gy) {
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ RenderSystem.enableBlend();
+ RenderSystem.defaultBlendFunc();
+ RenderSystem.setShaderTexture(0, texture);
+ this.blit(ms, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight, this.imageWidth, this.imageHeight);
+ RenderSystem.disableBlend();
+ }
+
+ @Override
+ public boolean keyPressed(int key, int b, int c) {
+ if (key == 256) {
+ this.minecraft.player.closeContainer();
+ return true;
+ }
+ return super.keyPressed(key, b, c);
+ }
+
+ @Override
+ public void containerTick() {
+ super.containerTick();
+ }
+
+ @Override
+ protected void renderLabels(PoseStack poseStack, int mouseX, int mouseY) {
+ }
+
+ @Override
+ public void onClose() {
+ super.onClose();
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ }
+}
diff --git a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModBlockEntities.java b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModBlockEntities.java
index bfded653..f803e79b 100644
--- a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModBlockEntities.java
+++ b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModBlockEntities.java
@@ -11,12 +11,14 @@
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.Block;
+import net.mcreator.compressedgrass.block.entity.GrassFurnaceBlockEntity;
import net.mcreator.compressedgrass.block.entity.GrassChestBlockEntity;
import net.mcreator.compressedgrass.CompressedGrassMod;
public class CompressedGrassModBlockEntities {
public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, CompressedGrassMod.MODID);
public static final RegistryObject> GRASS_CHEST = register("grass_chest", CompressedGrassModBlocks.GRASS_CHEST, GrassChestBlockEntity::new);
+ public static final RegistryObject> GRASS_FURNACE = register("grass_furnace", CompressedGrassModBlocks.GRASS_FURNACE, GrassFurnaceBlockEntity::new);
private static RegistryObject> register(String registryname, RegistryObject block, BlockEntityType.BlockEntitySupplier> supplier) {
return REGISTRY.register(registryname, () -> BlockEntityType.Builder.of(supplier, block.get()).build(null));
diff --git a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModBlocks.java b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModBlocks.java
index 39de4070..e7cc5531 100644
--- a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModBlocks.java
+++ b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModBlocks.java
@@ -22,6 +22,7 @@
import net.mcreator.compressedgrass.block.GrassWoodButtonBlock;
import net.mcreator.compressedgrass.block.GrassOreOreBlock;
import net.mcreator.compressedgrass.block.GrassOreBlockBlock;
+import net.mcreator.compressedgrass.block.GrassFurnaceBlock;
import net.mcreator.compressedgrass.block.GrassChestBlock;
import net.mcreator.compressedgrass.CompressedGrassMod;
@@ -40,4 +41,5 @@ public class CompressedGrassModBlocks {
public static final RegistryObject GRASS_WOOD_PRESSURE_PLATE = REGISTRY.register("grass_wood_pressure_plate", () -> new GrassWoodPressurePlateBlock());
public static final RegistryObject GRASS_WOOD_BUTTON = REGISTRY.register("grass_wood_button", () -> new GrassWoodButtonBlock());
public static final RegistryObject GRASS_CHEST = REGISTRY.register("grass_chest", () -> new GrassChestBlock());
+ public static final RegistryObject GRASS_FURNACE = REGISTRY.register("grass_furnace", () -> new GrassFurnaceBlock());
}
diff --git a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModItems.java b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModItems.java
index 2cbc49e6..7d1d5c62 100644
--- a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModItems.java
+++ b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModItems.java
@@ -13,8 +13,11 @@
import net.minecraft.world.item.BlockItem;
import net.mcreator.compressedgrass.item.TertiaryCompressedGrassItem;
+import net.mcreator.compressedgrass.item.TertiaryCompressedGrassArmorArmorItem;
import net.mcreator.compressedgrass.item.SecondaryCompressedGrassItem;
+import net.mcreator.compressedgrass.item.SecondaryCompressedGrassArmorArmorItem;
import net.mcreator.compressedgrass.item.QuaternaryCompressedGrassItem;
+import net.mcreator.compressedgrass.item.QuaternaryCompressedGrassArmorArmorItem;
import net.mcreator.compressedgrass.item.PrimaryCompressedGrassItem;
import net.mcreator.compressedgrass.item.PrimaryArmorItem;
import net.mcreator.compressedgrass.item.GrassSwordItem;
@@ -59,6 +62,19 @@ public class CompressedGrassModItems {
public static final RegistryObject- PRIMARY_ARMOR_LEGGINGS = REGISTRY.register("primary_armor_leggings", () -> new PrimaryArmorItem.Leggings());
public static final RegistryObject
- PRIMARY_ARMOR_BOOTS = REGISTRY.register("primary_armor_boots", () -> new PrimaryArmorItem.Boots());
public static final RegistryObject
- GRASS_CHEST = block(CompressedGrassModBlocks.GRASS_CHEST);
+ public static final RegistryObject
- SECONDARY_COMPRESSED_GRASS_ARMOR_ARMOR_HELMET = REGISTRY.register("secondary_compressed_grass_armor_armor_helmet", () -> new SecondaryCompressedGrassArmorArmorItem.Helmet());
+ public static final RegistryObject
- SECONDARY_COMPRESSED_GRASS_ARMOR_ARMOR_CHESTPLATE = REGISTRY.register("secondary_compressed_grass_armor_armor_chestplate", () -> new SecondaryCompressedGrassArmorArmorItem.Chestplate());
+ public static final RegistryObject
- SECONDARY_COMPRESSED_GRASS_ARMOR_ARMOR_LEGGINGS = REGISTRY.register("secondary_compressed_grass_armor_armor_leggings", () -> new SecondaryCompressedGrassArmorArmorItem.Leggings());
+ public static final RegistryObject
- SECONDARY_COMPRESSED_GRASS_ARMOR_ARMOR_BOOTS = REGISTRY.register("secondary_compressed_grass_armor_armor_boots", () -> new SecondaryCompressedGrassArmorArmorItem.Boots());
+ public static final RegistryObject
- TERTIARY_COMPRESSED_GRASS_ARMOR_ARMOR_HELMET = REGISTRY.register("tertiary_compressed_grass_armor_armor_helmet", () -> new TertiaryCompressedGrassArmorArmorItem.Helmet());
+ public static final RegistryObject
- TERTIARY_COMPRESSED_GRASS_ARMOR_ARMOR_CHESTPLATE = REGISTRY.register("tertiary_compressed_grass_armor_armor_chestplate", () -> new TertiaryCompressedGrassArmorArmorItem.Chestplate());
+ public static final RegistryObject
- TERTIARY_COMPRESSED_GRASS_ARMOR_ARMOR_LEGGINGS = REGISTRY.register("tertiary_compressed_grass_armor_armor_leggings", () -> new TertiaryCompressedGrassArmorArmorItem.Leggings());
+ public static final RegistryObject
- TERTIARY_COMPRESSED_GRASS_ARMOR_ARMOR_BOOTS = REGISTRY.register("tertiary_compressed_grass_armor_armor_boots", () -> new TertiaryCompressedGrassArmorArmorItem.Boots());
+ public static final RegistryObject
- GRASS_FURNACE = block(CompressedGrassModBlocks.GRASS_FURNACE);
+ public static final RegistryObject
- QUATERNARY_COMPRESSED_GRASS_ARMOR_ARMOR_HELMET = REGISTRY.register("quaternary_compressed_grass_armor_armor_helmet", () -> new QuaternaryCompressedGrassArmorArmorItem.Helmet());
+ public static final RegistryObject
- QUATERNARY_COMPRESSED_GRASS_ARMOR_ARMOR_CHESTPLATE = REGISTRY.register("quaternary_compressed_grass_armor_armor_chestplate", () -> new QuaternaryCompressedGrassArmorArmorItem.Chestplate());
+ public static final RegistryObject
- QUATERNARY_COMPRESSED_GRASS_ARMOR_ARMOR_LEGGINGS = REGISTRY.register("quaternary_compressed_grass_armor_armor_leggings", () -> new QuaternaryCompressedGrassArmorArmorItem.Leggings());
+ public static final RegistryObject
- QUATERNARY_COMPRESSED_GRASS_ARMOR_ARMOR_BOOTS = REGISTRY.register("quaternary_compressed_grass_armor_armor_boots", () -> new QuaternaryCompressedGrassArmorArmorItem.Boots());
private static RegistryObject
- block(RegistryObject block) {
return REGISTRY.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties()));
diff --git a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModMenus.java b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModMenus.java
index 900ccf29..c0d3f676 100644
--- a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModMenus.java
+++ b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModMenus.java
@@ -11,10 +11,12 @@
import net.minecraft.world.inventory.MenuType;
+import net.mcreator.compressedgrass.world.inventory.GrassFurnaceGuiMenu;
import net.mcreator.compressedgrass.world.inventory.GrassChestGuiMenu;
import net.mcreator.compressedgrass.CompressedGrassMod;
public class CompressedGrassModMenus {
public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.MENU_TYPES, CompressedGrassMod.MODID);
public static final RegistryObject> GRASS_CHEST_GUI = REGISTRY.register("grass_chest_gui", () -> IForgeMenuType.create(GrassChestGuiMenu::new));
+ public static final RegistryObject> GRASS_FURNACE_GUI = REGISTRY.register("grass_furnace_gui", () -> IForgeMenuType.create(GrassFurnaceGuiMenu::new));
}
diff --git a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModScreens.java b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModScreens.java
index fa92c6c6..769b9077 100644
--- a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModScreens.java
+++ b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModScreens.java
@@ -11,6 +11,7 @@
import net.minecraft.client.gui.screens.MenuScreens;
+import net.mcreator.compressedgrass.client.gui.GrassFurnaceGuiScreen;
import net.mcreator.compressedgrass.client.gui.GrassChestGuiScreen;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
@@ -19,6 +20,7 @@ public class CompressedGrassModScreens {
public static void clientLoad(FMLClientSetupEvent event) {
event.enqueueWork(() -> {
MenuScreens.register(CompressedGrassModMenus.GRASS_CHEST_GUI.get(), GrassChestGuiScreen::new);
+ MenuScreens.register(CompressedGrassModMenus.GRASS_FURNACE_GUI.get(), GrassFurnaceGuiScreen::new);
});
}
}
diff --git a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModTabs.java b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModTabs.java
index d9dd8f9d..6a57861e 100644
--- a/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModTabs.java
+++ b/src/main/java/net/mcreator/compressedgrass/init/CompressedGrassModTabs.java
@@ -24,13 +24,6 @@ public static void buildTabContentsVanilla(CreativeModeTabEvent.BuildContents ta
tabData.accept(CompressedGrassModBlocks.GRASS_WOOD_PRESSURE_PLATE.get().asItem());
}
- if (tabData.getTab() == CreativeModeTabs.COMBAT) {
- tabData.accept(CompressedGrassModItems.PRIMARY_ARMOR_HELMET.get());
- tabData.accept(CompressedGrassModItems.PRIMARY_ARMOR_CHESTPLATE.get());
- tabData.accept(CompressedGrassModItems.PRIMARY_ARMOR_LEGGINGS.get());
- tabData.accept(CompressedGrassModItems.PRIMARY_ARMOR_BOOTS.get());
- }
-
if (tabData.getTab() == CreativeModeTabs.NATURAL_BLOCKS) {
tabData.accept(CompressedGrassModBlocks.GRASS_WOOD_LEAVES.get().asItem());
tabData.accept(CompressedGrassModBlocks.GRASS_WOOD_FENCE.get().asItem());
@@ -63,7 +56,24 @@ public static void buildTabContentsModded(CreativeModeTabEvent.Register event) {
tabData.accept(CompressedGrassModBlocks.GRASS_WOOD_STAIRS.get().asItem());
tabData.accept(CompressedGrassModBlocks.GRASS_WOOD_SLAB.get().asItem());
tabData.accept(CompressedGrassModBlocks.GRASS_WOOD_BUTTON.get().asItem());
+ tabData.accept(CompressedGrassModItems.PRIMARY_ARMOR_HELMET.get());
+ tabData.accept(CompressedGrassModItems.PRIMARY_ARMOR_CHESTPLATE.get());
+ tabData.accept(CompressedGrassModItems.PRIMARY_ARMOR_LEGGINGS.get());
+ tabData.accept(CompressedGrassModItems.PRIMARY_ARMOR_BOOTS.get());
tabData.accept(CompressedGrassModBlocks.GRASS_CHEST.get().asItem());
+ tabData.accept(CompressedGrassModItems.SECONDARY_COMPRESSED_GRASS_ARMOR_ARMOR_HELMET.get());
+ tabData.accept(CompressedGrassModItems.SECONDARY_COMPRESSED_GRASS_ARMOR_ARMOR_CHESTPLATE.get());
+ tabData.accept(CompressedGrassModItems.SECONDARY_COMPRESSED_GRASS_ARMOR_ARMOR_LEGGINGS.get());
+ tabData.accept(CompressedGrassModItems.SECONDARY_COMPRESSED_GRASS_ARMOR_ARMOR_BOOTS.get());
+ tabData.accept(CompressedGrassModItems.TERTIARY_COMPRESSED_GRASS_ARMOR_ARMOR_HELMET.get());
+ tabData.accept(CompressedGrassModItems.TERTIARY_COMPRESSED_GRASS_ARMOR_ARMOR_CHESTPLATE.get());
+ tabData.accept(CompressedGrassModItems.TERTIARY_COMPRESSED_GRASS_ARMOR_ARMOR_LEGGINGS.get());
+ tabData.accept(CompressedGrassModItems.TERTIARY_COMPRESSED_GRASS_ARMOR_ARMOR_BOOTS.get());
+ tabData.accept(CompressedGrassModBlocks.GRASS_FURNACE.get().asItem());
+ tabData.accept(CompressedGrassModItems.QUATERNARY_COMPRESSED_GRASS_ARMOR_ARMOR_HELMET.get());
+ tabData.accept(CompressedGrassModItems.QUATERNARY_COMPRESSED_GRASS_ARMOR_ARMOR_CHESTPLATE.get());
+ tabData.accept(CompressedGrassModItems.QUATERNARY_COMPRESSED_GRASS_ARMOR_ARMOR_LEGGINGS.get());
+ tabData.accept(CompressedGrassModItems.QUATERNARY_COMPRESSED_GRASS_ARMOR_ARMOR_BOOTS.get());
}).withSearchBar());
}
}
diff --git a/src/main/java/net/mcreator/compressedgrass/item/QuaternaryCompressedGrassArmorArmorItem.java b/src/main/java/net/mcreator/compressedgrass/item/QuaternaryCompressedGrassArmorArmorItem.java
new file mode 100644
index 00000000..ce38ac49
--- /dev/null
+++ b/src/main/java/net/mcreator/compressedgrass/item/QuaternaryCompressedGrassArmorArmorItem.java
@@ -0,0 +1,104 @@
+
+package net.mcreator.compressedgrass.item;
+
+import net.minecraft.world.item.crafting.Ingredient;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ArmorMaterial;
+import net.minecraft.world.item.ArmorItem;
+import net.minecraft.world.entity.EquipmentSlot;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.sounds.SoundEvents;
+import net.minecraft.sounds.SoundEvent;
+
+import net.mcreator.compressedgrass.init.CompressedGrassModItems;
+
+public abstract class QuaternaryCompressedGrassArmorArmorItem extends ArmorItem {
+ public QuaternaryCompressedGrassArmorArmorItem(ArmorItem.Type type, Item.Properties properties) {
+ super(new ArmorMaterial() {
+ @Override
+ public int getDurabilityForType(ArmorItem.Type type) {
+ return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 12;
+ }
+
+ @Override
+ public int getDefenseForType(ArmorItem.Type type) {
+ return new int[]{2, 5, 4, 2}[type.getSlot().getIndex()];
+ }
+
+ @Override
+ public int getEnchantmentValue() {
+ return 7;
+ }
+
+ @Override
+ public SoundEvent getEquipSound() {
+ return SoundEvents.EMPTY;
+ }
+
+ @Override
+ public Ingredient getRepairIngredient() {
+ return Ingredient.of(new ItemStack(CompressedGrassModItems.QUATERNARY_COMPRESSED_GRASS.get()));
+ }
+
+ @Override
+ public String getName() {
+ return "quaternary_compressed_grass_armor_armor";
+ }
+
+ @Override
+ public float getToughness() {
+ return 0.1f;
+ }
+
+ @Override
+ public float getKnockbackResistance() {
+ return 0.1f;
+ }
+ }, type, properties);
+ }
+
+ public static class Helmet extends QuaternaryCompressedGrassArmorArmorItem {
+ public Helmet() {
+ super(ArmorItem.Type.HELMET, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/quaternarycompressedgrassarmor_layer_1.png";
+ }
+ }
+
+ public static class Chestplate extends QuaternaryCompressedGrassArmorArmorItem {
+ public Chestplate() {
+ super(ArmorItem.Type.CHESTPLATE, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/quaternarycompressedgrassarmor_layer_1.png";
+ }
+ }
+
+ public static class Leggings extends QuaternaryCompressedGrassArmorArmorItem {
+ public Leggings() {
+ super(ArmorItem.Type.LEGGINGS, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/quaternarycompressedgrassarmor_layer_2.png";
+ }
+ }
+
+ public static class Boots extends QuaternaryCompressedGrassArmorArmorItem {
+ public Boots() {
+ super(ArmorItem.Type.BOOTS, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/quaternarycompressedgrassarmor_layer_1.png";
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/compressedgrass/item/SecondaryCompressedGrassArmorArmorItem.java b/src/main/java/net/mcreator/compressedgrass/item/SecondaryCompressedGrassArmorArmorItem.java
new file mode 100644
index 00000000..669d76f2
--- /dev/null
+++ b/src/main/java/net/mcreator/compressedgrass/item/SecondaryCompressedGrassArmorArmorItem.java
@@ -0,0 +1,104 @@
+
+package net.mcreator.compressedgrass.item;
+
+import net.minecraft.world.item.crafting.Ingredient;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ArmorMaterial;
+import net.minecraft.world.item.ArmorItem;
+import net.minecraft.world.entity.EquipmentSlot;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.sounds.SoundEvents;
+import net.minecraft.sounds.SoundEvent;
+
+import net.mcreator.compressedgrass.init.CompressedGrassModItems;
+
+public abstract class SecondaryCompressedGrassArmorArmorItem extends ArmorItem {
+ public SecondaryCompressedGrassArmorArmorItem(ArmorItem.Type type, Item.Properties properties) {
+ super(new ArmorMaterial() {
+ @Override
+ public int getDurabilityForType(ArmorItem.Type type) {
+ return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 9;
+ }
+
+ @Override
+ public int getDefenseForType(ArmorItem.Type type) {
+ return new int[]{1, 4, 3, 1}[type.getSlot().getIndex()];
+ }
+
+ @Override
+ public int getEnchantmentValue() {
+ return 5;
+ }
+
+ @Override
+ public SoundEvent getEquipSound() {
+ return SoundEvents.EMPTY;
+ }
+
+ @Override
+ public Ingredient getRepairIngredient() {
+ return Ingredient.of(new ItemStack(CompressedGrassModItems.SECONDARY_COMPRESSED_GRASS.get()));
+ }
+
+ @Override
+ public String getName() {
+ return "secondary_compressed_grass_armor_armor";
+ }
+
+ @Override
+ public float getToughness() {
+ return 0.1f;
+ }
+
+ @Override
+ public float getKnockbackResistance() {
+ return 0.1f;
+ }
+ }, type, properties);
+ }
+
+ public static class Helmet extends SecondaryCompressedGrassArmorArmorItem {
+ public Helmet() {
+ super(ArmorItem.Type.HELMET, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/secondarycompressedgrassarmor_layer_1.png";
+ }
+ }
+
+ public static class Chestplate extends SecondaryCompressedGrassArmorArmorItem {
+ public Chestplate() {
+ super(ArmorItem.Type.CHESTPLATE, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/secondarycompressedgrassarmor_layer_1.png";
+ }
+ }
+
+ public static class Leggings extends SecondaryCompressedGrassArmorArmorItem {
+ public Leggings() {
+ super(ArmorItem.Type.LEGGINGS, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/secondarycompressedgrassarmor_layer_2.png";
+ }
+ }
+
+ public static class Boots extends SecondaryCompressedGrassArmorArmorItem {
+ public Boots() {
+ super(ArmorItem.Type.BOOTS, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/secondarycompressedgrassarmor_layer_1.png";
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/compressedgrass/item/TertiaryCompressedGrassArmorArmorItem.java b/src/main/java/net/mcreator/compressedgrass/item/TertiaryCompressedGrassArmorArmorItem.java
new file mode 100644
index 00000000..0dfe4e90
--- /dev/null
+++ b/src/main/java/net/mcreator/compressedgrass/item/TertiaryCompressedGrassArmorArmorItem.java
@@ -0,0 +1,104 @@
+
+package net.mcreator.compressedgrass.item;
+
+import net.minecraft.world.item.crafting.Ingredient;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ArmorMaterial;
+import net.minecraft.world.item.ArmorItem;
+import net.minecraft.world.entity.EquipmentSlot;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.sounds.SoundEvents;
+import net.minecraft.sounds.SoundEvent;
+
+import net.mcreator.compressedgrass.init.CompressedGrassModItems;
+
+public abstract class TertiaryCompressedGrassArmorArmorItem extends ArmorItem {
+ public TertiaryCompressedGrassArmorArmorItem(ArmorItem.Type type, Item.Properties properties) {
+ super(new ArmorMaterial() {
+ @Override
+ public int getDurabilityForType(ArmorItem.Type type) {
+ return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 11;
+ }
+
+ @Override
+ public int getDefenseForType(ArmorItem.Type type) {
+ return new int[]{1, 4, 4, 1}[type.getSlot().getIndex()];
+ }
+
+ @Override
+ public int getEnchantmentValue() {
+ return 6;
+ }
+
+ @Override
+ public SoundEvent getEquipSound() {
+ return SoundEvents.EMPTY;
+ }
+
+ @Override
+ public Ingredient getRepairIngredient() {
+ return Ingredient.of(new ItemStack(CompressedGrassModItems.TERTIARY_COMPRESSED_GRASS.get()));
+ }
+
+ @Override
+ public String getName() {
+ return "tertiary_compressed_grass_armor_armor";
+ }
+
+ @Override
+ public float getToughness() {
+ return 0.1f;
+ }
+
+ @Override
+ public float getKnockbackResistance() {
+ return 0.1f;
+ }
+ }, type, properties);
+ }
+
+ public static class Helmet extends TertiaryCompressedGrassArmorArmorItem {
+ public Helmet() {
+ super(ArmorItem.Type.HELMET, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/tertiarycompressedgrassarmor_layer_1.png";
+ }
+ }
+
+ public static class Chestplate extends TertiaryCompressedGrassArmorArmorItem {
+ public Chestplate() {
+ super(ArmorItem.Type.CHESTPLATE, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/tertiarycompressedgrassarmor_layer_1.png";
+ }
+ }
+
+ public static class Leggings extends TertiaryCompressedGrassArmorArmorItem {
+ public Leggings() {
+ super(ArmorItem.Type.LEGGINGS, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/tertiarycompressedgrassarmor_layer_2.png";
+ }
+ }
+
+ public static class Boots extends TertiaryCompressedGrassArmorArmorItem {
+ public Boots() {
+ super(ArmorItem.Type.BOOTS, new Item.Properties());
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
+ return "compressed_grass:textures/models/armor/tertiarycompressedgrassarmor_layer_1.png";
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/compressedgrass/network/GrassFurnaceGuiSlotMessage.java b/src/main/java/net/mcreator/compressedgrass/network/GrassFurnaceGuiSlotMessage.java
new file mode 100644
index 00000000..7ba2c4a5
--- /dev/null
+++ b/src/main/java/net/mcreator/compressedgrass/network/GrassFurnaceGuiSlotMessage.java
@@ -0,0 +1,83 @@
+
+package net.mcreator.compressedgrass.network;
+
+import net.minecraftforge.network.NetworkEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.compressedgrass.world.inventory.GrassFurnaceGuiMenu;
+import net.mcreator.compressedgrass.procedures.GrassFurnaceGuiOpenPeriodProcedure;
+import net.mcreator.compressedgrass.CompressedGrassMod;
+
+import java.util.function.Supplier;
+import java.util.HashMap;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
+public class GrassFurnaceGuiSlotMessage {
+ private final int slotID, x, y, z, changeType, meta;
+
+ public GrassFurnaceGuiSlotMessage(int slotID, int x, int y, int z, int changeType, int meta) {
+ this.slotID = slotID;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.changeType = changeType;
+ this.meta = meta;
+ }
+
+ public GrassFurnaceGuiSlotMessage(FriendlyByteBuf buffer) {
+ this.slotID = buffer.readInt();
+ this.x = buffer.readInt();
+ this.y = buffer.readInt();
+ this.z = buffer.readInt();
+ this.changeType = buffer.readInt();
+ this.meta = buffer.readInt();
+ }
+
+ public static void buffer(GrassFurnaceGuiSlotMessage message, FriendlyByteBuf buffer) {
+ buffer.writeInt(message.slotID);
+ buffer.writeInt(message.x);
+ buffer.writeInt(message.y);
+ buffer.writeInt(message.z);
+ buffer.writeInt(message.changeType);
+ buffer.writeInt(message.meta);
+ }
+
+ public static void handler(GrassFurnaceGuiSlotMessage message, Supplier contextSupplier) {
+ NetworkEvent.Context context = contextSupplier.get();
+ context.enqueueWork(() -> {
+ Player entity = context.getSender();
+ int slotID = message.slotID;
+ int changeType = message.changeType;
+ int meta = message.meta;
+ int x = message.x;
+ int y = message.y;
+ int z = message.z;
+ handleSlotAction(entity, slotID, changeType, meta, x, y, z);
+ });
+ context.setPacketHandled(true);
+ }
+
+ public static void handleSlotAction(Player entity, int slotID, int changeType, int meta, int x, int y, int z) {
+ Level world = entity.level;
+ HashMap guistate = GrassFurnaceGuiMenu.guistate;
+ // security measure to prevent arbitrary chunk generation
+ if (!world.hasChunkAt(new BlockPos(x, y, z)))
+ return;
+ if (slotID == 0 && changeType == 0) {
+
+ GrassFurnaceGuiOpenPeriodProcedure.execute(world, x, y, z);
+ }
+ }
+
+ @SubscribeEvent
+ public static void registerMessage(FMLCommonSetupEvent event) {
+ CompressedGrassMod.addNetworkMessage(GrassFurnaceGuiSlotMessage.class, GrassFurnaceGuiSlotMessage::buffer, GrassFurnaceGuiSlotMessage::new, GrassFurnaceGuiSlotMessage::handler);
+ }
+}
diff --git a/src/main/java/net/mcreator/compressedgrass/procedures/GrassFurnaceGuiOpenPeriodProcedure.java b/src/main/java/net/mcreator/compressedgrass/procedures/GrassFurnaceGuiOpenPeriodProcedure.java
new file mode 100644
index 00000000..93e0cf87
--- /dev/null
+++ b/src/main/java/net/mcreator/compressedgrass/procedures/GrassFurnaceGuiOpenPeriodProcedure.java
@@ -0,0 +1,72 @@
+package net.mcreator.compressedgrass.procedures;
+
+import net.minecraftforge.items.IItemHandlerModifiable;
+import net.minecraftforge.common.capabilities.ForgeCapabilities;
+
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.compressedgrass.init.CompressedGrassModItems;
+import net.mcreator.compressedgrass.init.CompressedGrassModBlocks;
+
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class GrassFurnaceGuiOpenPeriodProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z) {
+ if (new Object() {
+ public int getAmount(LevelAccessor world, BlockPos pos, int slotid) {
+ AtomicInteger _retval = new AtomicInteger(0);
+ BlockEntity _ent = world.getBlockEntity(pos);
+ if (_ent != null)
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> _retval.set(capability.getStackInSlot(slotid).getCount()));
+ return _retval.get();
+ }
+ }.getAmount(world, BlockPos.containing(x, y, z), 1) < 64 && (new Object() {
+ public ItemStack getItemStack(LevelAccessor world, BlockPos pos, int slotid) {
+ AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY);
+ BlockEntity _ent = world.getBlockEntity(pos);
+ if (_ent != null)
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> _retval.set(capability.getStackInSlot(slotid).copy()));
+ return _retval.get();
+ }
+ }.getItemStack(world, BlockPos.containing(x, y, z), 0)).getItem() == CompressedGrassModBlocks.GRASS_ORE_ORE.get().asItem()) {
+ {
+ BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z));
+ if (_ent != null) {
+ final int _slotid = 0;
+ final int _amount = 1;
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> {
+ if (capability instanceof IItemHandlerModifiable) {
+ ItemStack _stk = capability.getStackInSlot(_slotid).copy();
+ _stk.shrink(_amount);
+ ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _stk);
+ }
+ });
+ }
+ }
+ {
+ BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z));
+ if (_ent != null) {
+ final int _slotid = 1;
+ final ItemStack _setstack = new ItemStack(CompressedGrassModItems.GRASS_ORE_INGOT.get());
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(LevelAccessor world, BlockPos pos, int slotid) {
+ AtomicInteger _retval = new AtomicInteger(0);
+ BlockEntity _ent = world.getBlockEntity(pos);
+ if (_ent != null)
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> _retval.set(capability.getStackInSlot(slotid).getCount()));
+ return _retval.get();
+ }
+ }.getAmount(world, BlockPos.containing(x, y, z), 1) + 1));
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> {
+ if (capability instanceof IItemHandlerModifiable)
+ ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack);
+ });
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/compressedgrass/world/inventory/GrassFurnaceGuiMenu.java b/src/main/java/net/mcreator/compressedgrass/world/inventory/GrassFurnaceGuiMenu.java
new file mode 100644
index 00000000..9de1723a
--- /dev/null
+++ b/src/main/java/net/mcreator/compressedgrass/world/inventory/GrassFurnaceGuiMenu.java
@@ -0,0 +1,239 @@
+
+package net.mcreator.compressedgrass.world.inventory;
+
+import net.minecraftforge.items.SlotItemHandler;
+import net.minecraftforge.items.ItemStackHandler;
+import net.minecraftforge.items.IItemHandler;
+import net.minecraftforge.common.capabilities.ForgeCapabilities;
+
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.compressedgrass.network.GrassFurnaceGuiSlotMessage;
+import net.mcreator.compressedgrass.init.CompressedGrassModMenus;
+import net.mcreator.compressedgrass.CompressedGrassMod;
+
+import java.util.function.Supplier;
+import java.util.Map;
+import java.util.HashMap;
+
+public class GrassFurnaceGuiMenu extends AbstractContainerMenu implements Supplier