diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..c9398bf --- /dev/null +++ b/.classpath @@ -0,0 +1,615 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 0000000..1531e21 --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,25 @@ +# This workflow will build a Java project with Maven +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Java CI with Maven + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + - name: Build with Maven + run: mvn -B package --file pom.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62b694c --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +# Gradle build system ignores +.gradle/ +build/ + +# Other IDE related folders +.idea/ +.settings/ + +# MCreator workspace +.mcreator/ + +# Minecraft client/server files +run/ + +# MacOS system files +.DS_STORE \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..1eefd24 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + EasySurvival + + + + org.eclipse.jdt.core.javanature + + + + org.eclipse.jdt.core.javabuilder + + + + + + diff --git a/_export/CropPlantsUpdateTick.ptpl b/_export/CropPlantsUpdateTick.ptpl new file mode 100644 index 0000000..eadae50 Binary files /dev/null and b/_export/CropPlantsUpdateTick.ptpl differ diff --git a/_export/CropTreesUpdateTick.ptpl b/_export/CropTreesUpdateTick.ptpl new file mode 100644 index 0000000..8679243 Binary files /dev/null and b/_export/CropTreesUpdateTick.ptpl differ diff --git a/_reference/EasySurvival.jar b/_reference/EasySurvival.jar new file mode 100644 index 0000000..f2aa5c6 Binary files /dev/null and b/_reference/EasySurvival.jar differ diff --git a/_reference/teleportmod_1.16.3-1.1.3.jar b/_reference/teleportmod_1.16.3-1.1.3.jar new file mode 100644 index 0000000..cf14b3a Binary files /dev/null and b/_reference/teleportmod_1.16.3-1.1.3.jar differ diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..a46f914 --- /dev/null +++ b/build.gradle @@ -0,0 +1,57 @@ +plugins { + id 'eclipse' + id 'net.minecraftforge.gradle' version '[6.0,6.2)' +} + +version = '1.0' +group = 'com.yourname.modid' +archivesBaseName = 'modid' + +java.toolchain.languageVersion = JavaLanguageVersion.of(17) + +minecraft { + mappings channel: 'official', version: '1.20.1' + + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + copyIdeResources = true + + runs { + client { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'forge.logging.console.level', 'debug' + + mods { + examplemod { + source sourceSets.main + } + } + } + + server { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'forge.logging.console.level', 'debug' + + mods { + examplemod { + source sourceSets.main + } + } + } + } +} + +dependencies { + minecraft 'net.minecraftforge:forge:1.20.1-47.2.0' +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation +} + +apply from: 'mcreator.gradle' + diff --git a/easysurvival.mcreator b/easysurvival.mcreator new file mode 100644 index 0000000..c78dd27 --- /dev/null +++ b/easysurvival.mcreator @@ -0,0 +1,3094 @@ +{ + "mod_elements": [ + { + "name": "NetherStick", + "type": "item", + "sortid": 1, + "compiles": true, + "locked_code": false, + "registry_name": "nether_stick", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/nether_stick.json", + "src/main/java/ch/netquick/easysurvival/item/NetherStickItem.java" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherStickRecipe", + "type": "recipe", + "sortid": 2, + "compiles": true, + "locked_code": false, + "registry_name": "nether_stick_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/nether_stick_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "Crop", + "type": "block", + "sortid": 3, + "compiles": true, + "locked_code": false, + "registry_name": "crop", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/crop.json", + "src/main/resources/assets/easysurvival/models/block/crop.json", + "src/main/java/ch/netquick/easysurvival/block/CropBlock.java", + "src/main/java/ch/netquick/easysurvival/block/entity/CropBlockEntity.java", + "src/main/resources/assets/easysurvival/blockstates/crop.json" + ] + }, + "path": "~/Crop_Plants" + }, + { + "name": "CropGUI", + "type": "gui", + "sortid": 4, + "compiles": true, + "locked_code": false, + "registry_name": "crop_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/world/inventory/CropGUIMenu.java", + "src/main/java/ch/netquick/easysurvival/client/gui/CropGUIScreen.java" + ] + }, + "path": "~/Crop_Plants" + }, + { + "name": "CropUpdateTick", + "type": "procedure", + "sortid": 6, + "compiles": true, + "locked_code": false, + "registry_name": "crop_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/CropUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Crop_Plants" + }, + { + "name": "NetherrackPickaxe", + "type": "tool", + "sortid": 7, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_pickaxe", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/item/NetherrackPickaxeItem.java", + "src/main/resources/assets/easysurvival/models/item/netherrack_pickaxe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackAxe", + "type": "tool", + "sortid": 8, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_axe", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/netherrack_axe.json", + "src/main/java/ch/netquick/easysurvival/item/NetherrackAxeItem.java" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackSword", + "type": "tool", + "sortid": 9, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_sword", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/item/NetherrackSwordItem.java", + "src/main/resources/assets/easysurvival/models/item/netherrack_sword.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackShovel", + "type": "tool", + "sortid": 10, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_shovel", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/netherrack_shovel.json", + "src/main/java/ch/netquick/easysurvival/item/NetherrackShovelItem.java" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackHoe", + "type": "tool", + "sortid": 11, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_hoe", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/item/NetherrackHoeItem.java", + "src/main/resources/assets/easysurvival/models/item/netherrack_hoe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackPickaxeRecipe", + "type": "recipe", + "sortid": 12, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_pickaxe_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/netherrack_pickaxe_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackAxeRecipe", + "type": "recipe", + "sortid": 13, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_axe_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/netherrack_axe_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackSwordRecipe", + "type": "recipe", + "sortid": 14, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_sword_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/netherrack_sword_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackShovelRecipe", + "type": "recipe", + "sortid": 15, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_shovel_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/netherrack_shovel_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackHoeRecipe", + "type": "recipe", + "sortid": 16, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_hoe_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/netherrack_hoe_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "TreeCrop", + "type": "block", + "sortid": 17, + "compiles": true, + "locked_code": false, + "registry_name": "tree_crop", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/entity/TreeCropBlockEntity.java", + "src/main/resources/assets/easysurvival/blockstates/tree_crop.json", + "src/main/resources/assets/easysurvival/models/block/tree_crop.json", + "src/main/java/ch/netquick/easysurvival/block/TreeCropBlock.java", + "src/main/resources/assets/easysurvival/models/item/tree_crop.json" + ] + }, + "path": "~/Crop_Trees" + }, + { + "name": "TreeCropGUI", + "type": "gui", + "sortid": 19, + "compiles": true, + "locked_code": false, + "registry_name": "tree_crop_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/client/gui/TreeCropGUIScreen.java", + "src/main/java/ch/netquick/easysurvival/world/inventory/TreeCropGUIMenu.java" + ] + }, + "path": "~/Crop_Trees" + }, + { + "name": "TreeCropUpdateTick", + "type": "procedure", + "sortid": 20, + "compiles": true, + "locked_code": false, + "registry_name": "tree_crop_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/TreeCropUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Crop_Trees" + }, + { + "name": "CropRecipe", + "type": "recipe", + "sortid": 21, + "compiles": true, + "locked_code": false, + "registry_name": "crop_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/crop_recipe.json" + ] + }, + "path": "~/Crop_Plants" + }, + { + "name": "BasaltPickaxe", + "type": "tool", + "sortid": 22, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_pickaxe", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/basalt_pickaxe.json", + "src/main/java/ch/netquick/easysurvival/item/BasaltPickaxeItem.java" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "BasaltAxe", + "type": "tool", + "sortid": 23, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_axe", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/item/BasaltAxeItem.java", + "src/main/resources/assets/easysurvival/models/item/basalt_axe.json" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "BasaltSword", + "type": "tool", + "sortid": 24, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_sword", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/basalt_sword.json", + "src/main/java/ch/netquick/easysurvival/item/BasaltSwordItem.java" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "BasaltShovel", + "type": "tool", + "sortid": 25, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_shovel", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/item/BasaltShovelItem.java", + "src/main/resources/assets/easysurvival/models/item/basalt_shovel.json" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "BasaltHoe", + "type": "tool", + "sortid": 26, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_hoe", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/item/BasaltHoeItem.java", + "src/main/resources/assets/easysurvival/models/item/basalt_hoe.json" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "BasaltPickaxeRecipe", + "type": "recipe", + "sortid": 27, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_pickaxe_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/basalt_pickaxe_recipe.json" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "BasaltAxeRecipe", + "type": "recipe", + "sortid": 28, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_axe_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/basalt_axe_recipe.json" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "BasaltSwordRecipe", + "type": "recipe", + "sortid": 29, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_sword_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/basalt_sword_recipe.json" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "BasaltShovelRecipe", + "type": "recipe", + "sortid": 30, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_shovel_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/basalt_shovel_recipe.json" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "BasaltHoeRecipe", + "type": "recipe", + "sortid": 31, + "compiles": true, + "locked_code": false, + "registry_name": "basalt_hoe_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/basalt_hoe_recipe.json" + ] + }, + "path": "~/Basalt_Tools" + }, + { + "name": "NetherrackArmor", + "type": "armor", + "sortid": 32, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_armor", + "metadata": { + "eh": true, + "el": true, + "eb": true, + "ec": true, + "files": [ + "src/main/java/ch/netquick/easysurvival/item/NetherrackArmorItem.java", + "src/main/resources/assets/easysurvival/models/item/netherrack_armor_chestplate.json", + "src/main/resources/assets/easysurvival/models/item/netherrack_armor_boots.json", + "src/main/resources/assets/easysurvival/models/item/netherrack_armor_leggings.json", + "src/main/resources/assets/easysurvival/models/item/netherrack_armor_helmet.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackArmorHelmetRecipe", + "type": "recipe", + "sortid": 33, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_armor_helmet_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/netherrack_armor_helmet_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackArmorBodyRecipe", + "type": "recipe", + "sortid": 34, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_armor_body_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/netherrack_armor_body_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackArmorLeggingsRecipe", + "type": "recipe", + "sortid": 35, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_armor_leggings_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/netherrack_armor_leggings_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherrackArmorBootsRecipe", + "type": "recipe", + "sortid": 36, + "compiles": true, + "locked_code": false, + "registry_name": "netherrack_armor_boots_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/netherrack_armor_boots_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "QuarzPickaxe", + "type": "tool", + "sortid": 37, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_pickaxe", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/quarz_pickaxe.json", + "src/main/java/ch/netquick/easysurvival/item/QuarzPickaxeItem.java" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "QuarzAxe", + "type": "tool", + "sortid": 38, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_axe", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/item/QuarzAxeItem.java", + "src/main/resources/assets/easysurvival/models/item/quarz_axe.json" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "QuarzSword", + "type": "tool", + "sortid": 39, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_sword", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/quarz_sword.json", + "src/main/java/ch/netquick/easysurvival/item/QuarzSwordItem.java" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "QuarzShovel", + "type": "tool", + "sortid": 40, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_shovel", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/quarz_shovel.json", + "src/main/java/ch/netquick/easysurvival/item/QuarzShovelItem.java" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "QuarzHoe", + "type": "tool", + "sortid": 41, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_hoe", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/item/QuarzHoeItem.java", + "src/main/resources/assets/easysurvival/models/item/quarz_hoe.json" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "QuarzPickaxeRecipe", + "type": "recipe", + "sortid": 42, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_pickaxe_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/quarz_pickaxe_recipe.json" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "QuarzAxeRecipe", + "type": "recipe", + "sortid": 43, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_axe_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/quarz_axe_recipe.json" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "QuarzSwordRecipe", + "type": "recipe", + "sortid": 44, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_sword_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/quarz_sword_recipe.json" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "QuarzShovelRecipe", + "type": "recipe", + "sortid": 45, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_shovel_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/quarz_shovel_recipe.json" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "QuarzHoeRecipe", + "type": "recipe", + "sortid": 46, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_hoe_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/quarz_hoe_recipe.json" + ] + }, + "path": "~/Quarz_Tools" + }, + { + "name": "ShulkerBoxRecipe", + "type": "recipe", + "sortid": 47, + "compiles": true, + "locked_code": false, + "registry_name": "shulker_box_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/shulker_box_recipe.json" + ] + }, + "path": "~/Misc_Recipes" + }, + { + "name": "EnderpPearlRecipe", + "type": "recipe", + "sortid": 48, + "compiles": true, + "locked_code": false, + "registry_name": "enderp_pearl_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/enderp_pearl_recipe.json" + ] + }, + "path": "~/Misc_Recipes" + }, + { + "name": "TreeCropRecipe", + "type": "recipe", + "sortid": 49, + "compiles": true, + "locked_code": false, + "registry_name": "tree_crop_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/tree_crop_recipe.json" + ] + }, + "path": "~/Crop_Trees" + }, + { + "name": "NetherBucket", + "type": "recipe", + "sortid": 53, + "compiles": true, + "locked_code": false, + "registry_name": "nether_bucket", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/nether_bucket.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherLadderRecipe", + "type": "recipe", + "sortid": 50, + "compiles": true, + "locked_code": false, + "registry_name": "nether_ladder_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/nether_ladder_recipe.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherWorkbench", + "type": "recipe", + "sortid": 51, + "compiles": true, + "locked_code": false, + "registry_name": "nether_workbench", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/nether_workbench.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "NetherForge", + "type": "recipe", + "sortid": 52, + "compiles": true, + "locked_code": false, + "registry_name": "nether_forge", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/nether_forge.json" + ] + }, + "path": "~/Netherrack_Tools" + }, + { + "name": "SpawnerBlaze", + "type": "block", + "sortid": 54, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_blaze", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/spawner_blaze.json", + "src/main/resources/assets/easysurvival/models/block/spawner_blaze.json", + "src/main/resources/assets/easysurvival/blockstates/spawner_blaze.json", + "src/main/java/ch/netquick/easysurvival/block/SpawnerBlazeBlock.java" + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerBlazeUpdateTick", + "type": "procedure", + "sortid": 55, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_blaze_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/SpawnerBlazeUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerBlazeRecipe", + "type": "recipe", + "sortid": 56, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_blaze_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/spawner_blaze_recipe.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerSlimeUpdateTick", + "type": "procedure", + "sortid": 57, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_slime_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/SpawnerSlimeUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerSlime", + "type": "block", + "sortid": 57, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_slime", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/block/spawner_slime.json", + "src/main/java/ch/netquick/easysurvival/block/SpawnerSlimeBlock.java", + "src/main/resources/assets/easysurvival/models/item/spawner_slime.json", + "src/main/resources/assets/easysurvival/blockstates/spawner_slime.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerSlimeRecipe", + "type": "recipe", + "sortid": 58, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_slime_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/spawner_slime_recipe.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "NetherWartRecipe", + "type": "recipe", + "sortid": 59, + "compiles": true, + "locked_code": false, + "registry_name": "nether_wart_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/nether_wart_recipe.json" + ] + }, + "path": "~/Misc_Recipes" + }, + { + "name": "SpawnerGhastUpdateTick", + "type": "procedure", + "sortid": 60, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_ghast_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/SpawnerGhastUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerGhast", + "type": "block", + "sortid": 60, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_ghast", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/SpawnerGhastBlock.java", + "src/main/resources/assets/easysurvival/models/block/spawner_ghast.json", + "src/main/resources/assets/easysurvival/models/item/spawner_ghast.json", + "src/main/resources/assets/easysurvival/blockstates/spawner_ghast.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerGhasRecipe", + "type": "recipe", + "sortid": 61, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_ghas_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/spawner_ghas_recipe.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "EasyEnchantmentTable", + "type": "block", + "sortid": 62, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/EasyEnchantmentTableBlock.java", + "src/main/resources/assets/easysurvival/models/item/easy_enchantment_table.json", + "src/main/java/ch/netquick/easysurvival/block/entity/EasyEnchantmentTableBlockEntity.java", + "src/main/resources/assets/easysurvival/blockstates/easy_enchantment_table.json", + "src/main/resources/assets/easysurvival/models/block/easy_enchantment_table.json" + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableUpdateTick", + "type": "procedure", + "sortid": 64, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUI", + "type": "gui", + "sortid": 65, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/network/EasyEnchantmentTableGUISlotMessage.java", + "src/main/java/ch/netquick/easysurvival/client/gui/EasyEnchantmentTableGUIScreen.java", + "src/main/java/ch/netquick/easysurvival/world/inventory/EasyEnchantmentTableGUIMenu.java" + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUIClear", + "type": "procedure", + "sortid": 66, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gui_clear", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUIClearProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUIreset", + "type": "procedure", + "sortid": 67, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_ireset", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUIresetProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUItakeItem1", + "type": "procedure", + "sortid": 68, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_itake_item_1", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem1Procedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUItakeItem2", + "type": "procedure", + "sortid": 69, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_itake_item_2", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem2Procedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUItakeItem3", + "type": "procedure", + "sortid": 70, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_itake_item_3", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem3Procedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUItakeItem4", + "type": "procedure", + "sortid": 71, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_itake_item_4", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem4Procedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUItakeItem5", + "type": "procedure", + "sortid": 72, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_itake_item_5", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem5Procedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUItakeItem6", + "type": "procedure", + "sortid": 73, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_itake_item_6", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem6Procedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUItakeItem7", + "type": "procedure", + "sortid": 74, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_itake_item_7", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem7Procedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUItakeItem8", + "type": "procedure", + "sortid": 75, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_itake_item_8", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem8Procedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableGUItakeItem9", + "type": "procedure", + "sortid": 76, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_gu_itake_item_9", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem9Procedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyEnchantmentTableRecipe", + "type": "recipe", + "sortid": 81, + "compiles": true, + "locked_code": false, + "registry_name": "easy_enchantment_table_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_enchantment_table_recipe.json" + ] + }, + "path": "~/EasyEnchantmentTable" + }, + { + "name": "EasyAnvil", + "type": "block", + "sortid": 83, + "compiles": true, + "locked_code": false, + "registry_name": "easy_anvil", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/entity/EasyAnvilBlockEntity.java", + "src/main/java/ch/netquick/easysurvival/block/EasyAnvilBlock.java", + "src/main/resources/assets/easysurvival/models/block/easy_anvil.json", + "src/main/resources/assets/easysurvival/models/item/easy_anvil.json", + "src/main/resources/assets/easysurvival/blockstates/easy_anvil.json" + ] + }, + "path": "~/Easy_Anvil" + }, + { + "name": "EasyAnvilGUI", + "type": "gui", + "sortid": 84, + "compiles": true, + "locked_code": false, + "registry_name": "easy_anvil_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/client/gui/EasyAnvilGUIScreen.java", + "src/main/java/ch/netquick/easysurvival/world/inventory/EasyAnvilGUIMenu.java", + "src/main/java/ch/netquick/easysurvival/network/EasyAnvilGUISlotMessage.java" + ] + }, + "path": "~/Easy_Anvil" + }, + { + "name": "EasyAnvilRecipe", + "type": "recipe", + "sortid": 87, + "compiles": true, + "locked_code": false, + "registry_name": "easy_anvil_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_anvil_recipe.json" + ] + }, + "path": "~/Easy_Anvil" + }, + { + "name": "DedicatedStorageGUI", + "type": "gui", + "sortid": 88, + "compiles": true, + "locked_code": false, + "registry_name": "dedicated_storage_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/client/gui/DedicatedStorageGUIScreen.java", + "src/main/java/ch/netquick/easysurvival/world/inventory/DedicatedStorageGUIMenu.java" + ] + }, + "path": "~/DedicatedStorage" + }, + { + "name": "SpawnersActive", + "type": "gamerule", + "sortid": 89, + "compiles": true, + "locked_code": false, + "registry_name": "spawnersActive", + "metadata": { + "type": "logic", + "files": [] + }, + "path": "~/Spawner" + }, + { + "name": "EasyForgeUpdateTick", + "type": "procedure", + "sortid": 90, + "compiles": true, + "locked_code": false, + "registry_name": "easy_forge_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyForgeUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Easy_Forge" + }, + { + "name": "EasyForge", + "type": "block", + "sortid": 90, + "compiles": true, + "locked_code": false, + "registry_name": "easy_forge", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/EasyForgeBlock.java", + "src/main/resources/assets/easysurvival/models/item/easy_forge.json", + "src/main/java/ch/netquick/easysurvival/block/entity/EasyForgeBlockEntity.java", + "src/main/resources/assets/easysurvival/models/block/easy_forge.json", + "src/main/resources/assets/easysurvival/blockstates/easy_forge.json" + ] + }, + "path": "~/Easy_Forge" + }, + { + "name": "EasyForgeGUI", + "type": "gui", + "sortid": 91, + "compiles": true, + "locked_code": false, + "registry_name": "easy_forge_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/world/inventory/EasyForgeGUIMenu.java", + "src/main/java/ch/netquick/easysurvival/client/gui/EasyForgeGUIScreen.java" + ] + }, + "path": "~/Easy_Forge" + }, + { + "name": "EasyForgeRecipe", + "type": "recipe", + "sortid": 92, + "compiles": true, + "locked_code": false, + "registry_name": "easy_forge_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_forge_recipe.json" + ] + }, + "path": "~/Easy_Forge" + }, + { + "name": "TeleporterPlate", + "type": "block", + "sortid": 95, + "compiles": true, + "locked_code": false, + "registry_name": "teleporter_plate", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/block/teleporter_plate.json", + "src/main/java/ch/netquick/easysurvival/block/TeleporterPlateBlock.java", + "src/main/java/ch/netquick/easysurvival/block/entity/TeleporterPlateBlockEntity.java", + "src/main/resources/assets/easysurvival/models/item/teleporter_plate.json", + "src/main/resources/assets/easysurvival/blockstates/teleporter_plate.json" + ] + }, + "path": "~/Teleporter" + }, + { + "name": "TeleportSetGUI", + "type": "gui", + "sortid": 96, + "compiles": true, + "locked_code": false, + "registry_name": "teleport_set_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/world/inventory/TeleportSetGUIMenu.java", + "src/main/java/ch/netquick/easysurvival/client/gui/TeleportSetGUIScreen.java" + ] + }, + "path": "~/Teleporter" + }, + { + "name": "TeleporterGUI", + "type": "gui", + "sortid": 96, + "compiles": true, + "locked_code": false, + "registry_name": "teleporter_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/client/gui/TeleporterGUIScreen.java", + "src/main/java/ch/netquick/easysurvival/world/inventory/TeleporterGUIMenu.java" + ] + }, + "path": "~/Teleporter" + }, + { + "name": "TeleporterProc", + "type": "procedure", + "sortid": 97, + "compiles": true, + "locked_code": false, + "registry_name": "teleporter_proc", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/TeleporterProcProcedure.java" + ], + "dependencies": [ + { + "name": "entity", + "type": "entity" + }, + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Teleporter" + }, + { + "name": "EasyFridge", + "type": "block", + "sortid": 103, + "compiles": true, + "locked_code": false, + "registry_name": "easy_fridge", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/entity/EasyFridgeBlockEntity.java", + "src/main/resources/assets/easysurvival/models/item/easy_fridge.json", + "src/main/resources/assets/easysurvival/models/block/easy_fridge.json", + "src/main/resources/assets/easysurvival/blockstates/easy_fridge.json", + "src/main/java/ch/netquick/easysurvival/block/EasyFridgeBlock.java" + ] + }, + "path": "~/Easy_Fridge" + }, + { + "name": "QuarzBlock", + "type": "recipe", + "sortid": 99, + "compiles": true, + "locked_code": false, + "registry_name": "quarz_block", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/quarz_block.json" + ] + }, + "path": "~/Misc_Recipes" + }, + { + "name": "EasyTeleportRecipe", + "type": "recipe", + "sortid": 100, + "compiles": true, + "locked_code": false, + "registry_name": "easy_teleport_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_teleport_recipe.json" + ] + }, + "path": "~/Teleporter" + }, + { + "name": "Elytra", + "type": "recipe", + "sortid": 101, + "compiles": true, + "locked_code": false, + "registry_name": "elytra", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/elytra.json" + ] + }, + "path": "~/Misc_Recipes" + }, + { + "name": "PortableCraftingTable", + "type": "item", + "sortid": 102, + "compiles": true, + "locked_code": false, + "registry_name": "portable_crafting_table", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/item/inventory/PortableCraftingTableInventoryCapability.java", + "src/main/java/ch/netquick/easysurvival/item/PortableCraftingTableItem.java", + "src/main/resources/assets/easysurvival/models/item/portable_crafting_table.json" + ] + }, + "path": "~/Portable_CraftingTable" + }, + { + "name": "PlaceCraftingTable", + "type": "procedure", + "sortid": 109, + "compiles": true, + "locked_code": false, + "registry_name": "place_crafting_table", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/PlaceCraftingTableProcedure.java" + ], + "dependencies": [ + { + "name": "entity", + "type": "entity" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Portable_CraftingTable" + }, + { + "name": "SpawnerPillager", + "type": "block", + "sortid": 115, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_pillager", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/SpawnerPillagerBlock.java", + "src/main/resources/assets/easysurvival/models/item/spawner_pillager.json", + "src/main/resources/assets/easysurvival/models/block/spawner_pillager.json", + "src/main/resources/assets/easysurvival/blockstates/spawner_pillager.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerCreeper", + "type": "block", + "sortid": 113, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_creeper", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/block/spawner_creeper.json", + "src/main/resources/assets/easysurvival/blockstates/spawner_creeper.json", + "src/main/java/ch/netquick/easysurvival/block/SpawnerCreeperBlock.java", + "src/main/resources/assets/easysurvival/models/item/spawner_creeper.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerCreeperUpdateTick", + "type": "procedure", + "sortid": 114, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_creeper_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/SpawnerCreeperUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerWitherSkelettUpdateTick", + "type": "procedure", + "sortid": 111, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_wither_skelett_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/SpawnerWitherSkelettUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerPillagerUpdateTick", + "type": "procedure", + "sortid": 116, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_pillager_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/SpawnerPillagerUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerEvokerUpdateTick", + "type": "procedure", + "sortid": 118, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_evoker_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/SpawnerEvokerUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerEvoker", + "type": "block", + "sortid": 117, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_evoker", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/spawner_evoker.json", + "src/main/resources/assets/easysurvival/blockstates/spawner_evoker.json", + "src/main/resources/assets/easysurvival/models/block/spawner_evoker.json", + "src/main/java/ch/netquick/easysurvival/block/SpawnerEvokerBlock.java" + ] + }, + "path": "~/Spawner" + }, + { + "name": "Trident", + "type": "recipe", + "sortid": 119, + "compiles": true, + "locked_code": false, + "registry_name": "trident", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/trident.json" + ] + }, + "path": "~/Misc_Recipes" + }, + { + "name": "SpawnerWitherSkelett", + "type": "block", + "sortid": 112, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_wither_skelett", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/SpawnerWitherSkelettBlock.java", + "src/main/resources/assets/easysurvival/models/item/spawner_wither_skelett.json", + "src/main/resources/assets/easysurvival/blockstates/spawner_wither_skelett.json", + "src/main/resources/assets/easysurvival/models/block/spawner_wither_skelett.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "EasyIntake", + "type": "block", + "sortid": 125, + "compiles": true, + "locked_code": false, + "registry_name": "easy_intake", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/block/easy_intake.json", + "src/main/resources/assets/easysurvival/blockstates/easy_intake.json", + "src/main/java/ch/netquick/easysurvival/block/EasyIntakeBlock.java", + "src/main/resources/assets/easysurvival/models/item/easy_intake.json", + "src/main/java/ch/netquick/easysurvival/block/entity/EasyIntakeBlockEntity.java" + ] + }, + "path": "~/DedicatedStorage" + }, + { + "name": "EasySaw", + "type": "block", + "sortid": 113, + "compiles": true, + "locked_code": false, + "registry_name": "easy_saw", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/item/easy_saw.json", + "src/main/resources/assets/easysurvival/models/block/easy_saw.json", + "src/main/resources/assets/easysurvival/blockstates/easy_saw.json", + "src/main/java/ch/netquick/easysurvival/block/EasySawBlock.java", + "src/main/java/ch/netquick/easysurvival/block/entity/EasySawBlockEntity.java" + ] + }, + "path": "~/Easy_Saw" + }, + { + "name": "EasyFridgeGUI", + "type": "gui", + "sortid": 118, + "compiles": true, + "locked_code": false, + "registry_name": "easy_fridge_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/world/inventory/EasyFridgeGUIMenu.java", + "src/main/java/ch/netquick/easysurvival/client/gui/EasyFridgeGUIScreen.java" + ] + }, + "path": "~/Easy_Fridge" + }, + { + "name": "EasyAnvilItemTaken", + "type": "procedure", + "sortid": 121, + "compiles": true, + "locked_code": false, + "registry_name": "easy_anvil_item_taken", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilItemTakenProcedure.java" + ], + "dependencies": [ + { + "name": "entity", + "type": "entity" + } + ] + }, + "path": "~/Easy_Anvil" + }, + { + "name": "EasyFridgeUpdateTick", + "type": "procedure", + "sortid": 117, + "compiles": true, + "locked_code": false, + "registry_name": "easy_fridge_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyFridgeUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Easy_Fridge" + }, + { + "name": "EasySmelterGUI", + "type": "gui", + "sortid": 114, + "compiles": true, + "locked_code": false, + "registry_name": "easy_smelter_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/client/gui/EasySmelterGUIScreen.java", + "src/main/java/ch/netquick/easysurvival/world/inventory/EasySmelterGUIMenu.java" + ] + }, + "path": "~/Easy_Smelter" + }, + { + "name": "EasyIntakeGUI", + "type": "gui", + "sortid": 124, + "compiles": true, + "locked_code": false, + "registry_name": "easy_intake_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/world/inventory/EasyIntakeGUIMenu.java", + "src/main/java/ch/netquick/easysurvival/client/gui/EasyIntakeGUIScreen.java" + ] + }, + "path": "~/DedicatedStorage" + }, + { + "name": "EasySawRecipe", + "type": "recipe", + "sortid": 119, + "compiles": true, + "locked_code": false, + "registry_name": "easy_saw_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_saw_recipe.json" + ] + }, + "path": "~/Easy_Saw" + }, + { + "name": "EasyIntakeOnBlockRightClicked", + "type": "procedure", + "sortid": 126, + "compiles": true, + "locked_code": false, + "registry_name": "easy_intake_on_block_right_clicked", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyIntakeOnBlockRightClickedProcedure.java" + ], + "dependencies": [ + { + "name": "entity", + "type": "entity" + }, + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/DedicatedStorage" + }, + { + "name": "EasyForgeAuto", + "type": "block", + "sortid": 128, + "compiles": true, + "locked_code": false, + "registry_name": "easy_forge_auto", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/entity/EasyForgeAutoBlockEntity.java", + "src/main/resources/assets/easysurvival/models/block/easy_forge_auto.json", + "src/main/resources/assets/easysurvival/models/item/easy_forge_auto.json", + "src/main/java/ch/netquick/easysurvival/block/EasyForgeAutoBlock.java", + "src/main/resources/assets/easysurvival/blockstates/easy_forge_auto.json" + ] + }, + "path": "~/Easy_Forge" + }, + { + "name": "EasySmelterUpdateTick", + "type": "procedure", + "sortid": 115, + "compiles": true, + "locked_code": false, + "registry_name": "easy_smelter_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasySmelterUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Easy_Smelter" + }, + { + "name": "EasyAnvilUpdateTick", + "type": "procedure", + "sortid": 122, + "compiles": true, + "locked_code": false, + "registry_name": "easy_anvil_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Easy_Anvil" + }, + { + "name": "EasySurvival", + "type": "tab", + "sortid": 119, + "compiles": true, + "locked_code": false, + "registry_name": "easy_survival", + "metadata": { + "files": [] + } + }, + { + "name": "EasySmelter", + "type": "block", + "sortid": 112, + "compiles": true, + "locked_code": false, + "registry_name": "easy_smelter", + "metadata": { + "files": [ + "src/main/resources/assets/easysurvival/models/block/easy_smelter.json", + "src/main/resources/assets/easysurvival/blockstates/easy_smelter.json", + "src/main/java/ch/netquick/easysurvival/block/EasySmelterBlock.java", + "src/main/java/ch/netquick/easysurvival/block/entity/EasySmelterBlockEntity.java", + "src/main/resources/assets/easysurvival/models/item/easy_smelter.json" + ] + }, + "path": "~/Easy_Smelter" + }, + { + "name": "EasyAnvilItemReset", + "type": "procedure", + "sortid": 123, + "compiles": true, + "locked_code": false, + "registry_name": "easy_anvil_item_reset", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilItemResetProcedure.java" + ], + "dependencies": [ + { + "name": "entity", + "type": "entity" + } + ] + }, + "path": "~/Easy_Anvil" + }, + { + "name": "EasySawUpdateTick", + "type": "procedure", + "sortid": 117, + "compiles": true, + "locked_code": false, + "registry_name": "easy_saw_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasySawUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Easy_Saw" + }, + { + "name": "EasyFridgeRecipe", + "type": "recipe", + "sortid": 110, + "compiles": true, + "locked_code": false, + "registry_name": "easy_fridge_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_fridge_recipe.json" + ] + }, + "path": "~/Easy_Fridge" + }, + { + "name": "EasySawGUI", + "type": "gui", + "sortid": 116, + "compiles": true, + "locked_code": false, + "registry_name": "easy_saw_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/world/inventory/EasySawGUIMenu.java", + "src/main/java/ch/netquick/easysurvival/client/gui/EasySawGUIScreen.java" + ] + }, + "path": "~/Easy_Saw" + }, + { + "name": "EasySmelterRecipe", + "type": "recipe", + "sortid": 120, + "compiles": true, + "locked_code": false, + "registry_name": "easy_smelter_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_smelter_recipe.json" + ] + }, + "path": "~/Easy_Smelter" + }, + { + "name": "EasyForgeAutoRecipe", + "type": "recipe", + "sortid": 129, + "compiles": true, + "locked_code": false, + "registry_name": "easy_forge_auto_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_forge_auto_recipe.json" + ] + }, + "path": "~/Easy_Forge" + }, + { + "name": "EasyIntakeRecipe", + "type": "recipe", + "sortid": 131, + "compiles": true, + "locked_code": false, + "registry_name": "easy_intake_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_intake_recipe.json" + ] + }, + "path": "~/DedicatedStorage" + }, + { + "name": "SpawnerPillagerRecipe", + "type": "recipe", + "sortid": 135, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_pillager_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/spawner_pillager_recipe.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerCreeperRecipe", + "type": "recipe", + "sortid": 133, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_creeper_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/spawner_creeper_recipe.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "SpawnerEvokerRecipe", + "type": "recipe", + "sortid": 132, + "compiles": true, + "locked_code": false, + "registry_name": "spawner_evoker_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/spawner_evoker_recipe.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "WitherSkelettonSpawnerRecipe", + "type": "recipe", + "sortid": 131, + "compiles": true, + "locked_code": false, + "registry_name": "wither_skeletton_spawner_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/wither_skeletton_spawner_recipe.json" + ] + }, + "path": "~/Spawner" + }, + { + "name": "CobbleStoneRecipe", + "type": "recipe", + "sortid": 134, + "compiles": true, + "locked_code": false, + "registry_name": "cobble_stone_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/cobble_stone_recipe.json" + ] + }, + "path": "~/Misc_Recipes" + }, + { + "name": "EasyConverter", + "type": "block", + "sortid": 136, + "compiles": true, + "locked_code": false, + "registry_name": "easy_converter", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/block/entity/EasyConverterBlockEntity.java", + "src/main/resources/assets/easysurvival/models/block/easy_converter.json", + "src/main/resources/assets/easysurvival/models/item/easy_converter.json", + "src/main/java/ch/netquick/easysurvival/block/EasyConverterBlock.java", + "src/main/resources/assets/easysurvival/blockstates/easy_converter.json" + ] + }, + "path": "~/Easy_Converter" + }, + { + "name": "EasyConverterGUI", + "type": "gui", + "sortid": 137, + "compiles": true, + "locked_code": false, + "registry_name": "easy_converter_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/world/inventory/EasyConverterGUIMenu.java", + "src/main/java/ch/netquick/easysurvival/client/gui/EasyConverterGUIScreen.java" + ] + }, + "path": "~/Easy_Converter" + }, + { + "name": "EasyConverterUpdateTick", + "type": "procedure", + "sortid": 138, + "compiles": true, + "locked_code": false, + "registry_name": "easy_converter_update_tick", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/EasyConverterUpdateTickProcedure.java" + ], + "dependencies": [ + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Easy_Converter" + }, + { + "name": "EasyConverterRecipe", + "type": "recipe", + "sortid": 139, + "compiles": true, + "locked_code": false, + "registry_name": "easy_converter_recipe", + "metadata": { + "files": [ + "src/main/resources/data/easysurvival/recipes/easy_converter_recipe.json" + ] + }, + "path": "~/Easy_Converter" + }, + { + "name": "CraftingStickGUI", + "type": "gui", + "sortid": 140, + "compiles": true, + "locked_code": false, + "registry_name": "crafting_stick_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/client/gui/CraftingStickGUIScreen.java", + "src/main/java/ch/netquick/easysurvival/world/inventory/CraftingStickGUIMenu.java" + ] + }, + "path": "~/Portable_CraftingTable" + }, + { + "name": "OpenCraftingGUI", + "type": "procedure", + "sortid": 142, + "compiles": true, + "locked_code": true, + "registry_name": "open_crafting_gui", + "metadata": { + "files": [ + "src/main/java/ch/netquick/easysurvival/procedures/OpenCraftingGUIProcedure.java" + ], + "dependencies": [ + { + "name": "entity", + "type": "entity" + }, + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/Portable_CraftingTable" + } + ], + "variable_elements": [], + "sound_elements": [], + "tag_elements": { + "ITEMS:forge:tag_leggings": [ + "CUSTOM:NetherrackArmor.legs", + "Items.LEATHER_LEGGINGS", + "Items.CHAINMAIL_LEGGINGS", + "Items.IRON_LEGGINGS", + "Items.GOLDEN_LEGGINGS", + "Items.DIAMOND_LEGGINGS", + "Items.NETHERITE_LEGGINGS" + ], + "ITEMS:forge:tag_armor": [ + "CUSTOM:NetherrackArmor.helmet", + "CUSTOM:NetherrackArmor.body", + "CUSTOM:NetherrackArmor.legs", + "CUSTOM:NetherrackArmor.boots", + "Items.LEATHER_HELMET", + "Items.LEATHER_CHESTPLATE", + "Items.LEATHER_LEGGINGS", + "Items.LEATHER_BOOTS", + "Items.CHAINMAIL_HELMET", + "Items.CHAINMAIL_CHESTPLATE", + "Items.CHAINMAIL_LEGGINGS", + "Items.CHAINMAIL_BOOTS", + "Items.TURTLE_HELMET", + "Items.IRON_HELMET", + "Items.IRON_CHESTPLATE", + "Items.IRON_LEGGINGS", + "Items.IRON_BOOTS", + "Items.GOLDEN_HELMET", + "Items.GOLDEN_CHESTPLATE", + "Items.GOLDEN_LEGGINGS", + "Items.GOLDEN_BOOTS", + "Items.DIAMOND_HELMET", + "Items.DIAMOND_CHESTPLATE", + "Items.DIAMOND_LEGGINGS", + "Items.DIAMOND_BOOTS", + "Items.NETHERITE_HELMET", + "Items.NETHERITE_CHESTPLATE", + "Items.NETHERITE_LEGGINGS", + "Items.NETHERITE_BOOTS" + ], + "ITEMS:forge:tag_log": [ + "Blocks.LOG#0", + "Blocks.LOG#1", + "Blocks.LOG#2", + "Blocks.LOG#3", + "Blocks.LOG2#0", + "Blocks.LOG2#1", + "Blocks.WARPED_STEM", + "Blocks.CRIMSON_STEM", + "Blocks.STRIPPED_OAK_LOG", + "Blocks.STRIPPED_SPRUCE_LOG", + "Blocks.STRIPPED_BIRCH_LOG", + "Blocks.STRIPPED_JUNGLE_LOG", + "Blocks.STRIPPED_ACACIA_LOG", + "Blocks.STRIPPED_DARK_OAK_LOG", + "Blocks.STRIPPED_WARPED_STEM", + "Blocks.STRIPPED_CRIMSON_STEM", + "Blocks.DARK_OAK_WOOD", + "Blocks.MANGROVE_LOG", + "Blocks.CHERRY_LOG", + "Blocks.STRIPPED_CHERRY_LOG", + "Blocks.STRIPPED_MANGROVE_LOG" + ], + "ITEMS:forge:tag_helmet": [ + "Items.IRON_HELMET", + "Items.CHAINMAIL_HELMET", + "Items.LEATHER_HELMET", + "Items.TURTLE_HELMET", + "Items.GOLDEN_HELMET", + "Items.DIAMOND_HELMET", + "Items.NETHERITE_HELMET" + ], + "ITEMS:minecraft:tagseeds": [ + "Items.WHEAT_SEEDS", + "Items.PUMPKIN_SEEDS", + "Items.TORCHFLOWER_SEEDS", + "Items.MELON_SEEDS", + "Items.BEETROOT_SEEDS", + "Items.CARROT", + "Items.POTATO", + "Items.CHORUS_FRUIT" + ], + "ITEMS:forge:tag_chest": [ + "CUSTOM:NetherrackArmor.body", + "Items.LEATHER_CHESTPLATE", + "Items.CHAINMAIL_CHESTPLATE", + "Items.IRON_CHESTPLATE", + "Items.GOLDEN_CHESTPLATE", + "Items.DIAMOND_CHESTPLATE", + "Items.NETHERITE_CHESTPLATE" + ], + "ITEMS:forge:tag_intake": [ + "Blocks.STONE#0", + "Blocks.STONE#1", + "Blocks.STONE#3", + "Blocks.STONE#5", + "Blocks.SMOOTH_STONE", + "Blocks.GRASS", + "Blocks.DIRT#0", + "Blocks.COBBLESTONE", + "Blocks.MOSSY_COBBLESTONE", + "Blocks.PLANKS#0", + "Blocks.PLANKS#1", + "Blocks.PLANKS#2", + "Blocks.PLANKS#3", + "Blocks.PLANKS#4", + "Blocks.PLANKS#5", + "Blocks.CRIMSON_PLANKS", + "Blocks.WARPED_PLANKS", + "Blocks.SAPLING#0", + "Blocks.SAPLING#1", + "Blocks.SAPLING#2", + "Blocks.SAPLING#3", + "Blocks.SAPLING#4", + "Blocks.SAPLING#5", + "Blocks.REEDS", + "Blocks.SAND#0", + "Blocks.SAND#1", + "Blocks.GRAVEL", + "Blocks.MAGMA", + "Blocks.OBSIDIAN", + "Blocks.CRYING_OBSIDIAN", + "Blocks.COAL_ORE", + "Blocks.IRON_ORE", + "Blocks.REDSTONE_ORE", + "Blocks.LIT_REDSTONE_ORE", + "Blocks.GOLD_ORE", + "Blocks.LAPIS_ORE", + "Blocks.DIAMOND_ORE", + "Blocks.EMERALD_ORE", + "Blocks.QUARTZ_ORE", + "Blocks.NETHER_GOLD_ORE", + "Blocks.GILDED_BLACKSTONE", + "Blocks.COAL_BLOCK", + "Blocks.IRON_BLOCK", + "Blocks.REDSTONE_BLOCK", + "Blocks.GOLD_BLOCK", + "Blocks.LAPIS_BLOCK", + "Blocks.DIAMOND_BLOCK", + "Blocks.EMERALD_BLOCK", + "Blocks.NETHERITE_BLOCK", + "Blocks.QUARTZ_BLOCK#0", + "Blocks.QUARTZ_BLOCK#1", + "Blocks.QUARTZ_BLOCK#2", + "Blocks.QUARTZ_BLOCK#3", + "Blocks.QUARTZ_BRICKS", + "Blocks.SLIME_BLOCK", + "Blocks.LOG", + "Blocks.LOG2", + "Blocks.WARPED_STEM", + "Blocks.CRIMSON_STEM", + "Blocks.STRIPPED_OAK_LOG", + "Blocks.STRIPPED_SPRUCE_LOG", + "Blocks.STRIPPED_BIRCH_LOG", + "Blocks.STRIPPED_JUNGLE_LOG", + "Blocks.STRIPPED_ACACIA_LOG", + "Blocks.STRIPPED_DARK_OAK_LOG", + "Blocks.STRIPPED_WARPED_STEM", + "Blocks.STRIPPED_CRIMSON_STEM", + "Blocks.OAK_WOOD", + "Blocks.SPRUCE_WOOD", + "Blocks.BIRCH_WOOD", + "Blocks.JUNGLE_WOOD", + "Blocks.JUNGLE_WOOD", + "Blocks.ACACIA_WOOD", + "Blocks.DARK_OAK_WOOD", + "Blocks.WARPED_HYPHAE", + "Blocks.CRIMSON_HYPHAE", + "Blocks.STRIPPED_OAK_WOOD", + "Blocks.STRIPPED_SPRUCE_WOOD", + "Blocks.STRIPPED_BIRCH_WOOD", + "Blocks.STRIPPED_JUNGLE_WOOD", + "Blocks.STRIPPED_ACACIA_WOOD", + "Blocks.STRIPPED_DARK_OAK_WOOD", + "Blocks.STRIPPED_WARPED_HYPHAE", + "Blocks.STRIPPED_CRIMSON_HYPHAE", + "Blocks.LEAVES", + "Blocks.SPONGE#0", + "Blocks.SANDSTONE#0", + "Blocks.SANDSTONE#1", + "Blocks.SANDSTONE#2", + "Blocks.SMOOTH_SANDSTONE", + "Blocks.RED_SANDSTONE#0", + "Blocks.RED_SANDSTONE#1", + "Blocks.RED_SANDSTONE#2", + "Blocks.SMOOTH_RED_SANDSTONE", + "Blocks.NOTEBLOCK", + "Blocks.RAIL", + "Blocks.GOLDEN_RAIL", + "Blocks.DETECTOR_RAIL", + "Blocks.ACTIVATOR_RAIL", + "Blocks.NETHER_BRICK", + "Blocks.CHISELED_NETHER_BRICKS", + "Blocks.CRACKED_NETHER_BRICKS", + "Blocks.RED_NETHER_BRICK", + "Blocks.NETHERRACK", + "Blocks.WARPED_NYLIUM", + "Blocks.CRIMSON_NYLIUM", + "Blocks.SOUL_SAND", + "Blocks.SOUL_SOIL", + "Blocks.GLOWSTONE", + "Blocks.SHROOMLIGHT", + "Blocks.BONE_BLOCK", + "Blocks.NETHER_WART_BLOCK", + "Blocks.STONEBRICK#0", + "Blocks.STONEBRICK#1", + "Blocks.STONEBRICK#2", + "Blocks.STONEBRICK#3", + "Blocks.END_STONE", + "Blocks.END_BRICKS", + "Blocks.PURPUR_BLOCK", + "Blocks.PURPUR_PILLAR", + "Blocks.PURPUR_DOUBLE_SLAB", + "Blocks.WOOL#0", + "Blocks.WOOL#1", + "Blocks.WOOL#2", + "Blocks.WOOL#3", + "Blocks.WOOL#4", + "Blocks.WOOL#5", + "Blocks.WOOL#6", + "Blocks.WOOL#7", + "Blocks.WOOL#8", + "Blocks.WOOL#9", + "Blocks.WOOL#10", + "Blocks.WOOL#11", + "Blocks.WOOL#12", + "Blocks.WOOL#13", + "Blocks.WOOL#14", + "Blocks.WOOL#15", + "Blocks.HARDENED_CLAY", + "Blocks.STAINED_HARDENED_CLAY#0", + "Blocks.STAINED_HARDENED_CLAY#1", + "Blocks.STAINED_HARDENED_CLAY#2", + "Blocks.STAINED_HARDENED_CLAY#3", + "Blocks.STAINED_HARDENED_CLAY#4", + "Blocks.STAINED_HARDENED_CLAY#5", + "Blocks.STAINED_HARDENED_CLAY#6", + "Blocks.STAINED_HARDENED_CLAY#7", + "Blocks.STAINED_HARDENED_CLAY#8", + "Blocks.STAINED_HARDENED_CLAY#9", + "Blocks.STAINED_HARDENED_CLAY#10", + "Blocks.STAINED_HARDENED_CLAY#11", + "Blocks.STAINED_HARDENED_CLAY#12", + "Blocks.STAINED_HARDENED_CLAY#13", + "Blocks.STAINED_HARDENED_CLAY#14", + "Blocks.STAINED_HARDENED_CLAY#15", + "Blocks.GLASS", + "Items.DIAMOND", + "Items.DYE#4", + "Items.DYE#15", + "Items.COAL#0", + "Items.IRON_INGOT", + "Items.GOLD_INGOT", + "Items.GOLD_NUGGET", + "Items.NETHERITE_INGOT", + "Items.NETHERITE_SCRAP", + "Items.EMERALD", + "Items.QUARTZ", + "Items.WHEAT", + "Items.FLINT", + "Items.APPLE", + "Items.FEATHER", + "Items.STRING", + "Items.GUNPOWDER", + "Items.BEEF", + "Items.PORKCHOP", + "Items.CHICKEN", + "Items.BONE", + "Items.LEATHER", + "Blocks.LOG", + "Blocks.LOG#0", + "Blocks.LOG#1", + "Blocks.LOG#2", + "Blocks.LOG#3", + "Blocks.LOG2#0", + "Blocks.LOG2#1" + ], + "BLOCKS:minecraft:mineable/pickaxe": [ + "~CUSTOM:EasyAnvil", + "~CUSTOM:TreeCrop", + "~CUSTOM:Crop" + ], + "ITEMS:forge:tag_stick": [ + "CUSTOM:NetherStick", + "Items.STICK" + ], + "ITEMS:forge:planks": [ + "Blocks.PLANKS#0", + "Blocks.PLANKS#1", + "Blocks.PLANKS#2", + "Blocks.PLANKS#3", + "Blocks.PLANKS#4", + "Blocks.PLANKS#5", + "Blocks.CRIMSON_PLANKS", + "Blocks.WARPED_PLANKS" + ], + "ITEMS:forge:tag_boots": [ + "CUSTOM:NetherrackArmor.boots", + "CUSTOM:NetherrackArmor.boots", + "Items.LEATHER_BOOTS", + "Items.CHAINMAIL_BOOTS", + "Items.IRON_BOOTS", + "Items.GOLDEN_BOOTS", + "Items.DIAMOND_BOOTS", + "Items.NETHERITE_BOOTS" + ], + "ITEMS:minecraft:tagstone": [ + "Blocks.STONE#0", + "Blocks.STONE#1", + "Blocks.STONE#3", + "Blocks.STONE#4", + "Blocks.STONE#5", + "Blocks.STONE#6", + "Blocks.SMOOTH_STONE", + "Blocks.DEEPSLATE", + "Blocks.COBBLED_DEEPSLATE", + "Blocks.POLISHED_DEEPSLATE", + "Blocks.DEEPSLATE_TILES", + "Blocks.DEEPSLATE_BRICKS", + "Blocks.CALCITE", + "Blocks.DRIPSTONE_BLOCK", + "Blocks.COBBLESTONE", + "Blocks.MOSSY_COBBLESTONE", + "Blocks.DIRT#2", + "Blocks.CRACKED_DEEPSLATE_TILES" + ], + "ITEMS:minecraft:tagsaplings": [ + "Blocks.SAPLING#0", + "Blocks.SAPLING#1", + "Blocks.SAPLING#2", + "Blocks.SAPLING#3", + "Blocks.SAPLING#4", + "Blocks.SAPLING#5", + "Blocks.CHERRY_SAPLING", + "Blocks.BAMBOO_SAPLING", + "Blocks.REEDS", + "Items.REEDS", + "Blocks.CACTUS", + "Blocks.MANGROVE_PROPAGULE" + ] + }, + "language_map": { + "en_us": { + "gui.easysurvival.crop_gui.label_seed": "Seed", + "gui.easysurvival.teleport_set_gui.TeleportName": "Name", + "gui.easysurvival.teleport_set_gui.button_set": "Set", + "gui.easysurvival.easy_smelter_gui.label_easysmelter": "EasySmelter", + "block.easysurvival.spawner_creeper": "Spawner Creeper", + "itemGroup.tabeasy_survival": "Easy Survival", + "block.easysurvival.spawner_pillager": "Spawner Pillager", + "item.easysurvival.portable_crafting_table": "Portable Crafting Table", + "gui.easysurvival.easy_enchantment_table_gui.label_easyenchant": "EasyEnchant", + "item.easysurvival.quarz_axe": "Quarz Axe", + "gui.easysurvival.teleporter_gui.button_teleport": "Teleport", + "item.easysurvival.basalt_sword": "Basalt Sword", + "block.easysurvival.crop": "Crop", + "gui.easysurvival.easy_saw_gui.label_template": "Template", + "gui.easysurvival.easy_fridge_gui.label_easyfridge": "EasyFridge", + "item.easysurvival.netherrack_armor_leggings": "Netherrack Leggings", + "gui.easysurvival.teleporter_gui.label_teleport_1": "Teleport 1", + "block.easysurvival.easy_intake": "Easy Intake", + "item.easysurvival.netherrack_armor_chestplate": "Netherrack Chestplate", + "block.easysurvival.spawner_ghast": "Spawner Ghast", + "gui.easysurvival.crop_gui.label_growcrop": "GrowCrop", + "item.easysurvival.netherrack_sword": "Netherrack Sword", + "gui.easysurvival.teleporter_gui.label_teleport_2": "Teleport 2", + "block.easysurvival.spawner_evoker": "Spawner Evoker", + "block.easysurvival.spawner_blaze": "Spawner Blaze", + "gui.easysurvival.easy_saw_gui.label_easysaw": "EasySaw", + "block.easysurvival.easy_saw": "Easy Saw", + "gui.easysurvival.teleport_set_gui.label_set_teleport": "Set Teleport", + "item.easysurvival.netherrack_axe": "Netherrack Axe", + "block.easysurvival.easy_fridge": "Easy Fridge", + "block.easysurvival.spawner_slime": "Spawner Slime", + "block.easysurvival.easy_anvil": "Easy Anvil", + "gui.easysurvival.tree_crop_gui.label_treecrop": "TreeCrop", + "item.easysurvival.basalt_axe": "Basalt Axe", + "item_group.easysurvival.easy_survival": "Easy Survival", + "gamerule.spawnersActive": "Spawners active", + "item.easysurvival.quarz_sword": "Quarz Sword", + "block.easysurvival.tree_crop": "Tree Crop", + "gui.easysurvival.easy_forge_gui.label_empty": "\u003e\u003e", + "block.easysurvival.teleporter_plate": "Teleporter Plate", + "item.easysurvival.netherrack_pickaxe": "Netherrack Pickaxe", + "gui.easysurvival.teleporter_gui.label_easyteleport": "EasyTeleport", + "item.easysurvival.basalt_pickaxe": "Basalt Pickaxe", + "block.easysurvival.easy_converter": "Easy Converter", + "item.easysurvival.netherrack_armor_helmet": "Netherrack Helmet", + "gui.easysurvival.easy_enchantment_table_gui.label_item": "Item", + "block.easysurvival.easy_smelter": "Easy Smelter", + "item.easysurvival.netherrack_armor_boots": "Netherrack Boots", + "block.easysurvival.spawner_wither_skelett": "Spawner Wither Skeleton", + "gui.easysurvival.easy_enchantment_table_gui.label_lapis_lazuli": "Lapis Lazuli", + "block.easysurvival.easy_forge": "Easy Forge", + "gamerule.spawnersActive.description": "Sets if custom spawners are active or inactive", + "block.easysurvival.easy_forge_auto": "Easy Forge", + "item.easysurvival.quarz_pickaxe": "Quarz Pickaxe", + "item.easysurvival.netherrack_shovel": "Netherrack Shovel", + "item.easysurvival.quarz_hoe": "Quarz Hoe", + "item.easysurvival.netherrack_hoe": "Netherrack Hoe", + "gui.easysurvival.teleporter_gui.button_teleport1": "Teleport", + "gui.easysurvival.easy_converter_gui.label_easyconverter": "EasyConverter", + "gui.easysurvival.easy_anvil_gui.label_ingot": "Ingot", + "item.easysurvival.basalt_shovel": "Basalt Shovel", + "gui.easysurvival.easy_anvil_gui.label_easyanvil": "EasyAnvil", + "gui.easysurvival.easy_intake_gui.label_easyintake": "EasyIntake", + "item.easysurvival.basalt_hoe": "Basalt Hoe", + "item.easysurvival.nether_stick": "Nether Stick", + "block.easysurvival.easy_enchantment_table": "Easy Enchantment Table", + "gui.easysurvival.easy_forge_gui.label_easyforge": "EasyForge", + "item.easysurvival.quarz_shovel": "Quarz Shovel" + } + }, + "foldersRoot": { + "name": "~", + "children": [ + { + "name": "Crop_Plants", + "children": [] + }, + { + "name": "Crop_Trees", + "children": [] + }, + { + "name": "Netherrack_Tools", + "children": [] + }, + { + "name": "Basalt_Tools", + "children": [] + }, + { + "name": "Quarz_Tools", + "children": [] + }, + { + "name": "Misc_Recipes", + "children": [] + }, + { + "name": "Spawner", + "children": [] + }, + { + "name": "EasyEnchantmentTable", + "children": [] + }, + { + "name": "Easy_Anvil", + "children": [] + }, + { + "name": "Easy_Forge", + "children": [] + }, + { + "name": "DedicatedStorage", + "children": [] + }, + { + "name": "Teleporter", + "children": [] + }, + { + "name": "Easy_Fridge", + "children": [] + }, + { + "name": "Easy_Saw", + "children": [] + }, + { + "name": "Easy_Smelter", + "children": [] + }, + { + "name": "Easy_Converter", + "children": [] + }, + { + "name": "Portable_CraftingTable", + "children": [] + } + ] + }, + "workspaceSettings": { + "modid": "easysurvival", + "modName": "EasySurvival", + "version": "1.0.0", + "author": "netqu, MCreator", + "websiteURL": "https://mcreator.net", + "license": "Academic Free License v3.0", + "serverSideOnly": false, + "requiredMods": [], + "dependencies": [], + "dependants": [], + "mcreatorDependencies": [], + "currentGenerator": "forge-1.20.1", + "modElementsPackage": "ch.netquick.easysurvival" + }, + "mcreatorVersion": 202400110712 +} \ No newline at end of file diff --git a/elements/BasaltAxe.mod.json b/elements/BasaltAxe.mod.json new file mode 100644 index 0000000..0e8529c --- /dev/null +++ b/elements/BasaltAxe.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Axe", + "renderType": 0, + "blockingRenderType": 0, + "texture": "basalt_axe", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Basalt Axe", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 2, + "efficiency": 5.0, + "attackSpeed": 1.0, + "enchantability": 11, + "damageVsEntity": 2.0, + "usageCount": 183, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.BASALT" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/BasaltAxeRecipe.mod.json b/elements/BasaltAxeRecipe.mod.json new file mode 100644 index 0000000..823cbb4 --- /dev/null +++ b/elements/BasaltAxeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.BASALT" + }, + { + "value": "Blocks.BASALT" + }, + { + "value": "" + }, + { + "value": "Blocks.BASALT" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:BasaltAxe" + }, + "name": "basalt_axe_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/BasaltHoe.mod.json b/elements/BasaltHoe.mod.json new file mode 100644 index 0000000..833db2c --- /dev/null +++ b/elements/BasaltHoe.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Hoe", + "renderType": 0, + "blockingRenderType": 0, + "texture": "basalt_hoe", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Basalt Hoe", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 2, + "efficiency": 5.0, + "attackSpeed": 1.0, + "enchantability": 11, + "damageVsEntity": 2.0, + "usageCount": 183, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.BASALT" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/BasaltHoeRecipe.mod.json b/elements/BasaltHoeRecipe.mod.json new file mode 100644 index 0000000..22396b0 --- /dev/null +++ b/elements/BasaltHoeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.BASALT" + }, + { + "value": "Blocks.BASALT" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:BasaltHoe" + }, + "name": "basalt_hoe_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/BasaltPickaxe.mod.json b/elements/BasaltPickaxe.mod.json new file mode 100644 index 0000000..d6f391d --- /dev/null +++ b/elements/BasaltPickaxe.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Pickaxe", + "renderType": 0, + "blockingRenderType": 0, + "texture": "basalt_pickaxe", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Basalt Pickaxe", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 2, + "efficiency": 5.0, + "attackSpeed": 1.0, + "enchantability": 11, + "damageVsEntity": 2.0, + "usageCount": 183, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.BASALT" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/BasaltPickaxeRecipe.mod.json b/elements/BasaltPickaxeRecipe.mod.json new file mode 100644 index 0000000..0b5ca0f --- /dev/null +++ b/elements/BasaltPickaxeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.BASALT" + }, + { + "value": "Blocks.BASALT" + }, + { + "value": "Blocks.BASALT" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:BasaltPickaxe" + }, + "name": "basalt_pickaxe_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/BasaltShovel.mod.json b/elements/BasaltShovel.mod.json new file mode 100644 index 0000000..b926fea --- /dev/null +++ b/elements/BasaltShovel.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Spade", + "renderType": 0, + "blockingRenderType": 0, + "texture": "basalt_shovel", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Basalt Shovel", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 2, + "efficiency": 5.0, + "attackSpeed": 1.0, + "enchantability": 11, + "damageVsEntity": 2.0, + "usageCount": 183, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.BASALT" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/BasaltShovelRecipe.mod.json b/elements/BasaltShovelRecipe.mod.json new file mode 100644 index 0000000..d03d229 --- /dev/null +++ b/elements/BasaltShovelRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Blocks.BASALT" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:BasaltShovel" + }, + "name": "basalt_shovel_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/BasaltSword.mod.json b/elements/BasaltSword.mod.json new file mode 100644 index 0000000..6419feb --- /dev/null +++ b/elements/BasaltSword.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Sword", + "renderType": 0, + "blockingRenderType": 0, + "texture": "basalt_sword", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Basalt Sword", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "COMBAT" + }, + "harvestLevel": 2, + "efficiency": 5.0, + "attackSpeed": 1.0, + "enchantability": 11, + "damageVsEntity": 2.0, + "usageCount": 183, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.BASALT" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/BasaltSwordRecipe.mod.json b/elements/BasaltSwordRecipe.mod.json new file mode 100644 index 0000000..cc42f2a --- /dev/null +++ b/elements/BasaltSwordRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Blocks.BASALT" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.BASALT" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:BasaltSword" + }, + "name": "basalt_sword_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/CobbleStoneRecipe.mod.json b/elements/CobbleStoneRecipe.mod.json new file mode 100644 index 0000000..c9b170e --- /dev/null +++ b/elements/CobbleStoneRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "Blocks.COBBLESTONE" + }, + "name": "cobble_stone_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/CraftingStickGUI.mod.json b/elements/CraftingStickGUI.mod.json new file mode 100644 index 0000000..cbe01ce --- /dev/null +++ b/elements/CraftingStickGUI.mod.json @@ -0,0 +1,184 @@ +{ + "_fv": 60, + "_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, + "x": 133, + "y": 96 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 151, + "y": 96 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 2, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 169, + "y": 96 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 3, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 133, + "y": 78 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 4, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 151, + "y": 78 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 5, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 169, + "y": 78 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 6, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 133, + "y": 60 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 7, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 151, + "y": 60 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 8, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 169, + "y": 60 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/Crop.mod.json b/elements/Crop.mod.json new file mode 100644 index 0000000..bbfe7a5 --- /dev/null +++ b/elements/Crop.mod.json @@ -0,0 +1,157 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "texture", + "textureTop": "simple-wood-texture_1048-4655", + "textureLeft": "simple-wood-texture_1048-4655", + "textureFront": "simple-wood-texture_1048-4655", + "textureRight": "simple-wood-texture_1048-4655", + "textureBack": "simple-wood-texture_1048-4655", + "renderType": 2, + "customModelName": "seedcrop: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Crop", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "pickaxe", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": true, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 50, + "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": "BLOCK", + "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": "CropGUI", + "openGUIOnRightClick": true, + "inventorySize": 8, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "inventoryInSlotIDs": [ + 0 + ], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "CropUpdateTick" + }, + "generateFeature": false, + "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/CropGUI.mod.json b/elements/CropGUI.mod.json new file mode 100644 index 0000000..194ef33 --- /dev/null +++ b/elements/CropGUI.mod.json @@ -0,0 +1,154 @@ +{ + "_fv": 60, + "_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": false, + "x": 133, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 169, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 2, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 187, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 3, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 205, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 4, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 223, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 5, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 241, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 6, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 259, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 7, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 277, + "y": 84 + } + }, + { + "type": "label", + "data": { + "name": "label_growcrop", + "text": { + "fixedValue": "GrowCrop" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 133, + "y": 45 + } + }, + { + "type": "label", + "data": { + "name": "label_seed", + "text": { + "fixedValue": "Seed" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 133, + "y": 74 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/CropRecipe.mod.json b/elements/CropRecipe.mod.json new file mode 100644 index 0000000..0931bcb --- /dev/null +++ b/elements/CropRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.GLASS" + }, + { + "value": "Blocks.GLASS" + }, + { + "value": "Blocks.GLASS" + }, + { + "value": "Blocks.DIRT" + }, + { + "value": "TAG:minecraft:tagseeds" + }, + { + "value": "Blocks.DIRT" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Crop" + }, + "name": "crop_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/CropUpdateTick.mod.json b/elements/CropUpdateTick.mod.json new file mode 100644 index 0000000..eed27c3 --- /dev/null +++ b/elements/CropUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "previousRecipeSlotnono_ext_trigger0Items.WHEAT_SEEDSlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Items.WHEATlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Items.PUMPKIN_SEEDSlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.PUMPKINlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Items.MELON_SEEDSlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Items.MELONlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Items.BEETROOT_SEEDSlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Items.BEETROOTlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Items.CARROTlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Items.CARROTlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Items.POTATOlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Items.POTATOlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Items.CHORUS_FRUITlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Items.CHORUS_FRUIT_POPPEDlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno1" + } +} \ No newline at end of file diff --git a/elements/DedicatedStorageGUI.mod.json b/elements/DedicatedStorageGUI.mod.json new file mode 100644 index 0000000..09dcbec --- /dev/null +++ b/elements/DedicatedStorageGUI.mod.json @@ -0,0 +1,508 @@ +{ + "_fv": 60, + "_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, + "x": 132, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 150, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 2, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 168, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 3, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 186, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 4, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 204, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 5, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 222, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 6, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 240, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 7, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 8, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 276, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 9, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 132, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 10, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 150, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 11, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 168, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 12, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 186, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 13, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 204, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 14, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 222, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 15, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 240, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 16, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 17, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 276, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 18, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 132, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 19, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 150, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 20, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 168, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 21, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 186, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 22, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 204, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 23, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 222, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 24, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 240, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 25, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 26, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 276, + "y": 93 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/EasyAnvil.mod.json b/elements/EasyAnvil.mod.json new file mode 100644 index 0000000..f2aa495 --- /dev/null +++ b/elements/EasyAnvil.mod.json @@ -0,0 +1,149 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "anviltexture", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "anvil:default", + "rotationMode": 1, + "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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Easy Anvil", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "pickaxe", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": true, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ANVIL" + }, + "tickRate": 10, + "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": "ANVIL" + }, + "breakSound": { + "value": "" + }, + "fallSound": { + "value": "" + }, + "hitSound": { + "value": "" + }, + "placeSound": { + "value": "" + }, + "stepSound": { + "value": "" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": true, + "guiBoundTo": "EasyAnvilGUI", + "openGUIOnRightClick": true, + "inventorySize": 3, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [ + 2 + ], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "EasyAnvilUpdateTick" + }, + "generateFeature": false, + "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/EasyAnvilGUI.mod.json b/elements/EasyAnvilGUI.mod.json new file mode 100644 index 0000000..fe4b31e --- /dev/null +++ b/elements/EasyAnvilGUI.mod.json @@ -0,0 +1,118 @@ +{ + "_fv": 60, + "_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, + "onTakenFromSlot": { + "name": "EasyAnvilItemReset" + }, + "onStackTransfer": { + "name": "EasyAnvilItemReset" + }, + "x": 132, + "y": 84 + } + }, + { + "type": "label", + "data": { + "name": "label_easyanvil", + "text": { + "fixedValue": "EasyAnvil" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 48 + } + }, + { + "type": "outputslot", + "data": { + "id": 2, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyAnvilItemTaken" + }, + "onStackTransfer": { + "name": "EasyAnvilItemTaken" + }, + "x": 276, + "y": 84 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "Items.IRON_INGOT" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyAnvilItemReset" + }, + "onStackTransfer": { + "name": "EasyAnvilItemReset" + }, + "x": 150, + "y": 84 + } + }, + { + "type": "label", + "data": { + "name": "label_ingot", + "text": { + "fixedValue": "Ingot" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 169, + "y": 87 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/EasyAnvilItemReset.mod.json b/elements/EasyAnvilItemReset.mod.json new file mode 100644 index 0000000..c32e983 --- /dev/null +++ b/elements/EasyAnvilItemReset.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_trigger12" + } +} \ No newline at end of file diff --git a/elements/EasyAnvilItemTaken.mod.json b/elements/EasyAnvilItemTaken.mod.json new file mode 100644 index 0000000..30189c1 --- /dev/null +++ b/elements/EasyAnvilItemTaken.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_trigger1011" + } +} \ No newline at end of file diff --git a/elements/EasyAnvilRecipe.mod.json b/elements/EasyAnvilRecipe.mod.json new file mode 100644 index 0000000..670931f --- /dev/null +++ b/elements/EasyAnvilRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.IRON_BLOCK" + }, + { + "value": "Blocks.IRON_BLOCK" + }, + { + "value": "Blocks.IRON_BLOCK" + }, + { + "value": "" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:EasyAnvil" + }, + "name": "easy_anvil_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EasyAnvilUpdateTick.mod.json b/elements/EasyAnvilUpdateTick.mod.json new file mode 100644 index 0000000..8c2ee4c --- /dev/null +++ b/elements/EasyAnvilUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "tempitemno_ext_triggerlocal:tempitem0GTE11GTlocal:tempitem0local:tempitem01local:tempitem2" + } +} \ No newline at end of file diff --git a/elements/EasyConverter.mod.json b/elements/EasyConverter.mod.json new file mode 100644 index 0000000..f4bfeaf --- /dev/null +++ b/elements/EasyConverter.mod.json @@ -0,0 +1,151 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "bowl", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "crafter: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Easy Converter", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 10, + "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": "EasyConverterGUI", + "openGUIOnRightClick": true, + "inventorySize": 2, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [ + 1 + ], + "inventoryInSlotIDs": [ + 0 + ], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "EasyConverterUpdateTick" + }, + "generateFeature": false, + "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/EasyConverterGUI.mod.json b/elements/EasyConverterGUI.mod.json new file mode 100644 index 0000000..f053042 --- /dev/null +++ b/elements/EasyConverterGUI.mod.json @@ -0,0 +1,67 @@ +{ + "_fv": 60, + "_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, + "x": 150, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 204, + "y": 84 + } + }, + { + "type": "label", + "data": { + "name": "label_easyconverter", + "text": { + "fixedValue": "EasyConverter" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 48 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/EasyConverterRecipe.mod.json b/elements/EasyConverterRecipe.mod.json new file mode 100644 index 0000000..5ee2235 --- /dev/null +++ b/elements/EasyConverterRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.IRON_INGOT" + }, + { + "value": "Items.IRON_INGOT" + }, + { + "value": "Items.IRON_INGOT" + }, + { + "value": "TAG:minecraft:tagstone" + }, + { + "value": "TAG:minecraft:tagstone" + }, + { + "value": "TAG:minecraft:tagstone" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:EasyConverter" + }, + "name": "easy_converter_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EasyConverterUpdateTick.mod.json b/elements/EasyConverterUpdateTick.mod.json new file mode 100644 index 0000000..c3b6e3d --- /dev/null +++ b/elements/EasyConverterUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "InputStackOutputStackStackSizeAmountInAmountno_ext_triggerlocal:InputStack0ORlocal:InputStackBlocks.LOG#0local:InputStackBlocks.STRIPPED_OAK_WOODlocal:StackSize64local:Amount4local:InAmount1local:OutputStackBlocks.PLANKS#0ORlocal:InputStackBlocks.LOG#1local:InputStackBlocks.STRIPPED_SPRUCE_WOODlocal:StackSize64local:InAmount1local:Amount4local:OutputStackBlocks.PLANKS#1ORlocal:InputStackBlocks.LOG#2local:InputStackBlocks.STRIPPED_BIRCH_LOGlocal:StackSize64local:InAmount1local:Amount4local:OutputStackBlocks.PLANKS#2ORlocal:InputStackBlocks.LOG#3local:InputStackBlocks.STRIPPED_JUNGLE_LOGlocal:StackSize64local:InAmount1local:Amount4local:OutputStackBlocks.PLANKS#3ORlocal:InputStackBlocks.LOG2#0local:InputStackBlocks.STRIPPED_ACACIA_LOGlocal:StackSize64local:InAmount1local:Amount4local:OutputStackBlocks.PLANKS#4ORlocal:InputStackBlocks.LOG2#1local:InputStackBlocks.STRIPPED_DARK_OAK_LOGlocal:StackSize64local:InAmount1local:Amount4local:OutputStackBlocks.PLANKS#5ORlocal:InputStackBlocks.WARPED_STEMlocal:InputStackBlocks.STRIPPED_WARPED_STEMlocal:StackSize64local:InAmount1local:Amount4local:OutputStackBlocks.WARPED_PLANKSORlocal:InputStackBlocks.CRIMSON_STEMlocal:InputStackBlocks.STRIPPED_CRIMSON_STEMlocal:StackSize64local:InAmount1local:Amount4local:OutputStackBlocks.CRIMSON_PLANKSlocal:InputStackBlocks.BONE_BLOCKlocal:StackSize64local:InAmount1local:Amount9local:OutputStackItems.DYE#15local:InputStackItems.BONElocal:StackSize64local:InAmount1local:Amount3local:OutputStackItems.DYE#15local:InputStackforge:plankslocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.COAL#0local:InputStackItems.GOLD_NUGGETlocal:StackSize64local:InAmount9local:Amount1local:OutputStackItems.GOLD_INGOTlocal:InputStackBlocks.GOLD_ORElocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.GOLD_INGOTlocal:InputStackBlocks.NETHER_GOLD_ORElocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.GOLD_INGOTlocal:InputStackBlocks.IRON_ORElocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.IRON_INGOTlocal:InputStackItems.IRON_NUGGETlocal:StackSize64local:InAmount9local:Amount1local:OutputStackItems.IRON_INGOTlocal:InputStackItems.IRON_INGOTlocal:StackSize64local:InAmount9local:Amount1local:OutputStackBlocks.IRON_BLOCKlocal:InputStackItems.GOLD_INGOTlocal:StackSize64local:InAmount9local:Amount1local:OutputStackBlocks.GOLD_BLOCKlocal:InputStackItems.COAL#0local:StackSize64local:InAmount9local:Amount1local:OutputStackBlocks.COAL_BLOCKlocal:InputStackItems.DIAMONDlocal:StackSize64local:InAmount9local:Amount1local:OutputStackBlocks.DIAMOND_BLOCKlocal:InputStackItems.NETHERITE_INGOTlocal:StackSize64local:InAmount9local:Amount1local:OutputStackBlocks.NETHERITE_BLOCKlocal:InputStackItems.REDSTONElocal:StackSize64local:InAmount9local:Amount1local:OutputStackBlocks.REDSTONE_BLOCKlocal:InputStackItems.DYE#4local:StackSize64local:InAmount9local:Amount1local:OutputStackBlocks.LAPIS_BLOCKlocal:InputStackItems.WATER_BUCKETlocal:StackSize64local:InAmount0local:Amount1local:OutputStackBlocks.PACKED_ICElocal:InputStackBlocks.PACKED_ICElocal:StackSize16local:InAmount1local:Amount1local:OutputStackItems.SNOWBALLlocal:InputStackItems.SNOWBALLlocal:StackSize64local:InAmount4local:Amount1local:OutputStackBlocks.SNOWlocal:InputStackBlocks.NETHERRACKlocal:StackSize64local:InAmount1local:Amount1local:OutputStackBlocks.COBBLESTONElocal:InputStackBlocks.COBBLESTONElocal:StackSize64local:InAmount1local:Amount1local:OutputStackBlocks.STONE#0local:InputStackBlocks.STONE#0local:StackSize64local:InAmount1local:Amount1local:OutputStackBlocks.SMOOTH_STONElocal:InputStackItems.QUARTZlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.IRON_INGOTlocal:InputStackBlocks.ANCIENT_DEBRISlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.NETHERITE_SCRAPlocal:InputStackItems.WHEATlocal:StackSize64local:InAmount3local:Amount1local:OutputStackItems.BREADlocal:InputStackItems.GLOWSTONE_DUSTlocal:StackSize64local:InAmount9local:Amount1local:OutputStackBlocks.GLOWSTONElocal:InputStackItems.POTATOlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.BAKED_POTATOlocal:InputStackItems.PORKCHOPlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.COOKED_PORKCHOPlocal:InputStackItems.BEEFlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.COOKED_BEEFlocal:InputStackItems.CHICKENlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.COOKED_CHICKENlocal:InputStackItems.MUTTONlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.COOKED_MUTTONlocal:InputStackItems.RABBITlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.COOKED_RABBITlocal:InputStackItems.FISH#1local:StackSize64local:InAmount1local:Amount1local:OutputStackItems.COOKED_FISH#1local:InputStackItems.FISH#0local:StackSize64local:InAmount1local:Amount1local:OutputStackItems.COOKED_FISH#0local:InputStackBlocks.SAND#0local:StackSize64local:InAmount1local:Amount1local:OutputStackBlocks.GLASSlocal:InputStackItems.CHORUS_FRUITlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.CHORUS_FRUIT_POPPEDlocal:InputStackBlocks.REEDSlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.PAPERlocal:InputStackBlocks.END_STONElocal:StackSize64local:InAmount1local:Amount1local:OutputStackBlocks.END_BRICKSlocal:InputStackItems.RAW_IRONlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.IRON_INGOTlocal:InputStackItems.RAW_COPPERlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.COPPER_INGOTlocal:InputStackItems.RAW_GOLDlocal:StackSize64local:InAmount1local:Amount1local:OutputStackItems.GOLD_INGOTANDOR1Blocks.AIRAND1local:OutputStackLTE1MINUSlocal:StackSizelocal:AmountGTE0local:InAmountADD1local:Amountlocal:OutputStack1local:InAmount0" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTable.mod.json b/elements/EasyEnchantmentTable.mod.json new file mode 100644 index 0000000..d134967 --- /dev/null +++ b/elements/EasyEnchantmentTable.mod.json @@ -0,0 +1,157 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "enchantmenttexture", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "enchantmenttable:default", + "rotationMode": 1, + "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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Easy Enchantment Table", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 14.5, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "MISCELLANEOUS" + }, + "tickRate": 10, + "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": "WOOD" + }, + "breakSound": { + "value": "" + }, + "fallSound": { + "value": "" + }, + "hitSound": { + "value": "" + }, + "placeSound": { + "value": "" + }, + "stepSound": { + "value": "" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": true, + "guiBoundTo": "EasyEnchantmentTableGUI", + "openGUIOnRightClick": true, + "inventorySize": 11, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "EasyEnchantmentTableUpdateTick" + }, + "generateFeature": false, + "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/EasyEnchantmentTableGUI.mod.json b/elements/EasyEnchantmentTableGUI.mod.json new file mode 100644 index 0000000..78acd2e --- /dev/null +++ b/elements/EasyEnchantmentTableGUI.mod.json @@ -0,0 +1,325 @@ +{ + "_fv": 60, + "_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, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUIreset" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUIreset" + }, + "x": 276, + "y": 48 + } + }, + { + "type": "outputslot", + "data": { + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUItakeItem1" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUItakeItem1" + }, + "x": 132, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 2, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUItakeItem2" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUItakeItem2" + }, + "x": 150, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 3, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUItakeItem3" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUItakeItem3" + }, + "x": 168, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 4, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUItakeItem4" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUItakeItem4" + }, + "x": 186, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 5, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUItakeItem5" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUItakeItem5" + }, + "x": 204, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 6, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUItakeItem6" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUItakeItem6" + }, + "x": 222, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 7, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUItakeItem7" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUItakeItem7" + }, + "x": 240, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 8, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUItakeItem8" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUItakeItem8" + }, + "x": 258, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 9, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUItakeItem9" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUItakeItem9" + }, + "x": 276, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "Items.DYE#4" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 10, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "onTakenFromSlot": { + "name": "EasyEnchantmentTableGUIreset" + }, + "onStackTransfer": { + "name": "EasyEnchantmentTableGUIreset" + }, + "x": 276, + "y": 71 + } + }, + { + "type": "label", + "data": { + "name": "label_easyenchant", + "text": { + "fixedValue": "EasyEnchant" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 44 + } + }, + { + "type": "label", + "data": { + "name": "label_item", + "text": { + "fixedValue": "Item" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 252, + "y": 51 + } + }, + { + "type": "label", + "data": { + "name": "label_lapis_lazuli", + "text": { + "fixedValue": "Lapis Lazuli" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 213, + "y": 74 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUIClear.mod.json b/elements/EasyEnchantmentTableGUIClear.mod.json new file mode 100644 index 0000000..e04a15e --- /dev/null +++ b/elements/EasyEnchantmentTableGUIClear.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterno_ext_triggerlocal:counter0101Blocks.AIRlocal:counterlocal:counterADDlocal:counter1" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUIreset.mod.json b/elements/EasyEnchantmentTableGUIreset.mod.json new file mode 100644 index 0000000..5edafe4 --- /dev/null +++ b/elements/EasyEnchantmentTableGUIreset.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "countno_ext_triggerlocal:count191Blocks.AIRlocal:countlocal:countADDlocal:count1" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUItakeItem1.mod.json b/elements/EasyEnchantmentTableGUItakeItem1.mod.json new file mode 100644 index 0000000..725b008 --- /dev/null +++ b/elements/EasyEnchantmentTableGUItakeItem1.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterselfno_ext_triggerlocal:self1local:counter010NEQlocal:counterlocal:self1Blocks.AIRlocal:counterlocal:counterADDlocal:counter1510" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUItakeItem2.mod.json b/elements/EasyEnchantmentTableGUItakeItem2.mod.json new file mode 100644 index 0000000..34f8ddf --- /dev/null +++ b/elements/EasyEnchantmentTableGUItakeItem2.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterselfno_ext_triggerlocal:self2local:counter010NEQlocal:counterlocal:self1Blocks.AIRlocal:counterlocal:counterADDlocal:counter1510" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUItakeItem3.mod.json b/elements/EasyEnchantmentTableGUItakeItem3.mod.json new file mode 100644 index 0000000..a2a3c6f --- /dev/null +++ b/elements/EasyEnchantmentTableGUItakeItem3.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterselfno_ext_triggerlocal:self3local:counter010NEQlocal:counterlocal:self1Blocks.AIRlocal:counterlocal:counterADDlocal:counter1510" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUItakeItem4.mod.json b/elements/EasyEnchantmentTableGUItakeItem4.mod.json new file mode 100644 index 0000000..84563b1 --- /dev/null +++ b/elements/EasyEnchantmentTableGUItakeItem4.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterselfno_ext_triggerlocal:self4local:counter010NEQlocal:counterlocal:self1Blocks.AIRlocal:counterlocal:counterADDlocal:counter1510" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUItakeItem5.mod.json b/elements/EasyEnchantmentTableGUItakeItem5.mod.json new file mode 100644 index 0000000..dfc5c81 --- /dev/null +++ b/elements/EasyEnchantmentTableGUItakeItem5.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterselfno_ext_triggerlocal:self5local:counter010NEQlocal:counterlocal:self1Blocks.AIRlocal:counterlocal:counterADDlocal:counter1510" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUItakeItem6.mod.json b/elements/EasyEnchantmentTableGUItakeItem6.mod.json new file mode 100644 index 0000000..5b05775 --- /dev/null +++ b/elements/EasyEnchantmentTableGUItakeItem6.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterselfno_ext_triggerlocal:self6local:counter010NEQlocal:counterlocal:self1Blocks.AIRlocal:counterlocal:counterADDlocal:counter1510" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUItakeItem7.mod.json b/elements/EasyEnchantmentTableGUItakeItem7.mod.json new file mode 100644 index 0000000..56c1504 --- /dev/null +++ b/elements/EasyEnchantmentTableGUItakeItem7.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterselfno_ext_triggerlocal:self7local:counter010NEQlocal:counterlocal:self1Blocks.AIRlocal:counterlocal:counterADDlocal:counter1510" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUItakeItem8.mod.json b/elements/EasyEnchantmentTableGUItakeItem8.mod.json new file mode 100644 index 0000000..8435685 --- /dev/null +++ b/elements/EasyEnchantmentTableGUItakeItem8.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterselfno_ext_triggerlocal:self8local:counter010NEQlocal:counterlocal:self1Blocks.AIRlocal:counterlocal:counterADDlocal:counter1510" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableGUItakeItem9.mod.json b/elements/EasyEnchantmentTableGUItakeItem9.mod.json new file mode 100644 index 0000000..7345abc --- /dev/null +++ b/elements/EasyEnchantmentTableGUItakeItem9.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "counterselfno_ext_triggerlocal:self9local:counter010NEQlocal:counterlocal:self1Blocks.AIRlocal:counterlocal:counterADDlocal:counter1510" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableRecipe.mod.json b/elements/EasyEnchantmentTableRecipe.mod.json new file mode 100644 index 0000000..d7da63d --- /dev/null +++ b/elements/EasyEnchantmentTableRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Items.GHAST_TEAR" + }, + { + "value": "" + }, + { + "value": "Items.DIAMOND" + }, + { + "value": "Items.ENDER_EYE" + }, + { + "value": "Items.DIAMOND" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:EasyEnchantmentTable" + }, + "name": "easy_enchantment_table_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EasyEnchantmentTableUpdateTick.mod.json b/elements/EasyEnchantmentTableUpdateTick.mod.json new file mode 100644 index 0000000..4983335 --- /dev/null +++ b/elements/EasyEnchantmentTableUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "toolno_ext_triggerlocal:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantGTE105EQThis is required to prevent issues with bookslocal:tool1Swordlocal:toolEQSHARPNESSlocal:tool0SHARPNESS5local:tool1local:tool1local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQLOOTINGlocal:tool0LOOTING3local:tool1local:tool2local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQFIRE_ASPECTlocal:tool0FIRE_ASPECT2local:tool1local:tool3local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQKNOCKBACKlocal:tool0KNOCKBACK2local:tool1local:tool4local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQUNBREAKINGlocal:tool0UNBREAKING3local:tool1local:tool5local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQSWEEPINGlocal:tool0SWEEPING3local:tool1local:tool6local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQMENDINGlocal:tool0MENDING1local:tool1local:tool7local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQVANISHING_CURSElocal:tool0VANISHING_CURSE1local:tool1local:tool8local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantORORPickaxelocal:toolAxelocal:toolORShovellocal:toolHoelocal:toolEQEFFICIENCYlocal:tool0EFFICIENCY5local:tool1local:tool1local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQFORTUNElocal:tool0FORTUNE3local:tool1local:tool2local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQSILK_TOUCHlocal:tool0SILK_TOUCH1local:tool1local:tool3local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQUNBREAKINGlocal:tool0UNBREAKING3local:tool1local:tool4local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQMENDINGlocal:tool0MENDING1local:tool1local:tool5local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantAxelocal:toolEQBANE_OF_ARTHROPODSlocal:tool0BANE_OF_ARTHROPODS5local:tool1local:tool6local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQSMITElocal:tool0SMITE5local:tool1local:tool7local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQSHARPNESSlocal:tool0SHARPNESS5local:tool1local:tool8local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantlocal:toolforge:tag_armorEQFIRE_PROTECTIONlocal:tool0FIRE_PROTECTION4local:tool1local:tool1local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQPROJECTILE_PROTECTIONlocal:tool0PROJECTILE_PROTECTION4local:tool1local:tool2local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQMENDINGlocal:tool0MENDING1local:tool1local:tool3local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQPROTECTIONlocal:tool0PROTECTION4local:tool1local:tool4local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQFIRE_PROTECTIONlocal:tool0FIRE_PROTECTION4local:tool1local:tool5local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQUNBREAKINGlocal:tool0UNBREAKING3local:tool1local:tool6local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQBLAST_PROTECTIONlocal:tool0BLAST_PROTECTION4local:tool1local:tool7local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantlocal:toolforge:tag_helmetEQRESPIRATIONlocal:tool0RESPIRATION3local:tool1local:tool8local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQAQUA_AFFINITYlocal:tool0AQUA_AFFINITY1local:tool1local:tool9local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantlocal:toolforge:tag_bootsEQSOUL_SPEEDlocal:tool0SOUL_SPEED3local:tool1local:tool8local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQFROST_WALKERlocal:tool0FROST_WALKER2local:tool1local:tool9local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantlocal:toolforge:tag_leggingsEQSWIFT_SNEAKlocal:tool0SWIFT_SNEAK3local:tool1local:tool8local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantlocal:toolforge:tag_chestEQTHORNSlocal:tool0THORNS3local:tool1local:tool9local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantlocal:toolItems.TRIDENTEQUNBREAKINGlocal:tool0UNBREAKING3local:tool1local:tool1local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQMENDINGlocal:tool0MENDING1local:tool1local:tool2local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQLOYALTYlocal:tool0LOYALTY3local:tool1local:tool3local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQIMPALINGlocal:tool0IMPALING5local:tool1local:tool4local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQCHANNELINGlocal:tool0CHANNELING1local:tool1local:tool5local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQRIPTIDElocal:tool0RIPTIDE3local:tool1local:tool6local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantlocal:toolItems.BOWEQINFINITYlocal:tool0INFINITY1local:tool1local:tool1local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQFLAMElocal:tool0FLAME1local:tool1local:tool2local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQPOWERlocal:tool0POWER4local:tool1local:tool3local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQPUNCHlocal:tool0PUNCH2local:tool1local:tool4local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQUNBREAKINGlocal:tool0UNBREAKING3local:tool1local:tool5local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQMENDINGlocal:tool0MENDING1local:tool1local:tool6local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantlocal:toolItems.FISHING_RODEQLUCK_OF_THE_SEAlocal:tool0PROTECTION3local:tool1local:tool1local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQLURElocal:tool0LURE3local:tool1local:tool2local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQUNBREAKINGlocal:tool0UNBREAKING3local:tool1local:tool3local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQMENDINGlocal:tool0MENDING1local:tool1local:tool4local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantlocal:toolItems.CROSSBOWEQQUICK_CHARGElocal:tool0QUICK_CHARGE3local:tool1local:tool1local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQPIERCINGlocal:tool0PIERCING4local:tool1local:tool2local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQMULTISHOTlocal:tool0MULTISHOT1local:tool1local:tool3local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQUNBREAKINGlocal:tool0UNBREAKING3local:tool1local:tool4local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantEQMENDINGlocal:tool0MENDING1local:tool1local:tool5local:toolThis template is used to recreate an enchanting table, using items instead of XP. It should be called on a block with at least two inventory slots0The first slot contains the item to enchantENCHANTMENT_TABLE010" + } +} \ No newline at end of file diff --git a/elements/EasyForge.mod.json b/elements/EasyForge.mod.json new file mode 100644 index 0000000..962ac4e --- /dev/null +++ b/elements/EasyForge.mod.json @@ -0,0 +1,147 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "forgefront", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "forge:default", + "rotationMode": 1, + "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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Easy Forge", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 10, + "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": "STONE" + }, + "breakSound": { + "value": "" + }, + "fallSound": { + "value": "" + }, + "hitSound": { + "value": "" + }, + "placeSound": { + "value": "" + }, + "stepSound": { + "value": "" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": true, + "guiBoundTo": "EasyForgeGUI", + "openGUIOnRightClick": true, + "inventorySize": 2, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "EasyForgeUpdateTick" + }, + "generateFeature": false, + "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/EasyForgeAuto.mod.json b/elements/EasyForgeAuto.mod.json new file mode 100644 index 0000000..a3d0dfd --- /dev/null +++ b/elements/EasyForgeAuto.mod.json @@ -0,0 +1,151 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "forgefront", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "forge:default", + "rotationMode": 1, + "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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Easy Forge", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 10, + "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": "STONE" + }, + "breakSound": { + "value": "" + }, + "fallSound": { + "value": "" + }, + "hitSound": { + "value": "" + }, + "placeSound": { + "value": "" + }, + "stepSound": { + "value": "" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": true, + "guiBoundTo": "EasyForgeGUI", + "openGUIOnRightClick": true, + "inventorySize": 2, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [ + 1 + ], + "inventoryInSlotIDs": [ + 0 + ], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "EasyForgeUpdateTick" + }, + "generateFeature": false, + "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/EasyForgeAutoRecipe.mod.json b/elements/EasyForgeAutoRecipe.mod.json new file mode 100644 index 0000000..38ff292 --- /dev/null +++ b/elements/EasyForgeAutoRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Items.REDSTONE" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Items.LAVA_BUCKET" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Items.REDSTONE" + }, + { + "value": "Blocks.OBSIDIAN" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:EasyForge" + }, + "name": "easy_forge_auto_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EasyForgeGUI.mod.json b/elements/EasyForgeGUI.mod.json new file mode 100644 index 0000000..a47ca0f --- /dev/null +++ b/elements/EasyForgeGUI.mod.json @@ -0,0 +1,82 @@ +{ + "_fv": 60, + "_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, + "x": 168, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 240, + "y": 84 + } + }, + { + "type": "label", + "data": { + "name": "label_easyforge", + "text": { + "fixedValue": "EasyForge" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 48 + } + }, + { + "type": "label", + "data": { + "name": "label_empty", + "text": { + "fixedValue": ">>" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 208, + "y": 88 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/EasyForgeRecipe.mod.json b/elements/EasyForgeRecipe.mod.json new file mode 100644 index 0000000..252d2ef --- /dev/null +++ b/elements/EasyForgeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Items.LAVA_BUCKET" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Blocks.OBSIDIAN" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:EasyForge" + }, + "name": "easy_forge_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EasyForgeUpdateTick.mod.json b/elements/EasyForgeUpdateTick.mod.json new file mode 100644 index 0000000..727cfdc --- /dev/null +++ b/elements/EasyForgeUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "fireHeightpreviousRecipeno_ext_trigger0Blocks.IRON_OREOR1Blocks.AIR1Items.IRON_INGOTADD11Items.IRON_INGOT1100Blocks.GOLD_OREOR1Blocks.AIR1Items.GOLD_INGOTADD11Items.GOLD_INGOT1100Blocks.ANCIENT_DEBRISOR1Blocks.AIR1Items.NETHERITE_SCRAPADD11Items.NETHERITE_SCRAP1100Blocks.COBBLESTONEOR1Blocks.AIR1Blocks.STONE#0ADD11Blocks.STONE#01100Blocks.STONE#0OR1Blocks.AIR1Blocks.SMOOTH_STONEADD11Blocks.SMOOTH_STONE1100Blocks.LOGOR1Blocks.AIR1Items.COAL#0ADD11Items.COAL#01100Blocks.SAND#0OR1Blocks.AIR1Blocks.GLASSADD11Blocks.GLASS1100Items.CHICKENOR1Blocks.AIR1Items.COOKED_CHICKENADD11Items.COOKED_CHICKEN1100Items.BEEFOR1Blocks.AIR1Items.COOKED_BEEFADD11Items.COOKED_BEEF1100Items.PORKCHOPOR1Blocks.AIR1Items.COOKED_PORKCHOPADD11Items.COOKED_PORKCHOP1100Items.POTATOOR1Blocks.AIR1Items.BAKED_POTATOADD11Items.BAKED_POTATO1100Items.FISH#0OR1Blocks.AIR1Items.COOKED_FISH#0ADD11Items.COOKED_FISH#01100Items.FISH#1OR1Blocks.AIR1Items.COOKED_FISH#1ADD11Items.COOKED_FISH#11100Items.CHORUS_FRUITOR1Blocks.AIR1Items.CHORUS_FRUITADD11Items.CHORUS_FRUIT_POPPED1100Items.QUARTZOR1Blocks.AIR1Items.IRON_INGOTADD11Items.IRON_INGOT1100Items.RAW_IRONOR1Blocks.AIR1Items.IRON_INGOTADD11Items.IRON_INGOT1100Items.RAW_COPPEROR1Blocks.AIR1Items.COPPER_INGOTADD11Items.COPPER_INGOT1100Items.RAW_GOLDOR1Blocks.AIR1Items.GOLD_INGOTADD11Items.GOLD_INGOT110NORTHFLAMEADD0.5ADD0.2MINUS0.1030SOUTHFLAMEADD0.5ADD0.2ADD1.1030WESTFLAMEMINUS0.1ADD0.2ADD0.5030EASTFLAMEADD1.1ADD0.2ADD0.5030This example will test if the random number is less than 0.7 (70%). Random numbers range between (0.0 and 1.0). If it is true, then it will run what is in the \"do\" section of the if statement.LTRANDOM0.2block.furnace.fire_crackleneutral11" + } +} \ No newline at end of file diff --git a/elements/EasyFridge.mod.json b/elements/EasyFridge.mod.json new file mode 100644 index 0000000..b1a2242 --- /dev/null +++ b/elements/EasyFridge.mod.json @@ -0,0 +1,151 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "fridgefront", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "fridge_oriented:default", + "rotationMode": 1, + "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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Easy Fridge", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "IRON" + }, + "tickRate": 10, + "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": "METAL" + }, + "breakSound": { + "value": "" + }, + "fallSound": { + "value": "" + }, + "hitSound": { + "value": "" + }, + "placeSound": { + "value": "" + }, + "stepSound": { + "value": "" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": true, + "guiBoundTo": "EasyFridgeGUI", + "openGUIOnRightClick": true, + "inventorySize": 2, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [ + 1 + ], + "inventoryInSlotIDs": [ + 0 + ], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "EasyFridgeUpdateTick" + }, + "generateFeature": false, + "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/EasyFridgeGUI.mod.json b/elements/EasyFridgeGUI.mod.json new file mode 100644 index 0000000..fb70737 --- /dev/null +++ b/elements/EasyFridgeGUI.mod.json @@ -0,0 +1,67 @@ +{ + "_fv": 60, + "_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, + "x": 150, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 84 + } + }, + { + "type": "label", + "data": { + "name": "label_easyfridge", + "text": { + "fixedValue": "EasyFridge" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 48 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/EasyFridgeRecipe.mod.json b/elements/EasyFridgeRecipe.mod.json new file mode 100644 index 0000000..007fc3c --- /dev/null +++ b/elements/EasyFridgeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.COBBLESTONE" + }, + { + "value": "Blocks.COBBLESTONE" + }, + { + "value": "Blocks.COBBLESTONE" + }, + { + "value": "Blocks.COBBLESTONE" + }, + { + "value": "Items.WATER_BUCKET" + }, + { + "value": "Blocks.COBBLESTONE" + }, + { + "value": "Blocks.COBBLESTONE" + }, + { + "value": "Blocks.COBBLESTONE" + }, + { + "value": "Blocks.COBBLESTONE" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:EasyFridge" + }, + "name": "easy_fridge_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EasyFridgeUpdateTick.mod.json b/elements/EasyFridgeUpdateTick.mod.json new file mode 100644 index 0000000..76f9241 --- /dev/null +++ b/elements/EasyFridgeUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerAND0Items.WATER_BUCKETANDOR1Blocks.AIR1Blocks.PACKED_ICELT164ADD11Blocks.PACKED_ICE1AND0Blocks.PACKED_ICEANDOR1Blocks.AIR1Items.SNOWBALLLT116ADD11Items.SNOWBALL110" + } +} \ No newline at end of file diff --git a/elements/EasyIntake.mod.json b/elements/EasyIntake.mod.json new file mode 100644 index 0000000..b96cc02 --- /dev/null +++ b/elements/EasyIntake.mod.json @@ -0,0 +1,147 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "barrel", + "textureTop": "metal", + "textureLeft": "metal", + "textureFront": "metal", + "textureRight": "metal", + "textureBack": "metal", + "renderType": 2, + "customModelName": "barrelintake:default", + "rotationMode": 2, + "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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Easy Intake", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 10, + "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": "EasyIntakeGUI", + "openGUIOnRightClick": true, + "inventorySize": 27, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onRightClicked": { + "name": "EasyIntakeOnBlockRightClicked" + }, + "generateFeature": false, + "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/EasyIntakeGUI.mod.json b/elements/EasyIntakeGUI.mod.json new file mode 100644 index 0000000..c2ef0de --- /dev/null +++ b/elements/EasyIntakeGUI.mod.json @@ -0,0 +1,523 @@ +{ + "_fv": 60, + "_type": "gui", + "definition": { + "type": 1, + "width": 178, + "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, + "x": 132, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 150, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 2, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 168, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 3, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 186, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 4, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 204, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 5, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 222, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 6, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 240, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 7, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 8, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 276, + "y": 57 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 9, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 132, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 10, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 150, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 11, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 168, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 12, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 186, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 13, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 204, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 14, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 222, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 15, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 240, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 16, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 17, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 276, + "y": 75 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 18, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 132, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 19, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 150, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 20, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 168, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 21, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 186, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 22, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 204, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 23, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 222, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 24, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 240, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 25, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 93 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 26, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 276, + "y": 93 + } + }, + { + "type": "label", + "data": { + "name": "label_easyintake", + "text": { + "fixedValue": "EasyIntake" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 39 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/EasyIntakeOnBlockRightClicked.mod.json b/elements/EasyIntakeOnBlockRightClicked.mod.json new file mode 100644 index 0000000..c4a1675 --- /dev/null +++ b/elements/EasyIntakeOnBlockRightClicked.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "slotnoinvslotfreeslottempstackno_ext_triggerlocal:slotno0EasyIntakeGUI36local:slotnoforge:tag_intakelocal:tempstacklocal:slotnolocal:invslot027local:invslotBlocks.AIRlocal:freeslotlocal:invslotBREAKlocal:invslotADDlocal:invslot1local:slotnolocal:tempstacklocal:freeslot1Blocks.AIRlocal:slotnolocal:slotnoADDlocal:slotno1" + } +} \ No newline at end of file diff --git a/elements/EasyIntakeRecipe.mod.json b/elements/EasyIntakeRecipe.mod.json new file mode 100644 index 0000000..03bc656 --- /dev/null +++ b/elements/EasyIntakeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Blocks.HOPPER" + }, + { + "value": "" + }, + { + "value": "Items.REDSTONE" + }, + { + "value": "Blocks.CHEST" + }, + { + "value": "Items.REDSTONE" + }, + { + "value": "" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:EasyIntake" + }, + "name": "easy_intake_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EasySaw.mod.json b/elements/EasySaw.mod.json new file mode 100644 index 0000000..ef31a00 --- /dev/null +++ b/elements/EasySaw.mod.json @@ -0,0 +1,147 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "sawblock", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "sawblock: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Easy Saw", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 10, + "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": "EasySawGUI", + "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": [], + "onTickUpdate": { + "name": "EasySawUpdateTick" + }, + "generateFeature": false, + "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/EasySawGUI.mod.json b/elements/EasySawGUI.mod.json new file mode 100644 index 0000000..fa2fe46 --- /dev/null +++ b/elements/EasySawGUI.mod.json @@ -0,0 +1,100 @@ +{ + "_fv": 60, + "_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, + "x": 150, + "y": 84 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 204, + "y": 66 + } + }, + { + "type": "outputslot", + "data": { + "id": 2, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 84 + } + }, + { + "type": "label", + "data": { + "name": "label_easysaw", + "text": { + "fixedValue": "EasySaw" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 48 + } + }, + { + "type": "label", + "data": { + "name": "label_template", + "text": { + "fixedValue": "Template" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 193, + "y": 84 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/EasySawRecipe.mod.json b/elements/EasySawRecipe.mod.json new file mode 100644 index 0000000..b54c778 --- /dev/null +++ b/elements/EasySawRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Items.IRON_INGOT" + }, + { + "value": "" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:EasySaw" + }, + "name": "easy_saw_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EasySawUpdateTick.mod.json b/elements/EasySawUpdateTick.mod.json new file mode 100644 index 0000000..565c7a6 --- /dev/null +++ b/elements/EasySawUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "woodtyperecipeno_ext_triggerlocal:woodtypenonelocal:recipenoneANDOR0Blocks.LOG#00Blocks.STRIPPED_OAK_LOGLTE260ADD24Blocks.PLANKS#02ANDOR0Blocks.LOG#10Blocks.STRIPPED_SPRUCE_LOGLTE260ADD24Blocks.PLANKS#12ANDOR0Blocks.LOG#20Blocks.STRIPPED_BIRCH_LOGLTE260ADD24Blocks.PLANKS#22ANDOR0Blocks.LOG#30Blocks.STRIPPED_JUNGLE_LOGLTE260ADD24Blocks.PLANKS#32ANDOR0Blocks.LOG2#00Blocks.STRIPPED_ACACIA_LOGLTE260ADD24Blocks.PLANKS#42ANDOR0Blocks.LOG2#10Blocks.STRIPPED_DARK_OAK_LOGLTE260ADD24Blocks.PLANKS#52LT2640Blocks.PLANKS#0local:woodtypeoak0Blocks.PLANKS#1local:woodtypespruce0Blocks.PLANKS#2local:woodtypebirch0Blocks.PLANKS#3local:woodtypejungle0Blocks.PLANKS#4local:woodtypeacacia0Blocks.PLANKS#5local:woodtypedarkoak0Blocks.CRIMSON_PLANKSlocal:woodtypecrimson0Blocks.WARPED_PLANKSlocal:woodtypewarpedOR1Blocks.WOODEN_SLAB#0OR1Blocks.WOODEN_SLAB#1OR1Blocks.WOODEN_SLAB#2OR1Blocks.WOODEN_SLAB#3OR1Blocks.WOODEN_SLAB#4OR1Blocks.WOODEN_SLAB#5OR1Blocks.CRIMSON_SLAB1Blocks.WARPED_SLABlocal:recipeslabOR1Blocks.OAK_STAIRSOR1Blocks.SPRUCE_STAIRSOR1Blocks.BIRCH_STAIRSOR1Blocks.JUNGLE_STAIRSOR1Blocks.ACACIA_STAIRSOR1Blocks.DARK_OAK_STAIRSOR1Blocks.CRIMSON_STAIRS1Blocks.WARPED_STAIRSlocal:recipestairsOR1Blocks.STANDING_SIGNOR1Blocks.SPRUCE_SIGNOR1Blocks.BIRCH_SIGNOR1Blocks.ACACIA_SIGNOR1Blocks.JUNGLE_SIGNOR1Blocks.DARK_OAK_SIGNOR1Blocks.CRIMSON_SIGN1Blocks.WARPED_SIGNlocal:recipesignOR1Blocks.OAK_DOOROR1Blocks.SPRUCE_DOOROR1Blocks.BIRCH_DOOROR1Blocks.JUNGLE_DOOROR1Blocks.ACACIA_DOOROR1Blocks.DARK_OAK_DOOROR1Blocks.CRIMSON_DOOR1Blocks.WARPED_DOORlocal:recipedoorOR1Blocks.TRAPDOOROR1Blocks.SPRUCE_TRAPDOOROR1Blocks.BIRCH_TRAPDOOROR1Blocks.JUNGLE_TRAPDOOROR1Blocks.ACACIA_TRAPDOOROR1Blocks.DARK_OAK_TRAPDOOROR1Blocks.CRIMSON_TRAPDOOR1Blocks.WARPED_TRAPDOORlocal:recipetrapdoorOR1Blocks.WOODEN_BUTTONOR1Blocks.SPRUCE_BUTTONOR1Blocks.BIRCH_BUTTONOR1Blocks.JUNGLE_BUTTONOR1Blocks.ACACIA_BUTTONOR1Blocks.DARK_OAK_BUTTONOR1Blocks.CRIMSON_BUTTON1Blocks.WARPED_BUTTONlocal:recipebuttonOR1Blocks.WOODEN_PRESSURE_PLATEOR1Blocks.SPRUCE_PRESSURE_PLATEOR1Blocks.BIRCH_PRESSURE_PLATEOR1Blocks.JUNGLE_PRESSURE_PLATEOR1Blocks.ACACIA_PRESSURE_PLATEOR1Blocks.DARK_OAK_PRESSURE_PLATEOR1Blocks.CRIMSON_PRESSURE_PLATE1Blocks.WARPED_PRESSURE_PLATElocal:recipepressureplateOR1Blocks.OAK_FENCEOR1Blocks.SPRUCE_FENCEOR1Blocks.BIRCH_FENCEOR1Blocks.JUNGLE_FENCEOR1Blocks.ACACIA_FENCEOR1Blocks.DARK_OAK_FENCEOR1Blocks.CRIMSON_FENCE1Blocks.WARPED_FENCElocal:recipefenceOR1Blocks.OAK_FENCE_GATEOR1Blocks.SPRUCE_FENCE_GATEOR1Blocks.BIRCH_FENCE_GATEOR1Blocks.JUNGLE_FENCE_GATEOR1Blocks.ACACIA_FENCE_GATEOR1Blocks.DARK_OAK_FENCE_GATEOR1Blocks.CRIMSON_FENCE_GATE1Blocks.WARPED_FENCE_GATElocal:recipegateOR1Items.BOATOR1Items.SPRUCE_BOATOR1Items.BIRCH_BOATOR1Items.JUNGLE_BOATOR1Items.ACACIA_BOAT1Items.DARK_OAK_BOATlocal:recipeboatlocal:woodtypeoaklocal:recipeslabADD21Blocks.WOODEN_SLAB#0210local:recipestairsADD21Blocks.OAK_STAIRS210local:recipesignADD21Blocks.STANDING_SIGN210local:recipedoorADD21Blocks.OAK_DOOR210local:recipetrapdoorADD21Blocks.TRAPDOOR210local:recipebuttonADD21Blocks.WOODEN_BUTTON210local:recipepressureplateADD21Blocks.WOODEN_PRESSURE_PLATE210local:recipefenceADD21Blocks.OAK_FENCE210local:recipegateADD21Blocks.OAK_FENCE_GATE210local:recipeboatADD21Items.BOAT210local:woodtypesprucelocal:recipeslabADD21Blocks.WOODEN_SLAB#1210local:recipestairsADD21Blocks.SPRUCE_STAIRS210local:recipesignADD21Blocks.SPRUCE_SIGN210local:recipedoorADD21Blocks.SPRUCE_DOOR210local:recipetrapdoorADD21Blocks.SPRUCE_TRAPDOOR210local:recipebuttonADD21Blocks.SPRUCE_BUTTON210local:recipepressureplateADD21Blocks.SPRUCE_PRESSURE_PLATE210local:recipefenceADD21Blocks.SPRUCE_FENCE210local:recipegateADD21Blocks.SPRUCE_FENCE_GATE210local:recipeboatADD21Items.SPRUCE_BOAT210local:woodtypebirchlocal:recipeslabADD21Blocks.WOODEN_SLAB#2210local:recipestairsADD21Blocks.BIRCH_STAIRS210local:recipesignADD21Blocks.BIRCH_SIGN210local:recipedoorADD21Blocks.BIRCH_DOOR210local:recipetrapdoorADD21Blocks.BIRCH_TRAPDOOR210local:recipebuttonADD21Blocks.BIRCH_BUTTON210local:recipepressureplateADD21Blocks.BIRCH_PRESSURE_PLATE210local:recipefenceADD21Blocks.BIRCH_FENCE210local:recipegateADD21Blocks.BIRCH_FENCE_GATE210local:recipeboatADD21Items.BIRCH_BOAT210local:woodtypejunglelocal:recipeslabADD21Blocks.WOODEN_SLAB#3210local:recipestairsADD21Blocks.JUNGLE_STAIRS210local:recipesignADD21Blocks.JUNGLE_SIGN210local:recipedoorADD21Blocks.JUNGLE_DOOR210local:recipetrapdoorADD21Blocks.JUNGLE_TRAPDOOR210local:recipebuttonADD21Blocks.JUNGLE_BUTTON210local:recipepressureplateADD21Blocks.JUNGLE_PRESSURE_PLATE210local:recipefenceADD21Blocks.JUNGLE_FENCE210local:recipegateADD21Blocks.JUNGLE_FENCE_GATE210local:recipeboatADD21Items.JUNGLE_BOAT210local:woodtypeacacialocal:recipeslabADD21Blocks.WOODEN_SLAB#4210local:recipestairsADD21Blocks.ACACIA_STAIRS210local:recipesignADD21Blocks.ACACIA_SIGN210local:recipedoorADD21Blocks.ACACIA_DOOR210local:recipetrapdoorADD21Blocks.ACACIA_TRAPDOOR210local:recipebuttonADD21Blocks.ACACIA_BUTTON210local:recipepressureplateADD21Blocks.ACACIA_PRESSURE_PLATE210local:recipefenceADD21Blocks.ACACIA_FENCE210local:recipegateADD21Blocks.ACACIA_FENCE_GATE210local:recipeboatADD21Items.ACACIA_BOAT210local:woodtypedarkoaklocal:recipeslabADD21Blocks.WOODEN_SLAB#5210local:recipestairsADD21Blocks.DARK_OAK_STAIRS210local:recipesignADD21Blocks.DARK_OAK_WALL_SIGN210local:recipedoorADD21Blocks.DARK_OAK_DOOR210local:recipetrapdoorADD21Blocks.DARK_OAK_TRAPDOOR210local:recipebuttonADD21Blocks.DARK_OAK_BUTTON210local:recipepressureplateADD21Blocks.DARK_OAK_PRESSURE_PLATE210local:recipefenceADD21Blocks.DARK_OAK_FENCE210local:recipegateADD21Blocks.DARK_OAK_FENCE_GATE210local:recipeboatADD21Items.DARK_OAK_BOAT210local:woodtypecrimsonlocal:recipeslabADD21Blocks.CRIMSON_SLAB210local:recipestairsADD21Blocks.CRIMSON_STAIRS210local:recipesignADD21Blocks.CRIMSON_SIGN210local:recipedoorADD21Blocks.CRIMSON_DOOR210local:recipetrapdoorADD21Blocks.CRIMSON_TRAPDOOR210local:recipebuttonADD21Blocks.CRIMSON_BUTTON210local:recipepressureplateADD21Blocks.CRIMSON_PRESSURE_PLATE210local:recipefenceADD21Blocks.CRIMSON_FENCE210local:recipegateADD21Blocks.CRIMSON_FENCE_GATE210local:woodtypewarpedlocal:recipeslabADD21Blocks.WARPED_SLAB210local:recipestairsADD21Blocks.WARPED_STAIRS210local:recipesignADD21Blocks.WARPED_SIGN210local:recipedoorADD21Blocks.WARPED_DOOR210local:recipetrapdoorADD21Blocks.WARPED_TRAPDOOR210local:recipebuttonADD21Blocks.WARPED_BUTTON210local:recipepressureplateADD21Blocks.WARPED_PRESSURE_PLATE210local:recipefenceADD21Blocks.WARPED_FENCE210local:recipegateADD21Blocks.WARPED_FENCE_GATE210Message" + } +} \ No newline at end of file diff --git a/elements/EasySmelter.mod.json b/elements/EasySmelter.mod.json new file mode 100644 index 0000000..0adc015 --- /dev/null +++ b/elements/EasySmelter.mod.json @@ -0,0 +1,147 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "metal", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "smeltblock:default", + "rotationMode": 1, + "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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Easy Smelter", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 10, + "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": "EasySmelterGUI", + "openGUIOnRightClick": true, + "inventorySize": 2, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "EasySmelterUpdateTick" + }, + "generateFeature": false, + "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/EasySmelterGUI.mod.json b/elements/EasySmelterGUI.mod.json new file mode 100644 index 0000000..7ac32af --- /dev/null +++ b/elements/EasySmelterGUI.mod.json @@ -0,0 +1,67 @@ +{ + "_fv": 60, + "_type": "gui", + "definition": { + "type": 1, + "width": 176, + "height": 166, + "inventoryOffsetX": 0, + "inventoryOffsetY": 0, + "renderBgLayer": true, + "doesPauseGame": false, + "components": [ + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "Items.GOLD_NUGGET" + }, + "disablePlacement": { + "fixedValue": false + }, + "id": 0, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 150, + "y": 84 + } + }, + { + "type": "outputslot", + "data": { + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 84 + } + }, + { + "type": "label", + "data": { + "name": "label_easysmelter", + "text": { + "fixedValue": "EasySmelter" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 48 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/EasySmelterRecipe.mod.json b/elements/EasySmelterRecipe.mod.json new file mode 100644 index 0000000..8990da8 --- /dev/null +++ b/elements/EasySmelterRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.IRON_INGOT" + }, + { + "value": "Items.LAVA_BUCKET" + }, + { + "value": "Items.IRON_INGOT" + }, + { + "value": "Blocks.STONE" + }, + { + "value": "Blocks.STONE" + }, + { + "value": "Blocks.STONE" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:EasySmelter" + }, + "name": "easy_smelter_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EasySmelterUpdateTick.mod.json b/elements/EasySmelterUpdateTick.mod.json new file mode 100644 index 0000000..0e06105 --- /dev/null +++ b/elements/EasySmelterUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerAND0Items.GOLD_NUGGETANDGTE09LT16490ADD11Items.GOLD_INGOT1" + } +} \ No newline at end of file diff --git a/elements/EasySurvival.mod.json b/elements/EasySurvival.mod.json new file mode 100644 index 0000000..b1122b8 --- /dev/null +++ b/elements/EasySurvival.mod.json @@ -0,0 +1,11 @@ +{ + "_fv": 60, + "_type": "tab", + "definition": { + "name": "Easy Survival", + "icon": { + "value": "Blocks.SAPLING#3" + }, + "showSearch": true + } +} \ No newline at end of file diff --git a/elements/EasyTeleportRecipe.mod.json b/elements/EasyTeleportRecipe.mod.json new file mode 100644 index 0000000..ceaf870 --- /dev/null +++ b/elements/EasyTeleportRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Items.IRON_INGOT" + }, + { + "value": "Items.ENDER_PEARL" + }, + { + "value": "Items.IRON_INGOT" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:TeleporterPlate" + }, + "name": "easy_teleport_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Elytra.mod.json b/elements/Elytra.mod.json new file mode 100644 index 0000000..4f1cfe5 --- /dev/null +++ b/elements/Elytra.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.FEATHER" + }, + { + "value": "Items.GHAST_TEAR" + }, + { + "value": "Items.FEATHER" + }, + { + "value": "Items.FEATHER" + }, + { + "value": "Blocks.END_STONE" + }, + { + "value": "Items.FEATHER" + }, + { + "value": "Items.FEATHER" + }, + { + "value": "" + }, + { + "value": "Items.FEATHER" + } + ], + "recipeReturnStack": { + "value": "Items.ELYTRA" + }, + "name": "elytra", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/EnderpPearlRecipe.mod.json b/elements/EnderpPearlRecipe.mod.json new file mode 100644 index 0000000..8c19082 --- /dev/null +++ b/elements/EnderpPearlRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Items.DYE#15" + }, + { + "value": "" + }, + { + "value": "Items.DYE#15" + }, + { + "value": "Items.DYE#4" + }, + { + "value": "Items.DYE#15" + }, + { + "value": "" + }, + { + "value": "Items.DYE#15" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "Items.ENDER_PEARL" + }, + "name": "enderp_pearl_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherBucket.mod.json b/elements/NetherBucket.mod.json new file mode 100644 index 0000000..a5023a7 --- /dev/null +++ b/elements/NetherBucket.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "Items.BUCKET" + }, + "name": "nether_bucket", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherForge.mod.json b/elements/NetherForge.mod.json new file mode 100644 index 0000000..b055b60 --- /dev/null +++ b/elements/NetherForge.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + } + ], + "recipeReturnStack": { + "value": "Blocks.FURNACE" + }, + "name": "nether_forge", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherLadderRecipe.mod.json b/elements/NetherLadderRecipe.mod.json new file mode 100644 index 0000000..0288bbc --- /dev/null +++ b/elements/NetherLadderRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 4, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "CUSTOM:NetherStick" + }, + { + "value": "" + }, + { + "value": "CUSTOM:NetherStick" + }, + { + "value": "CUSTOM:NetherStick" + }, + { + "value": "CUSTOM:NetherStick" + }, + { + "value": "CUSTOM:NetherStick" + }, + { + "value": "CUSTOM:NetherStick" + }, + { + "value": "" + }, + { + "value": "CUSTOM:NetherStick" + } + ], + "recipeReturnStack": { + "value": "Blocks.LADDER" + }, + "name": "nether_ladder_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherStick.mod.json b/elements/NetherStick.mod.json new file mode 100644 index 0000000..dae7730 --- /dev/null +++ b/elements/NetherStick.mod.json @@ -0,0 +1,44 @@ +{ + "_fv": 60, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "netherstick", + "customModelName": "Normal", + "customProperties": {}, + "states": [], + "name": "Nether Stick", + "rarity": "COMMON", + "creativeTab": { + "value": "MISC" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInformation": { + "fixedValue": [] + }, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64, + "enableRanged": false, + "shootConstantly": false, + "isFood": false, + "nutritionalValue": 0, + "saturation": 0.30000001192092896, + "isMeat": false, + "isAlwaysEdible": false, + "animation": "eat" + } +} \ No newline at end of file diff --git a/elements/NetherStickRecipe.mod.json b/elements/NetherStickRecipe.mod.json new file mode 100644 index 0000000..1a306f5 --- /dev/null +++ b/elements/NetherStickRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 4, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherStick" + }, + "name": "nether_stick_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherWartRecipe.mod.json b/elements/NetherWartRecipe.mod.json new file mode 100644 index 0000000..b7b3c41 --- /dev/null +++ b/elements/NetherWartRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 10, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHER_WART_BLOCK" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "Items.NETHER_WART" + }, + "name": "nether_wart_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherWorkbench.mod.json b/elements/NetherWorkbench.mod.json new file mode 100644 index 0000000..c022240 --- /dev/null +++ b/elements/NetherWorkbench.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "Blocks.CRAFTING_TABLE" + }, + "name": "nether_workbench", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherrackArmor.mod.json b/elements/NetherrackArmor.mod.json new file mode 100644 index 0000000..60b7232 --- /dev/null +++ b/elements/NetherrackArmor.mod.json @@ -0,0 +1,78 @@ +{ + "_fv": 60, + "_type": "armor", + "definition": { + "enableHelmet": true, + "textureHelmet": "netherrack_head", + "enableBody": true, + "textureBody": "netherrack_body", + "enableLeggings": true, + "textureLeggings": "netherrack_leggings", + "enableBoots": true, + "textureBoots": "netherrack_boots", + "creativeTab": { + "value": "COMBAT" + }, + "armorTextureFile": "netherrack", + "helmetName": "Netherrack Helmet", + "bodyName": "Netherrack Chestplate", + "leggingsName": "Netherrack Leggings", + "bootsName": "Netherrack Boots", + "helmetSpecialInformation": { + "fixedValue": [] + }, + "bodySpecialInformation": { + "fixedValue": [] + }, + "leggingsSpecialInformation": { + "fixedValue": [] + }, + "bootsSpecialInformation": { + "fixedValue": [] + }, + "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": 8, + "damageValueHelmet": 1, + "damageValueBody": 3, + "damageValueLeggings": 3, + "damageValueBoots": 1, + "enchantability": 5, + "toughness": 0.0, + "knockbackResistance": 0.0, + "equipSound": { + "value": "" + }, + "repairItems": [ + { + "value": "Blocks.NETHERRACK" + } + ] + } +} \ No newline at end of file diff --git a/elements/NetherrackArmorBodyRecipe.mod.json b/elements/NetherrackArmorBodyRecipe.mod.json new file mode 100644 index 0000000..e33122f --- /dev/null +++ b/elements/NetherrackArmorBodyRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherrackArmor.body" + }, + "name": "netherrack_armor_body_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherrackArmorBootsRecipe.mod.json b/elements/NetherrackArmorBootsRecipe.mod.json new file mode 100644 index 0000000..8cc668c --- /dev/null +++ b/elements/NetherrackArmorBootsRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherrackArmor.boots" + }, + "name": "netherrack_armor_boots_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherrackArmorHelmetRecipe.mod.json b/elements/NetherrackArmorHelmetRecipe.mod.json new file mode 100644 index 0000000..aade2a1 --- /dev/null +++ b/elements/NetherrackArmorHelmetRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherrackArmor.helmet" + }, + "name": "netherrack_armor_helmet_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherrackArmorLeggingsRecipe.mod.json b/elements/NetherrackArmorLeggingsRecipe.mod.json new file mode 100644 index 0000000..d2be2c2 --- /dev/null +++ b/elements/NetherrackArmorLeggingsRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherrackArmor.legs" + }, + "name": "netherrack_armor_leggings_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherrackAxe.mod.json b/elements/NetherrackAxe.mod.json new file mode 100644 index 0000000..efeb275 --- /dev/null +++ b/elements/NetherrackAxe.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Axe", + "renderType": 0, + "blockingRenderType": 0, + "texture": "netherrack_axe", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Netherrack Axe", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 1, + "efficiency": 4.0, + "attackSpeed": 1.0, + "enchantability": 7, + "damageVsEntity": 1.0, + "usageCount": 95, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.NETHERRACK" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/NetherrackAxeRecipe.mod.json b/elements/NetherrackAxeRecipe.mod.json new file mode 100644 index 0000000..4029d64 --- /dev/null +++ b/elements/NetherrackAxeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherrackAxe" + }, + "name": "netherrack_axe_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherrackHoe.mod.json b/elements/NetherrackHoe.mod.json new file mode 100644 index 0000000..b4b8330 --- /dev/null +++ b/elements/NetherrackHoe.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Hoe", + "renderType": 0, + "blockingRenderType": 0, + "texture": "netherrack_hoe", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Netherrack Hoe", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 1, + "efficiency": 4.0, + "attackSpeed": 1.0, + "enchantability": 7, + "damageVsEntity": 1.0, + "usageCount": 95, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.NETHERRACK" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/NetherrackHoeRecipe.mod.json b/elements/NetherrackHoeRecipe.mod.json new file mode 100644 index 0000000..51351e6 --- /dev/null +++ b/elements/NetherrackHoeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherrackHoe" + }, + "name": "netherrack_hoe_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherrackPickaxe.mod.json b/elements/NetherrackPickaxe.mod.json new file mode 100644 index 0000000..e102bd6 --- /dev/null +++ b/elements/NetherrackPickaxe.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Pickaxe", + "renderType": 0, + "blockingRenderType": 0, + "texture": "netherrack_pickaxe", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Netherrack Pickaxe", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 1, + "efficiency": 4.0, + "attackSpeed": 1.0, + "enchantability": 7, + "damageVsEntity": 1.0, + "usageCount": 95, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.NETHERRACK" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/NetherrackPickaxeRecipe.mod.json b/elements/NetherrackPickaxeRecipe.mod.json new file mode 100644 index 0000000..558ba9f --- /dev/null +++ b/elements/NetherrackPickaxeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherrackPickaxe" + }, + "name": "netherrack_pickaxe_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherrackShovel.mod.json b/elements/NetherrackShovel.mod.json new file mode 100644 index 0000000..5f5eb15 --- /dev/null +++ b/elements/NetherrackShovel.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Spade", + "renderType": 0, + "blockingRenderType": 0, + "texture": "netherrack_shovel", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Netherrack Shovel", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 1, + "efficiency": 4.0, + "attackSpeed": 1.0, + "enchantability": 7, + "damageVsEntity": 1.0, + "usageCount": 95, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.NETHERRACK" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/NetherrackShovelRecipe.mod.json b/elements/NetherrackShovelRecipe.mod.json new file mode 100644 index 0000000..067cad3 --- /dev/null +++ b/elements/NetherrackShovelRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherrackShovel" + }, + "name": "netherrack_shovel_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/NetherrackSword.mod.json b/elements/NetherrackSword.mod.json new file mode 100644 index 0000000..ab11728 --- /dev/null +++ b/elements/NetherrackSword.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Sword", + "renderType": 0, + "blockingRenderType": 0, + "texture": "netherrack_sword", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Netherrack Sword", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "COMBAT" + }, + "harvestLevel": 1, + "efficiency": 4.0, + "attackSpeed": 1.0, + "enchantability": 7, + "damageVsEntity": 1.0, + "usageCount": 95, + "blocksAffected": [], + "repairItems": [ + { + "value": "Blocks.NETHERRACK" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/NetherrackSwordRecipe.mod.json b/elements/NetherrackSwordRecipe.mod.json new file mode 100644 index 0000000..139d9f5 --- /dev/null +++ b/elements/NetherrackSwordRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.NETHERRACK" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:NetherrackSword" + }, + "name": "netherrack_sword_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/OpenCraftingGUI.mod.json b/elements/OpenCraftingGUI.mod.json new file mode 100644 index 0000000..187414c --- /dev/null +++ b/elements/OpenCraftingGUI.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerCropGUI" + } +} \ No newline at end of file diff --git a/elements/PlaceCraftingTable.mod.json b/elements/PlaceCraftingTable.mod.json new file mode 100644 index 0000000..17b8e6a --- /dev/null +++ b/elements/PlaceCraftingTable.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerNONEOUTLINE1NONEOUTLINE1NONEOUTLINE1Blocks.CRAFTING_TABLENONEOUTLINE1NONEOUTLINE1NONEOUTLINE1Blocks.CRAFTING_TABLENONEOUTLINE1NONEOUTLINE1NONEOUTLINE1NONEOUTLINE1NONEOUTLINE1NONEOUTLINE1portabletagNONEOUTLINE1NONEOUTLINE1NONEOUTLINE1" + } +} \ No newline at end of file diff --git a/elements/PortableCraftingTable.mod.json b/elements/PortableCraftingTable.mod.json new file mode 100644 index 0000000..ba00717 --- /dev/null +++ b/elements/PortableCraftingTable.mod.json @@ -0,0 +1,56 @@ +{ + "_fv": 60, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "netherstick", + "customModelName": "Normal", + "customProperties": {}, + "states": [], + "name": "Portable Crafting Table", + "rarity": "COMMON", + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInformation": { + "fixedValue": [] + }, + "glowCondition": { + "fixedValue": false + }, + "guiBoundTo": "CraftingStickGUI", + "inventorySize": 10, + "inventoryStackSize": 64, + "onRightClickedInAir": { + "name": "OpenCraftingGUI" + }, + "enableRanged": false, + "shootConstantly": false, + "projectile": { + "value": "Arrow" + }, + "isFood": false, + "nutritionalValue": 0, + "saturation": 0.30000001192092896, + "eatResultItem": { + "value": "" + }, + "isMeat": false, + "isAlwaysEdible": false, + "animation": "eat" + } +} \ No newline at end of file diff --git a/elements/QuarzAxe.mod.json b/elements/QuarzAxe.mod.json new file mode 100644 index 0000000..7fa40d1 --- /dev/null +++ b/elements/QuarzAxe.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Axe", + "renderType": 0, + "blockingRenderType": 0, + "texture": "quarz_axe", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Quarz Axe", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 2, + "efficiency": 6.0, + "attackSpeed": 1.0, + "enchantability": 14, + "damageVsEntity": 2.0, + "usageCount": 250, + "blocksAffected": [], + "repairItems": [ + { + "value": "Items.QUARTZ" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/QuarzAxeRecipe.mod.json b/elements/QuarzAxeRecipe.mod.json new file mode 100644 index 0000000..d243d10 --- /dev/null +++ b/elements/QuarzAxeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:QuarzAxe" + }, + "name": "quarz_axe_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/QuarzBlock.mod.json b/elements/QuarzBlock.mod.json new file mode 100644 index 0000000..3248ffb --- /dev/null +++ b/elements/QuarzBlock.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + } + ], + "recipeReturnStack": { + "value": "Blocks.IRON_BLOCK" + }, + "name": "quarz_block", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/QuarzHoe.mod.json b/elements/QuarzHoe.mod.json new file mode 100644 index 0000000..174be99 --- /dev/null +++ b/elements/QuarzHoe.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Hoe", + "renderType": 0, + "blockingRenderType": 0, + "texture": "quarz_hoe", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Quarz Hoe", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 2, + "efficiency": 6.0, + "attackSpeed": 1.0, + "enchantability": 14, + "damageVsEntity": 2.0, + "usageCount": 250, + "blocksAffected": [], + "repairItems": [ + { + "value": "Items.QUARTZ" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/QuarzHoeRecipe.mod.json b/elements/QuarzHoeRecipe.mod.json new file mode 100644 index 0000000..ae001e6 --- /dev/null +++ b/elements/QuarzHoeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:QuarzHoe" + }, + "name": "quarz_hoe_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/QuarzPickaxe.mod.json b/elements/QuarzPickaxe.mod.json new file mode 100644 index 0000000..1e5053b --- /dev/null +++ b/elements/QuarzPickaxe.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Pickaxe", + "renderType": 0, + "blockingRenderType": 0, + "texture": "quarz_pickaxe", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Quarz Pickaxe", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 2, + "efficiency": 6.0, + "attackSpeed": 1.0, + "enchantability": 14, + "damageVsEntity": 2.0, + "usageCount": 250, + "blocksAffected": [], + "repairItems": [ + { + "value": "Items.QUARTZ" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/QuarzPickaxeRecipe.mod.json b/elements/QuarzPickaxeRecipe.mod.json new file mode 100644 index 0000000..1fedf9a --- /dev/null +++ b/elements/QuarzPickaxeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:QuarzPickaxe" + }, + "name": "quarz_pickaxe_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/QuarzShovel.mod.json b/elements/QuarzShovel.mod.json new file mode 100644 index 0000000..0c71cb0 --- /dev/null +++ b/elements/QuarzShovel.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Spade", + "renderType": 0, + "blockingRenderType": 0, + "texture": "quarz_shovel", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Quarz Shovel", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "TOOLS" + }, + "harvestLevel": 2, + "efficiency": 6.0, + "attackSpeed": 1.0, + "enchantability": 14, + "damageVsEntity": 2.0, + "usageCount": 250, + "blocksAffected": [], + "repairItems": [ + { + "value": "Items.QUARTZ" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/QuarzShovelRecipe.mod.json b/elements/QuarzShovelRecipe.mod.json new file mode 100644 index 0000000..0a51ea4 --- /dev/null +++ b/elements/QuarzShovelRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:QuarzShovel" + }, + "name": "quarz_shovel_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/QuarzSword.mod.json b/elements/QuarzSword.mod.json new file mode 100644 index 0000000..38a2627 --- /dev/null +++ b/elements/QuarzSword.mod.json @@ -0,0 +1,34 @@ +{ + "_fv": 60, + "_type": "tool", + "definition": { + "toolType": "Sword", + "renderType": 0, + "blockingRenderType": 0, + "texture": "quarz_sword", + "customModelName": "Normal", + "blockingModelName": "Normal blocking", + "name": "Quarz Sword", + "specialInformation": { + "fixedValue": [] + }, + "creativeTab": { + "value": "COMBAT" + }, + "harvestLevel": 2, + "efficiency": 6.0, + "attackSpeed": 1.0, + "enchantability": 14, + "damageVsEntity": 2.0, + "usageCount": 250, + "blocksAffected": [], + "repairItems": [ + { + "value": "Items.QUARTZ" + } + ], + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false + } +} \ No newline at end of file diff --git a/elements/QuarzSwordRecipe.mod.json b/elements/QuarzSwordRecipe.mod.json new file mode 100644 index 0000000..3c56442 --- /dev/null +++ b/elements/QuarzSwordRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Items.QUARTZ" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "TAG:forge:tag_stick" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:QuarzSword" + }, + "name": "quarz_sword_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/ShulkerBoxRecipe.mod.json b/elements/ShulkerBoxRecipe.mod.json new file mode 100644 index 0000000..adf9d1f --- /dev/null +++ b/elements/ShulkerBoxRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Blocks.HOPPER" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.CHEST" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.HOPPER" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "Blocks.BLACK_SHULKER_BOX" + }, + "name": "shulker_box_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/SpawnerBlaze.mod.json b/elements/SpawnerBlaze.mod.json new file mode 100644 index 0000000..6f39233 --- /dev/null +++ b/elements/SpawnerBlaze.mod.json @@ -0,0 +1,129 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "monster_spawner", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "spawner: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Spawner Blaze", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "BUILDING_BLOCKS" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 100, + "tickRandomly": false, + "isReplaceable": false, + "canProvidePower": false, + "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" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": false, + "guiBoundTo": "", + "openGUIOnRightClick": false, + "inventorySize": 9, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "SpawnerBlazeUpdateTick" + }, + "generateFeature": false, + "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/SpawnerBlazeRecipe.mod.json b/elements/SpawnerBlazeRecipe.mod.json new file mode 100644 index 0000000..7535d67 --- /dev/null +++ b/elements/SpawnerBlazeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Items.GLOWSTONE_DUST" + }, + { + "value": "" + }, + { + "value": "Items.GLOWSTONE_DUST" + }, + { + "value": "Blocks.TORCH" + }, + { + "value": "Items.GLOWSTONE_DUST" + }, + { + "value": "" + }, + { + "value": "Items.GLOWSTONE_DUST" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:SpawnerBlaze" + }, + "name": "spawner_blaze_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/SpawnerBlazeUpdateTick.mod.json b/elements/SpawnerBlazeUpdateTick.mod.json new file mode 100644 index 0000000..c739a7f --- /dev/null +++ b/elements/SpawnerBlazeUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerEQCUSTOM:SpawnersActiveTRUEEntityBlazeADD1" + } +} \ No newline at end of file diff --git a/elements/SpawnerCreeper.mod.json b/elements/SpawnerCreeper.mod.json new file mode 100644 index 0000000..3e9920e --- /dev/null +++ b/elements/SpawnerCreeper.mod.json @@ -0,0 +1,129 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "monster_spawner", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "spawner: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Spawner Creeper", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "BUILDING_BLOCKS" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 100, + "tickRandomly": false, + "isReplaceable": false, + "canProvidePower": false, + "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" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": false, + "guiBoundTo": "", + "openGUIOnRightClick": false, + "inventorySize": 9, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "SpawnerCreeperUpdateTick" + }, + "generateFeature": false, + "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/SpawnerCreeperRecipe.mod.json b/elements/SpawnerCreeperRecipe.mod.json new file mode 100644 index 0000000..1339e78 --- /dev/null +++ b/elements/SpawnerCreeperRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.PAPER" + }, + { + "value": "Items.GUNPOWDER" + }, + { + "value": "Items.PAPER" + }, + { + "value": "Items.GUNPOWDER" + }, + { + "value": "Items.PAPER" + }, + { + "value": "Items.GUNPOWDER" + }, + { + "value": "Items.PAPER" + }, + { + "value": "Items.GUNPOWDER" + }, + { + "value": "Items.PAPER" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:SpawnerCreeper" + }, + "name": "spawner_creeper_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/SpawnerCreeperUpdateTick.mod.json b/elements/SpawnerCreeperUpdateTick.mod.json new file mode 100644 index 0000000..aaf3cbd --- /dev/null +++ b/elements/SpawnerCreeperUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerEQCUSTOM:SpawnersActiveTRUEEntityCreeperADD1" + } +} \ No newline at end of file diff --git a/elements/SpawnerEvoker.mod.json b/elements/SpawnerEvoker.mod.json new file mode 100644 index 0000000..fcc22a4 --- /dev/null +++ b/elements/SpawnerEvoker.mod.json @@ -0,0 +1,129 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "monster_spawner", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "spawner: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Spawner Evoker", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "BUILDING_BLOCKS" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 100, + "tickRandomly": false, + "isReplaceable": false, + "canProvidePower": false, + "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" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": false, + "guiBoundTo": "", + "openGUIOnRightClick": false, + "inventorySize": 9, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "SpawnerEvokerUpdateTick" + }, + "generateFeature": false, + "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/SpawnerEvokerRecipe.mod.json b/elements/SpawnerEvokerRecipe.mod.json new file mode 100644 index 0000000..adfc5fe --- /dev/null +++ b/elements/SpawnerEvokerRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Items.GOLD_INGOT" + }, + { + "value": "" + }, + { + "value": "Items.GOLD_INGOT" + }, + { + "value": "Items.EMERALD" + }, + { + "value": "Items.GOLD_INGOT" + }, + { + "value": "" + }, + { + "value": "Items.GOLD_NUGGET" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:SpawnerEvoker" + }, + "name": "spawner_evoker_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/SpawnerEvokerUpdateTick.mod.json b/elements/SpawnerEvokerUpdateTick.mod.json new file mode 100644 index 0000000..31802c5 --- /dev/null +++ b/elements/SpawnerEvokerUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerEQCUSTOM:SpawnersActiveTRUEEntityEvokerADD1" + } +} \ No newline at end of file diff --git a/elements/SpawnerGhasRecipe.mod.json b/elements/SpawnerGhasRecipe.mod.json new file mode 100644 index 0000000..008ff19 --- /dev/null +++ b/elements/SpawnerGhasRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "Items.GHAST_TEAR" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "" + }, + { + "value": "Blocks.OBSIDIAN" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:SpawnerGhast" + }, + "name": "spawner_ghas_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/SpawnerGhast.mod.json b/elements/SpawnerGhast.mod.json new file mode 100644 index 0000000..7573df9 --- /dev/null +++ b/elements/SpawnerGhast.mod.json @@ -0,0 +1,129 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "monster_spawner", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "spawner: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Spawner Ghast", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "BUILDING_BLOCKS" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 100, + "tickRandomly": false, + "isReplaceable": false, + "canProvidePower": false, + "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" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": false, + "guiBoundTo": "", + "openGUIOnRightClick": false, + "inventorySize": 9, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "SpawnerGhastUpdateTick" + }, + "generateFeature": false, + "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/SpawnerGhastUpdateTick.mod.json b/elements/SpawnerGhastUpdateTick.mod.json new file mode 100644 index 0000000..bbfd328 --- /dev/null +++ b/elements/SpawnerGhastUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerEQCUSTOM:SpawnersActiveTRUEEntityGhastADD1" + } +} \ No newline at end of file diff --git a/elements/SpawnerPillager.mod.json b/elements/SpawnerPillager.mod.json new file mode 100644 index 0000000..09f971f --- /dev/null +++ b/elements/SpawnerPillager.mod.json @@ -0,0 +1,129 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "monster_spawner", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "spawner: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Spawner Pillager", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "BUILDING_BLOCKS" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 100, + "tickRandomly": false, + "isReplaceable": false, + "canProvidePower": false, + "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" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": false, + "guiBoundTo": "", + "openGUIOnRightClick": false, + "inventorySize": 9, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "SpawnerPillagerUpdateTick" + }, + "generateFeature": false, + "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/SpawnerPillagerRecipe.mod.json b/elements/SpawnerPillagerRecipe.mod.json new file mode 100644 index 0000000..960c50c --- /dev/null +++ b/elements/SpawnerPillagerRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Items.EMERALD" + }, + { + "value": "Items.CROSSBOW" + }, + { + "value": "Items.EMERALD" + }, + { + "value": "" + }, + { + "value": "Blocks.COBBLESTONE" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:SpawnerPillager" + }, + "name": "spawner_pillager_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/SpawnerPillagerUpdateTick.mod.json b/elements/SpawnerPillagerUpdateTick.mod.json new file mode 100644 index 0000000..0dcdd19 --- /dev/null +++ b/elements/SpawnerPillagerUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerEQCUSTOM:SpawnersActiveTRUEEntityPillagerADD1" + } +} \ No newline at end of file diff --git a/elements/SpawnerSlime.mod.json b/elements/SpawnerSlime.mod.json new file mode 100644 index 0000000..d8385f9 --- /dev/null +++ b/elements/SpawnerSlime.mod.json @@ -0,0 +1,129 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "monster_spawner", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "spawner: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Spawner Slime", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "BUILDING_BLOCKS" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 100, + "tickRandomly": false, + "isReplaceable": false, + "canProvidePower": false, + "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" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": false, + "guiBoundTo": "", + "openGUIOnRightClick": false, + "inventorySize": 9, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "SpawnerSlimeUpdateTick" + }, + "generateFeature": false, + "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/SpawnerSlimeRecipe.mod.json b/elements/SpawnerSlimeRecipe.mod.json new file mode 100644 index 0000000..4427ea2 --- /dev/null +++ b/elements/SpawnerSlimeRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "Blocks.KELP" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Blocks.LEAVES" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:SpawnerSlime" + }, + "name": "spawner_slime_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/SpawnerSlimeUpdateTick.mod.json b/elements/SpawnerSlimeUpdateTick.mod.json new file mode 100644 index 0000000..8dc317b --- /dev/null +++ b/elements/SpawnerSlimeUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerEQCUSTOM:SpawnersActiveTRUEEntitySlimeADD1" + } +} \ No newline at end of file diff --git a/elements/SpawnerWitherSkelett.mod.json b/elements/SpawnerWitherSkelett.mod.json new file mode 100644 index 0000000..5f7e15f --- /dev/null +++ b/elements/SpawnerWitherSkelett.mod.json @@ -0,0 +1,129 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "monster_spawner", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "spawner: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Spawner Wither Skeleton", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "BUILDING_BLOCKS" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 100, + "tickRandomly": false, + "isReplaceable": false, + "canProvidePower": false, + "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" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": false, + "guiBoundTo": "", + "openGUIOnRightClick": false, + "inventorySize": 9, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "SpawnerWitherSkelettUpdateTick" + }, + "generateFeature": false, + "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/SpawnerWitherSkelettUpdateTick.mod.json b/elements/SpawnerWitherSkelettUpdateTick.mod.json new file mode 100644 index 0000000..8edd228 --- /dev/null +++ b/elements/SpawnerWitherSkelettUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerEQCUSTOM:SpawnersActiveTRUEEntityWitherSkeletonADD1" + } +} \ No newline at end of file diff --git a/elements/SpawnersActive.mod.json b/elements/SpawnersActive.mod.json new file mode 100644 index 0000000..6f7f92d --- /dev/null +++ b/elements/SpawnersActive.mod.json @@ -0,0 +1,12 @@ +{ + "_fv": 60, + "_type": "gamerule", + "definition": { + "type": "Logic", + "displayName": "Spawners active", + "description": "Sets if custom spawners are active or inactive", + "category": "SPAWNING", + "defaultValueLogic": false, + "defaultValueNumber": 0 + } +} \ No newline at end of file diff --git a/elements/TeleportSetGUI.mod.json b/elements/TeleportSetGUI.mod.json new file mode 100644 index 0000000..b426af9 --- /dev/null +++ b/elements/TeleportSetGUI.mod.json @@ -0,0 +1,60 @@ +{ + "_fv": 60, + "_type": "gui", + "definition": { + "type": 0, + "width": 176, + "height": 166, + "inventoryOffsetX": 0, + "inventoryOffsetY": 0, + "renderBgLayer": true, + "doesPauseGame": false, + "components": [ + { + "type": "textfield", + "data": { + "placeholder": "Name", + "name": "TeleportName", + "width": 120, + "height": 20, + "x": 153, + "y": 98 + } + }, + { + "type": "button", + "data": { + "name": "button_set", + "text": "Set", + "isUndecorated": false, + "width": 40, + "height": 20, + "x": 192, + "y": 143 + } + }, + { + "type": "label", + "data": { + "name": "label_set_teleport", + "text": { + "fixedValue": "Set Teleport" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 182, + "y": 52 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/TeleporterGUI.mod.json b/elements/TeleporterGUI.mod.json new file mode 100644 index 0000000..070061e --- /dev/null +++ b/elements/TeleporterGUI.mod.json @@ -0,0 +1,91 @@ +{ + "_fv": 60, + "_type": "gui", + "definition": { + "type": 0, + "width": 176, + "height": 166, + "inventoryOffsetX": 0, + "inventoryOffsetY": 0, + "renderBgLayer": true, + "doesPauseGame": false, + "components": [ + { + "type": "label", + "data": { + "name": "label_teleport_1", + "text": { + "fixedValue": "Teleport 1" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 62 + } + }, + { + "type": "label", + "data": { + "name": "label_teleport_2", + "text": { + "fixedValue": "Teleport 2" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 89 + } + }, + { + "type": "label", + "data": { + "name": "label_easyteleport", + "text": { + "fixedValue": "EasyTeleport" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 44 + } + }, + { + "type": "button", + "data": { + "name": "button_teleport", + "text": "Teleport", + "isUndecorated": false, + "width": 65, + "height": 20, + "x": 204, + "y": 62 + } + }, + { + "type": "button", + "data": { + "name": "button_teleport1", + "text": "Teleport", + "isUndecorated": false, + "width": 65, + "height": 20, + "x": 204, + "y": 89 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/TeleporterPlate.mod.json b/elements/TeleporterPlate.mod.json new file mode 100644 index 0000000..a7e2a5c --- /dev/null +++ b/elements/TeleporterPlate.mod.json @@ -0,0 +1,129 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "plate", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "teleporter: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Teleporter Plate", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "TRANSPORTATION" + }, + "destroyTool": "Not specified", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": false, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ANVIL" + }, + "tickRate": 10, + "tickRandomly": false, + "isReplaceable": false, + "canProvidePower": false, + "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": "ANVIL" + }, + "luminance": 0, + "unbreakable": false, + "breakHarvestLevel": 1, + "isBonemealable": false, + "hasInventory": true, + "guiBoundTo": "", + "openGUIOnRightClick": false, + "inventorySize": 0, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [], + "inventoryInSlotIDs": [], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onRightClicked": { + "name": "TeleporterProc" + }, + "generateFeature": false, + "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/TeleporterProc.mod.json b/elements/TeleporterProc.mod.json new file mode 100644 index 0000000..835fa66 --- /dev/null +++ b/elements/TeleporterProc.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerItems.ENDER_EYEEQisBlockLinkedFALSEEQplayerHasStoredTeleporterTRUEANDEQplayerTeleporterPosXANDEQplayerTeleporterPosYEQplayerTeleporterPosZYou can't link the portal to it's selfFALSEblockTeleporterPosXplayerTeleporterPosXblockTeleporterPosYplayerTeleporterPosYblockTeleporterPosZplayerTeleporterPosZblockTeleporterPosXblockTeleporterPosXblockTeleporterPosYblockTeleporterPosZblockTeleporterPosYblockTeleporterPosXblockTeleporterPosYblockTeleporterPosZblockTeleporterPosZblockTeleporterPosXblockTeleporterPosYblockTeleporterPosZisBlockLinkedTRUEisBlockLinkedblockTeleporterPosXblockTeleporterPosYblockTeleporterPosZTRUEplayerHasStoredTeleporterFALSEThe teleporter has been linkedFALSEplayerTeleporterPosXplayerTeleporterPosYplayerTeleporterPosZplayerHasStoredTeleporterTRUECurrent Portal Location: X: playerTeleporterPosXY: playerTeleporterPosYZ: playerTeleporterPosZFALSEEQisBlockLinkedTRUEADDblockTeleporterPosX0.5blockTeleporterPosYADDblockTeleporterPosZ0.5You have been teleportedFALSE" + } +} \ No newline at end of file diff --git a/elements/TreeCrop.mod.json b/elements/TreeCrop.mod.json new file mode 100644 index 0000000..3416453 --- /dev/null +++ b/elements/TreeCrop.mod.json @@ -0,0 +1,157 @@ +{ + "_fv": 60, + "_type": "block", + "definition": { + "texture": "croptexture", + "textureTop": "", + "textureLeft": "", + "textureFront": "", + "textureRight": "", + "textureBack": "", + "renderType": 2, + "customModelName": "cubik_model: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": 16.0, + "Mz": 16.0, + "subtract": false + } + ], + "name": "Tree Crop", + "specialInformation": { + "fixedValue": [] + }, + "hardness": 1.0, + "resistance": 10.0, + "hasGravity": false, + "isWaterloggable": false, + "creativeTab": { + "value": "CUSTOM:EasySurvival" + }, + "destroyTool": "pickaxe", + "customDrop": { + "value": "" + }, + "dropAmount": 1, + "useLootTableForDrops": false, + "requiresCorrectTool": true, + "enchantPowerBonus": 0.0, + "plantsGrowOn": false, + "canRedstoneConnect": false, + "lightOpacity": 0, + "material": { + "value": "ROCK" + }, + "tickRate": 25, + "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": "TreeCropGUI", + "openGUIOnRightClick": true, + "inventorySize": 8, + "inventoryStackSize": 64, + "inventoryDropWhenDestroyed": true, + "inventoryComparatorPower": true, + "inventoryOutSlotIDs": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "inventoryInSlotIDs": [ + 0 + ], + "hasEnergyStorage": false, + "energyInitial": 0, + "energyCapacity": 400000, + "energyMaxReceive": 200, + "energyMaxExtract": 200, + "isFluidTank": false, + "fluidCapacity": 8000, + "fluidRestrictions": [], + "onTickUpdate": { + "name": "TreeCropUpdateTick" + }, + "generateFeature": false, + "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/TreeCropGUI.mod.json b/elements/TreeCropGUI.mod.json new file mode 100644 index 0000000..fcee120 --- /dev/null +++ b/elements/TreeCropGUI.mod.json @@ -0,0 +1,139 @@ +{ + "_fv": 60, + "_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, + "x": 132, + "y": 83 + } + }, + { + "type": "outputslot", + "data": { + "id": 1, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 168, + "y": 83 + } + }, + { + "type": "outputslot", + "data": { + "id": 2, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 186, + "y": 83 + } + }, + { + "type": "outputslot", + "data": { + "id": 3, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 204, + "y": 83 + } + }, + { + "type": "outputslot", + "data": { + "id": 4, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 222, + "y": 83 + } + }, + { + "type": "outputslot", + "data": { + "id": 5, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 240, + "y": 83 + } + }, + { + "type": "outputslot", + "data": { + "id": 6, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 258, + "y": 83 + } + }, + { + "type": "outputslot", + "data": { + "id": 7, + "disablePickup": { + "fixedValue": false + }, + "dropItemsWhenNotBound": true, + "x": 276, + "y": 83 + } + }, + { + "type": "label", + "data": { + "name": "label_treecrop", + "text": { + "fixedValue": "TreeCrop" + }, + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "x": 132, + "y": 47 + } + } + ], + "gridSettings": { + "sx": 18, + "sy": 18, + "ox": 11, + "oy": 15, + "snapOnGrid": false + } + } +} \ No newline at end of file diff --git a/elements/TreeCropRecipe.mod.json b/elements/TreeCropRecipe.mod.json new file mode 100644 index 0000000..24935cf --- /dev/null +++ b/elements/TreeCropRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.GLASS" + }, + { + "value": "Blocks.GLASS" + }, + { + "value": "Blocks.GLASS" + }, + { + "value": "Blocks.DIRT" + }, + { + "value": "TAG:minecraft:tagsaplings" + }, + { + "value": "Blocks.DIRT" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + }, + { + "value": "Blocks.PLANKS" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:TreeCrop" + }, + "name": "tree_crop_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/TreeCropUpdateTick.mod.json b/elements/TreeCropUpdateTick.mod.json new file mode 100644 index 0000000..5b8d9fe --- /dev/null +++ b/elements/TreeCropUpdateTick.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 60, + "_type": "procedure", + "definition": { + "procedurexml": "Slotnono_ext_trigger0Blocks.SAPLING#0local:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.LOG#0local:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.SAPLING#1local:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.LOG#1local:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.SAPLING#2local:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.LOG#2local:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.SAPLING#3local:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.LOG#3local:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.SAPLING#4local:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.LOG2#0local:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.SAPLING#5local:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.LOG2#1local:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.BAMBOOlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.BAMBOOlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.CACTUSlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.CACTUSlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.REEDSlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.REEDSlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.CHERRY_SAPLINGlocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.CHERRY_LOGlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno10Blocks.MANGROVE_PROPAGULElocal:Slotno17LTlocal:Slotno64ADDlocal:Slotno1Blocks.MANGROVE_LOGlocal:SlotnoBREAKlocal:SlotnoADDlocal:Slotno1" + } +} \ No newline at end of file diff --git a/elements/Trident.mod.json b/elements/Trident.mod.json new file mode 100644 index 0000000..941dc14 --- /dev/null +++ b/elements/Trident.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.GHAST_TEAR" + }, + { + "value": "Items.GHAST_TEAR" + }, + { + "value": "Items.GHAST_TEAR" + }, + { + "value": "" + }, + { + "value": "Items.DIAMOND" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "Items.DIAMOND" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "Items.TRIDENT" + }, + "name": "trident", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/WitherSkelettonSpawnerRecipe.mod.json b/elements/WitherSkelettonSpawnerRecipe.mod.json new file mode 100644 index 0000000..a68d1be --- /dev/null +++ b/elements/WitherSkelettonSpawnerRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 60, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.SOUL_SAND" + }, + { + "value": "Blocks.SOUL_SAND" + }, + { + "value": "Blocks.SOUL_SAND" + }, + { + "value": "Blocks.SOUL_SAND" + }, + { + "value": "Items.BLAZE_ROD" + }, + { + "value": "Blocks.SOUL_SAND" + }, + { + "value": "Blocks.SOUL_SAND" + }, + { + "value": "Blocks.SOUL_SAND" + }, + { + "value": "Blocks.SOUL_SAND" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:SpawnerWitherSkelett" + }, + "name": "wither_skeletton_spawner_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..f237dcf --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..943f0cb Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..37aef8d --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +networkTimeout=10000 +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..65dcd68 --- /dev/null +++ b/gradlew @@ -0,0 +1,244 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/mcreator.gradle b/mcreator.gradle new file mode 100644 index 0000000..e69de29 diff --git a/models/anvil.json b/models/anvil.json new file mode 100644 index 0000000..da35a2c --- /dev/null +++ b/models/anvil.json @@ -0,0 +1,61 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "texture": "blocks/texture" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 2, 0, 2 ], + "to": [ 14, 3, 14 ], + "faces": { + "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture" }, + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture" }, + "north": { "uv": [ 2, 13, 14, 16 ], "texture": "#texture" }, + "south": { "uv": [ 2, 13, 14, 16 ], "texture": "#texture" }, + "west": { "uv": [ 2, 13, 14, 16 ], "texture": "#texture" }, + "east": { "uv": [ 2, 13, 14, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box2", + "from": [ 3, 3, 3 ], + "to": [ 13, 3.5, 13 ], + "faces": { + "down": { "uv": [ 3, 3, 13, 13 ], "texture": "#texture" }, + "up": { "uv": [ 3, 3, 13, 13 ], "texture": "#texture" }, + "north": { "uv": [ 3, 12.5, 13, 13 ], "texture": "#texture" }, + "south": { "uv": [ 3, 12.5, 13, 13 ], "texture": "#texture" }, + "west": { "uv": [ 3, 12.5, 13, 13 ], "texture": "#texture" }, + "east": { "uv": [ 3, 12.5, 13, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "Box3", + "from": [ 5, 3.5, 6 ], + "to": [ 11, 9, 10 ], + "faces": { + "down": { "uv": [ 5, 6, 11, 10 ], "texture": "#texture" }, + "up": { "uv": [ 5, 6, 11, 10 ], "texture": "#texture" }, + "north": { "uv": [ 5, 7, 11, 12.5 ], "texture": "#texture" }, + "south": { "uv": [ 5, 7, 11, 12.5 ], "texture": "#texture" }, + "west": { "uv": [ 6, 7, 10, 12.5 ], "texture": "#texture" }, + "east": { "uv": [ 6, 7, 10, 12.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box4", + "from": [ 0, 9, 4 ], + "to": [ 16, 14, 12 ], + "faces": { + "down": { "uv": [ 0, 4, 16, 12 ], "texture": "#texture" }, + "up": { "uv": [ 0, 4, 16, 12 ], "texture": "#texture" }, + "north": { "uv": [ 0, 2, 16, 7 ], "texture": "#texture" }, + "south": { "uv": [ 0, 2, 16, 7 ], "texture": "#texture" }, + "west": { "uv": [ 4, 2, 12, 7 ], "texture": "#texture" }, + "east": { "uv": [ 4, 2, 12, 7 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/models/anvil.json.textures b/models/anvil.json.textures new file mode 100644 index 0000000..dad3556 --- /dev/null +++ b/models/anvil.json.textures @@ -0,0 +1,10 @@ +{ + "mappings": { + "default": { + "map": { + "texture": "anviltexture" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/barrelintake.json b/models/barrelintake.json new file mode 100644 index 0000000..4ddd8db --- /dev/null +++ b/models/barrelintake.json @@ -0,0 +1,128 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "wood": "blocks/wood", + "barrel": "barrel", + "barreltop": "wood" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 1, 0 ], + "to": [ 16, 15, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#barreltop" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#barreltop" }, + "north": { "uv": [ 0, 1, 16, 15 ], "texture": "#barrel" }, + "south": { "uv": [ 0, 1, 16, 15 ], "texture": "#barrel" }, + "west": { "uv": [ 0, 1, 16, 15 ], "texture": "#barrel" }, + "east": { "uv": [ 0, 1, 16, 15 ], "texture": "#barrel" } + } + }, + { + "__comment": "Box2", + "from": [ 0, 15, 0 ], + "to": [ 16, 16, 1 ], + "faces": { + "down": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "up": { "uv": [ 0, 0, 16, 1 ], "texture": "#wood" }, + "north": { "uv": [ 0, 0, 16, 1 ], "texture": "#wood" }, + "south": { "uv": [ 0, 0, 16, 1 ], "texture": "#wood" }, + "west": { "uv": [ 0, 0, 1, 1 ], "texture": "#wood" }, + "east": { "uv": [ 15, 0, 16, 1 ], "texture": "#wood" } + } + }, + { + "__comment": "Box2", + "from": [ 0, 15, 15 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "up": { "uv": [ 0, 0, 16, 1 ], "texture": "#wood" }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "west": { "uv": [ 0, 15, 1, 16 ], "texture": "#wood" }, + "east": { "uv": [ 15, 15, 16, 16 ], "texture": "#wood" } + } + }, + { + "__comment": "Box2", + "from": [ 0, 0, 0 ], + "to": [ 16, 1, 1 ], + "faces": { + "down": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "up": { "uv": [ 0, 0, 16, 1 ], "texture": "#wood" }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "west": { "uv": [ 0, 15, 1, 16 ], "texture": "#wood" }, + "east": { "uv": [ 15, 15, 16, 16 ], "texture": "#wood" } + } + }, + { + "__comment": "Box2", + "from": [ 0, 0, 15 ], + "to": [ 16, 1, 16 ], + "faces": { + "down": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "up": { "uv": [ 0, 0, 16, 1 ], "texture": "#wood" }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#wood" }, + "west": { "uv": [ 0, 15, 1, 16 ], "texture": "#wood" }, + "east": { "uv": [ 15, 15, 16, 16 ], "texture": "#wood" } + } + }, + { + "__comment": "Box13", + "from": [ 0, 0, 1 ], + "to": [ 1, 1, 15 ], + "faces": { + "down": { "uv": [ 0, 1, 1, 15 ], "texture": "#wood" }, + "up": { "uv": [ 0, 1, 1, 15 ], "texture": "#wood" }, + "north": { "uv": [ 15, 15, 16, 16 ], "texture": "#wood" }, + "south": { "uv": [ 0, 15, 1, 16 ], "texture": "#wood" }, + "west": { "uv": [ 1, 15, 15, 16 ], "texture": "#wood" }, + "east": { "uv": [ 1, 15, 15, 16 ], "texture": "#wood" } + } + }, + { + "__comment": "Box14", + "from": [ 15, 0, 1 ], + "to": [ 16, 1, 15 ], + "faces": { + "down": { "uv": [ 15, 1, 16, 15 ], "texture": "#wood" }, + "up": { "uv": [ 15, 1, 16, 15 ], "texture": "#wood" }, + "north": { "uv": [ 0, 15, 1, 16 ], "texture": "#wood" }, + "south": { "uv": [ 15, 15, 16, 16 ], "texture": "#wood" }, + "west": { "uv": [ 1, 15, 15, 16 ], "texture": "#wood" }, + "east": { "uv": [ 1, 15, 15, 16 ], "texture": "#wood" } + } + }, + { + "__comment": "Box15", + "from": [ 0, 15, 1 ], + "to": [ 1, 16, 15 ], + "faces": { + "down": { "uv": [ 0, 1, 1, 15 ], "texture": "#wood" }, + "up": { "uv": [ 0, 1, 1, 15 ], "texture": "#wood" }, + "north": { "uv": [ 15, 0, 16, 1 ], "texture": "#wood" }, + "south": { "uv": [ 0, 0, 1, 1 ], "texture": "#wood" }, + "west": { "uv": [ 1, 0, 15, 1 ], "texture": "#wood" }, + "east": { "uv": [ 1, 0, 15, 1 ], "texture": "#wood" } + } + }, + { + "__comment": "Box16", + "from": [ 15, 15, 1 ], + "to": [ 16, 16, 15 ], + "faces": { + "down": { "uv": [ 15, 1, 16, 15 ], "texture": "#wood" }, + "up": { "uv": [ 15, 1, 16, 15 ], "texture": "#wood" }, + "north": { "uv": [ 0, 0, 1, 1 ], "texture": "#wood" }, + "south": { "uv": [ 15, 0, 16, 1 ], "texture": "#wood" }, + "west": { "uv": [ 1, 0, 15, 1 ], "texture": "#wood" }, + "east": { "uv": [ 1, 0, 15, 1 ], "texture": "#wood" } + } + } + ] +} \ No newline at end of file diff --git a/models/barrelintake.json.textures b/models/barrelintake.json.textures new file mode 100644 index 0000000..7855208 --- /dev/null +++ b/models/barrelintake.json.textures @@ -0,0 +1,12 @@ +{ + "mappings": { + "default": { + "map": { + "barrel": "barrel", + "barreltop": "barreltop", + "wood": "wood" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/crafter.json b/models/crafter.json new file mode 100644 index 0000000..0744357 --- /dev/null +++ b/models/crafter.json @@ -0,0 +1,676 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "Box": "blocks/Box", + "Energy": "blocks/Energy", + "Bowl": "blocks/Bowl" + }, + "elements": [ + { + "__comment": "Box2", + "from": [ 0, 1, 0 ], + "to": [ 1, 15, 1 ], + "faces": { + "north": { "uv": [ 15, 1, 16, 15 ], "texture": "#Box", "cullface": "north" }, + "south": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box" }, + "west": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box", "cullface": "west" }, + "east": { "uv": [ 15, 1, 16, 15 ], "texture": "#Box" } + } + }, + { + "__comment": "Box2", + "from": [ 0, 1, 15 ], + "to": [ 1, 15, 16 ], + "faces": { + "north": { "uv": [ 15, 0, 16, 15 ], "texture": "#Box" }, + "south": { "uv": [ 0, 0, 1, 15 ], "texture": "#Box", "cullface": "south" }, + "west": { "uv": [ 0, 0, 1, 15 ], "texture": "#Box", "cullface": "west" }, + "east": { "uv": [ 15, 0, 16, 15 ], "texture": "#Box" } + } + }, + { + "__comment": "Box2", + "from": [ 15, 1, 0 ], + "to": [ 16, 15, 1 ], + "faces": { + "north": { "uv": [ 15, 0, 16, 15 ], "texture": "#Box", "cullface": "north" }, + "south": { "uv": [ 0, 0, 1, 15 ], "texture": "#Box" }, + "west": { "uv": [ 0, 0, 1, 15 ], "texture": "#Box" }, + "east": { "uv": [ 15, 0, 16, 15 ], "texture": "#Box", "cullface": "east" } + } + }, + { + "__comment": "Box2", + "from": [ 15, 1, 15 ], + "to": [ 16, 15, 16 ], + "faces": { + "north": { "uv": [ 15, 0, 16, 15 ], "texture": "#Box" }, + "south": { "uv": [ 0, 0, 1, 15 ], "texture": "#Box", "cullface": "south" }, + "west": { "uv": [ 0, 0, 1, 15 ], "texture": "#Box" }, + "east": { "uv": [ 15, 0, 16, 15 ], "texture": "#Box", "cullface": "east" } + } + }, + { + "__comment": "Box1", + "from": [ 0, 15, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#Box" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#Box", "cullface": "up" }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#Box", "cullface": "north" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#Box", "cullface": "south" }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#Box", "cullface": "west" }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#Box", "cullface": "east" } + } + }, + { + "__comment": "Box7", + "from": [ 7, 4.5, 7 ], + "to": [ 9, 5.5, 9 ], + "faces": { + "down": { "uv": [ 7, 7, 9, 9 ], "texture": "#Bowl" }, + "north": { "uv": [ 7, 10.5, 9, 11.5 ], "texture": "#Bowl" }, + "south": { "uv": [ 7, 10.5, 9, 11.5 ], "texture": "#Bowl" }, + "west": { "uv": [ 7, 10.5, 9, 11.5 ], "texture": "#Bowl" }, + "east": { "uv": [ 7, 10.5, 9, 11.5 ], "texture": "#Bowl" } + } + }, + { + "__comment": "Box7", + "from": [ 6.5, 5.5, 6.5 ], + "to": [ 9.5, 6.5, 9.5 ], + "faces": { + "down": { "uv": [ 7, 7.5, 9, 9.5 ], "texture": "#Bowl" }, + "north": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "south": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "west": { "uv": [ 6.5, 14, 8.5, 15 ], "texture": "#Bowl" }, + "east": { "uv": [ 7.5, 14, 9.5, 15 ], "texture": "#Bowl" } + } + }, + { + "__comment": "Box7", + "from": [ 6, 6.5, 6 ], + "to": [ 10, 7.5, 10 ], + "faces": { + "down": { "uv": [ 7, 7.5, 9, 9.5 ], "texture": "#Bowl" }, + "north": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "south": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "west": { "uv": [ 6.5, 14, 8.5, 15 ], "texture": "#Bowl" }, + "east": { "uv": [ 7.5, 14, 9.5, 15 ], "texture": "#Bowl" } + } + }, + { + "__comment": "Box7", + "from": [ 5.5, 7.5, 5.5 ], + "to": [ 10.5, 8.5, 10.5 ], + "faces": { + "down": { "uv": [ 7, 7.5, 9, 9.5 ], "texture": "#Bowl" }, + "up": { "uv": [ 7, 6.5, 9, 8.5 ], "texture": "#Bowl" }, + "north": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "south": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "west": { "uv": [ 6.5, 14, 8.5, 15 ], "texture": "#Bowl" }, + "east": { "uv": [ 7.5, 14, 9.5, 15 ], "texture": "#Bowl" } + } + }, + { + "__comment": "Box7", + "from": [ 6, 8.5, 6 ], + "to": [ 10, 9.5, 10 ], + "faces": { + "up": { "uv": [ 7, 6.5, 9, 8.5 ], "texture": "#Bowl" }, + "north": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "south": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "west": { "uv": [ 6.5, 14, 8.5, 15 ], "texture": "#Bowl" }, + "east": { "uv": [ 7.5, 14, 9.5, 15 ], "texture": "#Bowl" } + } + }, + { + "__comment": "Box7", + "from": [ 6.5, 9.5, 6.5 ], + "to": [ 9.5, 10.5, 9.5 ], + "faces": { + "up": { "uv": [ 7, 6.5, 9, 8.5 ], "texture": "#Bowl" }, + "north": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "south": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "west": { "uv": [ 6.5, 14, 8.5, 15 ], "texture": "#Bowl" }, + "east": { "uv": [ 7.5, 14, 9.5, 15 ], "texture": "#Bowl" } + } + }, + { + "__comment": "Box7", + "from": [ 7, 10.5, 7 ], + "to": [ 9, 11.5, 9 ], + "faces": { + "up": { "uv": [ 7, 6.5, 9, 8.5 ], "texture": "#Bowl" }, + "north": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "south": { "uv": [ 7, 14, 9, 15 ], "texture": "#Bowl" }, + "west": { "uv": [ 6.5, 14, 8.5, 15 ], "texture": "#Bowl" }, + "east": { "uv": [ 7.5, 14, 9.5, 15 ], "texture": "#Bowl" } + } + }, + { + "__comment": "Box14", + "from": [ 8.5, 3.5, 9 ], + "to": [ 9.5, 4.5, 10 ], + "faces": { + "down": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 270 }, + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 90 }, + "north": { "uv": [ 9.5, 4.5, 8.5, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 7.5, 4.5, 6.5, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 9.5, 2.5, 10 ], + "to": [ 10.5, 3.5, 11 ], + "faces": { + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 270 }, + "north": { "uv": [ 7.5, 4.5, 6.5, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 9.5, 4.5, 8.5, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 10.5, 1.5, 11 ], + "to": [ 11.5, 2.5, 12 ], + "faces": { + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 270 }, + "north": { "uv": [ 7.5, 4.5, 6.5, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 9.5, 4.5, 8.5, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 11.5, 0.5, 11.5 ], + "to": [ 12.5, 1.5, 12.5 ], + "faces": { + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 270 }, + "north": { "uv": [ 7.5, 4.5, 6.5, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 9.5, 4.5, 8.5, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 6, 3.5, 9 ], + "to": [ 7, 4.5, 10 ], + "faces": { + "down": { "uv": [ 9, 9, 10, 10 ], "texture": "#Energy", "rotation": 180 }, + "up": { "uv": [ 9, 6, 10, 7 ], "texture": "#Energy", "rotation": 180 }, + "north": { "uv": [ 7, 4.5, 6, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 10, 4.5, 9, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 5, 2.5, 10 ], + "to": [ 6, 3.5, 11 ], + "faces": { + "down": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 180 }, + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 180 }, + "north": { "uv": [ 7, 4.5, 6, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 10, 4.5, 9, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 4, 1.5, 11 ], + "to": [ 5, 2.5, 12 ], + "faces": { + "down": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 180 }, + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 180 }, + "north": { "uv": [ 7, 4.5, 6, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 10, 4.5, 9, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 3, 0.5, 11.5 ], + "to": [ 4, 1.5, 12.5 ], + "faces": { + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 180 }, + "north": { "uv": [ 7, 4.5, 6, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 10, 4.5, 9, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 6.5, 3.5, 6 ], + "to": [ 7.5, 4.5, 7 ], + "faces": { + "down": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 90 }, + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 270 }, + "north": { "uv": [ 7.5, 4.5, 6.5, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 9.5, 4.5, 8.5, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 5.5, 2.5, 5 ], + "to": [ 6.5, 3.5, 6 ], + "faces": { + "down": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 270 }, + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 90 }, + "north": { "uv": [ 9.5, 4.5, 8.5, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 7.5, 4.5, 6.5, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 4.5, 1.5, 4 ], + "to": [ 5.5, 2.5, 5 ], + "faces": { + "down": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 270 }, + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 90 }, + "north": { "uv": [ 9.5, 4.5, 8.5, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 7.5, 4.5, 6.5, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 3.5, 0.5, 3.5 ], + "to": [ 4.5, 1.5, 4.5 ], + "faces": { + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 90 }, + "north": { "uv": [ 9.5, 4.5, 8.5, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 7.5, 4.5, 6.5, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 9, 3.5, 6 ], + "to": [ 10, 4.5, 7 ], + "faces": { + "down": { "uv": [ 9, 9, 10, 10 ], "texture": "#Energy" }, + "up": { "uv": [ 9, 6, 10, 7 ], "texture": "#Energy" }, + "north": { "uv": [ 10, 4.5, 9, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 7, 4.5, 6, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 10, 2.5, 5 ], + "to": [ 11, 3.5, 6 ], + "faces": { + "down": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy" }, + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy" }, + "north": { "uv": [ 10, 4.5, 9, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 7, 4.5, 6, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 11, 1.5, 4 ], + "to": [ 12, 2.5, 5 ], + "faces": { + "down": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy" }, + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy" }, + "north": { "uv": [ 10, 4.5, 9, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 7, 4.5, 6, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 12, 0.5, 3.5 ], + "to": [ 13, 1.5, 4.5 ], + "faces": { + "up": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy" }, + "north": { "uv": [ 10, 4.5, 9, 3.5 ], "texture": "#Energy" }, + "south": { "uv": [ 7, 4.5, 6, 3.5 ], "texture": "#Energy" }, + "west": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy", "rotation": 180 }, + "east": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy", "rotation": 180 } + } + }, + { + "__comment": "Box14", + "from": [ 8.5, 11.5, 6 ], + "to": [ 9.5, 12.5, 7 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 90 }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 270 }, + "north": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 9.5, 12.5, 5 ], + "to": [ 10.5, 13.5, 6 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 270 }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 90 }, + "north": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 10.5, 13.5, 4 ], + "to": [ 11.5, 14.5, 5 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 270 }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 90 }, + "north": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 11.5, 14.5, 3.5 ], + "to": [ 12.5, 15.5, 4.5 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 270 }, + "north": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 6, 11.5, 6 ], + "to": [ 7, 12.5, 7 ], + "faces": { + "down": { "uv": [ 9, 6, 10, 7 ], "texture": "#Energy", "rotation": 180 }, + "up": { "uv": [ 9, 9, 10, 10 ], "texture": "#Energy", "rotation": 180 }, + "north": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 5, 12.5, 5 ], + "to": [ 6, 13.5, 6 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 180 }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 180 }, + "north": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 4, 13.5, 4 ], + "to": [ 5, 14.5, 5 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 180 }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 180 }, + "north": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 3, 14.5, 3.5 ], + "to": [ 4, 15.5, 4.5 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 180 }, + "north": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 6.5, 11.5, 9 ], + "to": [ 7.5, 12.5, 10 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 270 }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 90 }, + "north": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 5.5, 12.5, 10 ], + "to": [ 6.5, 13.5, 11 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 90 }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 270 }, + "north": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 4.5, 13.5, 11 ], + "to": [ 5.5, 14.5, 12 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 90 }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy", "rotation": 270 }, + "north": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 3.5, 14.5, 11.5 ], + "to": [ 4.5, 15.5, 12.5 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy", "rotation": 90 }, + "north": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 9, 11.5, 9 ], + "to": [ 10, 12.5, 10 ], + "faces": { + "down": { "uv": [ 9, 6, 10, 7 ], "texture": "#Energy" }, + "up": { "uv": [ 9, 9, 10, 10 ], "texture": "#Energy" }, + "north": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 10, 12.5, 10 ], + "to": [ 11, 13.5, 11 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy" }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy" }, + "north": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 11, 13.5, 11 ], + "to": [ 12, 14.5, 12 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy" }, + "up": { "uv": [ 9, 8.5, 10, 9.5 ], "texture": "#Energy" }, + "north": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box14", + "from": [ 12, 14.5, 11.5 ], + "to": [ 13, 15.5, 12.5 ], + "faces": { + "down": { "uv": [ 9, 6.5, 10, 7.5 ], "texture": "#Energy" }, + "north": { "uv": [ 6, 3.5, 7, 4.5 ], "texture": "#Energy" }, + "south": { "uv": [ 9, 3.5, 10, 4.5 ], "texture": "#Energy" }, + "west": { "uv": [ 8.5, 3.5, 9.5, 4.5 ], "texture": "#Energy" }, + "east": { "uv": [ 6.5, 3.5, 7.5, 4.5 ], "texture": "#Energy" } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 1, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#Box" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#Box", "cullface": "up" }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#Box", "cullface": "north" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#Box", "cullface": "south" }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#Box", "cullface": "west" }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#Box", "cullface": "east" } + } + }, + { + "__comment": "Box49", + "from": [ 0, 1, 1 ], + "to": [ 1, 2, 15 ], + "faces": { + "down": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box" }, + "up": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box" }, + "north": { "uv": [ 15, 14, 16, 15 ], "texture": "#Box" }, + "south": { "uv": [ 0, 14, 1, 15 ], "texture": "#Box" }, + "west": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "east": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" } + } + }, + { + "__comment": "Box49", + "from": [ 15, 1, 1 ], + "to": [ 16, 2, 15 ], + "faces": { + "down": { "uv": [ 15, 1, 16, 15 ], "texture": "#Box" }, + "up": { "uv": [ 15, 1, 16, 15 ], "texture": "#Box" }, + "north": { "uv": [ 0, 14, 1, 15 ], "texture": "#Box" }, + "south": { "uv": [ 15, 14, 16, 15 ], "texture": "#Box" }, + "west": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "east": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" } + } + }, + { + "__comment": "Box49", + "from": [ 0, 14, 1 ], + "to": [ 1, 15, 15 ], + "faces": { + "down": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box" }, + "up": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box" }, + "north": { "uv": [ 15, 14, 16, 15 ], "texture": "#Box" }, + "south": { "uv": [ 0, 14, 1, 15 ], "texture": "#Box" }, + "west": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "east": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" } + } + }, + { + "__comment": "Box49", + "from": [ 15, 14, 1 ], + "to": [ 16, 15, 15 ], + "faces": { + "down": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box" }, + "up": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box" }, + "north": { "uv": [ 15, 14, 16, 15 ], "texture": "#Box" }, + "south": { "uv": [ 0, 14, 1, 15 ], "texture": "#Box" }, + "west": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "east": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" } + } + }, + { + "__comment": "Box49", + "from": [ 1, 1, 0 ], + "to": [ 15, 2, 1 ], + "faces": { + "down": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box", "rotation": 270 }, + "up": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box", "rotation": 90 }, + "north": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "south": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "west": { "uv": [ 0, 14, 1, 15 ], "texture": "#Box" }, + "east": { "uv": [ 15, 14, 16, 15 ], "texture": "#Box" } + } + }, + { + "__comment": "Box49", + "from": [ 1, 1, 15 ], + "to": [ 15, 2, 16 ], + "faces": { + "down": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box", "rotation": 270 }, + "up": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box", "rotation": 90 }, + "north": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "south": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "west": { "uv": [ 0, 14, 1, 15 ], "texture": "#Box" }, + "east": { "uv": [ 15, 14, 16, 15 ], "texture": "#Box" } + } + }, + { + "__comment": "Box49", + "from": [ 1, 14, 15 ], + "to": [ 15, 15, 16 ], + "faces": { + "down": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box", "rotation": 270 }, + "up": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box", "rotation": 90 }, + "north": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "south": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "west": { "uv": [ 0, 14, 1, 15 ], "texture": "#Box" }, + "east": { "uv": [ 15, 14, 16, 15 ], "texture": "#Box" } + } + }, + { + "__comment": "Box49", + "from": [ 0, 14, 0 ], + "to": [ 14, 15, 1 ], + "faces": { + "down": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box", "rotation": 270 }, + "up": { "uv": [ 0, 1, 1, 15 ], "texture": "#Box", "rotation": 90 }, + "north": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "south": { "uv": [ 1, 14, 15, 15 ], "texture": "#Box" }, + "west": { "uv": [ 0, 14, 1, 15 ], "texture": "#Box" }, + "east": { "uv": [ 15, 14, 16, 15 ], "texture": "#Box" } + } + } + ] +} \ No newline at end of file diff --git a/models/crafter.json.textures b/models/crafter.json.textures new file mode 100644 index 0000000..de50e46 --- /dev/null +++ b/models/crafter.json.textures @@ -0,0 +1,12 @@ +{ + "mappings": { + "default": { + "map": { + "Energy": "energy", + "Box": "box", + "Bowl": "bowl" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/cubik_model.json b/models/cubik_model.json new file mode 100644 index 0000000..af3fbdd --- /dev/null +++ b/models/cubik_model.json @@ -0,0 +1,143 @@ +{ + "__comment": "Designed by Nunocraft with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "texture": "blocks/texture", + "texture1": "blocks/texture1", + "texture2": "blocks/texture2", + "schwarz": "blocks/schwarz", + "Glas": "blocks/glas" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 8, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture2" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, + "north": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 8, 1 ], + "to": [ 1.5, 16, 1.5 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 14.5, 8, 14.5 ], + "to": [ 15, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 14.5, 8, 1 ], + "to": [ 15, 16, 1.5 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 8, 14.5 ], + "to": [ 1.5, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 15.5, 14.5 ], + "to": [ 15, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 15.5, 1 ], + "to": [ 15, 16, 1.5 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box15", + "from": [ 1, 15.5, 1 ], + "to": [ 1.5, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 15 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 0.5 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 0.5 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#schwarz" }, + "east": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box15", + "from": [ 14.5, 15.5, 1 ], + "to": [ 15, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 15 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 0.5 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 0.5 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#schwarz" }, + "east": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Glas", + "from": [ 1.5, 8, 1.5 ], + "to": [ 14.5, 15.5, 14.5 ], + "faces": { + "down": { "uv": [ 1.5, 1.5, 14.5, 14.5 ], "texture": "#Glas" }, + "up": { "uv": [ 1.5, 1.5, 14.5, 14.5 ], "texture": "#Glas" }, + "north": { "uv": [ 1.5, 0.5, 14.5, 8 ], "texture": "#Glas" }, + "south": { "uv": [ 1.5, 0.5, 14.5, 8 ], "texture": "#Glas" }, + "west": { "uv": [ 1.5, 0.5, 14.5, 8 ], "texture": "#Glas" }, + "east": { "uv": [ 1.5, 0.5, 14.5, 8 ], "texture": "#Glas" } + } + } + ] +} \ No newline at end of file diff --git a/models/cubik_model.json.textures b/models/cubik_model.json.textures new file mode 100644 index 0000000..6e312bb --- /dev/null +++ b/models/cubik_model.json.textures @@ -0,0 +1,14 @@ +{ + "mappings": { + "default": { + "map": { + "texture": "croptexture", + "Glas": "glastexture", + "schwarz": "schwarz", + "texture1": "upcrop", + "texture2": "cropdown" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/enchantmenttable.json b/models/enchantmenttable.json new file mode 100644 index 0000000..d922d35 --- /dev/null +++ b/models/enchantmenttable.json @@ -0,0 +1,221 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "texture": "blocks/texture", + "TopTexture": "blocks/toptexture", + "BookCover": "blocks/bookcover", + "Cover": "blocks/cover", + "Paper": "blocks/paper" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 12, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#TopTexture" }, + "north": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box8", + "from": [ 7, 12, 4 ], + "to": [ 8, 12.5, 12 ], + "faces": { + "down": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover", "rotation": 180 }, + "up": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover", "rotation": 180 }, + "north": { "uv": [ 2, 15.5, 3, 16 ], "texture": "#Cover" }, + "south": { "uv": [ 13, 15.5, 14, 16 ], "texture": "#Cover" }, + "west": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" }, + "east": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" } + } + }, + { + "__comment": "Box8", + "from": [ 5, 12.5, 4 ], + "to": [ 7, 13, 12 ], + "faces": { + "down": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover", "rotation": 180 }, + "up": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover", "rotation": 180 }, + "north": { "uv": [ 2, 15.5, 3, 16 ], "texture": "#Cover" }, + "south": { "uv": [ 13, 15.5, 14, 16 ], "texture": "#Cover" }, + "west": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" }, + "east": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" } + } + }, + { + "__comment": "Box8", + "from": [ 3, 13, 4 ], + "to": [ 5, 13.5, 12 ], + "faces": { + "down": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover", "rotation": 180 }, + "up": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover", "rotation": 180 }, + "north": { "uv": [ 2, 15.5, 3, 16 ], "texture": "#Cover" }, + "south": { "uv": [ 13, 15.5, 14, 16 ], "texture": "#Cover" }, + "west": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" }, + "east": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" } + } + }, + { + "__comment": "Box8", + "from": [ 1, 13.5, 4 ], + "to": [ 3, 14, 12 ], + "faces": { + "down": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover", "rotation": 180 }, + "up": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover", "rotation": 180 }, + "north": { "uv": [ 2, 15.5, 3, 16 ], "texture": "#Cover" }, + "south": { "uv": [ 13, 15.5, 14, 16 ], "texture": "#Cover" }, + "west": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" }, + "east": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" } + } + }, + { + "__comment": "Box8", + "from": [ 8, 12, 4 ], + "to": [ 9, 12.5, 12 ], + "faces": { + "down": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover" }, + "up": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover" }, + "north": { "uv": [ 13, 15.5, 14, 16 ], "texture": "#Cover" }, + "south": { "uv": [ 2, 15.5, 3, 16 ], "texture": "#Cover" }, + "west": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" }, + "east": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" } + } + }, + { + "__comment": "Box8", + "from": [ 9, 12.5, 4 ], + "to": [ 11, 13, 12 ], + "faces": { + "down": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover" }, + "up": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover" }, + "north": { "uv": [ 13, 15.5, 14, 16 ], "texture": "#Cover" }, + "south": { "uv": [ 2, 15.5, 3, 16 ], "texture": "#Cover" }, + "west": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" }, + "east": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" } + } + }, + { + "__comment": "Box8", + "from": [ 11, 13, 4 ], + "to": [ 13, 13.5, 12 ], + "faces": { + "down": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover" }, + "up": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover" }, + "north": { "uv": [ 13, 15.5, 14, 16 ], "texture": "#Cover" }, + "south": { "uv": [ 2, 15.5, 3, 16 ], "texture": "#Cover" }, + "west": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" }, + "east": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" } + } + }, + { + "__comment": "Box8", + "from": [ 13, 13.5, 4 ], + "to": [ 15, 14, 12 ], + "faces": { + "down": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover" }, + "up": { "uv": [ 2, 4, 3, 12 ], "texture": "#Cover" }, + "north": { "uv": [ 13, 15.5, 14, 16 ], "texture": "#Cover" }, + "south": { "uv": [ 2, 15.5, 3, 16 ], "texture": "#Cover" }, + "west": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" }, + "east": { "uv": [ 4, 15.5, 12, 16 ], "texture": "#Cover" } + } + }, + { + "__comment": "Box11", + "from": [ 7, 12.5, 4.5 ], + "to": [ 9, 13, 11.5 ], + "faces": { + "down": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "up": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "north": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "south": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "west": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" }, + "east": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" } + } + }, + { + "__comment": "Box11", + "from": [ 9, 13, 4.5 ], + "to": [ 11, 13.5, 11.5 ], + "faces": { + "down": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "up": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "north": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "south": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "west": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" }, + "east": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" } + } + }, + { + "__comment": "Box11", + "from": [ 11, 13.5, 4.5 ], + "to": [ 13, 14, 11.5 ], + "faces": { + "down": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "up": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "north": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "south": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "west": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" }, + "east": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" } + } + }, + { + "__comment": "Box11", + "from": [ 13, 14, 4.5 ], + "to": [ 14.5, 14.5, 11.5 ], + "faces": { + "down": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "up": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "north": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "south": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "west": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" }, + "east": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" } + } + }, + { + "__comment": "Box11", + "from": [ 5, 13, 4.5 ], + "to": [ 7, 13.5, 11.5 ], + "faces": { + "down": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "up": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "north": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "south": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "west": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" }, + "east": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" } + } + }, + { + "__comment": "Box11", + "from": [ 3, 13.5, 4.5 ], + "to": [ 5, 14, 11.5 ], + "faces": { + "down": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "up": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "north": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "south": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "west": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" }, + "east": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" } + } + }, + { + "__comment": "Box11", + "from": [ 1.5, 14, 4.5 ], + "to": [ 3, 14.5, 11.5 ], + "faces": { + "down": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "up": { "uv": [ 7, 4.5, 9, 11.5 ], "texture": "#Paper" }, + "north": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "south": { "uv": [ 7, 3, 9, 3.5 ], "texture": "#Paper" }, + "west": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" }, + "east": { "uv": [ 4.5, 3, 11.5, 3.5 ], "texture": "#Paper" } + } + } + ] +} \ No newline at end of file diff --git a/models/enchantmenttable.json.textures b/models/enchantmenttable.json.textures new file mode 100644 index 0000000..142358e --- /dev/null +++ b/models/enchantmenttable.json.textures @@ -0,0 +1,13 @@ +{ + "mappings": { + "default": { + "map": { + "Cover": "cover", + "texture": "enchantmenttexture", + "TopTexture": "toptexture", + "Paper": "paper" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/forge.json b/models/forge.json new file mode 100644 index 0000000..c6b7dd7 --- /dev/null +++ b/models/forge.json @@ -0,0 +1,24 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "white", + "ForgeFront": "white", + "forgeTop": "forge", + "ForgeSide": "forge" + }, + "elements": [ + { + "__comment": "Box2", + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#forgeTop" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#forgeTop" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ForgeFront" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ForgeSide" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ForgeSide" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ForgeSide" } + } + } + ] +} \ No newline at end of file diff --git a/models/forge.json.textures b/models/forge.json.textures new file mode 100644 index 0000000..b177a32 --- /dev/null +++ b/models/forge.json.textures @@ -0,0 +1,12 @@ +{ + "mappings": { + "default": { + "map": { + "forgeTop": "forgetop", + "ForgeFront": "forgefront", + "ForgeSide": "forgeside" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/fridge_oriented.json b/models/fridge_oriented.json new file mode 100644 index 0000000..4ce3f04 --- /dev/null +++ b/models/fridge_oriented.json @@ -0,0 +1,128 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "texture": "blocks/texture", + "Front": "blocks/front", + "Sides": "blocks/sides" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 1, 0 ], + "to": [ 16, 15, 15 ], + "faces": { + "down": { "uv": [ 0, 1, 16, 16 ], "texture": "#Sides" }, + "up": { "uv": [ 0, 0, 16, 15 ], "texture": "#Sides" }, + "north": { "uv": [ 0, 1, 16, 15 ], "texture": "#Sides" }, + "south": { "uv": [ 0, 1, 16, 15 ], "texture": "#Sides" }, + "west": { "uv": [ 0, 1, 15, 15 ], "texture": "#Sides" }, + "east": { "uv": [ 1, 1, 16, 15 ], "texture": "#Sides" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 1, -1 ], + "to": [ 15, 15, 0 ], + "faces": { + "down": { "uv": [ 1, 0, 15, 1 ], "texture": "#texture" }, + "up": { "uv": [ 1, 15, 15, 16 ], "texture": "#texture" }, + "north": { "uv": [ 1, 1, 15, 15 ], "texture": "#texture" }, + "south": { "uv": [ 1, 1, 15, 15 ], "texture": "#texture" }, + "west": { "uv": [ 15, 1, 16, 15 ], "texture": "#texture" }, + "east": { "uv": [ 0, 1, 1, 15 ], "texture": "#texture" } + } + }, + { + "__comment": "Box4", + "from": [ 1, 0, 13 ], + "to": [ 2, 1, 14 ], + "faces": { + "down": { "uv": [ 1, 2, 2, 3 ], "texture": "#Sides" }, + "up": { "uv": [ 1, 13, 2, 14 ], "texture": "#Sides" }, + "north": { "uv": [ 14, 15, 15, 16 ], "texture": "#Sides" }, + "south": { "uv": [ 1, 15, 2, 16 ], "texture": "#Sides" }, + "west": { "uv": [ 13, 15, 14, 16 ], "texture": "#Sides" }, + "east": { "uv": [ 2, 15, 3, 16 ], "texture": "#Sides" } + } + }, + { + "__comment": "Box4", + "from": [ 14, 0, 13 ], + "to": [ 15, 1, 14 ], + "faces": { + "down": { "uv": [ 1, 2, 2, 3 ], "texture": "#Sides" }, + "up": { "uv": [ 1, 13, 2, 14 ], "texture": "#Sides" }, + "north": { "uv": [ 14, 15, 15, 16 ], "texture": "#Sides" }, + "south": { "uv": [ 1, 15, 2, 16 ], "texture": "#Sides" }, + "west": { "uv": [ 13, 15, 14, 16 ], "texture": "#Sides" }, + "east": { "uv": [ 2, 15, 3, 16 ], "texture": "#Sides" } + } + }, + { + "__comment": "Box4", + "from": [ 1, 0, 1 ], + "to": [ 2, 1, 2 ], + "faces": { + "down": { "uv": [ 1, 2, 2, 3 ], "texture": "#Sides" }, + "up": { "uv": [ 1, 13, 2, 14 ], "texture": "#Sides" }, + "north": { "uv": [ 14, 15, 15, 16 ], "texture": "#Sides" }, + "south": { "uv": [ 1, 15, 2, 16 ], "texture": "#Sides" }, + "west": { "uv": [ 13, 15, 14, 16 ], "texture": "#Sides" }, + "east": { "uv": [ 2, 15, 3, 16 ], "texture": "#Sides" } + } + }, + { + "__comment": "Box4", + "from": [ 14, 0, 1 ], + "to": [ 15, 1, 2 ], + "faces": { + "down": { "uv": [ 1, 2, 2, 3 ], "texture": "#Sides" }, + "up": { "uv": [ 1, 13, 2, 14 ], "texture": "#Sides" }, + "north": { "uv": [ 14, 15, 15, 16 ], "texture": "#Sides" }, + "south": { "uv": [ 1, 15, 2, 16 ], "texture": "#Sides" }, + "west": { "uv": [ 13, 15, 14, 16 ], "texture": "#Sides" }, + "east": { "uv": [ 2, 15, 3, 16 ], "texture": "#Sides" } + } + }, + { + "__comment": "Box8", + "from": [ 1, 15, 0 ], + "to": [ 15, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 16 ], "texture": "#Sides" }, + "up": { "uv": [ 1, 0, 15, 15 ], "texture": "#Sides" }, + "north": { "uv": [ 1, 0, 15, 1 ], "texture": "#Sides" }, + "south": { "uv": [ 1, 0, 15, 1 ], "texture": "#Sides" }, + "west": { "uv": [ 0, 0, 15, 1 ], "texture": "#Sides" }, + "east": { "uv": [ 1, 0, 16, 1 ], "texture": "#Sides" } + } + }, + { + "__comment": "Box9", + "from": [ 0, 15, 1 ], + "to": [ 1, 16, 14 ], + "faces": { + "down": { "uv": [ 0, 2, 1, 15 ], "texture": "#Sides" }, + "up": { "uv": [ 0, 1, 1, 14 ], "texture": "#Sides" }, + "north": { "uv": [ 15, 0, 16, 1 ], "texture": "#Sides" }, + "south": { "uv": [ 0, 0, 1, 1 ], "texture": "#Sides" }, + "west": { "uv": [ 1, 0, 14, 1 ], "texture": "#Sides" }, + "east": { "uv": [ 2, 0, 15, 1 ], "texture": "#Sides" } + } + }, + { + "__comment": "Box9", + "from": [ 15, 15, 1 ], + "to": [ 16, 16, 14 ], + "faces": { + "down": { "uv": [ 0, 2, 1, 15 ], "texture": "#Sides" }, + "up": { "uv": [ 0, 1, 1, 14 ], "texture": "#Sides" }, + "north": { "uv": [ 15, 0, 16, 1 ], "texture": "#Sides" }, + "south": { "uv": [ 0, 0, 1, 1 ], "texture": "#Sides" }, + "west": { "uv": [ 1, 0, 14, 1 ], "texture": "#Sides" }, + "east": { "uv": [ 2, 0, 15, 1 ], "texture": "#Sides" } + } + } + ] +} \ No newline at end of file diff --git a/models/fridge_oriented.json.textures b/models/fridge_oriented.json.textures new file mode 100644 index 0000000..44b114d --- /dev/null +++ b/models/fridge_oriented.json.textures @@ -0,0 +1,11 @@ +{ + "mappings": { + "default": { + "map": { + "texture": "fridgefront", + "Sides": "sides" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/sawblock.json b/models/sawblock.json new file mode 100644 index 0000000..548e79a --- /dev/null +++ b/models/sawblock.json @@ -0,0 +1,90 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "sawblock": "blocks/sawblock", + "sawblade": "plate", + "sawblockside": "blocks/sawblockside" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 8, 11, 2 ], + "to": [ 8.5, 11.5, 14 ], + "rotation": { "origin": [ 8, 11, 2 ], "axis": "x", "angle": 0 }, + "faces": { + "down": { "uv": [ 0, 4, 0.5, 16 ], "texture": "#sawblade" }, + "up": { "uv": [ 0, 0, 0.5, 12 ], "texture": "#sawblade" }, + "north": { "uv": [ 15.5, 15, 16, 16 ], "texture": "#sawblade" }, + "south": { "uv": [ 0, 15, 0.5, 16 ], "texture": "#sawblade" }, + "west": { "uv": [ 0, 15, 12, 16 ], "texture": "#sawblade" }, + "east": { "uv": [ 4, 15, 16, 16 ], "texture": "#sawblade" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 11.5, 2.5 ], + "to": [ 8.5, 12, 13.5 ], + "faces": { + "down": { "uv": [ 0, 4, 0.5, 16 ], "texture": "#sawblade" }, + "up": { "uv": [ 0, 0, 0.5, 12 ], "texture": "#sawblade" }, + "north": { "uv": [ 15.5, 15, 16, 16 ], "texture": "#sawblade" }, + "south": { "uv": [ 0, 15, 0.5, 16 ], "texture": "#sawblade" }, + "west": { "uv": [ 0, 15, 12, 16 ], "texture": "#sawblade" }, + "east": { "uv": [ 4, 15, 16, 16 ], "texture": "#sawblade" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 12, 3.5 ], + "to": [ 8.5, 12.5, 12.5 ], + "faces": { + "down": { "uv": [ 0, 4, 0.5, 16 ], "texture": "#sawblade" }, + "up": { "uv": [ 0, 0, 0.5, 12 ], "texture": "#sawblade" }, + "north": { "uv": [ 15.5, 15, 16, 16 ], "texture": "#sawblade" }, + "south": { "uv": [ 0, 15, 0.5, 16 ], "texture": "#sawblade" }, + "west": { "uv": [ 0, 15, 12, 16 ], "texture": "#sawblade" }, + "east": { "uv": [ 4, 15, 16, 16 ], "texture": "#sawblade" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 12.5, 5 ], + "to": [ 8.5, 13, 11 ], + "faces": { + "down": { "uv": [ 0, 4, 0.5, 16 ], "texture": "#sawblade" }, + "up": { "uv": [ 0, 0, 0.5, 12 ], "texture": "#sawblade" }, + "north": { "uv": [ 15.5, 15, 16, 16 ], "texture": "#sawblade" }, + "south": { "uv": [ 0, 15, 0.5, 16 ], "texture": "#sawblade" }, + "west": { "uv": [ 0, 15, 12, 16 ], "texture": "#sawblade" }, + "east": { "uv": [ 4, 15, 16, 16 ], "texture": "#sawblade" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 13, 6.5 ], + "to": [ 8.5, 13.5, 9.5 ], + "faces": { + "down": { "uv": [ 0, 4, 0.5, 16 ], "texture": "#sawblade" }, + "up": { "uv": [ 0, 0, 0.5, 12 ], "texture": "#sawblade" }, + "north": { "uv": [ 15.5, 15, 16, 16 ], "texture": "#sawblade" }, + "south": { "uv": [ 0, 15, 0.5, 16 ], "texture": "#sawblade" }, + "west": { "uv": [ 0, 15, 12, 16 ], "texture": "#sawblade" }, + "east": { "uv": [ 4, 15, 16, 16 ], "texture": "#sawblade" } + } + }, + { + "__comment": "Box7", + "from": [ 0, 0, 0 ], + "to": [ 16, 11, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#sawblock" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#sawblock" }, + "north": { "uv": [ 0, 5, 16, 16 ], "texture": "#sawblockside" }, + "south": { "uv": [ 0, 5, 16, 16 ], "texture": "#sawblockside" }, + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#sawblockside" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#sawblockside" } + } + } + ] +} \ No newline at end of file diff --git a/models/sawblock.json.textures b/models/sawblock.json.textures new file mode 100644 index 0000000..a690f6e --- /dev/null +++ b/models/sawblock.json.textures @@ -0,0 +1,12 @@ +{ + "mappings": { + "default": { + "map": { + "sawblade": "sawblade", + "sawblock": "sawblock", + "sawblockside": "sawblockside" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/seedcrop.json b/models/seedcrop.json new file mode 100644 index 0000000..af3fbdd --- /dev/null +++ b/models/seedcrop.json @@ -0,0 +1,143 @@ +{ + "__comment": "Designed by Nunocraft with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "texture": "blocks/texture", + "texture1": "blocks/texture1", + "texture2": "blocks/texture2", + "schwarz": "blocks/schwarz", + "Glas": "blocks/glas" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 8, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture2" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, + "north": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 8, 1 ], + "to": [ 1.5, 16, 1.5 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 14.5, 8, 14.5 ], + "to": [ 15, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 14.5, 8, 1 ], + "to": [ 15, 16, 1.5 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 8, 14.5 ], + "to": [ 1.5, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 15.5, 14.5 ], + "to": [ 15, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 15.5, 1 ], + "to": [ 15, 16, 1.5 ], + "faces": { + "down": { "uv": [ 1, 14.5, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 1.5 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 1.5, 8 ], "texture": "#schwarz" }, + "east": { "uv": [ 14.5, 0, 15, 8 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box15", + "from": [ 1, 15.5, 1 ], + "to": [ 1.5, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 15 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 0.5 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 0.5 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#schwarz" }, + "east": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Box15", + "from": [ 14.5, 15.5, 1 ], + "to": [ 15, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 1.5, 15 ], "texture": "#schwarz" }, + "up": { "uv": [ 1, 1, 1.5, 15 ], "texture": "#schwarz" }, + "north": { "uv": [ 14.5, 0, 15, 0.5 ], "texture": "#schwarz" }, + "south": { "uv": [ 1, 0, 1.5, 0.5 ], "texture": "#schwarz" }, + "west": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#schwarz" }, + "east": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#schwarz" } + } + }, + { + "__comment": "Glas", + "from": [ 1.5, 8, 1.5 ], + "to": [ 14.5, 15.5, 14.5 ], + "faces": { + "down": { "uv": [ 1.5, 1.5, 14.5, 14.5 ], "texture": "#Glas" }, + "up": { "uv": [ 1.5, 1.5, 14.5, 14.5 ], "texture": "#Glas" }, + "north": { "uv": [ 1.5, 0.5, 14.5, 8 ], "texture": "#Glas" }, + "south": { "uv": [ 1.5, 0.5, 14.5, 8 ], "texture": "#Glas" }, + "west": { "uv": [ 1.5, 0.5, 14.5, 8 ], "texture": "#Glas" }, + "east": { "uv": [ 1.5, 0.5, 14.5, 8 ], "texture": "#Glas" } + } + } + ] +} \ No newline at end of file diff --git a/models/seedcrop.json.textures b/models/seedcrop.json.textures new file mode 100644 index 0000000..126fdc8 --- /dev/null +++ b/models/seedcrop.json.textures @@ -0,0 +1,14 @@ +{ + "mappings": { + "default": { + "map": { + "texture": "texture", + "Glas": "glas", + "schwarz": "schwarz", + "texture1": "texture1", + "texture2": "texture2" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/smeltblock.json b/models/smeltblock.json new file mode 100644 index 0000000..71a5436 --- /dev/null +++ b/models/smeltblock.json @@ -0,0 +1,635 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "pottexture": "blocks/pottexture", + "smeltblock": "blocks/smeltblock", + "metal": "plate" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 7, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#metal" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#metal" }, + "north": { "uv": [ 0, 9, 16, 16 ], "texture": "#smeltblock" }, + "south": { "uv": [ 0, 9, 16, 16 ], "texture": "#smeltblock" }, + "west": { "uv": [ 0, 9, 16, 16 ], "texture": "#smeltblock" }, + "east": { "uv": [ 0, 9, 16, 16 ], "texture": "#smeltblock" } + } + }, + { + "__comment": "Box13", + "from": [ 3, 13, 7 ], + "to": [ 4, 16, 9 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 0, 13, 3 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 0, 4, 3 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 0, 9, 3 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 0, 9, 3 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 12, 13, 7 ], + "to": [ 13, 16, 9 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 6, 13, 3 ], + "to": [ 7.5, 16, 4 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 6, 13, 12 ], + "to": [ 10, 16, 13 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 5, 13, 11 ], + "to": [ 7, 16, 12 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 9, 13, 11 ], + "to": [ 11, 16, 12 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 4, 13, 10 ], + "to": [ 6, 16, 11 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 3, 13, 9 ], + "to": [ 5, 16, 10 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 3, 13, 6 ], + "to": [ 5, 16, 7 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 4, 13, 5 ], + "to": [ 6, 16, 6 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 5, 13, 4 ], + "to": [ 7, 16, 5 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 9, 13, 4 ], + "to": [ 11, 16, 5 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 10, 13, 5 ], + "to": [ 12, 16, 6 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 11, 13, 6 ], + "to": [ 13, 16, 7 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 11, 13, 9 ], + "to": [ 13, 16, 10 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 10, 13, 10 ], + "to": [ 12, 16, 11 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 6, 12, 11 ], + "to": [ 10, 13, 12 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 5, 12, 10 ], + "to": [ 7, 13, 11 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 4, 12, 9 ], + "to": [ 6, 13, 10 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 4, 12, 6 ], + "to": [ 6, 13, 7 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 4, 12, 7 ], + "to": [ 5, 13, 9 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 5, 12, 5 ], + "to": [ 7, 13, 6 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 6, 12, 4 ], + "to": [ 10, 13, 5 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 9, 12, 5 ], + "to": [ 11, 13, 6 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 10, 12, 6 ], + "to": [ 12, 13, 7 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 10, 12, 9 ], + "to": [ 12, 13, 10 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 11, 12, 7 ], + "to": [ 12, 13, 9 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 9, 12, 10 ], + "to": [ 11, 13, 11 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 7, 11, 10 ], + "to": [ 9, 12, 11 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 7, 11, 5 ], + "to": [ 9, 12, 6 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 6, 11, 6 ], + "to": [ 10, 12, 10 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 5, 11, 7 ], + "to": [ 6, 12, 9 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 10, 11, 7 ], + "to": [ 11, 12, 9 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 8.5, 13, 3 ], + "to": [ 10, 16, 4 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box13", + "from": [ 7.5, 13, 3 ], + "to": [ 8.5, 15, 4 ], + "faces": { + "down": { "uv": [ 7, 12, 9, 13 ], "texture": "#pottexture", "rotation": 90 }, + "up": { "uv": [ 7, 3, 9, 4 ], "texture": "#pottexture", "rotation": 270 }, + "north": { "uv": [ 12, 15, 13, 16 ], "texture": "#pottexture" }, + "south": { "uv": [ 3, 15, 4, 16 ], "texture": "#pottexture" }, + "west": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" }, + "east": { "uv": [ 7, 15, 9, 16 ], "texture": "#pottexture" } + } + }, + { + "__comment": "Box37", + "from": [ 0, 13.5, 7.5 ], + "to": [ 3, 14.5, 8.5 ], + "faces": { + "down": { "uv": [ 0, 7.5, 3, 8.5 ], "texture": "#metal" }, + "up": { "uv": [ 0, 7.5, 3, 8.5 ], "texture": "#metal" }, + "north": { "uv": [ 13, 1.5, 16, 2.5 ], "texture": "#metal" }, + "south": { "uv": [ 0, 1.5, 3, 2.5 ], "texture": "#metal" }, + "west": { "uv": [ 7.5, 1.5, 8.5, 2.5 ], "texture": "#metal" }, + "east": { "uv": [ 7.5, 1.5, 8.5, 2.5 ], "texture": "#metal" } + } + }, + { + "__comment": "Box37", + "from": [ 13, 13.5, 7.5 ], + "to": [ 16, 14.5, 8.5 ], + "faces": { + "down": { "uv": [ 0, 7.5, 3, 8.5 ], "texture": "#metal" }, + "up": { "uv": [ 0, 7.5, 3, 8.5 ], "texture": "#metal" }, + "north": { "uv": [ 13, 1.5, 16, 2.5 ], "texture": "#metal" }, + "south": { "uv": [ 0, 1.5, 3, 2.5 ], "texture": "#metal" }, + "west": { "uv": [ 7.5, 1.5, 8.5, 2.5 ], "texture": "#metal" }, + "east": { "uv": [ 7.5, 1.5, 8.5, 2.5 ], "texture": "#metal" } + } + }, + { + "__comment": "Box37", + "from": [ 0, 8, 7.5 ], + "to": [ 1, 14.5, 8.5 ], + "faces": { + "down": { "uv": [ 0, 7.5, 3, 8.5 ], "texture": "#metal" }, + "up": { "uv": [ 0, 7.5, 3, 8.5 ], "texture": "#metal" }, + "north": { "uv": [ 13, 1.5, 16, 2.5 ], "texture": "#metal" }, + "south": { "uv": [ 0, 1.5, 3, 2.5 ], "texture": "#metal" }, + "west": { "uv": [ 7.5, 1.5, 8.5, 2.5 ], "texture": "#metal" }, + "east": { "uv": [ 7.5, 1.5, 8.5, 2.5 ], "texture": "#metal" } + } + }, + { + "__comment": "Box37", + "from": [ 15, 8, 7.5 ], + "to": [ 16, 14.5, 8.5 ], + "faces": { + "down": { "uv": [ 0, 7.5, 3, 8.5 ], "texture": "#metal" }, + "up": { "uv": [ 0, 7.5, 3, 8.5 ], "texture": "#metal" }, + "north": { "uv": [ 13, 1.5, 16, 2.5 ], "texture": "#metal" }, + "south": { "uv": [ 0, 1.5, 3, 2.5 ], "texture": "#metal" }, + "west": { "uv": [ 7.5, 1.5, 8.5, 2.5 ], "texture": "#metal" }, + "east": { "uv": [ 7.5, 1.5, 8.5, 2.5 ], "texture": "#metal" } + } + }, + { + "__comment": "Box49", + "from": [ 0, 7, 6 ], + "to": [ 16, 7.5, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 10 ], "texture": "#metal" }, + "up": { "uv": [ 0, 6, 16, 16 ], "texture": "#metal" }, + "north": { "uv": [ 0, 8.5, 16, 9 ], "texture": "#metal" }, + "south": { "uv": [ 0, 8.5, 16, 9 ], "texture": "#metal" }, + "west": { "uv": [ 6, 8.5, 16, 9 ], "texture": "#metal" }, + "east": { "uv": [ 0, 8.5, 10, 9 ], "texture": "#metal" } + } + }, + { + "__comment": "Box52", + "from": [ 0, 7, 0 ], + "to": [ 16, 7.5, 4 ], + "faces": { + "down": { "uv": [ 0, 12, 16, 16 ], "texture": "#metal" }, + "up": { "uv": [ 0, 0, 16, 4 ], "texture": "#metal" }, + "north": { "uv": [ 0, 8.5, 16, 9 ], "texture": "#metal" }, + "south": { "uv": [ 0, 8.5, 16, 9 ], "texture": "#metal" }, + "west": { "uv": [ 0, 8.5, 4, 9 ], "texture": "#metal" }, + "east": { "uv": [ 12, 8.5, 16, 9 ], "texture": "#metal" } + } + }, + { + "__comment": "Box54", + "from": [ 0, 7, 4 ], + "to": [ 6, 7.5, 6 ], + "faces": { + "down": { "uv": [ 0, 10, 6, 12 ], "texture": "#metal" }, + "up": { "uv": [ 0, 4, 6, 6 ], "texture": "#metal" }, + "north": { "uv": [ 10, 8.5, 16, 9 ], "texture": "#metal" }, + "south": { "uv": [ 0, 8.5, 6, 9 ], "texture": "#metal" }, + "west": { "uv": [ 4, 8.5, 6, 9 ], "texture": "#metal" }, + "east": { "uv": [ 10, 8.5, 12, 9 ], "texture": "#metal" } + } + }, + { + "__comment": "Box54", + "from": [ 10, 7, 4 ], + "to": [ 16, 7.5, 6 ], + "faces": { + "down": { "uv": [ 0, 9.5, 5.5, 12.5 ], "texture": "#metal" }, + "up": { "uv": [ 0, 3.5, 5.5, 6.5 ], "texture": "#metal" }, + "north": { "uv": [ 10.5, 15, 16, 16 ], "texture": "#metal" }, + "south": { "uv": [ 0, 15, 5.5, 16 ], "texture": "#metal" }, + "west": { "uv": [ 3.5, 15, 6.5, 16 ], "texture": "#metal" }, + "east": { "uv": [ 9.5, 15, 12.5, 16 ], "texture": "#metal" } + } + }, + { + "__comment": "Box49", + "from": [ 0, 7.5, 6.5 ], + "to": [ 16, 8, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 9.5 ], "texture": "#metal" }, + "up": { "uv": [ 0, 6.5, 16, 16 ], "texture": "#metal" }, + "north": { "uv": [ 0, 8, 16, 8.5 ], "texture": "#metal" }, + "south": { "uv": [ 0, 8, 16, 8.5 ], "texture": "#metal" }, + "west": { "uv": [ 6.5, 8, 16, 8.5 ], "texture": "#metal" }, + "east": { "uv": [ 0, 8, 9.5, 8.5 ], "texture": "#metal" } + } + }, + { + "__comment": "Box52", + "from": [ 0, 7.5, 0 ], + "to": [ 16, 8, 3.5 ], + "faces": { + "down": { "uv": [ 0, 12.5, 16, 16 ], "texture": "#metal" }, + "up": { "uv": [ 0, 0, 16, 3.5 ], "texture": "#metal" }, + "north": { "uv": [ 0, 8, 16, 8.5 ], "texture": "#metal" }, + "south": { "uv": [ 0, 8, 16, 8.5 ], "texture": "#metal" }, + "west": { "uv": [ 0, 8, 3.5, 8.5 ], "texture": "#metal" }, + "east": { "uv": [ 12.5, 8, 16, 8.5 ], "texture": "#metal" } + } + }, + { + "__comment": "Box54", + "from": [ 0, 7.5, 3.5 ], + "to": [ 5.5, 8, 6.5 ], + "faces": { + "down": { "uv": [ 0, 9.5, 5.5, 12.5 ], "texture": "#metal" }, + "up": { "uv": [ 0, 3.5, 5.5, 6.5 ], "texture": "#metal" }, + "north": { "uv": [ 10.5, 8, 16, 8.5 ], "texture": "#metal" }, + "south": { "uv": [ 0, 8, 5.5, 8.5 ], "texture": "#metal" }, + "west": { "uv": [ 3.5, 8, 6.5, 8.5 ], "texture": "#metal" }, + "east": { "uv": [ 9.5, 8, 12.5, 8.5 ], "texture": "#metal" } + } + }, + { + "__comment": "Box54", + "from": [ 10.5, 7.5, 3.5 ], + "to": [ 16, 8, 6.5 ], + "faces": { + "down": { "uv": [ 0, 9.5, 5.5, 12.5 ], "texture": "#metal" }, + "up": { "uv": [ 0, 3.5, 5.5, 6.5 ], "texture": "#metal" }, + "north": { "uv": [ 10.5, 15, 16, 16 ], "texture": "#metal" }, + "south": { "uv": [ 0, 15, 5.5, 16 ], "texture": "#metal" }, + "west": { "uv": [ 3.5, 15, 6.5, 16 ], "texture": "#metal" }, + "east": { "uv": [ 9.5, 15, 12.5, 16 ], "texture": "#metal" } + } + } + ] +} \ No newline at end of file diff --git a/models/smeltblock.json.textures b/models/smeltblock.json.textures new file mode 100644 index 0000000..cb5a7ca --- /dev/null +++ b/models/smeltblock.json.textures @@ -0,0 +1,12 @@ +{ + "mappings": { + "default": { + "map": { + "pottexture": "pottexture", + "metal": "metal", + "smeltblock": "smeltblock" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/spawner.json b/models/spawner.json new file mode 100644 index 0000000..0fcc443 --- /dev/null +++ b/models/spawner.json @@ -0,0 +1,945 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "texture": "blocks/texture" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 15, 0 ], + "to": [ 16, 16, 0.5 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 0, 15.5, 0.5 ], + "to": [ 16, 16, 1 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 0, 15, 0 ], + "to": [ 0.5, 16, 16 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture" }, + "up": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture" }, + "north": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 0.5, 15.5, 0 ], + "to": [ 1, 16, 16 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture" }, + "up": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture" }, + "north": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 0, 15, 15.5 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 270 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 0, 15.5, 15 ], + "to": [ 16, 16, 15.5 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 270 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 15.5, 15, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "north": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 15, 15.5, 0 ], + "to": [ 15.5, 16, 16 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "north": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 1, 0.5 ], + "faces": { + "down": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 270 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 0.5 ], + "to": [ 16, 0.5, 1 ], + "faces": { + "down": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 270 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 15.5, 0, 0 ], + "to": [ 16, 1, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture" }, + "north": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 15, 0, 0 ], + "to": [ 15.5, 0.5, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture" }, + "north": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 15.5 ], + "to": [ 16, 1, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" }, + "east": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 15 ], + "to": [ 16, 0.5, 15.5 ], + "faces": { + "down": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" }, + "east": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 15.5, 0, 15 ], + "to": [ 16, 16, 15.5 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 15 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 15, 0, 15.5 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 15 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 0.5, 1, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "north": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" }, + "south": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 0.5, 0, 0 ], + "to": [ 1, 0.5, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "north": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" }, + "south": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 15 ], + "to": [ 0.5, 16, 16 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 15 ], "texture": "#texture" }, + "up": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" }, + "north": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box1", + "from": [ 0.5, 0, 15.5 ], + "to": [ 1, 16, 16 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 15 ], "texture": "#texture" }, + "up": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" }, + "north": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 0.5 ], + "to": [ 0.5, 16, 1 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 1, 16, 0.5 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "Box1", + "from": [ 15, 0, 0 ], + "to": [ 15.5, 16, 0.5 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 15 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "north": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "Box1", + "from": [ 15.5, 0, 0 ], + "to": [ 16, 16, 1 ], + "faces": { + "down": { "uv": [ 1, 16, 0, 15 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "north": { "uv": [ 0, 0, 1, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 1, 16, 0, 0 ], "texture": "#texture", "rotation": 180 }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "Box25", + "from": [ 15.5, 10, 1 ], + "to": [ 16, 10.5, 15 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 10.5, 15, 10, 1 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 15.5, 13, 1 ], + "to": [ 16, 13.5, 15 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 13.5, 15, 13, 1 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 15.5, 2.5, 1 ], + "to": [ 16, 3, 15 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 3, 15, 2.5, 1 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 15.5, 5.5, 1 ], + "to": [ 16, 6, 15 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 6, 15, 5.5, 1 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 15.5, 1, 2.5 ], + "to": [ 16, 15, 3 ], + "faces": { + "down": { "uv": [ 13.5, 16, 13, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture" }, + "east": { "uv": [ 3, 15, 2.5, 1 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 15.5, 1, 5.5 ], + "to": [ 16, 15, 6 ], + "faces": { + "down": { "uv": [ 10.5, 16, 10, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture" }, + "east": { "uv": [ 6, 15, 5.5, 1 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 15.5, 1, 10 ], + "to": [ 16, 15, 10.5 ], + "faces": { + "down": { "uv": [ 6, 16, 5.5, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture" }, + "east": { "uv": [ 10.5, 15, 10, 1 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 15.5, 1, 13 ], + "to": [ 16, 15, 13.5 ], + "faces": { + "down": { "uv": [ 3, 16, 2.5, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture" }, + "east": { "uv": [ 13.5, 15, 13, 1 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 0, 10, 1 ], + "to": [ 0.5, 10.5, 15 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 10.5, 15, 10, 1 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 0, 13, 1 ], + "to": [ 0.5, 13.5, 15 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 13.5, 15, 13, 1 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 0, 2.5, 1 ], + "to": [ 0.5, 3, 15 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 3, 15, 2.5, 1 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 0, 5.5, 1 ], + "to": [ 0.5, 6, 15 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 6, 15, 5.5, 1 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 0, 1, 2.5 ], + "to": [ 0.5, 15, 3 ], + "faces": { + "down": { "uv": [ 13.5, 16, 13, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture" }, + "east": { "uv": [ 3, 15, 2.5, 1 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 0, 1, 5.5 ], + "to": [ 0.5, 15, 6 ], + "faces": { + "down": { "uv": [ 10.5, 16, 10, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture" }, + "east": { "uv": [ 6, 15, 5.5, 1 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 0, 1, 10 ], + "to": [ 0.5, 15, 10.5 ], + "faces": { + "down": { "uv": [ 6, 16, 5.5, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture" }, + "east": { "uv": [ 10.5, 15, 10, 1 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 0, 1, 13 ], + "to": [ 0.5, 15, 13.5 ], + "faces": { + "down": { "uv": [ 3, 16, 2.5, 15.5 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 }, + "west": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture" }, + "east": { "uv": [ 13.5, 15, 13, 1 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 1, 15.5, 10 ], + "to": [ 15, 16, 10.5 ], + "faces": { + "down": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 1, 15.5, 13 ], + "to": [ 15, 16, 13.5 ], + "faces": { + "down": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture" }, + "east": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 1, 15.5, 2.5 ], + "to": [ 15, 16, 3 ], + "faces": { + "down": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture" }, + "east": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 1, 15.5, 5.5 ], + "to": [ 15, 16, 6 ], + "faces": { + "down": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture" }, + "east": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 2.5, 15.5, 1 ], + "to": [ 3, 16, 15 ], + "faces": { + "down": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture" }, + "up": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture" }, + "north": { "uv": [ 13, 0, 13.5, 0.5 ], "texture": "#texture" }, + "south": { "uv": [ 2.5, 0, 3, 0.5 ], "texture": "#texture" }, + "west": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#texture" }, + "east": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 5.5, 15.5, 1 ], + "to": [ 6, 16, 15 ], + "faces": { + "down": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture" }, + "up": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture" }, + "north": { "uv": [ 10, 0, 10.5, 0.5 ], "texture": "#texture" }, + "south": { "uv": [ 5.5, 0, 6, 0.5 ], "texture": "#texture" }, + "west": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#texture" }, + "east": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 10, 15.5, 1 ], + "to": [ 10.5, 16, 15 ], + "faces": { + "down": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture" }, + "up": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture" }, + "north": { "uv": [ 5.5, 0, 6, 0.5 ], "texture": "#texture" }, + "south": { "uv": [ 10, 0, 10.5, 0.5 ], "texture": "#texture" }, + "west": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#texture" }, + "east": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 13, 15.5, 1 ], + "to": [ 13.5, 16, 15 ], + "faces": { + "down": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture" }, + "up": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture" }, + "north": { "uv": [ 2.5, 0, 3, 0.5 ], "texture": "#texture" }, + "south": { "uv": [ 13, 0, 13.5, 0.5 ], "texture": "#texture" }, + "west": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#texture" }, + "east": { "uv": [ 1, 0, 15, 0.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 1, 0, 10 ], + "to": [ 15, 0.5, 10.5 ], + "faces": { + "down": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 1, 0, 13 ], + "to": [ 15, 0.5, 13.5 ], + "faces": { + "down": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture" }, + "east": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 1, 0, 2.5 ], + "to": [ 15, 0.5, 3 ], + "faces": { + "down": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture" }, + "east": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 1, 0, 5.5 ], + "to": [ 15, 0.5, 6 ], + "faces": { + "down": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture", "rotation": 90 }, + "north": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture" }, + "east": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 2.5, 0, 1 ], + "to": [ 3, 0.5, 15 ], + "faces": { + "down": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture" }, + "up": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture" }, + "north": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture" }, + "south": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 5.5, 0, 1 ], + "to": [ 6, 0.5, 15 ], + "faces": { + "down": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture" }, + "up": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture" }, + "north": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 10, 0, 1 ], + "to": [ 10.5, 0.5, 15 ], + "faces": { + "down": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture" }, + "up": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture" }, + "north": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture" }, + "south": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 13, 0, 1 ], + "to": [ 13.5, 0.5, 15 ], + "faces": { + "down": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture" }, + "up": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture" }, + "north": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture" }, + "south": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box25", + "from": [ 1, 10, 0 ], + "to": [ 15, 10.5, 0.5 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "north": { "uv": [ 10.5, 15, 10, 1 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 1, 13, 0 ], + "to": [ 15, 13.5, 0.5 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "north": { "uv": [ 13.5, 15, 13, 1 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 1, 2.5, 0 ], + "to": [ 15, 3, 0.5 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "north": { "uv": [ 3, 15, 2.5, 1 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 1, 5.5, 0 ], + "to": [ 15, 6, 0.5 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "north": { "uv": [ 6, 15, 5.5, 1 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 2.5, 1, 0 ], + "to": [ 3, 15, 0.5 ], + "faces": { + "down": { "uv": [ 13.5, 16, 13, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture" }, + "north": { "uv": [ 3, 15, 2.5, 1 ], "texture": "#texture" }, + "south": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 5.5, 1, 0 ], + "to": [ 6, 15, 0.5 ], + "faces": { + "down": { "uv": [ 10.5, 16, 10, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture" }, + "north": { "uv": [ 6, 15, 5.5, 1 ], "texture": "#texture" }, + "south": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 10, 1, 0 ], + "to": [ 10.5, 15, 0.5 ], + "faces": { + "down": { "uv": [ 6, 16, 5.5, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture" }, + "north": { "uv": [ 10.5, 15, 10, 1 ], "texture": "#texture" }, + "south": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 13, 1, 0 ], + "to": [ 13.5, 15, 0.5 ], + "faces": { + "down": { "uv": [ 3, 16, 2.5, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture" }, + "north": { "uv": [ 13.5, 15, 13, 1 ], "texture": "#texture" }, + "south": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 1, 10, 15.5 ], + "to": [ 15, 10.5, 16 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "north": { "uv": [ 10.5, 15, 10, 1 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 1, 13, 15.5 ], + "to": [ 15, 13.5, 16 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "north": { "uv": [ 13.5, 15, 13, 1 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 1, 2.5, 15.5 ], + "to": [ 15, 3, 16 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "north": { "uv": [ 3, 15, 2.5, 1 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 1, 5.5, 15.5 ], + "to": [ 15, 6, 16 ], + "faces": { + "down": { "uv": [ 15, 16, 1, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture" }, + "north": { "uv": [ 6, 15, 5.5, 1 ], "texture": "#texture", "rotation": 90 }, + "south": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture", "rotation": 270 }, + "west": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 2.5, 1, 15.5 ], + "to": [ 3, 15, 16 ], + "faces": { + "down": { "uv": [ 13.5, 16, 13, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 2.5, 15.5, 3, 16 ], "texture": "#texture" }, + "north": { "uv": [ 3, 15, 2.5, 1 ], "texture": "#texture" }, + "south": { "uv": [ 2.5, 1, 3, 15 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 5.5, 1, 15.5 ], + "to": [ 6, 15, 16 ], + "faces": { + "down": { "uv": [ 10.5, 16, 10, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 5.5, 15.5, 6, 16 ], "texture": "#texture" }, + "north": { "uv": [ 6, 15, 5.5, 1 ], "texture": "#texture" }, + "south": { "uv": [ 5.5, 1, 6, 15 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 10, 1, 15.5 ], + "to": [ 10.5, 15, 16 ], + "faces": { + "down": { "uv": [ 6, 16, 5.5, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 10, 15.5, 10.5, 16 ], "texture": "#texture" }, + "north": { "uv": [ 10.5, 15, 10, 1 ], "texture": "#texture" }, + "south": { "uv": [ 10, 1, 10.5, 15 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "Box25", + "from": [ 13, 1, 15.5 ], + "to": [ 13.5, 15, 16 ], + "faces": { + "down": { "uv": [ 3, 16, 2.5, 15.5 ], "texture": "#texture" }, + "up": { "uv": [ 13, 15.5, 13.5, 16 ], "texture": "#texture" }, + "north": { "uv": [ 13.5, 15, 13, 1 ], "texture": "#texture" }, + "south": { "uv": [ 13, 1, 13.5, 15 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 270 }, + "east": { "uv": [ 1, 15.5, 15, 16 ], "texture": "#texture", "rotation": 90 } + } + } + ] +} \ No newline at end of file diff --git a/models/spawner.json.textures b/models/spawner.json.textures new file mode 100644 index 0000000..da85439 --- /dev/null +++ b/models/spawner.json.textures @@ -0,0 +1,10 @@ +{ + "mappings": { + "default": { + "map": { + "texture": "spawnertexture" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/models/teleporter.json b/models/teleporter.json new file mode 100644 index 0000000..c6ec86f --- /dev/null +++ b/models/teleporter.json @@ -0,0 +1,128 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/particle", + "Plate": "blocks/plate", + "Border": "blocks/border" + }, + "elements": [ + { + "__comment": "Box3", + "from": [ 0, 1, 15 ], + "to": [ 3, 1.5, 16 ], + "faces": { + "down": { "uv": [ 0, 13, 1, 16 ], "texture": "#Border", "rotation": 90 }, + "up": { "uv": [ 0, 0, 1, 3 ], "texture": "#Border", "rotation": 270 }, + "north": { "uv": [ 13, 14.5, 16, 15 ], "texture": "#Border" }, + "south": { "uv": [ 0, 14.5, 3, 15 ], "texture": "#Border" }, + "west": { "uv": [ 15, 14.5, 16, 15 ], "texture": "#Border" }, + "east": { "uv": [ 0, 14.5, 1, 15 ], "texture": "#Border" } + } + }, + { + "__comment": "Box3", + "from": [ 0, 1, 13 ], + "to": [ 1, 1.5, 15 ], + "faces": { + "down": { "uv": [ 1, 13, 2, 14 ], "texture": "#Border", "rotation": 90 }, + "up": { "uv": [ 1, 2, 2, 3 ], "texture": "#Border", "rotation": 270 }, + "north": { "uv": [ 13, 14, 14, 15 ], "texture": "#Border" }, + "south": { "uv": [ 2, 14, 3, 15 ], "texture": "#Border" }, + "west": { "uv": [ 14, 14, 15, 15 ], "texture": "#Border" }, + "east": { "uv": [ 1, 14, 2, 15 ], "texture": "#Border" } + } + }, + { + "__comment": "Box3", + "from": [ 0, 1, 0 ], + "to": [ 1, 1.5, 3 ], + "faces": { + "down": { "uv": [ 0, 13, 1, 16 ], "texture": "#Border" }, + "up": { "uv": [ 0, 0, 1, 3 ], "texture": "#Border" }, + "north": { "uv": [ 15, 14.5, 16, 15 ], "texture": "#Border" }, + "south": { "uv": [ 0, 14.5, 1, 15 ], "texture": "#Border" }, + "west": { "uv": [ 0, 14.5, 3, 15 ], "texture": "#Border" }, + "east": { "uv": [ 13, 14.5, 16, 15 ], "texture": "#Border" } + } + }, + { + "__comment": "Box3", + "from": [ 1, 1, 0 ], + "to": [ 3, 1.5, 1 ], + "faces": { + "down": { "uv": [ 1, 13, 2, 14 ], "texture": "#Border" }, + "up": { "uv": [ 1, 2, 2, 3 ], "texture": "#Border" }, + "north": { "uv": [ 14, 14, 15, 15 ], "texture": "#Border" }, + "south": { "uv": [ 1, 14, 2, 15 ], "texture": "#Border" }, + "west": { "uv": [ 2, 14, 3, 15 ], "texture": "#Border" }, + "east": { "uv": [ 13, 14, 14, 15 ], "texture": "#Border" } + } + }, + { + "__comment": "Box3", + "from": [ 13, 1, 0 ], + "to": [ 16, 1.5, 1 ], + "faces": { + "down": { "uv": [ 0, 13, 1, 16 ], "texture": "#Border", "rotation": 270 }, + "up": { "uv": [ 0, 0, 1, 3 ], "texture": "#Border", "rotation": 90 }, + "north": { "uv": [ 0, 14.5, 3, 15 ], "texture": "#Border" }, + "south": { "uv": [ 13, 14.5, 16, 15 ], "texture": "#Border" }, + "west": { "uv": [ 0, 14.5, 1, 15 ], "texture": "#Border" }, + "east": { "uv": [ 15, 14.5, 16, 15 ], "texture": "#Border" } + } + }, + { + "__comment": "Box3", + "from": [ 15, 1, 1 ], + "to": [ 16, 1.5, 3 ], + "faces": { + "down": { "uv": [ 1, 13, 2, 14 ], "texture": "#Border", "rotation": 270 }, + "up": { "uv": [ 1, 2, 2, 3 ], "texture": "#Border", "rotation": 90 }, + "north": { "uv": [ 2, 14, 3, 15 ], "texture": "#Border" }, + "south": { "uv": [ 13, 14, 14, 15 ], "texture": "#Border" }, + "west": { "uv": [ 1, 14, 2, 15 ], "texture": "#Border" }, + "east": { "uv": [ 14, 14, 15, 15 ], "texture": "#Border" } + } + }, + { + "__comment": "Box3", + "from": [ 15, 1, 13 ], + "to": [ 16, 1.5, 16 ], + "faces": { + "down": { "uv": [ 0, 13, 1, 16 ], "texture": "#Border", "rotation": 180 }, + "up": { "uv": [ 0, 0, 1, 3 ], "texture": "#Border", "rotation": 180 }, + "north": { "uv": [ 0, 14.5, 1, 15 ], "texture": "#Border" }, + "south": { "uv": [ 15, 14.5, 16, 15 ], "texture": "#Border" }, + "west": { "uv": [ 13, 14.5, 16, 15 ], "texture": "#Border" }, + "east": { "uv": [ 0, 14.5, 3, 15 ], "texture": "#Border" } + } + }, + { + "__comment": "Box3", + "from": [ 13, 1, 15 ], + "to": [ 15, 1.5, 16 ], + "faces": { + "down": { "uv": [ 1, 13, 2, 14 ], "texture": "#Border", "rotation": 180 }, + "up": { "uv": [ 1, 2, 2, 3 ], "texture": "#Border", "rotation": 180 }, + "north": { "uv": [ 1, 14, 2, 15 ], "texture": "#Border" }, + "south": { "uv": [ 14, 14, 15, 15 ], "texture": "#Border" }, + "west": { "uv": [ 13, 14, 14, 15 ], "texture": "#Border" }, + "east": { "uv": [ 2, 14, 3, 15 ], "texture": "#Border" } + } + }, + { + "__comment": "Box10", + "from": [ 0, 0, 0 ], + "to": [ 16, 1, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#Plate" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#Plate" }, + "north": { "uv": [ 0, 15, 16, 16 ], "texture": "#Plate" }, + "south": { "uv": [ 0, 15, 16, 16 ], "texture": "#Plate" }, + "west": { "uv": [ 0, 15, 16, 16 ], "texture": "#Plate" }, + "east": { "uv": [ 0, 15, 16, 16 ], "texture": "#Plate" } + } + } + ] +} \ No newline at end of file diff --git a/models/teleporter.json.textures b/models/teleporter.json.textures new file mode 100644 index 0000000..3472f98 --- /dev/null +++ b/models/teleporter.json.textures @@ -0,0 +1,11 @@ +{ + "mappings": { + "default": { + "map": { + "Border": "border", + "Plate": "plate" + }, + "name": "default" + } + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..291d399 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,13 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven { + name = 'MinecraftForge' + url = 'https://maven.minecraftforge.net/' + } + } +} + +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0' +} \ No newline at end of file diff --git a/src/main/java/ch/netquick/easysurvival/EasysurvivalMod.java b/src/main/java/ch/netquick/easysurvival/EasysurvivalMod.java new file mode 100644 index 0000000..6430f33 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/EasysurvivalMod.java @@ -0,0 +1,86 @@ +package ch.netquick.easysurvival; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +import net.minecraftforge.network.simple.SimpleChannel; +import net.minecraftforge.network.NetworkRegistry; +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.util.thread.SidedThreadGroups; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.FriendlyByteBuf; + +import java.util.function.Supplier; +import java.util.function.Function; +import java.util.function.BiConsumer; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.List; +import java.util.Collection; +import java.util.ArrayList; +import java.util.AbstractMap; + +import ch.netquick.easysurvival.init.EasysurvivalModTabs; +import ch.netquick.easysurvival.init.EasysurvivalModMenus; +import ch.netquick.easysurvival.init.EasysurvivalModItems; +import ch.netquick.easysurvival.init.EasysurvivalModBlocks; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +@Mod("easysurvival") +public class EasysurvivalMod { + public static final Logger LOGGER = LogManager.getLogger(EasysurvivalMod.class); + public static final String MODID = "easysurvival"; + + public EasysurvivalMod() { + MinecraftForge.EVENT_BUS.register(this); + IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); + + EasysurvivalModBlocks.REGISTRY.register(bus); + EasysurvivalModBlockEntities.REGISTRY.register(bus); + EasysurvivalModItems.REGISTRY.register(bus); + + EasysurvivalModTabs.REGISTRY.register(bus); + + EasysurvivalModMenus.REGISTRY.register(bus); + // Start of user code block mod init + // End of user code block mod init + } + + // Start of user code block mod methods + // End of user code block mod methods + private static final String PROTOCOL_VERSION = "1"; + public static final SimpleChannel PACKET_HANDLER = NetworkRegistry.newSimpleChannel(new ResourceLocation(MODID, MODID), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); + private static int messageID = 0; + + public static void addNetworkMessage(Class messageType, BiConsumer encoder, Function decoder, BiConsumer> messageConsumer) { + PACKET_HANDLER.registerMessage(messageID, messageType, encoder, decoder, messageConsumer); + messageID++; + } + + private static final Collection> workQueue = new ConcurrentLinkedQueue<>(); + + public static void queueServerWork(int tick, Runnable action) { + if (Thread.currentThread().getThreadGroup() == SidedThreadGroups.SERVER) + workQueue.add(new AbstractMap.SimpleEntry<>(action, tick)); + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + List> actions = new ArrayList<>(); + workQueue.forEach(work -> { + work.setValue(work.getValue() - 1); + if (work.getValue() == 0) + actions.add(work); + }); + actions.forEach(e -> e.getKey().run()); + workQueue.removeAll(actions); + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/CropBlock.java b/src/main/java/ch/netquick/easysurvival/block/CropBlock.java new file mode 100644 index 0000000..3ae0a9b --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/CropBlock.java @@ -0,0 +1,159 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +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.PickaxeItem; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.CropGUIMenu; +import ch.netquick.easysurvival.procedures.CropUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.CropBlockEntity; + +public class CropBlock extends Block implements EntityBlock { + public CropBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.GRAVEL).strength(1f, 10f).requiresCorrectToolForDrops().noOcclusion().pushReaction(PushReaction.BLOCK).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 boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) { + if (player.getInventory().getSelected().getItem() instanceof PickaxeItem tieredItem) + return tieredItem.getTier().getLevel() >= 1; + return false; + } + + @Override + public List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 50); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + CropUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 50); + } + + @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("Crop"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new CropGUIMenu(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 CropBlockEntity(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 CropBlockEntity 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 CropBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/EasyAnvilBlock.java b/src/main/java/ch/netquick/easysurvival/block/EasyAnvilBlock.java new file mode 100644 index 0000000..b9b0aac --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/EasyAnvilBlock.java @@ -0,0 +1,185 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.StateDefinition; +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.Rotation; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +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.context.BlockPlaceContext; +import net.minecraft.world.item.PickaxeItem; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyAnvilGUIMenu; +import ch.netquick.easysurvival.procedures.EasyAnvilUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.EasyAnvilBlockEntity; + +public class EasyAnvilBlock extends Block implements EntityBlock { + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + public EasyAnvilBlock() { + super(BlockBehaviour.Properties.of().sound(SoundType.ANVIL).strength(1f, 10f).requiresCorrectToolForDrops().noOcclusion().isRedstoneConductor((bs, br, bp) -> false)); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @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 + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + @Override + public boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) { + if (player.getInventory().getSelected().getItem() instanceof PickaxeItem tieredItem) + return tieredItem.getTier().getLevel() >= 1; + return false; + } + + @Override + public List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 10); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + EasyAnvilUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 10); + } + + @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("Easy Anvil"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasyAnvilGUIMenu(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 EasyAnvilBlockEntity(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 EasyAnvilBlockEntity 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 EasyAnvilBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/EasyConverterBlock.java b/src/main/java/ch/netquick/easysurvival/block/EasyConverterBlock.java new file mode 100644 index 0000000..a2e06e7 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/EasyConverterBlock.java @@ -0,0 +1,150 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyConverterGUIMenu; +import ch.netquick.easysurvival.procedures.EasyConverterUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.EasyConverterBlockEntity; + +public class EasyConverterBlock extends Block implements EntityBlock { + public EasyConverterBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).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 List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 10); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + EasyConverterUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 10); + } + + @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("Easy Converter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasyConverterGUIMenu(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 EasyConverterBlockEntity(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 EasyConverterBlockEntity 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 EasyConverterBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/EasyEnchantmentTableBlock.java b/src/main/java/ch/netquick/easysurvival/block/EasyEnchantmentTableBlock.java new file mode 100644 index 0000000..79a7591 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/EasyEnchantmentTableBlock.java @@ -0,0 +1,183 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.StateDefinition; +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.Rotation; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.item.context.BlockPlaceContext; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyEnchantmentTableGUIMenu; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.EasyEnchantmentTableBlockEntity; + +public class EasyEnchantmentTableBlock extends Block implements EntityBlock { + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + public EasyEnchantmentTableBlock() { + super(BlockBehaviour.Properties.of().sound(SoundType.WOOD).strength(1f, 10f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false)); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @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 + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + @Override + public float getEnchantPowerBonus(BlockState state, LevelReader world, BlockPos pos) { + return 14.5f; + } + + @Override + public List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 10); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + EasyEnchantmentTableUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 10); + } + + @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("Easy Enchantment Table"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasyEnchantmentTableGUIMenu(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 EasyEnchantmentTableBlockEntity(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 EasyEnchantmentTableBlockEntity 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 EasyEnchantmentTableBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/EasyForgeAutoBlock.java b/src/main/java/ch/netquick/easysurvival/block/EasyForgeAutoBlock.java new file mode 100644 index 0000000..601f0a2 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/EasyForgeAutoBlock.java @@ -0,0 +1,178 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.StateDefinition; +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.Rotation; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +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.context.BlockPlaceContext; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyForgeGUIMenu; +import ch.netquick.easysurvival.procedures.EasyForgeUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.EasyForgeAutoBlockEntity; + +public class EasyForgeAutoBlock extends Block implements EntityBlock { + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + public EasyForgeAutoBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.STONE).strength(1f, 10f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false)); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @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 + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + @Override + public List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 10); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + EasyForgeUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 10); + } + + @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("Easy Forge"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasyForgeGUIMenu(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 EasyForgeAutoBlockEntity(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 EasyForgeAutoBlockEntity 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 EasyForgeAutoBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/EasyForgeBlock.java b/src/main/java/ch/netquick/easysurvival/block/EasyForgeBlock.java new file mode 100644 index 0000000..b3ad900 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/EasyForgeBlock.java @@ -0,0 +1,178 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.StateDefinition; +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.Rotation; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +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.context.BlockPlaceContext; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyForgeGUIMenu; +import ch.netquick.easysurvival.procedures.EasyForgeUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.EasyForgeBlockEntity; + +public class EasyForgeBlock extends Block implements EntityBlock { + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + public EasyForgeBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.STONE).strength(1f, 10f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false)); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @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 + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + @Override + public List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 10); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + EasyForgeUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 10); + } + + @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("Easy Forge"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasyForgeGUIMenu(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 EasyForgeBlockEntity(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 EasyForgeBlockEntity 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 EasyForgeBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/EasyFridgeBlock.java b/src/main/java/ch/netquick/easysurvival/block/EasyFridgeBlock.java new file mode 100644 index 0000000..4b5a59e --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/EasyFridgeBlock.java @@ -0,0 +1,177 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.StateDefinition; +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.Rotation; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +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.context.BlockPlaceContext; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyFridgeGUIMenu; +import ch.netquick.easysurvival.procedures.EasyFridgeUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.EasyFridgeBlockEntity; + +public class EasyFridgeBlock extends Block implements EntityBlock { + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + public EasyFridgeBlock() { + super(BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(1f, 10f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false)); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @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 + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + @Override + public List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 10); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + EasyFridgeUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 10); + } + + @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("Easy Fridge"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasyFridgeGUIMenu(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 EasyFridgeBlockEntity(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 EasyFridgeBlockEntity 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 EasyFridgeBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/EasyIntakeBlock.java b/src/main/java/ch/netquick/easysurvival/block/EasyIntakeBlock.java new file mode 100644 index 0000000..7a4b72e --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/EasyIntakeBlock.java @@ -0,0 +1,168 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.StateDefinition; +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.Rotation; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.DirectionalBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.item.context.BlockPlaceContext; +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.Direction; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyIntakeGUIMenu; +import ch.netquick.easysurvival.procedures.EasyIntakeOnBlockRightClickedProcedure; +import ch.netquick.easysurvival.block.entity.EasyIntakeBlockEntity; + +public class EasyIntakeBlock extends Block implements EntityBlock { + public static final DirectionProperty FACING = DirectionalBlock.FACING; + + public EasyIntakeBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.GRAVEL).strength(1f, 10f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false)); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @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 + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getNearestLookingDirection().getOpposite()); + } + + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + @Override + public List getDrops(BlockState state, LootParams.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("Easy Intake"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasyIntakeGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(pos)); + } + }, pos); + } + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + double hitX = hit.getLocation().x; + double hitY = hit.getLocation().y; + double hitZ = hit.getLocation().z; + Direction direction = hit.getDirection(); + EasyIntakeOnBlockRightClickedProcedure.execute(world, x, y, z, entity); + 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 EasyIntakeBlockEntity(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 EasyIntakeBlockEntity 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 EasyIntakeBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/EasySawBlock.java b/src/main/java/ch/netquick/easysurvival/block/EasySawBlock.java new file mode 100644 index 0000000..34fa725 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/EasySawBlock.java @@ -0,0 +1,150 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasySawGUIMenu; +import ch.netquick.easysurvival.procedures.EasySawUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.EasySawBlockEntity; + +public class EasySawBlock extends Block implements EntityBlock { + public EasySawBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).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 List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 10); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + EasySawUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 10); + } + + @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("Easy Saw"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasySawGUIMenu(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 EasySawBlockEntity(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 EasySawBlockEntity 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 EasySawBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/EasySmelterBlock.java b/src/main/java/ch/netquick/easysurvival/block/EasySmelterBlock.java new file mode 100644 index 0000000..97d6356 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/EasySmelterBlock.java @@ -0,0 +1,178 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.StateDefinition; +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.Rotation; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +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.context.BlockPlaceContext; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasySmelterGUIMenu; +import ch.netquick.easysurvival.procedures.EasySmelterUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.EasySmelterBlockEntity; + +public class EasySmelterBlock extends Block implements EntityBlock { + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + public EasySmelterBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.GRAVEL).strength(1f, 10f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false)); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @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 + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + @Override + public List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 10); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + EasySmelterUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 10); + } + + @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("Easy Smelter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasySmelterGUIMenu(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 EasySmelterBlockEntity(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 EasySmelterBlockEntity 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 EasySmelterBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/SpawnerBlazeBlock.java b/src/main/java/ch/netquick/easysurvival/block/SpawnerBlazeBlock.java new file mode 100644 index 0000000..8789958 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/SpawnerBlazeBlock.java @@ -0,0 +1,68 @@ + +package ch.netquick.easysurvival.block; + +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.level.storage.loot.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.SoundType; +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.util.RandomSource; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import ch.netquick.easysurvival.procedures.SpawnerBlazeUpdateTickProcedure; + +public class SpawnerBlazeBlock extends Block { + public SpawnerBlazeBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).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 List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 100); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + SpawnerBlazeUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 100); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/SpawnerCreeperBlock.java b/src/main/java/ch/netquick/easysurvival/block/SpawnerCreeperBlock.java new file mode 100644 index 0000000..30eeffa --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/SpawnerCreeperBlock.java @@ -0,0 +1,68 @@ + +package ch.netquick.easysurvival.block; + +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.level.storage.loot.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.SoundType; +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.util.RandomSource; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import ch.netquick.easysurvival.procedures.SpawnerCreeperUpdateTickProcedure; + +public class SpawnerCreeperBlock extends Block { + public SpawnerCreeperBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).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 List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 100); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + SpawnerCreeperUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 100); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/SpawnerEvokerBlock.java b/src/main/java/ch/netquick/easysurvival/block/SpawnerEvokerBlock.java new file mode 100644 index 0000000..d6d16c1 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/SpawnerEvokerBlock.java @@ -0,0 +1,68 @@ + +package ch.netquick.easysurvival.block; + +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.level.storage.loot.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.SoundType; +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.util.RandomSource; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import ch.netquick.easysurvival.procedures.SpawnerEvokerUpdateTickProcedure; + +public class SpawnerEvokerBlock extends Block { + public SpawnerEvokerBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).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 List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 100); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + SpawnerEvokerUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 100); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/SpawnerGhastBlock.java b/src/main/java/ch/netquick/easysurvival/block/SpawnerGhastBlock.java new file mode 100644 index 0000000..fd46396 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/SpawnerGhastBlock.java @@ -0,0 +1,68 @@ + +package ch.netquick.easysurvival.block; + +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.level.storage.loot.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.SoundType; +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.util.RandomSource; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import ch.netquick.easysurvival.procedures.SpawnerGhastUpdateTickProcedure; + +public class SpawnerGhastBlock extends Block { + public SpawnerGhastBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).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 List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 100); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + SpawnerGhastUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 100); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/SpawnerPillagerBlock.java b/src/main/java/ch/netquick/easysurvival/block/SpawnerPillagerBlock.java new file mode 100644 index 0000000..d53d5e4 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/SpawnerPillagerBlock.java @@ -0,0 +1,68 @@ + +package ch.netquick.easysurvival.block; + +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.level.storage.loot.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.SoundType; +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.util.RandomSource; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import ch.netquick.easysurvival.procedures.SpawnerPillagerUpdateTickProcedure; + +public class SpawnerPillagerBlock extends Block { + public SpawnerPillagerBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).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 List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 100); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + SpawnerPillagerUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 100); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/SpawnerSlimeBlock.java b/src/main/java/ch/netquick/easysurvival/block/SpawnerSlimeBlock.java new file mode 100644 index 0000000..d57d86f --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/SpawnerSlimeBlock.java @@ -0,0 +1,68 @@ + +package ch.netquick.easysurvival.block; + +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.level.storage.loot.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.SoundType; +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.util.RandomSource; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import ch.netquick.easysurvival.procedures.SpawnerSlimeUpdateTickProcedure; + +public class SpawnerSlimeBlock extends Block { + public SpawnerSlimeBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).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 List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 100); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + SpawnerSlimeUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 100); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/SpawnerWitherSkelettBlock.java b/src/main/java/ch/netquick/easysurvival/block/SpawnerWitherSkelettBlock.java new file mode 100644 index 0000000..5b3f4ac --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/SpawnerWitherSkelettBlock.java @@ -0,0 +1,68 @@ + +package ch.netquick.easysurvival.block; + +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.level.storage.loot.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.SoundType; +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.util.RandomSource; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import ch.netquick.easysurvival.procedures.SpawnerWitherSkelettUpdateTickProcedure; + +public class SpawnerWitherSkelettBlock extends Block { + public SpawnerWitherSkelettBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).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 List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 100); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + SpawnerWitherSkelettUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 100); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/TeleporterPlateBlock.java b/src/main/java/ch/netquick/easysurvival/block/TeleporterPlateBlock.java new file mode 100644 index 0000000..91dedab --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/TeleporterPlateBlock.java @@ -0,0 +1,118 @@ + +package ch.netquick.easysurvival.block; + +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.LootParams; +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.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.Containers; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import ch.netquick.easysurvival.procedures.TeleporterProcProcedure; +import ch.netquick.easysurvival.block.entity.TeleporterPlateBlockEntity; + +public class TeleporterPlateBlock extends Block implements EntityBlock { + public TeleporterPlateBlock() { + super(BlockBehaviour.Properties.of().sound(SoundType.ANVIL).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 List getDrops(BlockState state, LootParams.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); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + double hitX = hit.getLocation().x; + double hitY = hit.getLocation().y; + double hitZ = hit.getLocation().z; + Direction direction = hit.getDirection(); + TeleporterProcProcedure.execute(world, x, y, z, entity); + 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 TeleporterPlateBlockEntity(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 TeleporterPlateBlockEntity 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 TeleporterPlateBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/TreeCropBlock.java b/src/main/java/ch/netquick/easysurvival/block/TreeCropBlock.java new file mode 100644 index 0000000..c5ea05b --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/TreeCropBlock.java @@ -0,0 +1,158 @@ + +package ch.netquick.easysurvival.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.LootParams; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +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.PickaxeItem; +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.util.RandomSource; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.List; +import java.util.Collections; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.TreeCropGUIMenu; +import ch.netquick.easysurvival.procedures.TreeCropUpdateTickProcedure; +import ch.netquick.easysurvival.block.entity.TreeCropBlockEntity; + +public class TreeCropBlock extends Block implements EntityBlock { + public TreeCropBlock() { + super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.GRAVEL).strength(1f, 10f).requiresCorrectToolForDrops().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 boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) { + if (player.getInventory().getSelected().getItem() instanceof PickaxeItem tieredItem) + return tieredItem.getTier().getLevel() >= 1; + return false; + } + + @Override + public List getDrops(BlockState state, LootParams.Builder builder) { + List dropsOriginal = super.getDrops(state, builder); + if (!dropsOriginal.isEmpty()) + return dropsOriginal; + return Collections.singletonList(new ItemStack(this, 1)); + } + + @Override + public void onPlace(BlockState blockstate, Level world, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(blockstate, world, pos, oldState, moving); + world.scheduleTick(pos, this, 25); + } + + @Override + public void tick(BlockState blockstate, ServerLevel world, BlockPos pos, RandomSource random) { + super.tick(blockstate, world, pos, random); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + TreeCropUpdateTickProcedure.execute(world, x, y, z); + world.scheduleTick(pos, this, 25); + } + + @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("Tree Crop"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new TreeCropGUIMenu(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 TreeCropBlockEntity(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 TreeCropBlockEntity 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 TreeCropBlockEntity be) + return AbstractContainerMenu.getRedstoneSignalFromContainer(be); + else + return 0; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/CropBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/CropBlockEntity.java new file mode 100644 index 0000000..1ad9e70 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/CropBlockEntity.java @@ -0,0 +1,159 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.CropGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class CropBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(8, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public CropBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.CROP.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("crop"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new CropGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Crop"); + } + + @Override + protected NonNullList getItems() { + return this.stacks; + } + + @Override + protected void setItems(NonNullList stacks) { + this.stacks = stacks; + } + + @Override + public boolean canPlaceItem(int index, ItemStack stack) { + if (index == 1) + return false; + if (index == 2) + return false; + if (index == 3) + return false; + if (index == 4) + return false; + if (index == 5) + return false; + if (index == 6) + return false; + if (index == 7) + return false; + 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) { + if (index == 0) + return false; + 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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/EasyAnvilBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/EasyAnvilBlockEntity.java new file mode 100644 index 0000000..e8db23b --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/EasyAnvilBlockEntity.java @@ -0,0 +1,145 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyAnvilGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class EasyAnvilBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(3, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public EasyAnvilBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.EASY_ANVIL.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("easy_anvil"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new EasyAnvilGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Easy Anvil"); + } + + @Override + protected NonNullList getItems() { + return this.stacks; + } + + @Override + protected void setItems(NonNullList stacks) { + this.stacks = stacks; + } + + @Override + public boolean canPlaceItem(int index, ItemStack stack) { + if (index == 2) + return false; + 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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/EasyConverterBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/EasyConverterBlockEntity.java new file mode 100644 index 0000000..e47ee5e --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/EasyConverterBlockEntity.java @@ -0,0 +1,147 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyConverterGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class EasyConverterBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(2, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public EasyConverterBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.EASY_CONVERTER.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("easy_converter"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new EasyConverterGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Easy Converter"); + } + + @Override + protected NonNullList getItems() { + return this.stacks; + } + + @Override + protected void setItems(NonNullList stacks) { + this.stacks = stacks; + } + + @Override + public boolean canPlaceItem(int index, ItemStack stack) { + if (index == 1) + return false; + 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) { + if (index == 0) + return false; + 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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/EasyEnchantmentTableBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/EasyEnchantmentTableBlockEntity.java new file mode 100644 index 0000000..0cdec03 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/EasyEnchantmentTableBlockEntity.java @@ -0,0 +1,161 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyEnchantmentTableGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class EasyEnchantmentTableBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(11, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public EasyEnchantmentTableBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.EASY_ENCHANTMENT_TABLE.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("easy_enchantment_table"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new EasyEnchantmentTableGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Easy Enchantment Table"); + } + + @Override + protected NonNullList getItems() { + return this.stacks; + } + + @Override + protected void setItems(NonNullList stacks) { + this.stacks = stacks; + } + + @Override + public boolean canPlaceItem(int index, ItemStack stack) { + if (index == 1) + return false; + if (index == 2) + return false; + if (index == 3) + return false; + if (index == 4) + return false; + if (index == 5) + return false; + if (index == 6) + return false; + if (index == 7) + return false; + if (index == 8) + return false; + if (index == 9) + return false; + 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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/EasyForgeAutoBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/EasyForgeAutoBlockEntity.java new file mode 100644 index 0000000..b5a8615 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/EasyForgeAutoBlockEntity.java @@ -0,0 +1,147 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyForgeGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class EasyForgeAutoBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(2, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public EasyForgeAutoBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.EASY_FORGE_AUTO.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("easy_forge_auto"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new EasyForgeGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Easy Forge"); + } + + @Override + protected NonNullList getItems() { + return this.stacks; + } + + @Override + protected void setItems(NonNullList stacks) { + this.stacks = stacks; + } + + @Override + public boolean canPlaceItem(int index, ItemStack stack) { + if (index == 1) + return false; + 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) { + if (index == 0) + return false; + 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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/EasyForgeBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/EasyForgeBlockEntity.java new file mode 100644 index 0000000..8328938 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/EasyForgeBlockEntity.java @@ -0,0 +1,143 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyForgeGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class EasyForgeBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(2, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public EasyForgeBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.EASY_FORGE.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("easy_forge"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new EasyForgeGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Easy Forge"); + } + + @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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/EasyFridgeBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/EasyFridgeBlockEntity.java new file mode 100644 index 0000000..ca5d9fd --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/EasyFridgeBlockEntity.java @@ -0,0 +1,147 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyFridgeGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class EasyFridgeBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(2, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public EasyFridgeBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.EASY_FRIDGE.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("easy_fridge"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new EasyFridgeGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Easy Fridge"); + } + + @Override + protected NonNullList getItems() { + return this.stacks; + } + + @Override + protected void setItems(NonNullList stacks) { + this.stacks = stacks; + } + + @Override + public boolean canPlaceItem(int index, ItemStack stack) { + if (index == 1) + return false; + 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) { + if (index == 0) + return false; + 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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/EasyIntakeBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/EasyIntakeBlockEntity.java new file mode 100644 index 0000000..a23f7e6 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/EasyIntakeBlockEntity.java @@ -0,0 +1,143 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyIntakeGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class EasyIntakeBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(27, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public EasyIntakeBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.EASY_INTAKE.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("easy_intake"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new EasyIntakeGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Easy Intake"); + } + + @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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/EasySawBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/EasySawBlockEntity.java new file mode 100644 index 0000000..e789fdd --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/EasySawBlockEntity.java @@ -0,0 +1,143 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasySawGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class EasySawBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(3, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public EasySawBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.EASY_SAW.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("easy_saw"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new EasySawGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Easy Saw"); + } + + @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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/EasySmelterBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/EasySmelterBlockEntity.java new file mode 100644 index 0000000..46f9d46 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/EasySmelterBlockEntity.java @@ -0,0 +1,143 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasySmelterGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class EasySmelterBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(2, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public EasySmelterBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.EASY_SMELTER.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("easy_smelter"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new EasySmelterGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Easy Smelter"); + } + + @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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/TeleporterPlateBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/TeleporterPlateBlockEntity.java new file mode 100644 index 0000000..bc3d920 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/TeleporterPlateBlockEntity.java @@ -0,0 +1,140 @@ +package ch.netquick.easysurvival.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.ChestMenu; +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.nbt.CompoundTag; +import net.minecraft.core.NonNullList; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class TeleporterPlateBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(0, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public TeleporterPlateBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.TELEPORTER_PLATE.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("teleporter_plate"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return ChestMenu.threeRows(id, inventory); + } + + @Override + public Component getDisplayName() { + return Component.literal("Teleporter Plate"); + } + + @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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/block/entity/TreeCropBlockEntity.java b/src/main/java/ch/netquick/easysurvival/block/entity/TreeCropBlockEntity.java new file mode 100644 index 0000000..741eee2 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/block/entity/TreeCropBlockEntity.java @@ -0,0 +1,159 @@ +package ch.netquick.easysurvival.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 javax.annotation.Nullable; + +import java.util.stream.IntStream; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.TreeCropGUIMenu; +import ch.netquick.easysurvival.init.EasysurvivalModBlockEntities; + +public class TreeCropBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer { + private NonNullList stacks = NonNullList.withSize(8, ItemStack.EMPTY); + private final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.values()); + + public TreeCropBlockEntity(BlockPos position, BlockState state) { + super(EasysurvivalModBlockEntities.TREE_CROP.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("tree_crop"); + } + + @Override + public int getMaxStackSize() { + return 64; + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory) { + return new TreeCropGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition)); + } + + @Override + public Component getDisplayName() { + return Component.literal("Tree Crop"); + } + + @Override + protected NonNullList getItems() { + return this.stacks; + } + + @Override + protected void setItems(NonNullList stacks) { + this.stacks = stacks; + } + + @Override + public boolean canPlaceItem(int index, ItemStack stack) { + if (index == 1) + return false; + if (index == 2) + return false; + if (index == 3) + return false; + if (index == 4) + return false; + if (index == 5) + return false; + if (index == 6) + return false; + if (index == 7) + return false; + 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) { + if (index == 0) + return false; + 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 handler : handlers) + handler.invalidate(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/CraftingStickGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/CraftingStickGUIScreen.java new file mode 100644 index 0000000..59f0677 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/CraftingStickGUIScreen.java @@ -0,0 +1,79 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.CraftingStickGUIMenu; + +public class CraftingStickGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = CraftingStickGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public CraftingStickGUIScreen(CraftingStickGUIMenu 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("easysurvival:textures/screens/crafting_stick_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/CropGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/CropGUIScreen.java new file mode 100644 index 0000000..ac98461 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/CropGUIScreen.java @@ -0,0 +1,81 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.CropGUIMenu; + +public class CropGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = CropGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public CropGUIScreen(CropGUIMenu 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("easysurvival:textures/screens/crop_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.crop_gui.label_growcrop"), 7, 8, -12829636, false); + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.crop_gui.label_seed"), 7, 37, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/DedicatedStorageGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/DedicatedStorageGUIScreen.java new file mode 100644 index 0000000..40fdc47 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/DedicatedStorageGUIScreen.java @@ -0,0 +1,79 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.DedicatedStorageGUIMenu; + +public class DedicatedStorageGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = DedicatedStorageGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public DedicatedStorageGUIScreen(DedicatedStorageGUIMenu 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("easysurvival:textures/screens/dedicated_storage_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/EasyAnvilGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/EasyAnvilGUIScreen.java new file mode 100644 index 0000000..3af5c52 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/EasyAnvilGUIScreen.java @@ -0,0 +1,81 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.EasyAnvilGUIMenu; + +public class EasyAnvilGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = EasyAnvilGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public EasyAnvilGUIScreen(EasyAnvilGUIMenu 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("easysurvival:textures/screens/easy_anvil_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_anvil_gui.label_easyanvil"), 6, 11, -12829636, false); + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_anvil_gui.label_ingot"), 43, 50, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/EasyConverterGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/EasyConverterGUIScreen.java new file mode 100644 index 0000000..13a4ed1 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/EasyConverterGUIScreen.java @@ -0,0 +1,80 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.EasyConverterGUIMenu; + +public class EasyConverterGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = EasyConverterGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public EasyConverterGUIScreen(EasyConverterGUIMenu 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("easysurvival:textures/screens/easy_converter_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_converter_gui.label_easyconverter"), 6, 11, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/EasyEnchantmentTableGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/EasyEnchantmentTableGUIScreen.java new file mode 100644 index 0000000..9c2ab7d --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/EasyEnchantmentTableGUIScreen.java @@ -0,0 +1,82 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.EasyEnchantmentTableGUIMenu; + +public class EasyEnchantmentTableGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = EasyEnchantmentTableGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public EasyEnchantmentTableGUIScreen(EasyEnchantmentTableGUIMenu 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("easysurvival:textures/screens/easy_enchantment_table_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_enchantment_table_gui.label_easyenchant"), 6, 7, -12829636, false); + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_enchantment_table_gui.label_item"), 126, 14, -12829636, false); + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_enchantment_table_gui.label_lapis_lazuli"), 87, 37, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/EasyForgeGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/EasyForgeGUIScreen.java new file mode 100644 index 0000000..d9d6c62 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/EasyForgeGUIScreen.java @@ -0,0 +1,81 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.EasyForgeGUIMenu; + +public class EasyForgeGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = EasyForgeGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public EasyForgeGUIScreen(EasyForgeGUIMenu 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("easysurvival:textures/screens/easy_forge_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_forge_gui.label_easyforge"), 6, 11, -12829636, false); + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_forge_gui.label_empty"), 82, 51, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/EasyFridgeGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/EasyFridgeGUIScreen.java new file mode 100644 index 0000000..01470a7 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/EasyFridgeGUIScreen.java @@ -0,0 +1,80 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.EasyFridgeGUIMenu; + +public class EasyFridgeGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = EasyFridgeGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public EasyFridgeGUIScreen(EasyFridgeGUIMenu 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("easysurvival:textures/screens/easy_fridge_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_fridge_gui.label_easyfridge"), 6, 11, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/EasyIntakeGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/EasyIntakeGUIScreen.java new file mode 100644 index 0000000..8d02466 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/EasyIntakeGUIScreen.java @@ -0,0 +1,80 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.EasyIntakeGUIMenu; + +public class EasyIntakeGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = EasyIntakeGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public EasyIntakeGUIScreen(EasyIntakeGUIMenu 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 = 178; + this.imageHeight = 166; + } + + private static final ResourceLocation texture = new ResourceLocation("easysurvival:textures/screens/easy_intake_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_intake_gui.label_easyintake"), 7, 2, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/EasySawGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/EasySawGUIScreen.java new file mode 100644 index 0000000..1bd5c9d --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/EasySawGUIScreen.java @@ -0,0 +1,81 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.EasySawGUIMenu; + +public class EasySawGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = EasySawGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public EasySawGUIScreen(EasySawGUIMenu 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("easysurvival:textures/screens/easy_saw_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_saw_gui.label_easysaw"), 6, 11, -12829636, false); + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_saw_gui.label_template"), 67, 47, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/EasySmelterGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/EasySmelterGUIScreen.java new file mode 100644 index 0000000..e7e02bc --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/EasySmelterGUIScreen.java @@ -0,0 +1,80 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.EasySmelterGUIMenu; + +public class EasySmelterGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = EasySmelterGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public EasySmelterGUIScreen(EasySmelterGUIMenu 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("easysurvival:textures/screens/easy_smelter_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.easy_smelter_gui.label_easysmelter"), 6, 11, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/TeleportSetGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/TeleportSetGUIScreen.java new file mode 100644 index 0000000..2962727 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/TeleportSetGUIScreen.java @@ -0,0 +1,115 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.components.EditBox; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.TeleportSetGUIMenu; + +public class TeleportSetGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = TeleportSetGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + EditBox TeleportName; + Button button_set; + + public TeleportSetGUIScreen(TeleportSetGUIMenu 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("easysurvival:textures/screens/teleport_set_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + TeleportName.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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; + } + if (TeleportName.isFocused()) + return TeleportName.keyPressed(key, b, c); + return super.keyPressed(key, b, c); + } + + @Override + public void containerTick() { + super.containerTick(); + TeleportName.tick(); + } + + @Override + protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.teleport_set_gui.label_set_teleport"), 56, 15, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + TeleportName = new EditBox(this.font, this.leftPos + 28, this.topPos + 62, 118, 18, Component.translatable("gui.easysurvival.teleport_set_gui.TeleportName")) { + @Override + public void insertText(String text) { + super.insertText(text); + if (getValue().isEmpty()) + setSuggestion(Component.translatable("gui.easysurvival.teleport_set_gui.TeleportName").getString()); + else + setSuggestion(null); + } + + @Override + public void moveCursorTo(int pos) { + super.moveCursorTo(pos); + if (getValue().isEmpty()) + setSuggestion(Component.translatable("gui.easysurvival.teleport_set_gui.TeleportName").getString()); + else + setSuggestion(null); + } + }; + TeleportName.setSuggestion(Component.translatable("gui.easysurvival.teleport_set_gui.TeleportName").getString()); + TeleportName.setMaxLength(32767); + guistate.put("text:TeleportName", TeleportName); + this.addWidget(this.TeleportName); + button_set = Button.builder(Component.translatable("gui.easysurvival.teleport_set_gui.button_set"), e -> { + }).bounds(this.leftPos + 66, this.topPos + 106, 40, 20).build(); + guistate.put("button:button_set", button_set); + this.addRenderableWidget(button_set); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/TeleporterGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/TeleporterGUIScreen.java new file mode 100644 index 0000000..2744740 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/TeleporterGUIScreen.java @@ -0,0 +1,93 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.TeleporterGUIMenu; + +public class TeleporterGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = TeleporterGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + Button button_teleport; + Button button_teleport1; + + public TeleporterGUIScreen(TeleporterGUIMenu 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("easysurvival:textures/screens/teleporter_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.teleporter_gui.label_teleport_1"), 6, 25, -12829636, false); + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.teleporter_gui.label_teleport_2"), 6, 52, -12829636, false); + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.teleporter_gui.label_easyteleport"), 6, 7, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + button_teleport = Button.builder(Component.translatable("gui.easysurvival.teleporter_gui.button_teleport"), e -> { + }).bounds(this.leftPos + 78, this.topPos + 25, 65, 20).build(); + guistate.put("button:button_teleport", button_teleport); + this.addRenderableWidget(button_teleport); + button_teleport1 = Button.builder(Component.translatable("gui.easysurvival.teleporter_gui.button_teleport1"), e -> { + }).bounds(this.leftPos + 78, this.topPos + 52, 65, 20).build(); + guistate.put("button:button_teleport1", button_teleport1); + this.addRenderableWidget(button_teleport1); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/client/gui/TreeCropGUIScreen.java b/src/main/java/ch/netquick/easysurvival/client/gui/TreeCropGUIScreen.java new file mode 100644 index 0000000..c5219da --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/client/gui/TreeCropGUIScreen.java @@ -0,0 +1,80 @@ +package ch.netquick.easysurvival.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.minecraft.client.gui.GuiGraphics; + +import java.util.HashMap; + +import com.mojang.blaze3d.systems.RenderSystem; + +import ch.netquick.easysurvival.world.inventory.TreeCropGUIMenu; + +public class TreeCropGUIScreen extends AbstractContainerScreen { + private final static HashMap guistate = TreeCropGUIMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public TreeCropGUIScreen(TreeCropGUIMenu 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("easysurvival:textures/screens/tree_crop_gui.png"); + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(guiGraphics); + super.render(guiGraphics, mouseX, mouseY, partialTicks); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + guiGraphics.blit(texture, 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(GuiGraphics guiGraphics, int mouseX, int mouseY) { + guiGraphics.drawString(this.font, Component.translatable("gui.easysurvival.tree_crop_gui.label_treecrop"), 6, 10, -12829636, false); + } + + @Override + public void onClose() { + super.onClose(); + } + + @Override + public void init() { + super.init(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModBlockEntities.java b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModBlockEntities.java new file mode 100644 index 0000000..b7f7183 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModBlockEntities.java @@ -0,0 +1,46 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package ch.netquick.easysurvival.init; + +import net.minecraftforge.registries.RegistryObject; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.DeferredRegister; + +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.Block; + +import ch.netquick.easysurvival.block.entity.TreeCropBlockEntity; +import ch.netquick.easysurvival.block.entity.TeleporterPlateBlockEntity; +import ch.netquick.easysurvival.block.entity.EasySmelterBlockEntity; +import ch.netquick.easysurvival.block.entity.EasySawBlockEntity; +import ch.netquick.easysurvival.block.entity.EasyIntakeBlockEntity; +import ch.netquick.easysurvival.block.entity.EasyFridgeBlockEntity; +import ch.netquick.easysurvival.block.entity.EasyForgeBlockEntity; +import ch.netquick.easysurvival.block.entity.EasyForgeAutoBlockEntity; +import ch.netquick.easysurvival.block.entity.EasyEnchantmentTableBlockEntity; +import ch.netquick.easysurvival.block.entity.EasyConverterBlockEntity; +import ch.netquick.easysurvival.block.entity.EasyAnvilBlockEntity; +import ch.netquick.easysurvival.block.entity.CropBlockEntity; +import ch.netquick.easysurvival.EasysurvivalMod; + +public class EasysurvivalModBlockEntities { + public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, EasysurvivalMod.MODID); + public static final RegistryObject> CROP = register("crop", EasysurvivalModBlocks.CROP, CropBlockEntity::new); + public static final RegistryObject> TREE_CROP = register("tree_crop", EasysurvivalModBlocks.TREE_CROP, TreeCropBlockEntity::new); + public static final RegistryObject> EASY_ENCHANTMENT_TABLE = register("easy_enchantment_table", EasysurvivalModBlocks.EASY_ENCHANTMENT_TABLE, EasyEnchantmentTableBlockEntity::new); + public static final RegistryObject> EASY_ANVIL = register("easy_anvil", EasysurvivalModBlocks.EASY_ANVIL, EasyAnvilBlockEntity::new); + public static final RegistryObject> EASY_FORGE = register("easy_forge", EasysurvivalModBlocks.EASY_FORGE, EasyForgeBlockEntity::new); + public static final RegistryObject> TELEPORTER_PLATE = register("teleporter_plate", EasysurvivalModBlocks.TELEPORTER_PLATE, TeleporterPlateBlockEntity::new); + public static final RegistryObject> EASY_FRIDGE = register("easy_fridge", EasysurvivalModBlocks.EASY_FRIDGE, EasyFridgeBlockEntity::new); + public static final RegistryObject> EASY_SMELTER = register("easy_smelter", EasysurvivalModBlocks.EASY_SMELTER, EasySmelterBlockEntity::new); + public static final RegistryObject> EASY_SAW = register("easy_saw", EasysurvivalModBlocks.EASY_SAW, EasySawBlockEntity::new); + public static final RegistryObject> EASY_INTAKE = register("easy_intake", EasysurvivalModBlocks.EASY_INTAKE, EasyIntakeBlockEntity::new); + public static final RegistryObject> EASY_FORGE_AUTO = register("easy_forge_auto", EasysurvivalModBlocks.EASY_FORGE_AUTO, EasyForgeAutoBlockEntity::new); + public static final RegistryObject> EASY_CONVERTER = register("easy_converter", EasysurvivalModBlocks.EASY_CONVERTER, EasyConverterBlockEntity::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/ch/netquick/easysurvival/init/EasysurvivalModBlocks.java b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModBlocks.java new file mode 100644 index 0000000..c2c8d3c --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModBlocks.java @@ -0,0 +1,57 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package ch.netquick.easysurvival.init; + +import net.minecraftforge.registries.RegistryObject; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.DeferredRegister; + +import net.minecraft.world.level.block.Block; + +import ch.netquick.easysurvival.block.TreeCropBlock; +import ch.netquick.easysurvival.block.TeleporterPlateBlock; +import ch.netquick.easysurvival.block.SpawnerWitherSkelettBlock; +import ch.netquick.easysurvival.block.SpawnerSlimeBlock; +import ch.netquick.easysurvival.block.SpawnerPillagerBlock; +import ch.netquick.easysurvival.block.SpawnerGhastBlock; +import ch.netquick.easysurvival.block.SpawnerEvokerBlock; +import ch.netquick.easysurvival.block.SpawnerCreeperBlock; +import ch.netquick.easysurvival.block.SpawnerBlazeBlock; +import ch.netquick.easysurvival.block.EasySmelterBlock; +import ch.netquick.easysurvival.block.EasySawBlock; +import ch.netquick.easysurvival.block.EasyIntakeBlock; +import ch.netquick.easysurvival.block.EasyFridgeBlock; +import ch.netquick.easysurvival.block.EasyForgeBlock; +import ch.netquick.easysurvival.block.EasyForgeAutoBlock; +import ch.netquick.easysurvival.block.EasyEnchantmentTableBlock; +import ch.netquick.easysurvival.block.EasyConverterBlock; +import ch.netquick.easysurvival.block.EasyAnvilBlock; +import ch.netquick.easysurvival.block.CropBlock; +import ch.netquick.easysurvival.EasysurvivalMod; + +public class EasysurvivalModBlocks { + public static final DeferredRegister REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCKS, EasysurvivalMod.MODID); + public static final RegistryObject CROP = REGISTRY.register("crop", () -> new CropBlock()); + public static final RegistryObject TREE_CROP = REGISTRY.register("tree_crop", () -> new TreeCropBlock()); + public static final RegistryObject SPAWNER_BLAZE = REGISTRY.register("spawner_blaze", () -> new SpawnerBlazeBlock()); + public static final RegistryObject SPAWNER_SLIME = REGISTRY.register("spawner_slime", () -> new SpawnerSlimeBlock()); + public static final RegistryObject SPAWNER_GHAST = REGISTRY.register("spawner_ghast", () -> new SpawnerGhastBlock()); + public static final RegistryObject EASY_ENCHANTMENT_TABLE = REGISTRY.register("easy_enchantment_table", () -> new EasyEnchantmentTableBlock()); + public static final RegistryObject EASY_ANVIL = REGISTRY.register("easy_anvil", () -> new EasyAnvilBlock()); + public static final RegistryObject EASY_FORGE = REGISTRY.register("easy_forge", () -> new EasyForgeBlock()); + public static final RegistryObject TELEPORTER_PLATE = REGISTRY.register("teleporter_plate", () -> new TeleporterPlateBlock()); + public static final RegistryObject EASY_FRIDGE = REGISTRY.register("easy_fridge", () -> new EasyFridgeBlock()); + public static final RegistryObject SPAWNER_WITHER_SKELETT = REGISTRY.register("spawner_wither_skelett", () -> new SpawnerWitherSkelettBlock()); + public static final RegistryObject EASY_SMELTER = REGISTRY.register("easy_smelter", () -> new EasySmelterBlock()); + public static final RegistryObject SPAWNER_CREEPER = REGISTRY.register("spawner_creeper", () -> new SpawnerCreeperBlock()); + public static final RegistryObject EASY_SAW = REGISTRY.register("easy_saw", () -> new EasySawBlock()); + public static final RegistryObject SPAWNER_PILLAGER = REGISTRY.register("spawner_pillager", () -> new SpawnerPillagerBlock()); + public static final RegistryObject SPAWNER_EVOKER = REGISTRY.register("spawner_evoker", () -> new SpawnerEvokerBlock()); + public static final RegistryObject EASY_INTAKE = REGISTRY.register("easy_intake", () -> new EasyIntakeBlock()); + public static final RegistryObject EASY_FORGE_AUTO = REGISTRY.register("easy_forge_auto", () -> new EasyForgeAutoBlock()); + public static final RegistryObject EASY_CONVERTER = REGISTRY.register("easy_converter", () -> new EasyConverterBlock()); + // Start of user code block custom blocks + // End of user code block custom blocks +} diff --git a/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModGameRules.java b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModGameRules.java new file mode 100644 index 0000000..dc23df9 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModGameRules.java @@ -0,0 +1,14 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package ch.netquick.easysurvival.init; + +import net.minecraftforge.fml.common.Mod; + +import net.minecraft.world.level.GameRules; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class EasysurvivalModGameRules { + public static final GameRules.Key SPAWNERSACTIVE = GameRules.register("spawnersActive", GameRules.Category.SPAWNING, GameRules.BooleanValue.create(false)); +} diff --git a/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModItems.java b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModItems.java new file mode 100644 index 0000000..b80d7a1 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModItems.java @@ -0,0 +1,83 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package ch.netquick.easysurvival.init; + +import net.minecraftforge.registries.RegistryObject; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.DeferredRegister; + +import net.minecraft.world.level.block.Block; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.BlockItem; + +import ch.netquick.easysurvival.item.QuarzSwordItem; +import ch.netquick.easysurvival.item.QuarzShovelItem; +import ch.netquick.easysurvival.item.QuarzPickaxeItem; +import ch.netquick.easysurvival.item.QuarzHoeItem; +import ch.netquick.easysurvival.item.QuarzAxeItem; +import ch.netquick.easysurvival.item.PortableCraftingTableItem; +import ch.netquick.easysurvival.item.NetherrackSwordItem; +import ch.netquick.easysurvival.item.NetherrackShovelItem; +import ch.netquick.easysurvival.item.NetherrackPickaxeItem; +import ch.netquick.easysurvival.item.NetherrackHoeItem; +import ch.netquick.easysurvival.item.NetherrackAxeItem; +import ch.netquick.easysurvival.item.NetherrackArmorItem; +import ch.netquick.easysurvival.item.NetherStickItem; +import ch.netquick.easysurvival.item.BasaltSwordItem; +import ch.netquick.easysurvival.item.BasaltShovelItem; +import ch.netquick.easysurvival.item.BasaltPickaxeItem; +import ch.netquick.easysurvival.item.BasaltHoeItem; +import ch.netquick.easysurvival.item.BasaltAxeItem; +import ch.netquick.easysurvival.EasysurvivalMod; + +public class EasysurvivalModItems { + public static final DeferredRegister REGISTRY = DeferredRegister.create(ForgeRegistries.ITEMS, EasysurvivalMod.MODID); + public static final RegistryObject NETHER_STICK = REGISTRY.register("nether_stick", () -> new NetherStickItem()); + public static final RegistryObject CROP = block(EasysurvivalModBlocks.CROP); + public static final RegistryObject NETHERRACK_PICKAXE = REGISTRY.register("netherrack_pickaxe", () -> new NetherrackPickaxeItem()); + public static final RegistryObject NETHERRACK_AXE = REGISTRY.register("netherrack_axe", () -> new NetherrackAxeItem()); + public static final RegistryObject NETHERRACK_SWORD = REGISTRY.register("netherrack_sword", () -> new NetherrackSwordItem()); + public static final RegistryObject NETHERRACK_SHOVEL = REGISTRY.register("netherrack_shovel", () -> new NetherrackShovelItem()); + public static final RegistryObject NETHERRACK_HOE = REGISTRY.register("netherrack_hoe", () -> new NetherrackHoeItem()); + public static final RegistryObject TREE_CROP = block(EasysurvivalModBlocks.TREE_CROP); + public static final RegistryObject BASALT_PICKAXE = REGISTRY.register("basalt_pickaxe", () -> new BasaltPickaxeItem()); + public static final RegistryObject BASALT_AXE = REGISTRY.register("basalt_axe", () -> new BasaltAxeItem()); + public static final RegistryObject BASALT_SWORD = REGISTRY.register("basalt_sword", () -> new BasaltSwordItem()); + public static final RegistryObject BASALT_SHOVEL = REGISTRY.register("basalt_shovel", () -> new BasaltShovelItem()); + public static final RegistryObject BASALT_HOE = REGISTRY.register("basalt_hoe", () -> new BasaltHoeItem()); + public static final RegistryObject NETHERRACK_ARMOR_HELMET = REGISTRY.register("netherrack_armor_helmet", () -> new NetherrackArmorItem.Helmet()); + public static final RegistryObject NETHERRACK_ARMOR_CHESTPLATE = REGISTRY.register("netherrack_armor_chestplate", () -> new NetherrackArmorItem.Chestplate()); + public static final RegistryObject NETHERRACK_ARMOR_LEGGINGS = REGISTRY.register("netherrack_armor_leggings", () -> new NetherrackArmorItem.Leggings()); + public static final RegistryObject NETHERRACK_ARMOR_BOOTS = REGISTRY.register("netherrack_armor_boots", () -> new NetherrackArmorItem.Boots()); + public static final RegistryObject QUARZ_PICKAXE = REGISTRY.register("quarz_pickaxe", () -> new QuarzPickaxeItem()); + public static final RegistryObject QUARZ_AXE = REGISTRY.register("quarz_axe", () -> new QuarzAxeItem()); + public static final RegistryObject QUARZ_SWORD = REGISTRY.register("quarz_sword", () -> new QuarzSwordItem()); + public static final RegistryObject QUARZ_SHOVEL = REGISTRY.register("quarz_shovel", () -> new QuarzShovelItem()); + public static final RegistryObject QUARZ_HOE = REGISTRY.register("quarz_hoe", () -> new QuarzHoeItem()); + public static final RegistryObject SPAWNER_BLAZE = block(EasysurvivalModBlocks.SPAWNER_BLAZE); + public static final RegistryObject SPAWNER_SLIME = block(EasysurvivalModBlocks.SPAWNER_SLIME); + public static final RegistryObject SPAWNER_GHAST = block(EasysurvivalModBlocks.SPAWNER_GHAST); + public static final RegistryObject EASY_ENCHANTMENT_TABLE = block(EasysurvivalModBlocks.EASY_ENCHANTMENT_TABLE); + public static final RegistryObject EASY_ANVIL = block(EasysurvivalModBlocks.EASY_ANVIL); + public static final RegistryObject EASY_FORGE = block(EasysurvivalModBlocks.EASY_FORGE); + public static final RegistryObject TELEPORTER_PLATE = block(EasysurvivalModBlocks.TELEPORTER_PLATE); + public static final RegistryObject PORTABLE_CRAFTING_TABLE = REGISTRY.register("portable_crafting_table", () -> new PortableCraftingTableItem()); + public static final RegistryObject EASY_FRIDGE = block(EasysurvivalModBlocks.EASY_FRIDGE); + public static final RegistryObject SPAWNER_WITHER_SKELETT = block(EasysurvivalModBlocks.SPAWNER_WITHER_SKELETT); + public static final RegistryObject EASY_SMELTER = block(EasysurvivalModBlocks.EASY_SMELTER); + public static final RegistryObject SPAWNER_CREEPER = block(EasysurvivalModBlocks.SPAWNER_CREEPER); + public static final RegistryObject EASY_SAW = block(EasysurvivalModBlocks.EASY_SAW); + public static final RegistryObject SPAWNER_PILLAGER = block(EasysurvivalModBlocks.SPAWNER_PILLAGER); + public static final RegistryObject SPAWNER_EVOKER = block(EasysurvivalModBlocks.SPAWNER_EVOKER); + public static final RegistryObject EASY_INTAKE = block(EasysurvivalModBlocks.EASY_INTAKE); + public static final RegistryObject EASY_FORGE_AUTO = block(EasysurvivalModBlocks.EASY_FORGE_AUTO); + public static final RegistryObject EASY_CONVERTER = block(EasysurvivalModBlocks.EASY_CONVERTER); + + // Start of user code block custom items + // End of user code block custom items + 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/ch/netquick/easysurvival/init/EasysurvivalModMenus.java b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModMenus.java new file mode 100644 index 0000000..a6c4fb7 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModMenus.java @@ -0,0 +1,46 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package ch.netquick.easysurvival.init; + +import net.minecraftforge.registries.RegistryObject; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.common.extensions.IForgeMenuType; + +import net.minecraft.world.inventory.MenuType; + +import ch.netquick.easysurvival.world.inventory.TreeCropGUIMenu; +import ch.netquick.easysurvival.world.inventory.TeleporterGUIMenu; +import ch.netquick.easysurvival.world.inventory.TeleportSetGUIMenu; +import ch.netquick.easysurvival.world.inventory.EasySmelterGUIMenu; +import ch.netquick.easysurvival.world.inventory.EasySawGUIMenu; +import ch.netquick.easysurvival.world.inventory.EasyIntakeGUIMenu; +import ch.netquick.easysurvival.world.inventory.EasyFridgeGUIMenu; +import ch.netquick.easysurvival.world.inventory.EasyForgeGUIMenu; +import ch.netquick.easysurvival.world.inventory.EasyEnchantmentTableGUIMenu; +import ch.netquick.easysurvival.world.inventory.EasyConverterGUIMenu; +import ch.netquick.easysurvival.world.inventory.EasyAnvilGUIMenu; +import ch.netquick.easysurvival.world.inventory.DedicatedStorageGUIMenu; +import ch.netquick.easysurvival.world.inventory.CropGUIMenu; +import ch.netquick.easysurvival.world.inventory.CraftingStickGUIMenu; +import ch.netquick.easysurvival.EasysurvivalMod; + +public class EasysurvivalModMenus { + public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.MENU_TYPES, EasysurvivalMod.MODID); + public static final RegistryObject> CROP_GUI = REGISTRY.register("crop_gui", () -> IForgeMenuType.create(CropGUIMenu::new)); + public static final RegistryObject> TREE_CROP_GUI = REGISTRY.register("tree_crop_gui", () -> IForgeMenuType.create(TreeCropGUIMenu::new)); + public static final RegistryObject> EASY_ENCHANTMENT_TABLE_GUI = REGISTRY.register("easy_enchantment_table_gui", () -> IForgeMenuType.create(EasyEnchantmentTableGUIMenu::new)); + public static final RegistryObject> EASY_ANVIL_GUI = REGISTRY.register("easy_anvil_gui", () -> IForgeMenuType.create(EasyAnvilGUIMenu::new)); + public static final RegistryObject> DEDICATED_STORAGE_GUI = REGISTRY.register("dedicated_storage_gui", () -> IForgeMenuType.create(DedicatedStorageGUIMenu::new)); + public static final RegistryObject> EASY_FORGE_GUI = REGISTRY.register("easy_forge_gui", () -> IForgeMenuType.create(EasyForgeGUIMenu::new)); + public static final RegistryObject> TELEPORT_SET_GUI = REGISTRY.register("teleport_set_gui", () -> IForgeMenuType.create(TeleportSetGUIMenu::new)); + public static final RegistryObject> TELEPORTER_GUI = REGISTRY.register("teleporter_gui", () -> IForgeMenuType.create(TeleporterGUIMenu::new)); + public static final RegistryObject> EASY_SMELTER_GUI = REGISTRY.register("easy_smelter_gui", () -> IForgeMenuType.create(EasySmelterGUIMenu::new)); + public static final RegistryObject> EASY_SAW_GUI = REGISTRY.register("easy_saw_gui", () -> IForgeMenuType.create(EasySawGUIMenu::new)); + public static final RegistryObject> EASY_FRIDGE_GUI = REGISTRY.register("easy_fridge_gui", () -> IForgeMenuType.create(EasyFridgeGUIMenu::new)); + public static final RegistryObject> EASY_INTAKE_GUI = REGISTRY.register("easy_intake_gui", () -> IForgeMenuType.create(EasyIntakeGUIMenu::new)); + public static final RegistryObject> EASY_CONVERTER_GUI = REGISTRY.register("easy_converter_gui", () -> IForgeMenuType.create(EasyConverterGUIMenu::new)); + public static final RegistryObject> CRAFTING_STICK_GUI = REGISTRY.register("crafting_stick_gui", () -> IForgeMenuType.create(CraftingStickGUIMenu::new)); +} diff --git a/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModScreens.java b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModScreens.java new file mode 100644 index 0000000..46b0cf5 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModScreens.java @@ -0,0 +1,50 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package ch.netquick.easysurvival.init; + +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.client.gui.screens.MenuScreens; + +import ch.netquick.easysurvival.client.gui.TreeCropGUIScreen; +import ch.netquick.easysurvival.client.gui.TeleporterGUIScreen; +import ch.netquick.easysurvival.client.gui.TeleportSetGUIScreen; +import ch.netquick.easysurvival.client.gui.EasySmelterGUIScreen; +import ch.netquick.easysurvival.client.gui.EasySawGUIScreen; +import ch.netquick.easysurvival.client.gui.EasyIntakeGUIScreen; +import ch.netquick.easysurvival.client.gui.EasyFridgeGUIScreen; +import ch.netquick.easysurvival.client.gui.EasyForgeGUIScreen; +import ch.netquick.easysurvival.client.gui.EasyEnchantmentTableGUIScreen; +import ch.netquick.easysurvival.client.gui.EasyConverterGUIScreen; +import ch.netquick.easysurvival.client.gui.EasyAnvilGUIScreen; +import ch.netquick.easysurvival.client.gui.DedicatedStorageGUIScreen; +import ch.netquick.easysurvival.client.gui.CropGUIScreen; +import ch.netquick.easysurvival.client.gui.CraftingStickGUIScreen; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public class EasysurvivalModScreens { + @SubscribeEvent + public static void clientLoad(FMLClientSetupEvent event) { + event.enqueueWork(() -> { + MenuScreens.register(EasysurvivalModMenus.CROP_GUI.get(), CropGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.TREE_CROP_GUI.get(), TreeCropGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.EASY_ENCHANTMENT_TABLE_GUI.get(), EasyEnchantmentTableGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.EASY_ANVIL_GUI.get(), EasyAnvilGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.DEDICATED_STORAGE_GUI.get(), DedicatedStorageGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.EASY_FORGE_GUI.get(), EasyForgeGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.TELEPORT_SET_GUI.get(), TeleportSetGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.TELEPORTER_GUI.get(), TeleporterGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.EASY_SMELTER_GUI.get(), EasySmelterGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.EASY_SAW_GUI.get(), EasySawGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.EASY_FRIDGE_GUI.get(), EasyFridgeGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.EASY_INTAKE_GUI.get(), EasyIntakeGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.EASY_CONVERTER_GUI.get(), EasyConverterGUIScreen::new); + MenuScreens.register(EasysurvivalModMenus.CRAFTING_STICK_GUI.get(), CraftingStickGUIScreen::new); + }); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModTabs.java b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModTabs.java new file mode 100644 index 0000000..d479f3a --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/init/EasysurvivalModTabs.java @@ -0,0 +1,78 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package ch.netquick.easysurvival.init; + +import net.minecraftforge.registries.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.network.chat.Component; +import net.minecraft.core.registries.Registries; + +import ch.netquick.easysurvival.EasysurvivalMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class EasysurvivalModTabs { + public static final DeferredRegister REGISTRY = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, EasysurvivalMod.MODID); + public static final RegistryObject EASY_SURVIVAL = REGISTRY.register("easy_survival", + () -> CreativeModeTab.builder().title(Component.translatable("item_group.easysurvival.easy_survival")).icon(() -> new ItemStack(Blocks.JUNGLE_SAPLING)).displayItems((parameters, tabData) -> { + tabData.accept(EasysurvivalModBlocks.CROP.get().asItem()); + tabData.accept(EasysurvivalModBlocks.TREE_CROP.get().asItem()); + tabData.accept(EasysurvivalModBlocks.EASY_ENCHANTMENT_TABLE.get().asItem()); + tabData.accept(EasysurvivalModBlocks.EASY_ANVIL.get().asItem()); + tabData.accept(EasysurvivalModBlocks.EASY_FORGE.get().asItem()); + tabData.accept(EasysurvivalModItems.PORTABLE_CRAFTING_TABLE.get()); + tabData.accept(EasysurvivalModBlocks.EASY_FRIDGE.get().asItem()); + tabData.accept(EasysurvivalModBlocks.EASY_SMELTER.get().asItem()); + tabData.accept(EasysurvivalModBlocks.EASY_SAW.get().asItem()); + tabData.accept(EasysurvivalModBlocks.EASY_INTAKE.get().asItem()); + tabData.accept(EasysurvivalModBlocks.EASY_FORGE_AUTO.get().asItem()); + tabData.accept(EasysurvivalModBlocks.EASY_CONVERTER.get().asItem()); + }).withSearchBar().build()); + + @SubscribeEvent + public static void buildTabContentsVanilla(BuildCreativeModeTabContentsEvent tabData) { + if (tabData.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) { + tabData.accept(EasysurvivalModBlocks.SPAWNER_BLAZE.get().asItem()); + tabData.accept(EasysurvivalModBlocks.SPAWNER_SLIME.get().asItem()); + tabData.accept(EasysurvivalModBlocks.SPAWNER_GHAST.get().asItem()); + tabData.accept(EasysurvivalModBlocks.SPAWNER_WITHER_SKELETT.get().asItem()); + tabData.accept(EasysurvivalModBlocks.SPAWNER_CREEPER.get().asItem()); + tabData.accept(EasysurvivalModBlocks.SPAWNER_PILLAGER.get().asItem()); + tabData.accept(EasysurvivalModBlocks.SPAWNER_EVOKER.get().asItem()); + } else if (tabData.getTabKey() == CreativeModeTabs.FUNCTIONAL_BLOCKS) { + tabData.accept(EasysurvivalModBlocks.TELEPORTER_PLATE.get().asItem()); + } else if (tabData.getTabKey() == CreativeModeTabs.COMBAT) { + tabData.accept(EasysurvivalModItems.NETHERRACK_SWORD.get()); + tabData.accept(EasysurvivalModItems.BASALT_SWORD.get()); + tabData.accept(EasysurvivalModItems.NETHERRACK_ARMOR_HELMET.get()); + tabData.accept(EasysurvivalModItems.NETHERRACK_ARMOR_CHESTPLATE.get()); + tabData.accept(EasysurvivalModItems.NETHERRACK_ARMOR_LEGGINGS.get()); + tabData.accept(EasysurvivalModItems.NETHERRACK_ARMOR_BOOTS.get()); + tabData.accept(EasysurvivalModItems.QUARZ_SWORD.get()); + } else if (tabData.getTabKey() == CreativeModeTabs.SPAWN_EGGS) { + tabData.accept(EasysurvivalModItems.NETHER_STICK.get()); + } else if (tabData.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) { + tabData.accept(EasysurvivalModItems.NETHERRACK_PICKAXE.get()); + tabData.accept(EasysurvivalModItems.NETHERRACK_AXE.get()); + tabData.accept(EasysurvivalModItems.NETHERRACK_SHOVEL.get()); + tabData.accept(EasysurvivalModItems.NETHERRACK_HOE.get()); + tabData.accept(EasysurvivalModItems.BASALT_PICKAXE.get()); + tabData.accept(EasysurvivalModItems.BASALT_AXE.get()); + tabData.accept(EasysurvivalModItems.BASALT_SHOVEL.get()); + tabData.accept(EasysurvivalModItems.BASALT_HOE.get()); + tabData.accept(EasysurvivalModItems.QUARZ_PICKAXE.get()); + tabData.accept(EasysurvivalModItems.QUARZ_AXE.get()); + tabData.accept(EasysurvivalModItems.QUARZ_SHOVEL.get()); + tabData.accept(EasysurvivalModItems.QUARZ_HOE.get()); + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/BasaltAxeItem.java b/src/main/java/ch/netquick/easysurvival/item/BasaltAxeItem.java new file mode 100644 index 0000000..b8c8cac --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/BasaltAxeItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.AxeItem; + +public class BasaltAxeItem extends AxeItem { + public BasaltAxeItem() { + super(new Tier() { + public int getUses() { + return 183; + } + + public float getSpeed() { + return 5f; + } + + public float getAttackDamageBonus() { + return 0f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 11; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.BASALT)); + } + }, 1, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/BasaltHoeItem.java b/src/main/java/ch/netquick/easysurvival/item/BasaltHoeItem.java new file mode 100644 index 0000000..967774f --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/BasaltHoeItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.HoeItem; + +public class BasaltHoeItem extends HoeItem { + public BasaltHoeItem() { + super(new Tier() { + public int getUses() { + return 183; + } + + public float getSpeed() { + return 5f; + } + + public float getAttackDamageBonus() { + return 1f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 11; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.BASALT)); + } + }, 0, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/BasaltPickaxeItem.java b/src/main/java/ch/netquick/easysurvival/item/BasaltPickaxeItem.java new file mode 100644 index 0000000..daeff61 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/BasaltPickaxeItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.PickaxeItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class BasaltPickaxeItem extends PickaxeItem { + public BasaltPickaxeItem() { + super(new Tier() { + public int getUses() { + return 183; + } + + public float getSpeed() { + return 5f; + } + + public float getAttackDamageBonus() { + return 0f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 11; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.BASALT)); + } + }, 1, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/BasaltShovelItem.java b/src/main/java/ch/netquick/easysurvival/item/BasaltShovelItem.java new file mode 100644 index 0000000..e822920 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/BasaltShovelItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.ShovelItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class BasaltShovelItem extends ShovelItem { + public BasaltShovelItem() { + super(new Tier() { + public int getUses() { + return 183; + } + + public float getSpeed() { + return 5f; + } + + public float getAttackDamageBonus() { + return 0f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 11; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.BASALT)); + } + }, 1, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/BasaltSwordItem.java b/src/main/java/ch/netquick/easysurvival/item/BasaltSwordItem.java new file mode 100644 index 0000000..378fb97 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/BasaltSwordItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class BasaltSwordItem extends SwordItem { + public BasaltSwordItem() { + super(new Tier() { + public int getUses() { + return 183; + } + + public float getSpeed() { + return 5f; + } + + public float getAttackDamageBonus() { + return -2f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 11; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.BASALT)); + } + }, 3, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/NetherStickItem.java b/src/main/java/ch/netquick/easysurvival/item/NetherStickItem.java new file mode 100644 index 0000000..6a8d978 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/NetherStickItem.java @@ -0,0 +1,18 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class NetherStickItem extends Item { + public NetherStickItem() { + super(new Item.Properties().stacksTo(64).rarity(Rarity.COMMON)); + } + + @Override + public UseAnim getUseAnimation(ItemStack itemstack) { + return UseAnim.EAT; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/NetherrackArmorItem.java b/src/main/java/ch/netquick/easysurvival/item/NetherrackArmorItem.java new file mode 100644 index 0000000..ea4acfe --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/NetherrackArmorItem.java @@ -0,0 +1,103 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +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; + +public abstract class NetherrackArmorItem extends ArmorItem { + public NetherrackArmorItem(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()] * 8; + } + + @Override + public int getDefenseForType(ArmorItem.Type type) { + return new int[]{1, 3, 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(Blocks.NETHERRACK)); + } + + @Override + public String getName() { + return "netherrack_armor"; + } + + @Override + public float getToughness() { + return 0f; + } + + @Override + public float getKnockbackResistance() { + return 0f; + } + }, type, properties); + } + + public static class Helmet extends NetherrackArmorItem { + public Helmet() { + super(ArmorItem.Type.HELMET, new Item.Properties()); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return "easysurvival:textures/models/armor/netherrack_layer_1.png"; + } + } + + public static class Chestplate extends NetherrackArmorItem { + public Chestplate() { + super(ArmorItem.Type.CHESTPLATE, new Item.Properties()); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return "easysurvival:textures/models/armor/netherrack_layer_1.png"; + } + } + + public static class Leggings extends NetherrackArmorItem { + public Leggings() { + super(ArmorItem.Type.LEGGINGS, new Item.Properties()); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return "easysurvival:textures/models/armor/netherrack_layer_2.png"; + } + } + + public static class Boots extends NetherrackArmorItem { + public Boots() { + super(ArmorItem.Type.BOOTS, new Item.Properties()); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return "easysurvival:textures/models/armor/netherrack_layer_1.png"; + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/NetherrackAxeItem.java b/src/main/java/ch/netquick/easysurvival/item/NetherrackAxeItem.java new file mode 100644 index 0000000..b42ab47 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/NetherrackAxeItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.AxeItem; + +public class NetherrackAxeItem extends AxeItem { + public NetherrackAxeItem() { + super(new Tier() { + public int getUses() { + return 95; + } + + public float getSpeed() { + return 4f; + } + + public float getAttackDamageBonus() { + return -1f; + } + + public int getLevel() { + return 1; + } + + public int getEnchantmentValue() { + return 7; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.NETHERRACK)); + } + }, 1, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/NetherrackHoeItem.java b/src/main/java/ch/netquick/easysurvival/item/NetherrackHoeItem.java new file mode 100644 index 0000000..bf7bf01 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/NetherrackHoeItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.HoeItem; + +public class NetherrackHoeItem extends HoeItem { + public NetherrackHoeItem() { + super(new Tier() { + public int getUses() { + return 95; + } + + public float getSpeed() { + return 4f; + } + + public float getAttackDamageBonus() { + return 0f; + } + + public int getLevel() { + return 1; + } + + public int getEnchantmentValue() { + return 7; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.NETHERRACK)); + } + }, 0, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/NetherrackPickaxeItem.java b/src/main/java/ch/netquick/easysurvival/item/NetherrackPickaxeItem.java new file mode 100644 index 0000000..32bf9bb --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/NetherrackPickaxeItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.PickaxeItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class NetherrackPickaxeItem extends PickaxeItem { + public NetherrackPickaxeItem() { + super(new Tier() { + public int getUses() { + return 95; + } + + public float getSpeed() { + return 4f; + } + + public float getAttackDamageBonus() { + return -1f; + } + + public int getLevel() { + return 1; + } + + public int getEnchantmentValue() { + return 7; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.NETHERRACK)); + } + }, 1, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/NetherrackShovelItem.java b/src/main/java/ch/netquick/easysurvival/item/NetherrackShovelItem.java new file mode 100644 index 0000000..bee3b62 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/NetherrackShovelItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.ShovelItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class NetherrackShovelItem extends ShovelItem { + public NetherrackShovelItem() { + super(new Tier() { + public int getUses() { + return 95; + } + + public float getSpeed() { + return 4f; + } + + public float getAttackDamageBonus() { + return -1f; + } + + public int getLevel() { + return 1; + } + + public int getEnchantmentValue() { + return 7; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.NETHERRACK)); + } + }, 1, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/NetherrackSwordItem.java b/src/main/java/ch/netquick/easysurvival/item/NetherrackSwordItem.java new file mode 100644 index 0000000..dcf9f91 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/NetherrackSwordItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class NetherrackSwordItem extends SwordItem { + public NetherrackSwordItem() { + super(new Tier() { + public int getUses() { + return 95; + } + + public float getSpeed() { + return 4f; + } + + public float getAttackDamageBonus() { + return -3f; + } + + public int getLevel() { + return 1; + } + + public int getEnchantmentValue() { + return 7; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Blocks.NETHERRACK)); + } + }, 3, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/PortableCraftingTableItem.java b/src/main/java/ch/netquick/easysurvival/item/PortableCraftingTableItem.java new file mode 100644 index 0000000..51cac15 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/PortableCraftingTableItem.java @@ -0,0 +1,87 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.capabilities.ForgeCapabilities; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +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.InteractionResultHolder; +import net.minecraft.world.InteractionHand; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.CompoundTag; + +import javax.annotation.Nullable; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.CraftingStickGUIMenu; +import ch.netquick.easysurvival.procedures.OpenCraftingGUIProcedure; +import ch.netquick.easysurvival.item.inventory.PortableCraftingTableInventoryCapability; + +public class PortableCraftingTableItem extends Item { + public PortableCraftingTableItem() { + super(new Item.Properties().stacksTo(1).rarity(Rarity.COMMON)); + } + + @Override + public UseAnim getUseAnimation(ItemStack itemstack) { + return UseAnim.EAT; + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + InteractionResultHolder ar = super.use(world, entity, hand); + if (entity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openScreen(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return Component.literal("Portable Crafting Table"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(entity.blockPosition()); + packetBuffer.writeByte(hand == InteractionHand.MAIN_HAND ? 0 : 1); + return new CraftingStickGUIMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(entity.blockPosition()); + buf.writeByte(hand == InteractionHand.MAIN_HAND ? 0 : 1); + }); + } + OpenCraftingGUIProcedure.execute(world, entity.getX(), entity.getY(), entity.getZ(), entity); + return ar; + } + + @Override + public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag compound) { + return new PortableCraftingTableInventoryCapability(); + } + + @Override + public CompoundTag getShareTag(ItemStack stack) { + CompoundTag nbt = stack.getOrCreateTag(); + stack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> nbt.put("Inventory", ((ItemStackHandler) capability).serializeNBT())); + return nbt; + } + + @Override + public void readShareTag(ItemStack stack, @Nullable CompoundTag nbt) { + super.readShareTag(stack, nbt); + if (nbt != null) + stack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> ((ItemStackHandler) capability).deserializeNBT((CompoundTag) nbt.get("Inventory"))); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/QuarzAxeItem.java b/src/main/java/ch/netquick/easysurvival/item/QuarzAxeItem.java new file mode 100644 index 0000000..9b5dee7 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/QuarzAxeItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.AxeItem; + +public class QuarzAxeItem extends AxeItem { + public QuarzAxeItem() { + super(new Tier() { + public int getUses() { + return 250; + } + + public float getSpeed() { + return 6f; + } + + public float getAttackDamageBonus() { + return 0f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 14; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Items.QUARTZ)); + } + }, 1, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/QuarzHoeItem.java b/src/main/java/ch/netquick/easysurvival/item/QuarzHoeItem.java new file mode 100644 index 0000000..1f216b7 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/QuarzHoeItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.HoeItem; + +public class QuarzHoeItem extends HoeItem { + public QuarzHoeItem() { + super(new Tier() { + public int getUses() { + return 250; + } + + public float getSpeed() { + return 6f; + } + + public float getAttackDamageBonus() { + return 1f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 14; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Items.QUARTZ)); + } + }, 0, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/QuarzPickaxeItem.java b/src/main/java/ch/netquick/easysurvival/item/QuarzPickaxeItem.java new file mode 100644 index 0000000..7607eaa --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/QuarzPickaxeItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.PickaxeItem; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class QuarzPickaxeItem extends PickaxeItem { + public QuarzPickaxeItem() { + super(new Tier() { + public int getUses() { + return 250; + } + + public float getSpeed() { + return 6f; + } + + public float getAttackDamageBonus() { + return 0f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 14; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Items.QUARTZ)); + } + }, 1, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/QuarzShovelItem.java b/src/main/java/ch/netquick/easysurvival/item/QuarzShovelItem.java new file mode 100644 index 0000000..f6822bc --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/QuarzShovelItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.ShovelItem; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class QuarzShovelItem extends ShovelItem { + public QuarzShovelItem() { + super(new Tier() { + public int getUses() { + return 250; + } + + public float getSpeed() { + return 6f; + } + + public float getAttackDamageBonus() { + return 0f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 14; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Items.QUARTZ)); + } + }, 1, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/QuarzSwordItem.java b/src/main/java/ch/netquick/easysurvival/item/QuarzSwordItem.java new file mode 100644 index 0000000..5124138 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/QuarzSwordItem.java @@ -0,0 +1,39 @@ + +package ch.netquick.easysurvival.item; + +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; + +public class QuarzSwordItem extends SwordItem { + public QuarzSwordItem() { + super(new Tier() { + public int getUses() { + return 250; + } + + public float getSpeed() { + return 6f; + } + + public float getAttackDamageBonus() { + return -2f; + } + + public int getLevel() { + return 2; + } + + public int getEnchantmentValue() { + return 14; + } + + public Ingredient getRepairIngredient() { + return Ingredient.of(new ItemStack(Items.QUARTZ)); + } + }, 3, -3f, new Item.Properties()); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/item/inventory/PortableCraftingTableInventoryCapability.java b/src/main/java/ch/netquick/easysurvival/item/inventory/PortableCraftingTableInventoryCapability.java new file mode 100644 index 0000000..cd67017 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/item/inventory/PortableCraftingTableInventoryCapability.java @@ -0,0 +1,76 @@ + +package ch.netquick.easysurvival.item.inventory; + +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.entity.item.ItemTossEvent; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.ICapabilitySerializable; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.client.Minecraft; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import ch.netquick.easysurvival.init.EasysurvivalModItems; +import ch.netquick.easysurvival.client.gui.CraftingStickGUIScreen; + +@Mod.EventBusSubscriber(Dist.CLIENT) +public class PortableCraftingTableInventoryCapability implements ICapabilitySerializable { + @SubscribeEvent + @OnlyIn(Dist.CLIENT) + public static void onItemDropped(ItemTossEvent event) { + if (event.getEntity().getItem().getItem() == EasysurvivalModItems.PORTABLE_CRAFTING_TABLE.get()) { + if (Minecraft.getInstance().screen instanceof CraftingStickGUIScreen) { + Minecraft.getInstance().player.closeContainer(); + } + } + } + + private final LazyOptional inventory = LazyOptional.of(this::createItemHandler); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + return capability == ForgeCapabilities.ITEM_HANDLER ? this.inventory.cast() : LazyOptional.empty(); + } + + @Override + public CompoundTag serializeNBT() { + return getItemHandler().serializeNBT(); + } + + @Override + public void deserializeNBT(CompoundTag nbt) { + getItemHandler().deserializeNBT(nbt); + } + + private ItemStackHandler createItemHandler() { + return new ItemStackHandler(10) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + + @Override + public boolean isItemValid(int slot, @Nonnull ItemStack stack) { + return stack.getItem() != EasysurvivalModItems.PORTABLE_CRAFTING_TABLE.get(); + } + + @Override + public void setSize(int size) { + } + }; + } + + private ItemStackHandler getItemHandler() { + return inventory.orElseThrow(RuntimeException::new); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/network/EasyAnvilGUISlotMessage.java b/src/main/java/ch/netquick/easysurvival/network/EasyAnvilGUISlotMessage.java new file mode 100644 index 0000000..a9535b6 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/network/EasyAnvilGUISlotMessage.java @@ -0,0 +1,107 @@ + +package ch.netquick.easysurvival.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 java.util.function.Supplier; +import java.util.HashMap; + +import ch.netquick.easysurvival.world.inventory.EasyAnvilGUIMenu; +import ch.netquick.easysurvival.procedures.EasyAnvilItemTakenProcedure; +import ch.netquick.easysurvival.procedures.EasyAnvilItemResetProcedure; +import ch.netquick.easysurvival.EasysurvivalMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class EasyAnvilGUISlotMessage { + private final int slotID, x, y, z, changeType, meta; + + public EasyAnvilGUISlotMessage(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 EasyAnvilGUISlotMessage(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(EasyAnvilGUISlotMessage 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(EasyAnvilGUISlotMessage 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 slot, int changeType, int meta, int x, int y, int z) { + Level world = entity.level(); + HashMap guistate = EasyAnvilGUIMenu.guistate; + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(new BlockPos(x, y, z))) + return; + if (slot == 0 && changeType == 1) { + + EasyAnvilItemResetProcedure.execute(entity); + } + if (slot == 0 && changeType == 2) { + int amount = meta; + + EasyAnvilItemResetProcedure.execute(entity); + } + if (slot == 2 && changeType == 1) { + + EasyAnvilItemTakenProcedure.execute(entity); + } + if (slot == 2 && changeType == 2) { + int amount = meta; + + EasyAnvilItemTakenProcedure.execute(entity); + } + if (slot == 1 && changeType == 1) { + + EasyAnvilItemResetProcedure.execute(entity); + } + if (slot == 1 && changeType == 2) { + int amount = meta; + + EasyAnvilItemResetProcedure.execute(entity); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + EasysurvivalMod.addNetworkMessage(EasyAnvilGUISlotMessage.class, EasyAnvilGUISlotMessage::buffer, EasyAnvilGUISlotMessage::new, EasyAnvilGUISlotMessage::handler); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/network/EasyEnchantmentTableGUISlotMessage.java b/src/main/java/ch/netquick/easysurvival/network/EasyEnchantmentTableGUISlotMessage.java new file mode 100644 index 0000000..83f77b5 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/network/EasyEnchantmentTableGUISlotMessage.java @@ -0,0 +1,187 @@ + +package ch.netquick.easysurvival.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 java.util.function.Supplier; +import java.util.HashMap; + +import ch.netquick.easysurvival.world.inventory.EasyEnchantmentTableGUIMenu; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUItakeItem9Procedure; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUItakeItem8Procedure; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUItakeItem7Procedure; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUItakeItem6Procedure; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUItakeItem5Procedure; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUItakeItem4Procedure; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUItakeItem3Procedure; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUItakeItem2Procedure; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUItakeItem1Procedure; +import ch.netquick.easysurvival.procedures.EasyEnchantmentTableGUIresetProcedure; +import ch.netquick.easysurvival.EasysurvivalMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class EasyEnchantmentTableGUISlotMessage { + private final int slotID, x, y, z, changeType, meta; + + public EasyEnchantmentTableGUISlotMessage(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 EasyEnchantmentTableGUISlotMessage(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(EasyEnchantmentTableGUISlotMessage 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(EasyEnchantmentTableGUISlotMessage 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 slot, int changeType, int meta, int x, int y, int z) { + Level world = entity.level(); + HashMap guistate = EasyEnchantmentTableGUIMenu.guistate; + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(new BlockPos(x, y, z))) + return; + if (slot == 0 && changeType == 1) { + + EasyEnchantmentTableGUIresetProcedure.execute(world, x, y, z); + } + if (slot == 0 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUIresetProcedure.execute(world, x, y, z); + } + if (slot == 1 && changeType == 1) { + + EasyEnchantmentTableGUItakeItem1Procedure.execute(world, x, y, z); + } + if (slot == 1 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUItakeItem1Procedure.execute(world, x, y, z); + } + if (slot == 2 && changeType == 1) { + + EasyEnchantmentTableGUItakeItem2Procedure.execute(world, x, y, z); + } + if (slot == 2 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUItakeItem2Procedure.execute(world, x, y, z); + } + if (slot == 3 && changeType == 1) { + + EasyEnchantmentTableGUItakeItem3Procedure.execute(world, x, y, z); + } + if (slot == 3 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUItakeItem3Procedure.execute(world, x, y, z); + } + if (slot == 4 && changeType == 1) { + + EasyEnchantmentTableGUItakeItem4Procedure.execute(world, x, y, z); + } + if (slot == 4 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUItakeItem4Procedure.execute(world, x, y, z); + } + if (slot == 5 && changeType == 1) { + + EasyEnchantmentTableGUItakeItem5Procedure.execute(world, x, y, z); + } + if (slot == 5 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUItakeItem5Procedure.execute(world, x, y, z); + } + if (slot == 6 && changeType == 1) { + + EasyEnchantmentTableGUItakeItem6Procedure.execute(world, x, y, z); + } + if (slot == 6 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUItakeItem6Procedure.execute(world, x, y, z); + } + if (slot == 7 && changeType == 1) { + + EasyEnchantmentTableGUItakeItem7Procedure.execute(world, x, y, z); + } + if (slot == 7 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUItakeItem7Procedure.execute(world, x, y, z); + } + if (slot == 8 && changeType == 1) { + + EasyEnchantmentTableGUItakeItem8Procedure.execute(world, x, y, z); + } + if (slot == 8 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUItakeItem8Procedure.execute(world, x, y, z); + } + if (slot == 9 && changeType == 1) { + + EasyEnchantmentTableGUItakeItem9Procedure.execute(world, x, y, z); + } + if (slot == 9 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUItakeItem9Procedure.execute(world, x, y, z); + } + if (slot == 10 && changeType == 1) { + + EasyEnchantmentTableGUIresetProcedure.execute(world, x, y, z); + } + if (slot == 10 && changeType == 2) { + int amount = meta; + + EasyEnchantmentTableGUIresetProcedure.execute(world, x, y, z); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + EasysurvivalMod.addNetworkMessage(EasyEnchantmentTableGUISlotMessage.class, EasyEnchantmentTableGUISlotMessage::buffer, EasyEnchantmentTableGUISlotMessage::new, EasyEnchantmentTableGUISlotMessage::handler); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/CropUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/CropUpdateTickProcedure.java new file mode 100644 index 0000000..f5bb3d3 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/CropUpdateTickProcedure.java @@ -0,0 +1,336 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicInteger; + +public class CropUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double previousRecipe = 0; + double Slotno = 0; + if ((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() == Items.WHEAT_SEEDS) { + Slotno = 1; + for (int index0 = 0; index0 < 7; index0++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Items.WHEAT).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Items.PUMPKIN_SEEDS) { + Slotno = 1; + for (int index1 = 0; index1 < 7; index1++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.PUMPKIN).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Items.MELON_SEEDS) { + Slotno = 1; + for (int index2 = 0; index2 < 7; index2++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Items.MELON_SLICE).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Items.BEETROOT_SEEDS) { + Slotno = 1; + for (int index3 = 0; index3 < 7; index3++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Items.BEETROOT).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Items.CARROT) { + Slotno = 1; + for (int index4 = 0; index4 < 7; index4++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Items.CARROT).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Items.POTATO) { + Slotno = 1; + for (int index5 = 0; index5 < 7; index5++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Items.POTATO).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Items.CHORUS_FRUIT) { + Slotno = 1; + for (int index6 = 0; index6 < 7; index6++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Items.POPPED_CHORUS_FRUIT).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilItemResetProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilItemResetProcedure.java new file mode 100644 index 0000000..5a50e43 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilItemResetProcedure.java @@ -0,0 +1,19 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; + +import java.util.function.Supplier; +import java.util.Map; + +public class EasyAnvilItemResetProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) { + ((Slot) _slots.get(2)).remove(1); + _player.containerMenu.broadcastChanges(); + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilItemTakenProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilItemTakenProcedure.java new file mode 100644 index 0000000..0ae940c --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilItemTakenProcedure.java @@ -0,0 +1,23 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; + +import java.util.function.Supplier; +import java.util.Map; + +public class EasyAnvilItemTakenProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) { + ((Slot) _slots.get(0)).remove(1); + _player.containerMenu.broadcastChanges(); + } + if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) { + ((Slot) _slots.get(1)).remove(1); + _player.containerMenu.broadcastChanges(); + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilUpdateTickProcedure.java new file mode 100644 index 0000000..793e38b --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyAnvilUpdateTickProcedure.java @@ -0,0 +1,52 @@ +package ch.netquick.easysurvival.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 java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicInteger; + +public class EasyAnvilUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + ItemStack tempitem = ItemStack.EMPTY; + tempitem = (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)); + 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) >= 1) { + if (tempitem.getDamageValue() > 0) { + tempitem.setDamageValue(0); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = tempitem.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyConverterUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyConverterUpdateTickProcedure.java new file mode 100644 index 0000000..41f7e6a --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyConverterUpdateTickProcedure.java @@ -0,0 +1,391 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.tags.ItemTags; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.BlockPos; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicInteger; + +public class EasyConverterUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + ItemStack InputStack = ItemStack.EMPTY; + ItemStack OutputStack = ItemStack.EMPTY; + double StackSize = 0; + double Amount = 0; + double InAmount = 0; + InputStack = (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)); + if (InputStack.getItem() == Blocks.OAK_LOG.asItem() || InputStack.getItem() == Blocks.STRIPPED_OAK_WOOD.asItem()) { + StackSize = 64; + Amount = 4; + InAmount = 1; + OutputStack = new ItemStack(Blocks.OAK_PLANKS); + } + if (InputStack.getItem() == Blocks.SPRUCE_LOG.asItem() || InputStack.getItem() == Blocks.STRIPPED_SPRUCE_WOOD.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 4; + OutputStack = new ItemStack(Blocks.SPRUCE_PLANKS); + } + if (InputStack.getItem() == Blocks.BIRCH_LOG.asItem() || InputStack.getItem() == Blocks.STRIPPED_BIRCH_LOG.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 4; + OutputStack = new ItemStack(Blocks.BIRCH_PLANKS); + } + if (InputStack.getItem() == Blocks.JUNGLE_LOG.asItem() || InputStack.getItem() == Blocks.STRIPPED_JUNGLE_LOG.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 4; + OutputStack = new ItemStack(Blocks.JUNGLE_PLANKS); + } + if (InputStack.getItem() == Blocks.ACACIA_LOG.asItem() || InputStack.getItem() == Blocks.STRIPPED_ACACIA_LOG.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 4; + OutputStack = new ItemStack(Blocks.ACACIA_PLANKS); + } + if (InputStack.getItem() == Blocks.DARK_OAK_LOG.asItem() || InputStack.getItem() == Blocks.STRIPPED_DARK_OAK_LOG.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 4; + OutputStack = new ItemStack(Blocks.DARK_OAK_PLANKS); + } + if (InputStack.getItem() == Blocks.WARPED_STEM.asItem() || InputStack.getItem() == Blocks.STRIPPED_WARPED_STEM.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 4; + OutputStack = new ItemStack(Blocks.WARPED_PLANKS); + } + if (InputStack.getItem() == Blocks.CRIMSON_STEM.asItem() || InputStack.getItem() == Blocks.STRIPPED_CRIMSON_STEM.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 4; + OutputStack = new ItemStack(Blocks.CRIMSON_PLANKS); + } + if (InputStack.getItem() == Blocks.BONE_BLOCK.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 9; + OutputStack = new ItemStack(Items.BONE_MEAL); + } + if (InputStack.getItem() == Items.BONE) { + StackSize = 64; + InAmount = 1; + Amount = 3; + OutputStack = new ItemStack(Items.BONE_MEAL); + } + if (InputStack.is(ItemTags.create(new ResourceLocation("forge:planks")))) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.COAL); + } + if (InputStack.getItem() == Items.GOLD_NUGGET) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Items.GOLD_INGOT); + } + if (InputStack.getItem() == Blocks.GOLD_ORE.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.GOLD_INGOT); + } + if (InputStack.getItem() == Blocks.NETHER_GOLD_ORE.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.GOLD_INGOT); + } + if (InputStack.getItem() == Blocks.IRON_ORE.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.IRON_INGOT); + } + if (InputStack.getItem() == Items.IRON_NUGGET) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Items.IRON_INGOT); + } + if (InputStack.getItem() == Items.IRON_INGOT) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Blocks.IRON_BLOCK); + } + if (InputStack.getItem() == Items.GOLD_INGOT) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Blocks.GOLD_BLOCK); + } + if (InputStack.getItem() == Items.COAL) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Blocks.COAL_BLOCK); + } + if (InputStack.getItem() == Items.DIAMOND) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Blocks.DIAMOND_BLOCK); + } + if (InputStack.getItem() == Items.NETHERITE_INGOT) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Blocks.NETHERITE_BLOCK); + } + if (InputStack.getItem() == Items.REDSTONE) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Blocks.REDSTONE_BLOCK); + } + if (InputStack.getItem() == Items.LAPIS_LAZULI) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Blocks.LAPIS_BLOCK); + } + if (InputStack.getItem() == Items.WATER_BUCKET) { + StackSize = 64; + InAmount = 0; + Amount = 1; + OutputStack = new ItemStack(Blocks.PACKED_ICE); + } + if (InputStack.getItem() == Blocks.PACKED_ICE.asItem()) { + StackSize = 16; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.SNOWBALL); + } + if (InputStack.getItem() == Items.SNOWBALL) { + StackSize = 64; + InAmount = 4; + Amount = 1; + OutputStack = new ItemStack(Blocks.SNOW_BLOCK); + } + if (InputStack.getItem() == Blocks.NETHERRACK.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Blocks.COBBLESTONE); + } + if (InputStack.getItem() == Blocks.COBBLESTONE.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Blocks.STONE); + } + if (InputStack.getItem() == Blocks.STONE.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Blocks.SMOOTH_STONE); + } + if (InputStack.getItem() == Items.QUARTZ) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.IRON_INGOT); + } + if (InputStack.getItem() == Blocks.ANCIENT_DEBRIS.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.NETHERITE_SCRAP); + } + if (InputStack.getItem() == Items.WHEAT) { + StackSize = 64; + InAmount = 3; + Amount = 1; + OutputStack = new ItemStack(Items.BREAD); + } + if (InputStack.getItem() == Items.GLOWSTONE_DUST) { + StackSize = 64; + InAmount = 9; + Amount = 1; + OutputStack = new ItemStack(Blocks.GLOWSTONE); + } + if (InputStack.getItem() == Items.POTATO) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.BAKED_POTATO); + } + if (InputStack.getItem() == Items.PORKCHOP) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.COOKED_PORKCHOP); + } + if (InputStack.getItem() == Items.BEEF) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.COOKED_BEEF); + } + if (InputStack.getItem() == Items.CHICKEN) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.COOKED_CHICKEN); + } + if (InputStack.getItem() == Items.MUTTON) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.COOKED_MUTTON); + } + if (InputStack.getItem() == Items.RABBIT) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.COOKED_RABBIT); + } + if (InputStack.getItem() == Items.SALMON) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.COOKED_SALMON); + } + if (InputStack.getItem() == Items.COD) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.COOKED_COD); + } + if (InputStack.getItem() == Blocks.SAND.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Blocks.GLASS); + } + if (InputStack.getItem() == Items.CHORUS_FRUIT) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.POPPED_CHORUS_FRUIT); + } + if (InputStack.getItem() == Blocks.SUGAR_CANE.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.PAPER); + } + if (InputStack.getItem() == Blocks.END_STONE.asItem()) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Blocks.END_STONE_BRICKS); + } + if (InputStack.getItem() == Items.RAW_IRON) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.IRON_INGOT); + } + if (InputStack.getItem() == Items.RAW_COPPER) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.COPPER_INGOT); + } + if (InputStack.getItem() == Items.RAW_GOLD) { + StackSize = 64; + InAmount = 1; + Amount = 1; + OutputStack = new ItemStack(Items.GOLD_INGOT); + } + if (((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == OutputStack.getItem() && 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) <= StackSize - Amount) && 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), 0) >= InAmount) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = OutputStack.copy(); + _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) + Amount)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 0; + final int _amount = (int) InAmount; + _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); + } + }); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUIClearProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUIClearProcedure.java new file mode 100644 index 0000000..d61d2bc --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUIClearProcedure.java @@ -0,0 +1,32 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUIClearProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + counter = counter + 1; + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUIresetProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUIresetProcedure.java new file mode 100644 index 0000000..fb42f19 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUIresetProcedure.java @@ -0,0 +1,32 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUIresetProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double count = 0; + count = 1; + for (int index0 = 0; index0 < 9; index0++) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) count; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + count = count + 1; + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem1Procedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem1Procedure.java new file mode 100644 index 0000000..07b0ad3 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem1Procedure.java @@ -0,0 +1,50 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUItakeItem1Procedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + double self = 0; + self = 1; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + if (counter != self) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + counter = counter + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 10; + final int _amount = 5; + _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); + } + }); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem2Procedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem2Procedure.java new file mode 100644 index 0000000..203caa3 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem2Procedure.java @@ -0,0 +1,50 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUItakeItem2Procedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + double self = 0; + self = 2; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + if (counter != self) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + counter = counter + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 10; + final int _amount = 5; + _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); + } + }); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem3Procedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem3Procedure.java new file mode 100644 index 0000000..9d96758 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem3Procedure.java @@ -0,0 +1,50 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUItakeItem3Procedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + double self = 0; + self = 3; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + if (counter != self) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + counter = counter + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 10; + final int _amount = 5; + _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); + } + }); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem4Procedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem4Procedure.java new file mode 100644 index 0000000..178bab0 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem4Procedure.java @@ -0,0 +1,50 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUItakeItem4Procedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + double self = 0; + self = 4; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + if (counter != self) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + counter = counter + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 10; + final int _amount = 5; + _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); + } + }); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem5Procedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem5Procedure.java new file mode 100644 index 0000000..cae5f4a --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem5Procedure.java @@ -0,0 +1,50 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUItakeItem5Procedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + double self = 0; + self = 5; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + if (counter != self) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + counter = counter + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 10; + final int _amount = 5; + _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); + } + }); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem6Procedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem6Procedure.java new file mode 100644 index 0000000..eb68c24 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem6Procedure.java @@ -0,0 +1,50 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUItakeItem6Procedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + double self = 0; + self = 6; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + if (counter != self) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + counter = counter + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 10; + final int _amount = 5; + _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); + } + }); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem7Procedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem7Procedure.java new file mode 100644 index 0000000..4d758f4 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem7Procedure.java @@ -0,0 +1,50 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUItakeItem7Procedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + double self = 0; + self = 7; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + if (counter != self) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + counter = counter + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 10; + final int _amount = 5; + _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); + } + }); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem8Procedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem8Procedure.java new file mode 100644 index 0000000..364c0ec --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem8Procedure.java @@ -0,0 +1,50 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUItakeItem8Procedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + double self = 0; + self = 8; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + if (counter != self) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + counter = counter + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 10; + final int _amount = 5; + _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); + } + }); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem9Procedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem9Procedure.java new file mode 100644 index 0000000..dbe2351 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableGUItakeItem9Procedure.java @@ -0,0 +1,50 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +public class EasyEnchantmentTableGUItakeItem9Procedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double counter = 0; + double self = 0; + self = 9; + counter = 0; + for (int index0 = 0; index0 < 10; index0++) { + if (counter != self) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) counter; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + counter = counter + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 10; + final int _amount = 5; + _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); + } + }); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableUpdateTickProcedure.java new file mode 100644 index 0000000..3427355 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyEnchantmentTableUpdateTickProcedure.java @@ -0,0 +1,1274 @@ +package ch.netquick.easysurvival.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.enchantment.Enchantments; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.ShovelItem; +import net.minecraft.world.item.PickaxeItem; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.HoeItem; +import net.minecraft.world.item.AxeItem; +import net.minecraft.tags.ItemTags; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.BlockPos; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicInteger; + +public class EasyEnchantmentTableUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + ItemStack tool = ItemStack.EMPTY; + tool = (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)); + 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), 10) >= 5) { + if (tool.getCount() == 1) { + if (tool.getItem() instanceof SwordItem) { + if (tool.getEnchantmentLevel(Enchantments.SHARPNESS) == 0) { + tool.enchant(Enchantments.SHARPNESS, 5); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.MOB_LOOTING) == 0) { + tool.enchant(Enchantments.MOB_LOOTING, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.FIRE_ASPECT) == 0) { + tool.enchant(Enchantments.FIRE_ASPECT, 2); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 3; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.KNOCKBACK) == 0) { + tool.enchant(Enchantments.KNOCKBACK, 2); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 4; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.UNBREAKING) == 0) { + tool.enchant(Enchantments.UNBREAKING, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 5; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.SWEEPING_EDGE) == 0) { + tool.enchant(Enchantments.SWEEPING_EDGE, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 6; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.MENDING) == 0) { + tool.enchant(Enchantments.MENDING, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 7; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.VANISHING_CURSE) == 0) { + tool.enchant(Enchantments.VANISHING_CURSE, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 8; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.getItem() instanceof PickaxeItem || tool.getItem() instanceof AxeItem || tool.getItem() instanceof ShovelItem || tool.getItem() instanceof HoeItem) { + if (tool.getEnchantmentLevel(Enchantments.BLOCK_EFFICIENCY) == 0) { + tool.enchant(Enchantments.BLOCK_EFFICIENCY, 5); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.BLOCK_FORTUNE) == 0) { + tool.enchant(Enchantments.BLOCK_FORTUNE, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.SILK_TOUCH) == 0) { + tool.enchant(Enchantments.SILK_TOUCH, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 3; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.UNBREAKING) == 0) { + tool.enchant(Enchantments.UNBREAKING, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 4; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.MENDING) == 0) { + tool.enchant(Enchantments.MENDING, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 5; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.getItem() instanceof AxeItem) { + if (tool.getEnchantmentLevel(Enchantments.BANE_OF_ARTHROPODS) == 0) { + tool.enchant(Enchantments.BANE_OF_ARTHROPODS, 5); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 6; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.SMITE) == 0) { + tool.enchant(Enchantments.SMITE, 5); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 7; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.SHARPNESS) == 0) { + tool.enchant(Enchantments.SHARPNESS, 5); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 8; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.is(ItemTags.create(new ResourceLocation("forge:tag_armor")))) { + if (tool.getEnchantmentLevel(Enchantments.FIRE_PROTECTION) == 0) { + tool.enchant(Enchantments.FIRE_PROTECTION, 4); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.PROJECTILE_PROTECTION) == 0) { + tool.enchant(Enchantments.PROJECTILE_PROTECTION, 4); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.MENDING) == 0) { + tool.enchant(Enchantments.MENDING, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 3; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.ALL_DAMAGE_PROTECTION) == 0) { + tool.enchant(Enchantments.ALL_DAMAGE_PROTECTION, 4); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 4; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.FIRE_PROTECTION) == 0) { + tool.enchant(Enchantments.FIRE_PROTECTION, 4); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 5; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.UNBREAKING) == 0) { + tool.enchant(Enchantments.UNBREAKING, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 6; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.BLAST_PROTECTION) == 0) { + tool.enchant(Enchantments.BLAST_PROTECTION, 4); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 7; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.is(ItemTags.create(new ResourceLocation("forge:tag_helmet")))) { + if (tool.getEnchantmentLevel(Enchantments.RESPIRATION) == 0) { + tool.enchant(Enchantments.RESPIRATION, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 8; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.AQUA_AFFINITY) == 0) { + tool.enchant(Enchantments.AQUA_AFFINITY, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 9; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.is(ItemTags.create(new ResourceLocation("forge:tag_boots")))) { + if (tool.getEnchantmentLevel(Enchantments.SOUL_SPEED) == 0) { + tool.enchant(Enchantments.SOUL_SPEED, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 8; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.FROST_WALKER) == 0) { + tool.enchant(Enchantments.FROST_WALKER, 2); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 9; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.is(ItemTags.create(new ResourceLocation("forge:tag_leggings")))) { + if (tool.getEnchantmentLevel(Enchantments.SWIFT_SNEAK) == 0) { + tool.enchant(Enchantments.SWIFT_SNEAK, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 8; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.is(ItemTags.create(new ResourceLocation("forge:tag_chest")))) { + if (tool.getEnchantmentLevel(Enchantments.THORNS) == 0) { + tool.enchant(Enchantments.THORNS, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 9; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.getItem() == Items.TRIDENT) { + if (tool.getEnchantmentLevel(Enchantments.UNBREAKING) == 0) { + tool.enchant(Enchantments.UNBREAKING, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.MENDING) == 0) { + tool.enchant(Enchantments.MENDING, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.LOYALTY) == 0) { + tool.enchant(Enchantments.LOYALTY, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 3; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.IMPALING) == 0) { + tool.enchant(Enchantments.IMPALING, 5); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 4; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.CHANNELING) == 0) { + tool.enchant(Enchantments.CHANNELING, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 5; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.RIPTIDE) == 0) { + tool.enchant(Enchantments.RIPTIDE, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 6; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.getItem() == Items.BOW) { + if (tool.getEnchantmentLevel(Enchantments.INFINITY_ARROWS) == 0) { + tool.enchant(Enchantments.INFINITY_ARROWS, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.FLAMING_ARROWS) == 0) { + tool.enchant(Enchantments.FLAMING_ARROWS, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.POWER_ARROWS) == 0) { + tool.enchant(Enchantments.POWER_ARROWS, 4); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 3; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.PUNCH_ARROWS) == 0) { + tool.enchant(Enchantments.PUNCH_ARROWS, 2); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 4; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.UNBREAKING) == 0) { + tool.enchant(Enchantments.UNBREAKING, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 5; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.MENDING) == 0) { + tool.enchant(Enchantments.MENDING, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 6; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.getItem() == Items.FISHING_ROD) { + if (tool.getEnchantmentLevel(Enchantments.FISHING_LUCK) == 0) { + tool.enchant(Enchantments.ALL_DAMAGE_PROTECTION, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.FISHING_SPEED) == 0) { + tool.enchant(Enchantments.FISHING_SPEED, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.UNBREAKING) == 0) { + tool.enchant(Enchantments.UNBREAKING, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 3; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.MENDING) == 0) { + tool.enchant(Enchantments.MENDING, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 4; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + if (tool.getItem() == Items.CROSSBOW) { + if (tool.getEnchantmentLevel(Enchantments.QUICK_CHARGE) == 0) { + tool.enchant(Enchantments.QUICK_CHARGE, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.PIERCING) == 0) { + tool.enchant(Enchantments.PIERCING, 4); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.MULTISHOT) == 0) { + tool.enchant(Enchantments.MULTISHOT, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 3; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.UNBREAKING) == 0) { + tool.enchant(Enchantments.UNBREAKING, 3); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 4; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + if (tool.getEnchantmentLevel(Enchantments.MENDING) == 0) { + tool.enchant(Enchantments.MENDING, 1); + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 5; + final ItemStack _setstack = tool.copy(); + _setstack.setCount(1); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + tool = (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)); + } + } + } + } + world.addParticle(ParticleTypes.ENCHANT, x, y, z, 0, 1, 0); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyForgeUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyForgeUpdateTickProcedure.java new file mode 100644 index 0000000..2a4293e --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyForgeUpdateTickProcedure.java @@ -0,0 +1,1212 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.common.capabilities.ForgeCapabilities; + +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.sounds.SoundSource; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicInteger; + +public class EasyForgeUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double fireHeight = 0; + double previousRecipe = 0; + if ((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() == Blocks.IRON_ORE.asItem()) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.IRON_INGOT) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.IRON_INGOT).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Blocks.GOLD_ORE.asItem()) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.GOLD_INGOT) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.GOLD_INGOT).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Blocks.ANCIENT_DEBRIS.asItem()) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.NETHERITE_SCRAP) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.NETHERITE_SCRAP).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Blocks.COBBLESTONE.asItem()) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Blocks.STONE.asItem()) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Blocks.STONE).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Blocks.STONE.asItem()) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Blocks.SMOOTH_STONE.asItem()) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Blocks.SMOOTH_STONE).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Blocks.OAK_LOG.asItem()) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.COAL) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.COAL).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Blocks.SAND.asItem()) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Blocks.GLASS.asItem()) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Blocks.GLASS).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.CHICKEN) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.COOKED_CHICKEN) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.COOKED_CHICKEN).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.BEEF) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.COOKED_BEEF) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.COOKED_BEEF).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.PORKCHOP) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.COOKED_PORKCHOP) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.COOKED_PORKCHOP).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.POTATO) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.BAKED_POTATO) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.BAKED_POTATO).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.COD) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.COOKED_COD) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.COOKED_COD).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.SALMON) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.COOKED_SALMON) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.COOKED_SALMON).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.CHORUS_FRUIT) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.CHORUS_FRUIT) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.POPPED_CHORUS_FRUIT).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.QUARTZ) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.IRON_INGOT) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.IRON_INGOT).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.RAW_IRON) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.IRON_INGOT) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.IRON_INGOT).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.RAW_COPPER) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.COPPER_INGOT) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.COPPER_INGOT).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((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() == Items.RAW_GOLD) { + if ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.GOLD_INGOT) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.GOLD_INGOT).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((new Object() { + public Direction getDirection(BlockPos pos) { + BlockState _bs = world.getBlockState(pos); + Property property = _bs.getBlock().getStateDefinition().getProperty("facing"); + if (property != null && _bs.getValue(property) instanceof Direction _dir) + return _dir; + else if (_bs.hasProperty(BlockStateProperties.AXIS)) + return Direction.fromAxisAndDirection(_bs.getValue(BlockStateProperties.AXIS), Direction.AxisDirection.POSITIVE); + else if (_bs.hasProperty(BlockStateProperties.HORIZONTAL_AXIS)) + return Direction.fromAxisAndDirection(_bs.getValue(BlockStateProperties.HORIZONTAL_AXIS), Direction.AxisDirection.POSITIVE); + return Direction.NORTH; + } + }.getDirection(BlockPos.containing(x, y, z))) == Direction.NORTH) { + world.addParticle(ParticleTypes.FLAME, (x + 0.5), (y + 0.2), (z - 0.1), 0, 3, 0); + } else if ((new Object() { + public Direction getDirection(BlockPos pos) { + BlockState _bs = world.getBlockState(pos); + Property property = _bs.getBlock().getStateDefinition().getProperty("facing"); + if (property != null && _bs.getValue(property) instanceof Direction _dir) + return _dir; + else if (_bs.hasProperty(BlockStateProperties.AXIS)) + return Direction.fromAxisAndDirection(_bs.getValue(BlockStateProperties.AXIS), Direction.AxisDirection.POSITIVE); + else if (_bs.hasProperty(BlockStateProperties.HORIZONTAL_AXIS)) + return Direction.fromAxisAndDirection(_bs.getValue(BlockStateProperties.HORIZONTAL_AXIS), Direction.AxisDirection.POSITIVE); + return Direction.NORTH; + } + }.getDirection(BlockPos.containing(x, y, z))) == Direction.SOUTH) { + world.addParticle(ParticleTypes.FLAME, (x + 0.5), (y + 0.2), (z + 1.1), 0, 3, 0); + } else if ((new Object() { + public Direction getDirection(BlockPos pos) { + BlockState _bs = world.getBlockState(pos); + Property property = _bs.getBlock().getStateDefinition().getProperty("facing"); + if (property != null && _bs.getValue(property) instanceof Direction _dir) + return _dir; + else if (_bs.hasProperty(BlockStateProperties.AXIS)) + return Direction.fromAxisAndDirection(_bs.getValue(BlockStateProperties.AXIS), Direction.AxisDirection.POSITIVE); + else if (_bs.hasProperty(BlockStateProperties.HORIZONTAL_AXIS)) + return Direction.fromAxisAndDirection(_bs.getValue(BlockStateProperties.HORIZONTAL_AXIS), Direction.AxisDirection.POSITIVE); + return Direction.NORTH; + } + }.getDirection(BlockPos.containing(x, y, z))) == Direction.WEST) { + world.addParticle(ParticleTypes.FLAME, (x - 0.1), (y + 0.2), (z + 0.5), 0, 3, 0); + } else if ((new Object() { + public Direction getDirection(BlockPos pos) { + BlockState _bs = world.getBlockState(pos); + Property property = _bs.getBlock().getStateDefinition().getProperty("facing"); + if (property != null && _bs.getValue(property) instanceof Direction _dir) + return _dir; + else if (_bs.hasProperty(BlockStateProperties.AXIS)) + return Direction.fromAxisAndDirection(_bs.getValue(BlockStateProperties.AXIS), Direction.AxisDirection.POSITIVE); + else if (_bs.hasProperty(BlockStateProperties.HORIZONTAL_AXIS)) + return Direction.fromAxisAndDirection(_bs.getValue(BlockStateProperties.HORIZONTAL_AXIS), Direction.AxisDirection.POSITIVE); + return Direction.NORTH; + } + }.getDirection(BlockPos.containing(x, y, z))) == Direction.EAST) { + world.addParticle(ParticleTypes.FLAME, (x + 1.1), (y + 0.2), (z + 0.5), 0, 3, 0); + } + if (Math.random() < 0.2) { + if (world instanceof Level _level) { + if (!_level.isClientSide()) { + _level.playSound(null, BlockPos.containing(x, y, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("block.furnace.fire_crackle")), SoundSource.NEUTRAL, 1, 1); + } else { + _level.playLocalSound(x, y, z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("block.furnace.fire_crackle")), SoundSource.NEUTRAL, 1, 1, false); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyFridgeUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyFridgeUpdateTickProcedure.java new file mode 100644 index 0000000..0220368 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyFridgeUpdateTickProcedure.java @@ -0,0 +1,141 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicInteger; + +public class EasyFridgeUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if ((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() == Items.WATER_BUCKET && ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Blocks.PACKED_ICE.asItem()) && 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) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Blocks.PACKED_ICE).copy(); + _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); + }); + } + } + } + if ((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() == Blocks.PACKED_ICE.asItem() && ((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), 1)).getItem() == Blocks.AIR.asItem() || (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), 1)).getItem() == Items.SNOWBALL) && 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) < 16) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 1; + final ItemStack _setstack = new ItemStack(Items.SNOWBALL).copy(); + _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); + }); + } + } + { + 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); + } + }); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasyIntakeOnBlockRightClickedProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasyIntakeOnBlockRightClickedProcedure.java new file mode 100644 index 0000000..6a2503a --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasyIntakeOnBlockRightClickedProcedure.java @@ -0,0 +1,122 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.common.capabilities.ForgeCapabilities; + +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +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.entity.Entity; +import net.minecraft.world.MenuProvider; +import net.minecraft.tags.ItemTags; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.concurrent.atomic.AtomicReference; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.EasyIntakeGUIMenu; + +public class EasyIntakeOnBlockRightClickedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double slotno = 0; + double invslot = 0; + double freeslot = 0; + ItemStack tempstack = ItemStack.EMPTY; + slotno = 0; + if (entity instanceof ServerPlayer _ent) { + BlockPos _bpos = BlockPos.containing(x, y, z); + NetworkHooks.openScreen((ServerPlayer) _ent, new MenuProvider() { + @Override + public Component getDisplayName() { + return Component.literal("EasyIntakeGUI"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + return new EasyIntakeGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(_bpos)); + } + }, _bpos); + } + for (int index0 = 0; index0 < 36; index0++) { + if ((new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) slotno, entity)).is(ItemTags.create(new ResourceLocation("forge:tag_intake")))) { + tempstack = (new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) slotno, entity)); + invslot = 0; + for (int index1 = 0; index1 < 27; index1++) { + if ((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), (int) invslot)).getItem() == Blocks.AIR.asItem()) { + freeslot = invslot; + break; + } + invslot = invslot + 1; + } + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) freeslot; + final ItemStack _setstack = tempstack.copy(); + _setstack.setCount((new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) slotno, entity)).getCount()); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + final int _slotid = (int) slotno; + final ItemStack _setstack = new ItemStack(Blocks.AIR).copy(); + _setstack.setCount(1); + entity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable _modHandler) + _modHandler.setStackInSlot(_slotid, _setstack); + }); + } + } + slotno = slotno + 1; + } + if (entity instanceof Player _player) + _player.closeContainer(); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasySawUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasySawUpdateTickProcedure.java new file mode 100644 index 0000000..880b75b --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasySawUpdateTickProcedure.java @@ -0,0 +1,3875 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicInteger; + +public class EasySawUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + String woodtype = ""; + String recipe = ""; + woodtype = "none"; + recipe = "none"; + if (((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() == Blocks.OAK_LOG.asItem() || (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() == Blocks.STRIPPED_OAK_LOG.asItem()) && 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), 2) <= 60) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_PLANKS).copy(); + _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), 2) + 4)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + if (((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() == Blocks.SPRUCE_LOG.asItem() || (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() == Blocks.STRIPPED_SPRUCE_LOG.asItem()) && 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), 2) <= 60) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_PLANKS).copy(); + _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), 2) + 4)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + if (((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() == Blocks.BIRCH_LOG.asItem() || (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() == Blocks.STRIPPED_BIRCH_LOG.asItem()) && 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), 2) <= 60) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_PLANKS).copy(); + _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), 2) + 4)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + if (((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() == Blocks.JUNGLE_LOG.asItem() || (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() == Blocks.STRIPPED_JUNGLE_LOG.asItem()) && 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), 2) <= 60) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_PLANKS).copy(); + _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), 2) + 4)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + if (((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() == Blocks.ACACIA_LOG.asItem() || (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() == Blocks.STRIPPED_ACACIA_LOG.asItem()) && 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), 2) <= 60) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_PLANKS).copy(); + _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), 2) + 4)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + if (((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() == Blocks.DARK_OAK_LOG.asItem() || (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() == Blocks.STRIPPED_DARK_OAK_LOG.asItem()) && 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), 2) <= 60) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_PLANKS).copy(); + _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), 2) + 4)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + } + 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), 2) < 64) { + if ((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() == Blocks.OAK_PLANKS.asItem()) { + woodtype = "oak"; + } + if ((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() == Blocks.SPRUCE_PLANKS.asItem()) { + woodtype = "spruce"; + } + if ((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() == Blocks.BIRCH_PLANKS.asItem()) { + woodtype = "birch"; + } + if ((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() == Blocks.JUNGLE_PLANKS.asItem()) { + woodtype = "jungle"; + } + if ((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() == Blocks.ACACIA_PLANKS.asItem()) { + woodtype = "acacia"; + } + if ((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() == Blocks.DARK_OAK_PLANKS.asItem()) { + woodtype = "darkoak"; + } + if ((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() == Blocks.CRIMSON_PLANKS.asItem()) { + woodtype = "crimson"; + } + if ((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() == Blocks.WARPED_PLANKS.asItem()) { + woodtype = "warped"; + } + if ((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), 1)).getItem() == Blocks.OAK_SLAB.asItem() || (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), 1)).getItem() == Blocks.SPRUCE_SLAB.asItem() || (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), 1)).getItem() == Blocks.BIRCH_SLAB.asItem() || (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), 1)).getItem() == Blocks.JUNGLE_SLAB.asItem() || (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), 1)).getItem() == Blocks.ACACIA_SLAB.asItem() || (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), 1)).getItem() == Blocks.DARK_OAK_SLAB.asItem() || (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), 1)).getItem() == Blocks.CRIMSON_SLAB.asItem() || (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), 1)).getItem() == Blocks.WARPED_SLAB.asItem()) { + recipe = "slab"; + } + if ((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), 1)).getItem() == Blocks.OAK_STAIRS.asItem() || (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), 1)).getItem() == Blocks.SPRUCE_STAIRS.asItem() || (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), 1)).getItem() == Blocks.BIRCH_STAIRS.asItem() || (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), 1)).getItem() == Blocks.JUNGLE_STAIRS.asItem() || (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), 1)).getItem() == Blocks.ACACIA_STAIRS.asItem() || (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), 1)).getItem() == Blocks.DARK_OAK_STAIRS.asItem() || (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), 1)).getItem() == Blocks.CRIMSON_STAIRS.asItem() || (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), 1)).getItem() == Blocks.WARPED_STAIRS.asItem()) { + recipe = "stairs"; + } + if ((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), 1)).getItem() == Blocks.OAK_SIGN.asItem() || (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), 1)).getItem() == Blocks.SPRUCE_SIGN.asItem() || (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), 1)).getItem() == Blocks.BIRCH_SIGN.asItem() || (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), 1)).getItem() == Blocks.ACACIA_SIGN.asItem() || (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), 1)).getItem() == Blocks.JUNGLE_SIGN.asItem() || (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), 1)).getItem() == Blocks.DARK_OAK_SIGN.asItem() || (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), 1)).getItem() == Blocks.CRIMSON_SIGN.asItem() || (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), 1)).getItem() == Blocks.WARPED_SIGN.asItem()) { + recipe = "sign"; + } + if ((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), 1)).getItem() == Blocks.OAK_DOOR.asItem() || (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), 1)).getItem() == Blocks.SPRUCE_DOOR.asItem() || (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), 1)).getItem() == Blocks.BIRCH_DOOR.asItem() || (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), 1)).getItem() == Blocks.JUNGLE_DOOR.asItem() || (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), 1)).getItem() == Blocks.ACACIA_DOOR.asItem() || (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), 1)).getItem() == Blocks.DARK_OAK_DOOR.asItem() || (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), 1)).getItem() == Blocks.CRIMSON_DOOR.asItem() || (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), 1)).getItem() == Blocks.WARPED_DOOR.asItem()) { + recipe = "door"; + } + if ((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), 1)).getItem() == Blocks.OAK_TRAPDOOR.asItem() || (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), 1)).getItem() == Blocks.SPRUCE_TRAPDOOR.asItem() || (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), 1)).getItem() == Blocks.BIRCH_TRAPDOOR.asItem() || (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), 1)).getItem() == Blocks.JUNGLE_TRAPDOOR.asItem() || (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), 1)).getItem() == Blocks.ACACIA_TRAPDOOR.asItem() || (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), 1)).getItem() == Blocks.DARK_OAK_TRAPDOOR.asItem() || (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), 1)).getItem() == Blocks.CRIMSON_TRAPDOOR.asItem() || (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), 1)).getItem() == Blocks.WARPED_TRAPDOOR.asItem()) { + recipe = "trapdoor"; + } + if ((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), 1)).getItem() == Blocks.OAK_BUTTON.asItem() || (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), 1)).getItem() == Blocks.SPRUCE_BUTTON.asItem() || (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), 1)).getItem() == Blocks.BIRCH_BUTTON.asItem() || (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), 1)).getItem() == Blocks.JUNGLE_BUTTON.asItem() || (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), 1)).getItem() == Blocks.ACACIA_BUTTON.asItem() || (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), 1)).getItem() == Blocks.DARK_OAK_BUTTON.asItem() || (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), 1)).getItem() == Blocks.CRIMSON_BUTTON.asItem() || (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), 1)).getItem() == Blocks.WARPED_BUTTON.asItem()) { + recipe = "button"; + } + if ((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), 1)).getItem() == Blocks.OAK_PRESSURE_PLATE.asItem() || (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), 1)).getItem() == Blocks.SPRUCE_PRESSURE_PLATE.asItem() || (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), 1)).getItem() == Blocks.BIRCH_PRESSURE_PLATE.asItem() || (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), 1)).getItem() == Blocks.JUNGLE_PRESSURE_PLATE.asItem() || (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), 1)).getItem() == Blocks.ACACIA_PRESSURE_PLATE.asItem() || (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), 1)).getItem() == Blocks.DARK_OAK_PRESSURE_PLATE.asItem() || (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), 1)).getItem() == Blocks.CRIMSON_PRESSURE_PLATE.asItem() || (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), 1)).getItem() == Blocks.WARPED_PRESSURE_PLATE.asItem()) { + recipe = "pressureplate"; + } + if ((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), 1)).getItem() == Blocks.OAK_FENCE.asItem() || (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), 1)).getItem() == Blocks.SPRUCE_FENCE.asItem() || (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), 1)).getItem() == Blocks.BIRCH_FENCE.asItem() || (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), 1)).getItem() == Blocks.JUNGLE_FENCE.asItem() || (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), 1)).getItem() == Blocks.ACACIA_FENCE.asItem() || (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), 1)).getItem() == Blocks.DARK_OAK_FENCE.asItem() || (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), 1)).getItem() == Blocks.CRIMSON_FENCE.asItem() || (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), 1)).getItem() == Blocks.WARPED_FENCE.asItem()) { + recipe = "fence"; + } + if ((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), 1)).getItem() == Blocks.OAK_FENCE_GATE.asItem() || (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), 1)).getItem() == Blocks.SPRUCE_FENCE_GATE.asItem() || (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), 1)).getItem() == Blocks.BIRCH_FENCE_GATE.asItem() || (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), 1)).getItem() == Blocks.JUNGLE_FENCE_GATE.asItem() || (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), 1)).getItem() == Blocks.ACACIA_FENCE_GATE.asItem() || (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), 1)).getItem() == Blocks.DARK_OAK_FENCE_GATE.asItem() || (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), 1)).getItem() == Blocks.CRIMSON_FENCE_GATE.asItem() || (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), 1)).getItem() == Blocks.WARPED_FENCE_GATE.asItem()) { + recipe = "gate"; + } + if ((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), 1)).getItem() == Items.OAK_BOAT || (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), 1)).getItem() == Items.SPRUCE_BOAT || (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), 1)).getItem() == Items.BIRCH_BOAT || (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), 1)).getItem() == Items.JUNGLE_BOAT || (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), 1)).getItem() == Items.ACACIA_BOAT || (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), 1)).getItem() == Items.DARK_OAK_BOAT) { + recipe = "boat"; + } + if ((woodtype).equals("oak")) { + if ((recipe).equals("slab")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_SLAB).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("stairs")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_STAIRS).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("sign")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_SIGN).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("door")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_DOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("trapdoor")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_TRAPDOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("button")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_BUTTON).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("pressureplate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_PRESSURE_PLATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("fence")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_FENCE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("gate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.OAK_FENCE_GATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("boat")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Items.OAK_BOAT).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((woodtype).equals("spruce")) { + if ((recipe).equals("slab")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_SLAB).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("stairs")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_STAIRS).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("sign")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_SIGN).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("door")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_DOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("trapdoor")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_TRAPDOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("button")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_BUTTON).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("pressureplate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_PRESSURE_PLATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("fence")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_FENCE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("gate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_FENCE_GATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("boat")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Items.SPRUCE_BOAT).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((woodtype).equals("birch")) { + if ((recipe).equals("slab")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_SLAB).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("stairs")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_STAIRS).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("sign")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_SIGN).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("door")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_DOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("trapdoor")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_TRAPDOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("button")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_BUTTON).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("pressureplate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_PRESSURE_PLATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("fence")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_FENCE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("gate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_FENCE_GATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("boat")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Items.BIRCH_BOAT).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((woodtype).equals("jungle")) { + if ((recipe).equals("slab")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_SLAB).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("stairs")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_STAIRS).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("sign")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_SIGN).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("door")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_DOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("trapdoor")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_TRAPDOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("button")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_BUTTON).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("pressureplate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_PRESSURE_PLATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("fence")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_FENCE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("gate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_FENCE_GATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("boat")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Items.JUNGLE_BOAT).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((woodtype).equals("acacia")) { + if ((recipe).equals("slab")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_SLAB).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("stairs")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_STAIRS).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("sign")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_SIGN).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("door")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_DOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("trapdoor")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_TRAPDOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("button")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_BUTTON).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("pressureplate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_PRESSURE_PLATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("fence")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_FENCE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("gate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_FENCE_GATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("boat")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Items.ACACIA_BOAT).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((woodtype).equals("darkoak")) { + if ((recipe).equals("slab")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_SLAB).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("stairs")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_STAIRS).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("sign")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_WALL_SIGN).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("door")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_DOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("trapdoor")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_TRAPDOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("button")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_BUTTON).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("pressureplate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_PRESSURE_PLATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("fence")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_FENCE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("gate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_FENCE_GATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("boat")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Items.DARK_OAK_BOAT).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((woodtype).equals("crimson")) { + if ((recipe).equals("slab")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.CRIMSON_SLAB).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("stairs")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.CRIMSON_STAIRS).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("sign")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.CRIMSON_SIGN).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("door")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.CRIMSON_DOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("trapdoor")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.CRIMSON_TRAPDOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("button")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.CRIMSON_BUTTON).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("pressureplate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.CRIMSON_PRESSURE_PLATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("fence")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.CRIMSON_FENCE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("gate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.CRIMSON_FENCE_GATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + } + if ((woodtype).equals("warped")) { + if ((recipe).equals("slab")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.WARPED_SLAB).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("stairs")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.WARPED_STAIRS).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("sign")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.WARPED_SIGN).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("door")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.WARPED_DOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("trapdoor")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.WARPED_TRAPDOOR).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("button")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.WARPED_BUTTON).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("pressureplate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.WARPED_PRESSURE_PLATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("fence")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.WARPED_FENCE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + if ((recipe).equals("gate")) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 2; + final ItemStack _setstack = new ItemStack(Blocks.WARPED_FENCE_GATE).copy(); + _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), 2) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + { + 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); + } + }); + } + } + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/EasySmelterUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/EasySmelterUpdateTickProcedure.java new file mode 100644 index 0000000..cf8b748 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/EasySmelterUpdateTickProcedure.java @@ -0,0 +1,78 @@ +package ch.netquick.easysurvival.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.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicInteger; + +public class EasySmelterUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if ((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() == Items.GOLD_NUGGET && 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), 0) >= 9 && 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) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = 0; + final int _amount = 9; + _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(Items.GOLD_INGOT).copy(); + _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/ch/netquick/easysurvival/procedures/OpenCraftingGUIProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/OpenCraftingGUIProcedure.java new file mode 100644 index 0000000..2763119 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/OpenCraftingGUIProcedure.java @@ -0,0 +1,41 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.LevelAccessor; +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.world.MenuProvider; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import io.netty.buffer.Unpooled; + +import ch.netquick.easysurvival.world.inventory.CropGUIMenu; + +public class OpenCraftingGUIProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (!(entity instanceof Player)) + return; + + Player player = (Player) entity; + BlockPos pos = new BlockPos((int) Math.floor(x), (int) Math.floor(y), (int) Math.floor(z)); // Convert doubles to integers + + player.openMenu(new MenuProvider() { + @Override + public Component getDisplayName() { + return null; // You can return a custom display name if needed + } + + @Override + public AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, Player player) { + // Instantiate CropGUIMenu with proper constructor arguments + return new CropGUIMenu(windowId, playerInventory, new FriendlyByteBuf(Unpooled.buffer())); + } + }); + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/PlaceCraftingTableProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/PlaceCraftingTableProcedure.java new file mode 100644 index 0000000..9ea2a8c --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/PlaceCraftingTableProcedure.java @@ -0,0 +1,58 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.InteractionHand; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +public class PlaceCraftingTableProcedure { + public static void execute(LevelAccessor world, Entity entity) { + if (entity == null) + return; + if ((world.getBlockState( + new BlockPos(entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getX(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getY(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getZ()))) + .getBlock() == Blocks.CRAFTING_TABLE) { + world.setBlock( + new BlockPos(entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getX(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getY(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getZ()), + Blocks.AIR.defaultBlockState(), 3); + } else { + world.setBlock( + new BlockPos(entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getX(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getY(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getZ()), + Blocks.CRAFTING_TABLE.defaultBlockState(), 3); + if (entity instanceof Player _player) { + BlockPos _bp = new BlockPos( + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getX(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getY(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getZ()); + _player.level().getBlockState(_bp).use(_player.level(), _player, InteractionHand.MAIN_HAND, BlockHitResult.miss(new Vec3(_bp.getX(), _bp.getY(), _bp.getZ()), Direction.UP, _bp)); + } + if (!world.isClientSide()) { + BlockPos _bp = new BlockPos( + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getX(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getY(), + entity.level().clip(new ClipContext(entity.getEyePosition(1f), entity.getEyePosition(1f).add(entity.getViewVector(1f).scale(1)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos().getZ()); + BlockEntity _blockEntity = world.getBlockEntity(_bp); + BlockState _bs = world.getBlockState(_bp); + if (_blockEntity != null) + _blockEntity.getPersistentData().putString("portabletag", (entity.getDisplayName().getString())); + if (world instanceof Level _level) + _level.sendBlockUpdated(_bp, _bs, _bs, 3); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/SpawnerBlazeUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerBlazeUpdateTickProcedure.java new file mode 100644 index 0000000..d7fa4f8 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerBlazeUpdateTickProcedure.java @@ -0,0 +1,23 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import ch.netquick.easysurvival.init.EasysurvivalModGameRules; + +public class SpawnerBlazeUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if (world.getLevelData().getGameRules().getBoolean(EasysurvivalModGameRules.SPAWNERSACTIVE) == true) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = EntityType.BLAZE.spawn(_level, BlockPos.containing(x, y + 1, z), MobSpawnType.MOB_SUMMONED); + if (entityToSpawn != null) { + entityToSpawn.setYRot(world.getRandom().nextFloat() * 360F); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/SpawnerCreeperUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerCreeperUpdateTickProcedure.java new file mode 100644 index 0000000..5f591b7 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerCreeperUpdateTickProcedure.java @@ -0,0 +1,23 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import ch.netquick.easysurvival.init.EasysurvivalModGameRules; + +public class SpawnerCreeperUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if (world.getLevelData().getGameRules().getBoolean(EasysurvivalModGameRules.SPAWNERSACTIVE) == true) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = EntityType.CREEPER.spawn(_level, BlockPos.containing(x, y + 1, z), MobSpawnType.MOB_SUMMONED); + if (entityToSpawn != null) { + entityToSpawn.setYRot(world.getRandom().nextFloat() * 360F); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/SpawnerEvokerUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerEvokerUpdateTickProcedure.java new file mode 100644 index 0000000..8f768af --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerEvokerUpdateTickProcedure.java @@ -0,0 +1,23 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import ch.netquick.easysurvival.init.EasysurvivalModGameRules; + +public class SpawnerEvokerUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if (world.getLevelData().getGameRules().getBoolean(EasysurvivalModGameRules.SPAWNERSACTIVE) == true) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = EntityType.EVOKER.spawn(_level, BlockPos.containing(x, y + 1, z), MobSpawnType.MOB_SUMMONED); + if (entityToSpawn != null) { + entityToSpawn.setYRot(world.getRandom().nextFloat() * 360F); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/SpawnerGhastUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerGhastUpdateTickProcedure.java new file mode 100644 index 0000000..7109a66 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerGhastUpdateTickProcedure.java @@ -0,0 +1,23 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import ch.netquick.easysurvival.init.EasysurvivalModGameRules; + +public class SpawnerGhastUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if (world.getLevelData().getGameRules().getBoolean(EasysurvivalModGameRules.SPAWNERSACTIVE) == true) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = EntityType.GHAST.spawn(_level, BlockPos.containing(x, y + 1, z), MobSpawnType.MOB_SUMMONED); + if (entityToSpawn != null) { + entityToSpawn.setYRot(world.getRandom().nextFloat() * 360F); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/SpawnerPillagerUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerPillagerUpdateTickProcedure.java new file mode 100644 index 0000000..f94dbf9 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerPillagerUpdateTickProcedure.java @@ -0,0 +1,23 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import ch.netquick.easysurvival.init.EasysurvivalModGameRules; + +public class SpawnerPillagerUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if (world.getLevelData().getGameRules().getBoolean(EasysurvivalModGameRules.SPAWNERSACTIVE) == true) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = EntityType.PILLAGER.spawn(_level, BlockPos.containing(x, y + 1, z), MobSpawnType.MOB_SUMMONED); + if (entityToSpawn != null) { + entityToSpawn.setYRot(world.getRandom().nextFloat() * 360F); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/SpawnerSlimeUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerSlimeUpdateTickProcedure.java new file mode 100644 index 0000000..19a0e45 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerSlimeUpdateTickProcedure.java @@ -0,0 +1,23 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import ch.netquick.easysurvival.init.EasysurvivalModGameRules; + +public class SpawnerSlimeUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if (world.getLevelData().getGameRules().getBoolean(EasysurvivalModGameRules.SPAWNERSACTIVE) == true) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = EntityType.SLIME.spawn(_level, BlockPos.containing(x, y + 1, z), MobSpawnType.MOB_SUMMONED); + if (entityToSpawn != null) { + entityToSpawn.setYRot(world.getRandom().nextFloat() * 360F); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/SpawnerWitherSkelettUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerWitherSkelettUpdateTickProcedure.java new file mode 100644 index 0000000..bccfe81 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/SpawnerWitherSkelettUpdateTickProcedure.java @@ -0,0 +1,23 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.BlockPos; + +import ch.netquick.easysurvival.init.EasysurvivalModGameRules; + +public class SpawnerWitherSkelettUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if (world.getLevelData().getGameRules().getBoolean(EasysurvivalModGameRules.SPAWNERSACTIVE) == true) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = EntityType.WITHER_SKELETON.spawn(_level, BlockPos.containing(x, y + 1, z), MobSpawnType.MOB_SUMMONED); + if (entityToSpawn != null) { + entityToSpawn.setYRot(world.getRandom().nextFloat() * 360F); + } + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/TeleporterProcProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/TeleporterProcProcedure.java new file mode 100644 index 0000000..b099b8b --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/TeleporterProcProcedure.java @@ -0,0 +1,279 @@ +package ch.netquick.easysurvival.procedures; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.network.chat.Component; +import net.minecraft.core.BlockPos; + +public class TeleporterProcProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == Items.ENDER_EYE) { + if ((new Object() { + public boolean getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getBoolean(tag); + return false; + } + }.getValue(world, BlockPos.containing(x, y, z), "isBlockLinked")) == false) { + if (entity.getPersistentData().getBoolean("playerHasStoredTeleporter") == true) { + if (x == entity.getPersistentData().getDouble("playerTeleporterPosX") && y == entity.getPersistentData().getDouble("playerTeleporterPosY") && z == entity.getPersistentData().getDouble("playerTeleporterPosZ")) { + if (entity instanceof Player _player && !_player.level().isClientSide()) + _player.displayClientMessage(Component.literal("You can't link the portal to it's self"), false); + } else { + if (!world.isClientSide()) { + BlockPos _bp = BlockPos.containing(x, y, z); + BlockEntity _blockEntity = world.getBlockEntity(_bp); + BlockState _bs = world.getBlockState(_bp); + if (_blockEntity != null) + _blockEntity.getPersistentData().putDouble("blockTeleporterPosX", (entity.getPersistentData().getDouble("playerTeleporterPosX"))); + if (world instanceof Level _level) + _level.sendBlockUpdated(_bp, _bs, _bs, 3); + } + if (!world.isClientSide()) { + BlockPos _bp = BlockPos.containing(x, y, z); + BlockEntity _blockEntity = world.getBlockEntity(_bp); + BlockState _bs = world.getBlockState(_bp); + if (_blockEntity != null) + _blockEntity.getPersistentData().putDouble("blockTeleporterPosY", (entity.getPersistentData().getDouble("playerTeleporterPosY"))); + if (world instanceof Level _level) + _level.sendBlockUpdated(_bp, _bs, _bs, 3); + } + if (!world.isClientSide()) { + BlockPos _bp = BlockPos.containing(x, y, z); + BlockEntity _blockEntity = world.getBlockEntity(_bp); + BlockState _bs = world.getBlockState(_bp); + if (_blockEntity != null) + _blockEntity.getPersistentData().putDouble("blockTeleporterPosZ", (entity.getPersistentData().getDouble("playerTeleporterPosZ"))); + if (world instanceof Level _level) + _level.sendBlockUpdated(_bp, _bs, _bs, 3); + } + if (!world.isClientSide()) { + BlockPos _bp = BlockPos.containing(new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosX"), new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosY"), new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosZ")); + BlockEntity _blockEntity = world.getBlockEntity(_bp); + BlockState _bs = world.getBlockState(_bp); + if (_blockEntity != null) + _blockEntity.getPersistentData().putDouble("blockTeleporterPosX", x); + if (world instanceof Level _level) + _level.sendBlockUpdated(_bp, _bs, _bs, 3); + } + if (!world.isClientSide()) { + BlockPos _bp = BlockPos.containing(new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosX"), new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosY"), new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosZ")); + BlockEntity _blockEntity = world.getBlockEntity(_bp); + BlockState _bs = world.getBlockState(_bp); + if (_blockEntity != null) + _blockEntity.getPersistentData().putDouble("blockTeleporterPosY", y); + if (world instanceof Level _level) + _level.sendBlockUpdated(_bp, _bs, _bs, 3); + } + if (!world.isClientSide()) { + BlockPos _bp = BlockPos.containing(new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosX"), new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosY"), new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosZ")); + BlockEntity _blockEntity = world.getBlockEntity(_bp); + BlockState _bs = world.getBlockState(_bp); + if (_blockEntity != null) + _blockEntity.getPersistentData().putDouble("blockTeleporterPosZ", z); + if (world instanceof Level _level) + _level.sendBlockUpdated(_bp, _bs, _bs, 3); + } + if (!world.isClientSide()) { + BlockPos _bp = BlockPos.containing(x, y, z); + BlockEntity _blockEntity = world.getBlockEntity(_bp); + BlockState _bs = world.getBlockState(_bp); + if (_blockEntity != null) + _blockEntity.getPersistentData().putBoolean("isBlockLinked", true); + if (world instanceof Level _level) + _level.sendBlockUpdated(_bp, _bs, _bs, 3); + } + if (!world.isClientSide()) { + BlockPos _bp = BlockPos.containing(new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosX"), new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosY"), new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosZ")); + BlockEntity _blockEntity = world.getBlockEntity(_bp); + BlockState _bs = world.getBlockState(_bp); + if (_blockEntity != null) + _blockEntity.getPersistentData().putBoolean("isBlockLinked", true); + if (world instanceof Level _level) + _level.sendBlockUpdated(_bp, _bs, _bs, 3); + } + entity.getPersistentData().putBoolean("playerHasStoredTeleporter", false); + if (entity instanceof Player _player && !_player.level().isClientSide()) + _player.displayClientMessage(Component.literal("The teleporter has been linked"), false); + } + } else { + entity.getPersistentData().putDouble("playerTeleporterPosX", x); + entity.getPersistentData().putDouble("playerTeleporterPosY", y); + entity.getPersistentData().putDouble("playerTeleporterPosZ", z); + entity.getPersistentData().putBoolean("playerHasStoredTeleporter", true); + if (entity instanceof Player _player && !_player.level().isClientSide()) + _player.displayClientMessage(Component.literal(("Current Portal Location: " + "X: " + entity.getPersistentData().getDouble("playerTeleporterPosX") + "Y: " + entity.getPersistentData().getDouble("playerTeleporterPosY") + "Z: " + + entity.getPersistentData().getDouble("playerTeleporterPosZ"))), false); + } + } + } else { + if ((new Object() { + public boolean getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getBoolean(tag); + return false; + } + }.getValue(world, BlockPos.containing(x, y, z), "isBlockLinked")) == true) { + { + Entity _ent = entity; + _ent.teleportTo((new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosX") + 0.5), (new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosY")), (new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosZ") + 0.5)); + if (_ent instanceof ServerPlayer _serverPlayer) + _serverPlayer.connection.teleport((new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosX") + 0.5), (new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosY")), (new Object() { + public double getValue(LevelAccessor world, BlockPos pos, String tag) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity != null) + return blockEntity.getPersistentData().getDouble(tag); + return -1; + } + }.getValue(world, BlockPos.containing(x, y, z), "blockTeleporterPosZ") + 0.5), _ent.getYRot(), _ent.getXRot()); + } + { + Entity _ent = entity; + _ent.setYRot(entity.getYRot()); + _ent.setXRot(entity.getXRot()); + _ent.setYBodyRot(_ent.getYRot()); + _ent.setYHeadRot(_ent.getYRot()); + _ent.yRotO = _ent.getYRot(); + _ent.xRotO = _ent.getXRot(); + if (_ent instanceof LivingEntity _entity) { + _entity.yBodyRotO = _entity.getYRot(); + _entity.yHeadRotO = _entity.getYRot(); + } + } + if (entity instanceof Player _player && !_player.level().isClientSide()) + _player.displayClientMessage(Component.literal("You have been teleported"), false); + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/procedures/TreeCropUpdateTickProcedure.java b/src/main/java/ch/netquick/easysurvival/procedures/TreeCropUpdateTickProcedure.java new file mode 100644 index 0000000..b6334d2 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/procedures/TreeCropUpdateTickProcedure.java @@ -0,0 +1,514 @@ +package ch.netquick.easysurvival.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.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicInteger; + +public class TreeCropUpdateTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + double Slotno = 0; + if ((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() == Blocks.OAK_SAPLING.asItem()) { + Slotno = 1; + for (int index0 = 0; index0 < 7; index0++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.OAK_LOG).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.SPRUCE_SAPLING.asItem()) { + Slotno = 1; + for (int index1 = 0; index1 < 7; index1++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.SPRUCE_LOG).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.BIRCH_SAPLING.asItem()) { + Slotno = 1; + for (int index2 = 0; index2 < 7; index2++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.BIRCH_LOG).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.JUNGLE_SAPLING.asItem()) { + Slotno = 1; + for (int index3 = 0; index3 < 7; index3++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.JUNGLE_LOG).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.ACACIA_SAPLING.asItem()) { + Slotno = 1; + for (int index4 = 0; index4 < 7; index4++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.ACACIA_LOG).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.DARK_OAK_SAPLING.asItem()) { + Slotno = 1; + for (int index5 = 0; index5 < 7; index5++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.DARK_OAK_LOG).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.BAMBOO.asItem()) { + Slotno = 1; + for (int index6 = 0; index6 < 7; index6++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.BAMBOO).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.CACTUS.asItem()) { + Slotno = 1; + for (int index7 = 0; index7 < 7; index7++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.CACTUS).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.SUGAR_CANE.asItem()) { + Slotno = 1; + for (int index8 = 0; index8 < 7; index8++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.SUGAR_CANE).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.CHERRY_SAPLING.asItem()) { + Slotno = 1; + for (int index9 = 0; index9 < 7; index9++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.CHERRY_LOG).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + if ((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() == Blocks.MANGROVE_PROPAGULE.asItem()) { + Slotno = 1; + for (int index10 = 0; index10 < 7; index10++) { + 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), (int) Slotno) < 64) { + { + BlockEntity _ent = world.getBlockEntity(BlockPos.containing(x, y, z)); + if (_ent != null) { + final int _slotid = (int) Slotno; + final ItemStack _setstack = new ItemStack(Blocks.MANGROVE_LOG).copy(); + _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), (int) Slotno) + 1)); + _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable) + ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack); + }); + } + } + break; + } + Slotno = Slotno + 1; + } + } + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/CraftingStickGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/CraftingStickGUIMenu.java new file mode 100644 index 0000000..8ae7219 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/CraftingStickGUIMenu.java @@ -0,0 +1,254 @@ + +package ch.netquick.easysurvival.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.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class CraftingStickGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public CraftingStickGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.CRAFTING_STICK_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(9); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 8, 60) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 26, 60) { + private final int slot = 1; + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 44, 60) { + private final int slot = 2; + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 8, 42) { + private final int slot = 3; + })); + this.customSlots.put(4, this.addSlot(new SlotItemHandler(internal, 4, 26, 42) { + private final int slot = 4; + })); + this.customSlots.put(5, this.addSlot(new SlotItemHandler(internal, 5, 44, 42) { + private final int slot = 5; + })); + this.customSlots.put(6, this.addSlot(new SlotItemHandler(internal, 6, 8, 24) { + private final int slot = 6; + })); + this.customSlots.put(7, this.addSlot(new SlotItemHandler(internal, 7, 26, 24) { + private final int slot = 7; + })); + this.customSlots.put(8, this.addSlot(new SlotItemHandler(internal, 8, 44, 24) { + private final int slot = 8; + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 9) { + if (!this.moveItemStackTo(itemstack1, 9, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 9, false)) { + if (index < 9 + 27) { + if (!this.moveItemStackTo(itemstack1, 9 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 9, 9 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/CropGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/CropGUIMenu.java new file mode 100644 index 0000000..101ca8c --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/CropGUIMenu.java @@ -0,0 +1,290 @@ + +package ch.netquick.easysurvival.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.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class CropGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public CropGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.CROP_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(8); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 8, 48) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 44, 48) { + private final int slot = 1; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 62, 48) { + private final int slot = 2; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 80, 48) { + private final int slot = 3; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(4, this.addSlot(new SlotItemHandler(internal, 4, 98, 48) { + private final int slot = 4; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(5, this.addSlot(new SlotItemHandler(internal, 5, 116, 48) { + private final int slot = 5; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(6, this.addSlot(new SlotItemHandler(internal, 6, 134, 48) { + private final int slot = 6; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(7, this.addSlot(new SlotItemHandler(internal, 7, 152, 48) { + private final int slot = 7; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 8) { + if (!this.moveItemStackTo(itemstack1, 8, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 8, false)) { + if (index < 8 + 27) { + if (!this.moveItemStackTo(itemstack1, 8 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 8, 8 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + if (j == 0) + continue; + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + if (i == 0) + continue; + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/DedicatedStorageGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/DedicatedStorageGUIMenu.java new file mode 100644 index 0000000..0526f14 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/DedicatedStorageGUIMenu.java @@ -0,0 +1,308 @@ + +package ch.netquick.easysurvival.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.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class DedicatedStorageGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public DedicatedStorageGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.DEDICATED_STORAGE_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(27); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 7, 21) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 25, 21) { + private final int slot = 1; + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 43, 21) { + private final int slot = 2; + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 61, 21) { + private final int slot = 3; + })); + this.customSlots.put(4, this.addSlot(new SlotItemHandler(internal, 4, 79, 21) { + private final int slot = 4; + })); + this.customSlots.put(5, this.addSlot(new SlotItemHandler(internal, 5, 97, 21) { + private final int slot = 5; + })); + this.customSlots.put(6, this.addSlot(new SlotItemHandler(internal, 6, 115, 21) { + private final int slot = 6; + })); + this.customSlots.put(7, this.addSlot(new SlotItemHandler(internal, 7, 133, 21) { + private final int slot = 7; + })); + this.customSlots.put(8, this.addSlot(new SlotItemHandler(internal, 8, 151, 21) { + private final int slot = 8; + })); + this.customSlots.put(9, this.addSlot(new SlotItemHandler(internal, 9, 7, 39) { + private final int slot = 9; + })); + this.customSlots.put(10, this.addSlot(new SlotItemHandler(internal, 10, 25, 39) { + private final int slot = 10; + })); + this.customSlots.put(11, this.addSlot(new SlotItemHandler(internal, 11, 43, 39) { + private final int slot = 11; + })); + this.customSlots.put(12, this.addSlot(new SlotItemHandler(internal, 12, 61, 39) { + private final int slot = 12; + })); + this.customSlots.put(13, this.addSlot(new SlotItemHandler(internal, 13, 79, 39) { + private final int slot = 13; + })); + this.customSlots.put(14, this.addSlot(new SlotItemHandler(internal, 14, 97, 39) { + private final int slot = 14; + })); + this.customSlots.put(15, this.addSlot(new SlotItemHandler(internal, 15, 115, 39) { + private final int slot = 15; + })); + this.customSlots.put(16, this.addSlot(new SlotItemHandler(internal, 16, 133, 39) { + private final int slot = 16; + })); + this.customSlots.put(17, this.addSlot(new SlotItemHandler(internal, 17, 151, 39) { + private final int slot = 17; + })); + this.customSlots.put(18, this.addSlot(new SlotItemHandler(internal, 18, 7, 57) { + private final int slot = 18; + })); + this.customSlots.put(19, this.addSlot(new SlotItemHandler(internal, 19, 25, 57) { + private final int slot = 19; + })); + this.customSlots.put(20, this.addSlot(new SlotItemHandler(internal, 20, 43, 57) { + private final int slot = 20; + })); + this.customSlots.put(21, this.addSlot(new SlotItemHandler(internal, 21, 61, 57) { + private final int slot = 21; + })); + this.customSlots.put(22, this.addSlot(new SlotItemHandler(internal, 22, 79, 57) { + private final int slot = 22; + })); + this.customSlots.put(23, this.addSlot(new SlotItemHandler(internal, 23, 97, 57) { + private final int slot = 23; + })); + this.customSlots.put(24, this.addSlot(new SlotItemHandler(internal, 24, 115, 57) { + private final int slot = 24; + })); + this.customSlots.put(25, this.addSlot(new SlotItemHandler(internal, 25, 133, 57) { + private final int slot = 25; + })); + this.customSlots.put(26, this.addSlot(new SlotItemHandler(internal, 26, 151, 57) { + private final int slot = 26; + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 27) { + if (!this.moveItemStackTo(itemstack1, 27, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 27, false)) { + if (index < 27 + 27) { + if (!this.moveItemStackTo(itemstack1, 27 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 27, 27 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/EasyAnvilGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyAnvilGUIMenu.java new file mode 100644 index 0000000..664c42d --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyAnvilGUIMenu.java @@ -0,0 +1,292 @@ + +package ch.netquick.easysurvival.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.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.inventory.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.network.EasyAnvilGUISlotMessage; +import ch.netquick.easysurvival.init.EasysurvivalModMenus; +import ch.netquick.easysurvival.EasysurvivalMod; + +public class EasyAnvilGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public EasyAnvilGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.EASY_ANVIL_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(3); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 7, 48) { + private final int slot = 0; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(0, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(0, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 151, 48) { + private final int slot = 2; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(2, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(2, 2, b.getCount() - a.getCount()); + } + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 25, 48) { + private final int slot = 1; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(1, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(1, 2, b.getCount() - a.getCount()); + } + + @Override + public boolean mayPlace(ItemStack stack) { + return Items.IRON_INGOT == stack.getItem(); + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 3) { + if (!this.moveItemStackTo(itemstack1, 3, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 3, false)) { + if (index < 3 + 27) { + if (!this.moveItemStackTo(itemstack1, 3 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 3, 3 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + private void slotChanged(int slotid, int ctype, int meta) { + if (this.world != null && this.world.isClientSide()) { + EasysurvivalMod.PACKET_HANDLER.sendToServer(new EasyAnvilGUISlotMessage(slotid, x, y, z, ctype, meta)); + EasyAnvilGUISlotMessage.handleSlotAction(entity, slotid, ctype, meta, x, y, z); + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/EasyConverterGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyConverterGUIMenu.java new file mode 100644 index 0000000..3d3a786 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyConverterGUIMenu.java @@ -0,0 +1,238 @@ + +package ch.netquick.easysurvival.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.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class EasyConverterGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public EasyConverterGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.EASY_CONVERTER_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(2); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 25, 48) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 79, 48) { + private final int slot = 1; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 2) { + if (!this.moveItemStackTo(itemstack1, 2, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 2, false)) { + if (index < 2 + 27) { + if (!this.moveItemStackTo(itemstack1, 2 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 2, 2 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/EasyEnchantmentTableGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyEnchantmentTableGUIMenu.java new file mode 100644 index 0000000..dfc1dc9 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyEnchantmentTableGUIMenu.java @@ -0,0 +1,412 @@ + +package ch.netquick.easysurvival.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.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.inventory.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.network.EasyEnchantmentTableGUISlotMessage; +import ch.netquick.easysurvival.init.EasysurvivalModMenus; +import ch.netquick.easysurvival.EasysurvivalMod; + +public class EasyEnchantmentTableGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public EasyEnchantmentTableGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.EASY_ENCHANTMENT_TABLE_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(11); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 151, 12) { + private final int slot = 0; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(0, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(0, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 7, 57) { + private final int slot = 1; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(1, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(1, 2, b.getCount() - a.getCount()); + } + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 25, 57) { + private final int slot = 2; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(2, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(2, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 43, 57) { + private final int slot = 3; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(3, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(3, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(4, this.addSlot(new SlotItemHandler(internal, 4, 61, 57) { + private final int slot = 4; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(4, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(4, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(5, this.addSlot(new SlotItemHandler(internal, 5, 79, 57) { + private final int slot = 5; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(5, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(5, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(6, this.addSlot(new SlotItemHandler(internal, 6, 97, 57) { + private final int slot = 6; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(6, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(6, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(7, this.addSlot(new SlotItemHandler(internal, 7, 115, 57) { + private final int slot = 7; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(7, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(7, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(8, this.addSlot(new SlotItemHandler(internal, 8, 133, 57) { + private final int slot = 8; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(8, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(8, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(9, this.addSlot(new SlotItemHandler(internal, 9, 151, 57) { + private final int slot = 9; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(9, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(9, 2, b.getCount() - a.getCount()); + } + })); + this.customSlots.put(10, this.addSlot(new SlotItemHandler(internal, 10, 151, 35) { + private final int slot = 10; + + @Override + public void onTake(Player entity, ItemStack stack) { + super.onTake(entity, stack); + slotChanged(10, 1, 0); + } + + @Override + public void onQuickCraft(ItemStack a, ItemStack b) { + super.onQuickCraft(a, b); + slotChanged(10, 2, b.getCount() - a.getCount()); + } + + @Override + public boolean mayPlace(ItemStack stack) { + return Items.LAPIS_LAZULI == stack.getItem(); + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 11) { + if (!this.moveItemStackTo(itemstack1, 11, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 11, false)) { + if (index < 11 + 27) { + if (!this.moveItemStackTo(itemstack1, 11 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 11, 11 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + private void slotChanged(int slotid, int ctype, int meta) { + if (this.world != null && this.world.isClientSide()) { + EasysurvivalMod.PACKET_HANDLER.sendToServer(new EasyEnchantmentTableGUISlotMessage(slotid, x, y, z, ctype, meta)); + EasyEnchantmentTableGUISlotMessage.handleSlotAction(entity, slotid, ctype, meta, x, y, z); + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/EasyForgeGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyForgeGUIMenu.java new file mode 100644 index 0000000..f593561 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyForgeGUIMenu.java @@ -0,0 +1,238 @@ + +package ch.netquick.easysurvival.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.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class EasyForgeGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public EasyForgeGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.EASY_FORGE_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(2); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 43, 48) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 115, 48) { + private final int slot = 1; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 2) { + if (!this.moveItemStackTo(itemstack1, 2, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 2, false)) { + if (index < 2 + 27) { + if (!this.moveItemStackTo(itemstack1, 2 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 2, 2 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/EasyFridgeGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyFridgeGUIMenu.java new file mode 100644 index 0000000..0cd77d6 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyFridgeGUIMenu.java @@ -0,0 +1,238 @@ + +package ch.netquick.easysurvival.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.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class EasyFridgeGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public EasyFridgeGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.EASY_FRIDGE_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(2); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 25, 48) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 133, 48) { + private final int slot = 1; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 2) { + if (!this.moveItemStackTo(itemstack1, 2, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 2, false)) { + if (index < 2 + 27) { + if (!this.moveItemStackTo(itemstack1, 2 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 2, 2 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/EasyIntakeGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyIntakeGUIMenu.java new file mode 100644 index 0000000..a454a0c --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/EasyIntakeGUIMenu.java @@ -0,0 +1,308 @@ + +package ch.netquick.easysurvival.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.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class EasyIntakeGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public EasyIntakeGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.EASY_INTAKE_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(27); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 8, 21) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 26, 21) { + private final int slot = 1; + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 44, 21) { + private final int slot = 2; + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 62, 21) { + private final int slot = 3; + })); + this.customSlots.put(4, this.addSlot(new SlotItemHandler(internal, 4, 80, 21) { + private final int slot = 4; + })); + this.customSlots.put(5, this.addSlot(new SlotItemHandler(internal, 5, 98, 21) { + private final int slot = 5; + })); + this.customSlots.put(6, this.addSlot(new SlotItemHandler(internal, 6, 116, 21) { + private final int slot = 6; + })); + this.customSlots.put(7, this.addSlot(new SlotItemHandler(internal, 7, 134, 21) { + private final int slot = 7; + })); + this.customSlots.put(8, this.addSlot(new SlotItemHandler(internal, 8, 152, 21) { + private final int slot = 8; + })); + this.customSlots.put(9, this.addSlot(new SlotItemHandler(internal, 9, 8, 39) { + private final int slot = 9; + })); + this.customSlots.put(10, this.addSlot(new SlotItemHandler(internal, 10, 26, 39) { + private final int slot = 10; + })); + this.customSlots.put(11, this.addSlot(new SlotItemHandler(internal, 11, 44, 39) { + private final int slot = 11; + })); + this.customSlots.put(12, this.addSlot(new SlotItemHandler(internal, 12, 62, 39) { + private final int slot = 12; + })); + this.customSlots.put(13, this.addSlot(new SlotItemHandler(internal, 13, 80, 39) { + private final int slot = 13; + })); + this.customSlots.put(14, this.addSlot(new SlotItemHandler(internal, 14, 98, 39) { + private final int slot = 14; + })); + this.customSlots.put(15, this.addSlot(new SlotItemHandler(internal, 15, 116, 39) { + private final int slot = 15; + })); + this.customSlots.put(16, this.addSlot(new SlotItemHandler(internal, 16, 134, 39) { + private final int slot = 16; + })); + this.customSlots.put(17, this.addSlot(new SlotItemHandler(internal, 17, 152, 39) { + private final int slot = 17; + })); + this.customSlots.put(18, this.addSlot(new SlotItemHandler(internal, 18, 8, 57) { + private final int slot = 18; + })); + this.customSlots.put(19, this.addSlot(new SlotItemHandler(internal, 19, 26, 57) { + private final int slot = 19; + })); + this.customSlots.put(20, this.addSlot(new SlotItemHandler(internal, 20, 44, 57) { + private final int slot = 20; + })); + this.customSlots.put(21, this.addSlot(new SlotItemHandler(internal, 21, 62, 57) { + private final int slot = 21; + })); + this.customSlots.put(22, this.addSlot(new SlotItemHandler(internal, 22, 80, 57) { + private final int slot = 22; + })); + this.customSlots.put(23, this.addSlot(new SlotItemHandler(internal, 23, 98, 57) { + private final int slot = 23; + })); + this.customSlots.put(24, this.addSlot(new SlotItemHandler(internal, 24, 116, 57) { + private final int slot = 24; + })); + this.customSlots.put(25, this.addSlot(new SlotItemHandler(internal, 25, 134, 57) { + private final int slot = 25; + })); + this.customSlots.put(26, this.addSlot(new SlotItemHandler(internal, 26, 152, 57) { + private final int slot = 26; + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 1 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 1 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 27) { + if (!this.moveItemStackTo(itemstack1, 27, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 27, false)) { + if (index < 27 + 27) { + if (!this.moveItemStackTo(itemstack1, 27 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 27, 27 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/EasySawGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/EasySawGUIMenu.java new file mode 100644 index 0000000..2005046 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/EasySawGUIMenu.java @@ -0,0 +1,241 @@ + +package ch.netquick.easysurvival.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.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class EasySawGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public EasySawGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.EASY_SAW_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(3); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 25, 48) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 79, 30) { + private final int slot = 1; + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 133, 48) { + private final int slot = 2; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 3) { + if (!this.moveItemStackTo(itemstack1, 3, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 3, false)) { + if (index < 3 + 27) { + if (!this.moveItemStackTo(itemstack1, 3 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 3, 3 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/EasySmelterGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/EasySmelterGUIMenu.java new file mode 100644 index 0000000..324b477 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/EasySmelterGUIMenu.java @@ -0,0 +1,244 @@ + +package ch.netquick.easysurvival.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.Items; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.inventory.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class EasySmelterGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public EasySmelterGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.EASY_SMELTER_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(2); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 25, 48) { + private final int slot = 0; + + @Override + public boolean mayPlace(ItemStack stack) { + return Items.GOLD_NUGGET == stack.getItem(); + } + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 133, 48) { + private final int slot = 1; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 2) { + if (!this.moveItemStackTo(itemstack1, 2, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 2, false)) { + if (index < 2 + 27) { + if (!this.moveItemStackTo(itemstack1, 2 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 2, 2 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/TeleportSetGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/TeleportSetGUIMenu.java new file mode 100644 index 0000000..7a50df9 --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/TeleportSetGUIMenu.java @@ -0,0 +1,74 @@ + +package ch.netquick.easysurvival.world.inventory; + +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.IItemHandler; + +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.ContainerLevelAccess; +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.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class TeleportSetGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public TeleportSetGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.TELEPORT_SET_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(0); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + return ItemStack.EMPTY; + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/TeleporterGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/TeleporterGUIMenu.java new file mode 100644 index 0000000..af4083f --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/TeleporterGUIMenu.java @@ -0,0 +1,74 @@ + +package ch.netquick.easysurvival.world.inventory; + +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.IItemHandler; + +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.ContainerLevelAccess; +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.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class TeleporterGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public TeleporterGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.TELEPORTER_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(0); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + return ItemStack.EMPTY; + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/ch/netquick/easysurvival/world/inventory/TreeCropGUIMenu.java b/src/main/java/ch/netquick/easysurvival/world/inventory/TreeCropGUIMenu.java new file mode 100644 index 0000000..ff0a8db --- /dev/null +++ b/src/main/java/ch/netquick/easysurvival/world/inventory/TreeCropGUIMenu.java @@ -0,0 +1,286 @@ + +package ch.netquick.easysurvival.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.ContainerLevelAccess; +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 java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import ch.netquick.easysurvival.init.EasysurvivalModMenus; + +public class TreeCropGUIMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public TreeCropGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(EasysurvivalModMenus.TREE_CROP_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(8); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 7, 47) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 43, 47) { + private final int slot = 1; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 61, 47) { + private final int slot = 2; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 79, 47) { + private final int slot = 3; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(4, this.addSlot(new SlotItemHandler(internal, 4, 97, 47) { + private final int slot = 4; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(5, this.addSlot(new SlotItemHandler(internal, 5, 115, 47) { + private final int slot = 5; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(6, this.addSlot(new SlotItemHandler(internal, 6, 133, 47) { + private final int slot = 6; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + this.customSlots.put(7, this.addSlot(new SlotItemHandler(internal, 7, 151, 47) { + private final int slot = 7; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 8) { + if (!this.moveItemStackTo(itemstack1, 8, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 8, false)) { + if (index < 8 + 27) { + if (!this.moveItemStackTo(itemstack1, 8 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 8, 8 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..0a9c9af --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,24 @@ +modLoader="javafml" +loaderVersion="[47,)" +license="Academic Free License v3.0" + +[[mods]] +modId="easysurvival" +version="1.0.0" +displayName="EasySurvival" +displayURL="https://mcreator.net" +credits="Created using mod maker MCreator - https://mcreator.net/about" +authors="netqu, MCreator" + +# Start of user code block mod configuration +# End of user code block mod configuration + +[[dependencies.easysurvival]] + modId="minecraft" + mandatory=true + versionRange="[1.20.1]" + ordering="NONE" + side="BOTH" + + + diff --git a/src/main/resources/assets/easysurvival/blockstates/crop.json b/src/main/resources/assets/easysurvival/blockstates/crop.json new file mode 100644 index 0000000..0887da7 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/crop.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/crop" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/easy_anvil.json b/src/main/resources/assets/easysurvival/blockstates/easy_anvil.json new file mode 100644 index 0000000..6e6769b --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/easy_anvil.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "easysurvival:block/easy_anvil" + }, + "facing=east": { + "model": "easysurvival:block/easy_anvil", + "y": 90 + }, + "facing=south": { + "model": "easysurvival:block/easy_anvil", + "y": 180 + }, + "facing=west": { + "model": "easysurvival:block/easy_anvil", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/easy_converter.json b/src/main/resources/assets/easysurvival/blockstates/easy_converter.json new file mode 100644 index 0000000..2ca0348 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/easy_converter.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/easy_converter" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/easy_enchantment_table.json b/src/main/resources/assets/easysurvival/blockstates/easy_enchantment_table.json new file mode 100644 index 0000000..e8a0e9b --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/easy_enchantment_table.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "easysurvival:block/easy_enchantment_table" + }, + "facing=east": { + "model": "easysurvival:block/easy_enchantment_table", + "y": 90 + }, + "facing=south": { + "model": "easysurvival:block/easy_enchantment_table", + "y": 180 + }, + "facing=west": { + "model": "easysurvival:block/easy_enchantment_table", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/easy_forge.json b/src/main/resources/assets/easysurvival/blockstates/easy_forge.json new file mode 100644 index 0000000..6504d4c --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/easy_forge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "easysurvival:block/easy_forge" + }, + "facing=east": { + "model": "easysurvival:block/easy_forge", + "y": 90 + }, + "facing=south": { + "model": "easysurvival:block/easy_forge", + "y": 180 + }, + "facing=west": { + "model": "easysurvival:block/easy_forge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/easy_forge_auto.json b/src/main/resources/assets/easysurvival/blockstates/easy_forge_auto.json new file mode 100644 index 0000000..9d5f396 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/easy_forge_auto.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "easysurvival:block/easy_forge_auto" + }, + "facing=east": { + "model": "easysurvival:block/easy_forge_auto", + "y": 90 + }, + "facing=south": { + "model": "easysurvival:block/easy_forge_auto", + "y": 180 + }, + "facing=west": { + "model": "easysurvival:block/easy_forge_auto", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/easy_fridge.json b/src/main/resources/assets/easysurvival/blockstates/easy_fridge.json new file mode 100644 index 0000000..8f71ec7 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/easy_fridge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "easysurvival:block/easy_fridge" + }, + "facing=east": { + "model": "easysurvival:block/easy_fridge", + "y": 90 + }, + "facing=south": { + "model": "easysurvival:block/easy_fridge", + "y": 180 + }, + "facing=west": { + "model": "easysurvival:block/easy_fridge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/easy_intake.json b/src/main/resources/assets/easysurvival/blockstates/easy_intake.json new file mode 100644 index 0000000..07a4eda --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/easy_intake.json @@ -0,0 +1,27 @@ +{ + "variants": { + "facing=north": { + "model": "easysurvival:block/easy_intake" + }, + "facing=east": { + "model": "easysurvival:block/easy_intake", + "y": 90 + }, + "facing=south": { + "model": "easysurvival:block/easy_intake", + "y": 180 + }, + "facing=west": { + "model": "easysurvival:block/easy_intake", + "y": 270 + }, + "facing=up": { + "model": "easysurvival:block/easy_intake", + "x": 270 + }, + "facing=down": { + "model": "easysurvival:block/easy_intake", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/easy_saw.json b/src/main/resources/assets/easysurvival/blockstates/easy_saw.json new file mode 100644 index 0000000..ec7ba74 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/easy_saw.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/easy_saw" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/easy_smelter.json b/src/main/resources/assets/easysurvival/blockstates/easy_smelter.json new file mode 100644 index 0000000..edebf55 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/easy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "easysurvival:block/easy_smelter" + }, + "facing=east": { + "model": "easysurvival:block/easy_smelter", + "y": 90 + }, + "facing=south": { + "model": "easysurvival:block/easy_smelter", + "y": 180 + }, + "facing=west": { + "model": "easysurvival:block/easy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/spawner_blaze.json b/src/main/resources/assets/easysurvival/blockstates/spawner_blaze.json new file mode 100644 index 0000000..18f11ef --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/spawner_blaze.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/spawner_blaze" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/spawner_creeper.json b/src/main/resources/assets/easysurvival/blockstates/spawner_creeper.json new file mode 100644 index 0000000..52d5c7a --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/spawner_creeper.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/spawner_creeper" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/spawner_evoker.json b/src/main/resources/assets/easysurvival/blockstates/spawner_evoker.json new file mode 100644 index 0000000..79349c3 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/spawner_evoker.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/spawner_evoker" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/spawner_ghast.json b/src/main/resources/assets/easysurvival/blockstates/spawner_ghast.json new file mode 100644 index 0000000..774b883 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/spawner_ghast.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/spawner_ghast" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/spawner_pillager.json b/src/main/resources/assets/easysurvival/blockstates/spawner_pillager.json new file mode 100644 index 0000000..24eea49 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/spawner_pillager.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/spawner_pillager" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/spawner_slime.json b/src/main/resources/assets/easysurvival/blockstates/spawner_slime.json new file mode 100644 index 0000000..f6e6890 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/spawner_slime.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/spawner_slime" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/spawner_wither_skelett.json b/src/main/resources/assets/easysurvival/blockstates/spawner_wither_skelett.json new file mode 100644 index 0000000..cd8289c --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/spawner_wither_skelett.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/spawner_wither_skelett" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/teleporter_plate.json b/src/main/resources/assets/easysurvival/blockstates/teleporter_plate.json new file mode 100644 index 0000000..0929514 --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/teleporter_plate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/teleporter_plate" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/blockstates/tree_crop.json b/src/main/resources/assets/easysurvival/blockstates/tree_crop.json new file mode 100644 index 0000000..93ddeeb --- /dev/null +++ b/src/main/resources/assets/easysurvival/blockstates/tree_crop.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "easysurvival:block/tree_crop" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/lang/en_us.json b/src/main/resources/assets/easysurvival/lang/en_us.json new file mode 100644 index 0000000..1b3d884 --- /dev/null +++ b/src/main/resources/assets/easysurvival/lang/en_us.json @@ -0,0 +1,70 @@ +{ + "gui.easysurvival.crop_gui.label_seed": "Seed", + "gui.easysurvival.teleport_set_gui.TeleportName": "Name", + "gui.easysurvival.teleport_set_gui.button_set": "Set", + "gui.easysurvival.easy_smelter_gui.label_easysmelter": "EasySmelter", + "block.easysurvival.spawner_creeper": "Spawner Creeper", + "itemGroup.tabeasy_survival": "Easy Survival", + "block.easysurvival.spawner_pillager": "Spawner Pillager", + "item.easysurvival.portable_crafting_table": "Portable Crafting Table", + "gui.easysurvival.easy_enchantment_table_gui.label_easyenchant": "EasyEnchant", + "item.easysurvival.quarz_axe": "Quarz Axe", + "gui.easysurvival.teleporter_gui.button_teleport": "Teleport", + "item.easysurvival.basalt_sword": "Basalt Sword", + "block.easysurvival.crop": "Crop", + "gui.easysurvival.easy_saw_gui.label_template": "Template", + "gui.easysurvival.easy_fridge_gui.label_easyfridge": "EasyFridge", + "item.easysurvival.netherrack_armor_leggings": "Netherrack Leggings", + "gui.easysurvival.teleporter_gui.label_teleport_1": "Teleport 1", + "block.easysurvival.easy_intake": "Easy Intake", + "item.easysurvival.netherrack_armor_chestplate": "Netherrack Chestplate", + "block.easysurvival.spawner_ghast": "Spawner Ghast", + "gui.easysurvival.crop_gui.label_growcrop": "GrowCrop", + "item.easysurvival.netherrack_sword": "Netherrack Sword", + "gui.easysurvival.teleporter_gui.label_teleport_2": "Teleport 2", + "block.easysurvival.spawner_evoker": "Spawner Evoker", + "block.easysurvival.spawner_blaze": "Spawner Blaze", + "gui.easysurvival.easy_saw_gui.label_easysaw": "EasySaw", + "block.easysurvival.easy_saw": "Easy Saw", + "gui.easysurvival.teleport_set_gui.label_set_teleport": "Set Teleport", + "item.easysurvival.netherrack_axe": "Netherrack Axe", + "block.easysurvival.easy_fridge": "Easy Fridge", + "block.easysurvival.spawner_slime": "Spawner Slime", + "block.easysurvival.easy_anvil": "Easy Anvil", + "gui.easysurvival.tree_crop_gui.label_treecrop": "TreeCrop", + "item.easysurvival.basalt_axe": "Basalt Axe", + "item_group.easysurvival.easy_survival": "Easy Survival", + "gamerule.spawnersActive": "Spawners active", + "item.easysurvival.quarz_sword": "Quarz Sword", + "block.easysurvival.tree_crop": "Tree Crop", + "gui.easysurvival.easy_forge_gui.label_empty": "\u003e\u003e", + "block.easysurvival.teleporter_plate": "Teleporter Plate", + "item.easysurvival.netherrack_pickaxe": "Netherrack Pickaxe", + "gui.easysurvival.teleporter_gui.label_easyteleport": "EasyTeleport", + "item.easysurvival.basalt_pickaxe": "Basalt Pickaxe", + "block.easysurvival.easy_converter": "Easy Converter", + "item.easysurvival.netherrack_armor_helmet": "Netherrack Helmet", + "gui.easysurvival.easy_enchantment_table_gui.label_item": "Item", + "block.easysurvival.easy_smelter": "Easy Smelter", + "item.easysurvival.netherrack_armor_boots": "Netherrack Boots", + "block.easysurvival.spawner_wither_skelett": "Spawner Wither Skeleton", + "gui.easysurvival.easy_enchantment_table_gui.label_lapis_lazuli": "Lapis Lazuli", + "block.easysurvival.easy_forge": "Easy Forge", + "gamerule.spawnersActive.description": "Sets if custom spawners are active or inactive", + "block.easysurvival.easy_forge_auto": "Easy Forge", + "item.easysurvival.quarz_pickaxe": "Quarz Pickaxe", + "item.easysurvival.netherrack_shovel": "Netherrack Shovel", + "item.easysurvival.quarz_hoe": "Quarz Hoe", + "item.easysurvival.netherrack_hoe": "Netherrack Hoe", + "gui.easysurvival.teleporter_gui.button_teleport1": "Teleport", + "gui.easysurvival.easy_converter_gui.label_easyconverter": "EasyConverter", + "gui.easysurvival.easy_anvil_gui.label_ingot": "Ingot", + "item.easysurvival.basalt_shovel": "Basalt Shovel", + "gui.easysurvival.easy_anvil_gui.label_easyanvil": "EasyAnvil", + "gui.easysurvival.easy_intake_gui.label_easyintake": "EasyIntake", + "item.easysurvival.basalt_hoe": "Basalt Hoe", + "item.easysurvival.nether_stick": "Nether Stick", + "block.easysurvival.easy_enchantment_table": "Easy Enchantment Table", + "gui.easysurvival.easy_forge_gui.label_easyforge": "EasyForge", + "item.easysurvival.quarz_shovel": "Quarz Shovel" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/crop.json b/src/main/resources/assets/easysurvival/models/block/crop.json new file mode 100644 index 0000000..81e97d6 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/crop.json @@ -0,0 +1,13 @@ +{ + "parent": "easysurvival:custom/seedcrop", + "textures": { + "all": "easysurvival:block/texture", + "particle": "easysurvival:block/texture", + "texture": "easysurvival:block/texture", + "Glas": "easysurvival:block/glas", + "schwarz": "easysurvival:block/schwarz", + "texture1": "easysurvival:block/texture1", + "texture2": "easysurvival:block/texture2" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/crop_noside.json b/src/main/resources/assets/easysurvival/models/block/crop_noside.json new file mode 100644 index 0000000..a1b69df --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/crop_noside.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_glass_pane_noside", + "textures": { + "pane": "easysurvival:blocks/simple-wood-texture_1048-4655" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/crop_noside_alt.json b/src/main/resources/assets/easysurvival/models/block/crop_noside_alt.json new file mode 100644 index 0000000..a8689be --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/crop_noside_alt.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_glass_pane_noside_alt", + "textures": { + "pane": "easysurvival:blocks/simple-wood-texture_1048-4655" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/crop_side.json b/src/main/resources/assets/easysurvival/models/block/crop_side.json new file mode 100644 index 0000000..4ec954f --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/crop_side.json @@ -0,0 +1,7 @@ +{ + "parent": "block/template_glass_pane_side", + "textures": { + "edge": "easysurvival:blocks/simple-wood-texture_1048-4655", + "pane": "easysurvival:blocks/simple-wood-texture_1048-4655" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/crop_side_alt.json b/src/main/resources/assets/easysurvival/models/block/crop_side_alt.json new file mode 100644 index 0000000..5c0ab62 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/crop_side_alt.json @@ -0,0 +1,7 @@ +{ + "parent": "block/template_glass_pane_side_alt", + "textures": { + "edge": "easysurvival:blocks/simple-wood-texture_1048-4655", + "pane": "easysurvival:blocks/simple-wood-texture_1048-4655" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/easy_anvil.json b/src/main/resources/assets/easysurvival/models/block/easy_anvil.json new file mode 100644 index 0000000..de960be --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/easy_anvil.json @@ -0,0 +1,9 @@ +{ + "parent": "easysurvival:custom/anvil", + "textures": { + "all": "easysurvival:block/anviltexture", + "particle": "easysurvival:block/anviltexture", + "texture": "easysurvival:block/anviltexture" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/easy_converter.json b/src/main/resources/assets/easysurvival/models/block/easy_converter.json new file mode 100644 index 0000000..5e25ba3 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/easy_converter.json @@ -0,0 +1,11 @@ +{ + "parent": "easysurvival:custom/crafter", + "textures": { + "all": "easysurvival:block/bowl", + "particle": "easysurvival:block/bowl", + "Energy": "easysurvival:block/energy", + "Box": "easysurvival:block/box", + "Bowl": "easysurvival:block/bowl" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/easy_enchantment_table.json b/src/main/resources/assets/easysurvival/models/block/easy_enchantment_table.json new file mode 100644 index 0000000..f0561ea --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/easy_enchantment_table.json @@ -0,0 +1,12 @@ +{ + "parent": "easysurvival:custom/enchantmenttable", + "textures": { + "all": "easysurvival:block/enchantmenttexture", + "particle": "easysurvival:block/enchantmenttexture", + "Cover": "easysurvival:block/cover", + "texture": "easysurvival:block/enchantmenttexture", + "TopTexture": "easysurvival:block/toptexture", + "Paper": "easysurvival:block/paper" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/easy_forge.json b/src/main/resources/assets/easysurvival/models/block/easy_forge.json new file mode 100644 index 0000000..cac8168 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/easy_forge.json @@ -0,0 +1,11 @@ +{ + "parent": "easysurvival:custom/forge", + "textures": { + "all": "easysurvival:block/forgefront", + "particle": "easysurvival:block/forgefront", + "forgeTop": "easysurvival:block/forgetop", + "ForgeFront": "easysurvival:block/forgefront", + "ForgeSide": "easysurvival:block/forgeside" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/easy_forge_auto.json b/src/main/resources/assets/easysurvival/models/block/easy_forge_auto.json new file mode 100644 index 0000000..cac8168 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/easy_forge_auto.json @@ -0,0 +1,11 @@ +{ + "parent": "easysurvival:custom/forge", + "textures": { + "all": "easysurvival:block/forgefront", + "particle": "easysurvival:block/forgefront", + "forgeTop": "easysurvival:block/forgetop", + "ForgeFront": "easysurvival:block/forgefront", + "ForgeSide": "easysurvival:block/forgeside" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/easy_fridge.json b/src/main/resources/assets/easysurvival/models/block/easy_fridge.json new file mode 100644 index 0000000..3b6a23c --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/easy_fridge.json @@ -0,0 +1,10 @@ +{ + "parent": "easysurvival:custom/fridge_oriented", + "textures": { + "all": "easysurvival:block/fridgefront", + "particle": "easysurvival:block/fridgefront", + "texture": "easysurvival:block/fridgefront", + "Sides": "easysurvival:block/sides" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/easy_intake.json b/src/main/resources/assets/easysurvival/models/block/easy_intake.json new file mode 100644 index 0000000..7895565 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/easy_intake.json @@ -0,0 +1,11 @@ +{ + "parent": "easysurvival:custom/barrelintake", + "textures": { + "all": "easysurvival:block/barrel", + "particle": "easysurvival:block/barrel", + "barrel": "easysurvival:block/barrel", + "barreltop": "easysurvival:block/barreltop", + "wood": "easysurvival:block/wood" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/easy_saw.json b/src/main/resources/assets/easysurvival/models/block/easy_saw.json new file mode 100644 index 0000000..d46f05b --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/easy_saw.json @@ -0,0 +1,11 @@ +{ + "parent": "easysurvival:custom/sawblock", + "textures": { + "all": "easysurvival:block/sawblock", + "particle": "easysurvival:block/sawblock", + "sawblade": "easysurvival:block/sawblade", + "sawblock": "easysurvival:block/sawblock", + "sawblockside": "easysurvival:block/sawblockside" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/easy_smelter.json b/src/main/resources/assets/easysurvival/models/block/easy_smelter.json new file mode 100644 index 0000000..2462cc3 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/easy_smelter.json @@ -0,0 +1,11 @@ +{ + "parent": "easysurvival:custom/smeltblock", + "textures": { + "all": "easysurvival:block/metal", + "particle": "easysurvival:block/metal", + "pottexture": "easysurvival:block/pottexture", + "metal": "easysurvival:block/metal", + "smeltblock": "easysurvival:block/smeltblock" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/spawner_blaze.json b/src/main/resources/assets/easysurvival/models/block/spawner_blaze.json new file mode 100644 index 0000000..e74736b --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/spawner_blaze.json @@ -0,0 +1,9 @@ +{ + "parent": "easysurvival:custom/spawner", + "textures": { + "all": "easysurvival:block/monster_spawner", + "particle": "easysurvival:block/monster_spawner", + "texture": "easysurvival:block/spawnertexture" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/spawner_creeper.json b/src/main/resources/assets/easysurvival/models/block/spawner_creeper.json new file mode 100644 index 0000000..e74736b --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/spawner_creeper.json @@ -0,0 +1,9 @@ +{ + "parent": "easysurvival:custom/spawner", + "textures": { + "all": "easysurvival:block/monster_spawner", + "particle": "easysurvival:block/monster_spawner", + "texture": "easysurvival:block/spawnertexture" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/spawner_evoker.json b/src/main/resources/assets/easysurvival/models/block/spawner_evoker.json new file mode 100644 index 0000000..e74736b --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/spawner_evoker.json @@ -0,0 +1,9 @@ +{ + "parent": "easysurvival:custom/spawner", + "textures": { + "all": "easysurvival:block/monster_spawner", + "particle": "easysurvival:block/monster_spawner", + "texture": "easysurvival:block/spawnertexture" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/spawner_ghast.json b/src/main/resources/assets/easysurvival/models/block/spawner_ghast.json new file mode 100644 index 0000000..e74736b --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/spawner_ghast.json @@ -0,0 +1,9 @@ +{ + "parent": "easysurvival:custom/spawner", + "textures": { + "all": "easysurvival:block/monster_spawner", + "particle": "easysurvival:block/monster_spawner", + "texture": "easysurvival:block/spawnertexture" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/spawner_pillager.json b/src/main/resources/assets/easysurvival/models/block/spawner_pillager.json new file mode 100644 index 0000000..e74736b --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/spawner_pillager.json @@ -0,0 +1,9 @@ +{ + "parent": "easysurvival:custom/spawner", + "textures": { + "all": "easysurvival:block/monster_spawner", + "particle": "easysurvival:block/monster_spawner", + "texture": "easysurvival:block/spawnertexture" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/spawner_slime.json b/src/main/resources/assets/easysurvival/models/block/spawner_slime.json new file mode 100644 index 0000000..e74736b --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/spawner_slime.json @@ -0,0 +1,9 @@ +{ + "parent": "easysurvival:custom/spawner", + "textures": { + "all": "easysurvival:block/monster_spawner", + "particle": "easysurvival:block/monster_spawner", + "texture": "easysurvival:block/spawnertexture" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/spawner_wither_skelett.json b/src/main/resources/assets/easysurvival/models/block/spawner_wither_skelett.json new file mode 100644 index 0000000..e74736b --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/spawner_wither_skelett.json @@ -0,0 +1,9 @@ +{ + "parent": "easysurvival:custom/spawner", + "textures": { + "all": "easysurvival:block/monster_spawner", + "particle": "easysurvival:block/monster_spawner", + "texture": "easysurvival:block/spawnertexture" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/teleporter_plate.json b/src/main/resources/assets/easysurvival/models/block/teleporter_plate.json new file mode 100644 index 0000000..2de0a99 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/teleporter_plate.json @@ -0,0 +1,10 @@ +{ + "parent": "easysurvival:custom/teleporter", + "textures": { + "all": "easysurvival:block/plate", + "particle": "easysurvival:block/plate", + "Border": "easysurvival:block/border", + "Plate": "easysurvival:block/plate" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/block/tree_crop.json b/src/main/resources/assets/easysurvival/models/block/tree_crop.json new file mode 100644 index 0000000..c0e7134 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/block/tree_crop.json @@ -0,0 +1,13 @@ +{ + "parent": "easysurvival:custom/cubik_model", + "textures": { + "all": "easysurvival:block/croptexture", + "particle": "easysurvival:block/croptexture", + "texture": "easysurvival:block/croptexture", + "Glas": "easysurvival:block/glastexture", + "schwarz": "easysurvival:block/schwarz", + "texture1": "easysurvival:block/upcrop", + "texture2": "easysurvival:block/cropdown" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/anvil.json b/src/main/resources/assets/easysurvival/models/custom/anvil.json new file mode 100644 index 0000000..fd76d36 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/anvil.json @@ -0,0 +1,281 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 2, + 0, + 2 + ], + "to": [ + 14, + 3, + 14 + ], + "faces": { + "down": { + "uv": [ + 2, + 2, + 14, + 14 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 2, + 2, + 14, + 14 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 2, + 13, + 14, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 2, + 13, + 14, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 2, + 13, + 14, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 2, + 13, + 14, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box2", + "from": [ + 3, + 3, + 3 + ], + "to": [ + 13, + 3.5, + 13 + ], + "faces": { + "down": { + "uv": [ + 3, + 3, + 13, + 13 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 3, + 3, + 13, + 13 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 3, + 12.5, + 13, + 13 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 3, + 12.5, + 13, + 13 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 3, + 12.5, + 13, + 13 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 3, + 12.5, + 13, + 13 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box3", + "from": [ + 5, + 3.5, + 6 + ], + "to": [ + 11, + 9, + 10 + ], + "faces": { + "down": { + "uv": [ + 5, + 6, + 11, + 10 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 5, + 6, + 11, + 10 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 5, + 7, + 11, + 12.5 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 5, + 7, + 11, + 12.5 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 6, + 7, + 10, + 12.5 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 6, + 7, + 10, + 12.5 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box4", + "from": [ + 0, + 9, + 4 + ], + "to": [ + 16, + 14, + 12 + ], + "faces": { + "down": { + "uv": [ + 0, + 4, + 16, + 12 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 0, + 4, + 16, + 12 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 0, + 2, + 16, + 7 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 2, + 16, + 7 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 4, + 2, + 12, + 7 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 4, + 2, + 12, + 7 + ], + "texture": "#texture" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/barrelintake.json b/src/main/resources/assets/easysurvival/models/custom/barrelintake.json new file mode 100644 index 0000000..482bb49 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/barrelintake.json @@ -0,0 +1,626 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 0, + 1, + 0 + ], + "to": [ + 16, + 15, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#barreltop" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#barreltop" + }, + "north": { + "uv": [ + 0, + 1, + 16, + 15 + ], + "texture": "#barrel" + }, + "south": { + "uv": [ + 0, + 1, + 16, + 15 + ], + "texture": "#barrel" + }, + "west": { + "uv": [ + 0, + 1, + 16, + 15 + ], + "texture": "#barrel" + }, + "east": { + "uv": [ + 0, + 1, + 16, + 15 + ], + "texture": "#barrel" + } + } + }, + { + "__comment": "Box2", + "from": [ + 0, + 15, + 0 + ], + "to": [ + 16, + 16, + 1 + ], + "faces": { + "down": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 1 + ], + "texture": "#wood" + }, + "north": { + "uv": [ + 0, + 0, + 16, + 1 + ], + "texture": "#wood" + }, + "south": { + "uv": [ + 0, + 0, + 16, + 1 + ], + "texture": "#wood" + }, + "west": { + "uv": [ + 0, + 0, + 1, + 1 + ], + "texture": "#wood" + }, + "east": { + "uv": [ + 15, + 0, + 16, + 1 + ], + "texture": "#wood" + } + } + }, + { + "__comment": "Box2", + "from": [ + 0, + 15, + 15 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 1 + ], + "texture": "#wood" + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "west": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#wood" + }, + "east": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#wood" + } + } + }, + { + "__comment": "Box2", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 1, + 1 + ], + "faces": { + "down": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 1 + ], + "texture": "#wood" + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "west": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#wood" + }, + "east": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#wood" + } + } + }, + { + "__comment": "Box2", + "from": [ + 0, + 0, + 15 + ], + "to": [ + 16, + 1, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 1 + ], + "texture": "#wood" + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "west": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#wood" + }, + "east": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#wood" + } + } + }, + { + "__comment": "Box13", + "from": [ + 0, + 0, + 1 + ], + "to": [ + 1, + 1, + 15 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#wood" + }, + "up": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#wood" + }, + "north": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "south": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#wood" + }, + "west": { + "uv": [ + 1, + 15, + 15, + 16 + ], + "texture": "#wood" + }, + "east": { + "uv": [ + 1, + 15, + 15, + 16 + ], + "texture": "#wood" + } + } + }, + { + "__comment": "Box14", + "from": [ + 15, + 0, + 1 + ], + "to": [ + 16, + 1, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#wood" + }, + "up": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#wood" + }, + "north": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#wood" + }, + "south": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#wood" + }, + "west": { + "uv": [ + 1, + 15, + 15, + 16 + ], + "texture": "#wood" + }, + "east": { + "uv": [ + 1, + 15, + 15, + 16 + ], + "texture": "#wood" + } + } + }, + { + "__comment": "Box15", + "from": [ + 0, + 15, + 1 + ], + "to": [ + 1, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#wood" + }, + "up": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#wood" + }, + "north": { + "uv": [ + 15, + 0, + 16, + 1 + ], + "texture": "#wood" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 1 + ], + "texture": "#wood" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#wood" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#wood" + } + } + }, + { + "__comment": "Box16", + "from": [ + 15, + 15, + 1 + ], + "to": [ + 16, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#wood" + }, + "up": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#wood" + }, + "north": { + "uv": [ + 0, + 0, + 1, + 1 + ], + "texture": "#wood" + }, + "south": { + "uv": [ + 15, + 0, + 16, + 1 + ], + "texture": "#wood" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#wood" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#wood" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/crafter.json b/src/main/resources/assets/easysurvival/models/custom/crafter.json new file mode 100644 index 0000000..70eeea9 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/crafter.json @@ -0,0 +1,3544 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box2", + "from": [ + 0, + 1, + 0 + ], + "to": [ + 1, + 15, + 1 + ], + "faces": { + "north": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#Box", + "cullface": "north" + }, + "south": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box", + "cullface": "west" + }, + "east": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#Box" + } + } + }, + { + "__comment": "Box2", + "from": [ + 0, + 1, + 15 + ], + "to": [ + 1, + 15, + 16 + ], + "faces": { + "north": { + "uv": [ + 15, + 0, + 16, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 15 + ], + "texture": "#Box", + "cullface": "south" + }, + "west": { + "uv": [ + 0, + 0, + 1, + 15 + ], + "texture": "#Box", + "cullface": "west" + }, + "east": { + "uv": [ + 15, + 0, + 16, + 15 + ], + "texture": "#Box" + } + } + }, + { + "__comment": "Box2", + "from": [ + 15, + 1, + 0 + ], + "to": [ + 16, + 15, + 1 + ], + "faces": { + "north": { + "uv": [ + 15, + 0, + 16, + 15 + ], + "texture": "#Box", + "cullface": "north" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 0, + 0, + 1, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 15, + 0, + 16, + 15 + ], + "texture": "#Box", + "cullface": "east" + } + } + }, + { + "__comment": "Box2", + "from": [ + 15, + 1, + 15 + ], + "to": [ + 16, + 15, + 16 + ], + "faces": { + "north": { + "uv": [ + 15, + 0, + 16, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 15 + ], + "texture": "#Box", + "cullface": "south" + }, + "west": { + "uv": [ + 0, + 0, + 1, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 15, + 0, + 16, + 15 + ], + "texture": "#Box", + "cullface": "east" + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 15, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#Box" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#Box", + "cullface": "up" + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Box", + "cullface": "north" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Box", + "cullface": "south" + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Box", + "cullface": "west" + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Box", + "cullface": "east" + } + } + }, + { + "__comment": "Box7", + "from": [ + 7, + 4.5, + 7 + ], + "to": [ + 9, + 5.5, + 9 + ], + "faces": { + "down": { + "uv": [ + 7, + 7, + 9, + 9 + ], + "texture": "#Bowl" + }, + "north": { + "uv": [ + 7, + 10.5, + 9, + 11.5 + ], + "texture": "#Bowl" + }, + "south": { + "uv": [ + 7, + 10.5, + 9, + 11.5 + ], + "texture": "#Bowl" + }, + "west": { + "uv": [ + 7, + 10.5, + 9, + 11.5 + ], + "texture": "#Bowl" + }, + "east": { + "uv": [ + 7, + 10.5, + 9, + 11.5 + ], + "texture": "#Bowl" + } + } + }, + { + "__comment": "Box7", + "from": [ + 6.5, + 5.5, + 6.5 + ], + "to": [ + 9.5, + 6.5, + 9.5 + ], + "faces": { + "down": { + "uv": [ + 7, + 7.5, + 9, + 9.5 + ], + "texture": "#Bowl" + }, + "north": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "south": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "west": { + "uv": [ + 6.5, + 14, + 8.5, + 15 + ], + "texture": "#Bowl" + }, + "east": { + "uv": [ + 7.5, + 14, + 9.5, + 15 + ], + "texture": "#Bowl" + } + } + }, + { + "__comment": "Box7", + "from": [ + 6, + 6.5, + 6 + ], + "to": [ + 10, + 7.5, + 10 + ], + "faces": { + "down": { + "uv": [ + 7, + 7.5, + 9, + 9.5 + ], + "texture": "#Bowl" + }, + "north": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "south": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "west": { + "uv": [ + 6.5, + 14, + 8.5, + 15 + ], + "texture": "#Bowl" + }, + "east": { + "uv": [ + 7.5, + 14, + 9.5, + 15 + ], + "texture": "#Bowl" + } + } + }, + { + "__comment": "Box7", + "from": [ + 5.5, + 7.5, + 5.5 + ], + "to": [ + 10.5, + 8.5, + 10.5 + ], + "faces": { + "down": { + "uv": [ + 7, + 7.5, + 9, + 9.5 + ], + "texture": "#Bowl" + }, + "up": { + "uv": [ + 7, + 6.5, + 9, + 8.5 + ], + "texture": "#Bowl" + }, + "north": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "south": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "west": { + "uv": [ + 6.5, + 14, + 8.5, + 15 + ], + "texture": "#Bowl" + }, + "east": { + "uv": [ + 7.5, + 14, + 9.5, + 15 + ], + "texture": "#Bowl" + } + } + }, + { + "__comment": "Box7", + "from": [ + 6, + 8.5, + 6 + ], + "to": [ + 10, + 9.5, + 10 + ], + "faces": { + "up": { + "uv": [ + 7, + 6.5, + 9, + 8.5 + ], + "texture": "#Bowl" + }, + "north": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "south": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "west": { + "uv": [ + 6.5, + 14, + 8.5, + 15 + ], + "texture": "#Bowl" + }, + "east": { + "uv": [ + 7.5, + 14, + 9.5, + 15 + ], + "texture": "#Bowl" + } + } + }, + { + "__comment": "Box7", + "from": [ + 6.5, + 9.5, + 6.5 + ], + "to": [ + 9.5, + 10.5, + 9.5 + ], + "faces": { + "up": { + "uv": [ + 7, + 6.5, + 9, + 8.5 + ], + "texture": "#Bowl" + }, + "north": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "south": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "west": { + "uv": [ + 6.5, + 14, + 8.5, + 15 + ], + "texture": "#Bowl" + }, + "east": { + "uv": [ + 7.5, + 14, + 9.5, + 15 + ], + "texture": "#Bowl" + } + } + }, + { + "__comment": "Box7", + "from": [ + 7, + 10.5, + 7 + ], + "to": [ + 9, + 11.5, + 9 + ], + "faces": { + "up": { + "uv": [ + 7, + 6.5, + 9, + 8.5 + ], + "texture": "#Bowl" + }, + "north": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "south": { + "uv": [ + 7, + 14, + 9, + 15 + ], + "texture": "#Bowl" + }, + "west": { + "uv": [ + 6.5, + 14, + 8.5, + 15 + ], + "texture": "#Bowl" + }, + "east": { + "uv": [ + 7.5, + 14, + 9.5, + 15 + ], + "texture": "#Bowl" + } + } + }, + { + "__comment": "Box14", + "from": [ + 8.5, + 3.5, + 9 + ], + "to": [ + 9.5, + 4.5, + 10 + ], + "faces": { + "down": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "north": { + "uv": [ + 9.5, + 4.5, + 8.5, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 7.5, + 4.5, + 6.5, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 9.5, + 2.5, + 10 + ], + "to": [ + 10.5, + 3.5, + 11 + ], + "faces": { + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "north": { + "uv": [ + 7.5, + 4.5, + 6.5, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 9.5, + 4.5, + 8.5, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 10.5, + 1.5, + 11 + ], + "to": [ + 11.5, + 2.5, + 12 + ], + "faces": { + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "north": { + "uv": [ + 7.5, + 4.5, + 6.5, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 9.5, + 4.5, + 8.5, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 11.5, + 0.5, + 11.5 + ], + "to": [ + 12.5, + 1.5, + 12.5 + ], + "faces": { + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "north": { + "uv": [ + 7.5, + 4.5, + 6.5, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 9.5, + 4.5, + 8.5, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 6, + 3.5, + 9 + ], + "to": [ + 7, + 4.5, + 10 + ], + "faces": { + "down": { + "uv": [ + 9, + 9, + 10, + 10 + ], + "texture": "#Energy", + "rotation": 180 + }, + "up": { + "uv": [ + 9, + 6, + 10, + 7 + ], + "texture": "#Energy", + "rotation": 180 + }, + "north": { + "uv": [ + 7, + 4.5, + 6, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 10, + 4.5, + 9, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 5, + 2.5, + 10 + ], + "to": [ + 6, + 3.5, + 11 + ], + "faces": { + "down": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "north": { + "uv": [ + 7, + 4.5, + 6, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 10, + 4.5, + 9, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 4, + 1.5, + 11 + ], + "to": [ + 5, + 2.5, + 12 + ], + "faces": { + "down": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "north": { + "uv": [ + 7, + 4.5, + 6, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 10, + 4.5, + 9, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 3, + 0.5, + 11.5 + ], + "to": [ + 4, + 1.5, + 12.5 + ], + "faces": { + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "north": { + "uv": [ + 7, + 4.5, + 6, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 10, + 4.5, + 9, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 6.5, + 3.5, + 6 + ], + "to": [ + 7.5, + 4.5, + 7 + ], + "faces": { + "down": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "north": { + "uv": [ + 7.5, + 4.5, + 6.5, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 9.5, + 4.5, + 8.5, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 5.5, + 2.5, + 5 + ], + "to": [ + 6.5, + 3.5, + 6 + ], + "faces": { + "down": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "north": { + "uv": [ + 9.5, + 4.5, + 8.5, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 7.5, + 4.5, + 6.5, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 4.5, + 1.5, + 4 + ], + "to": [ + 5.5, + 2.5, + 5 + ], + "faces": { + "down": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "north": { + "uv": [ + 9.5, + 4.5, + 8.5, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 7.5, + 4.5, + 6.5, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 3.5, + 0.5, + 3.5 + ], + "to": [ + 4.5, + 1.5, + 4.5 + ], + "faces": { + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "north": { + "uv": [ + 9.5, + 4.5, + 8.5, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 7.5, + 4.5, + 6.5, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 9, + 3.5, + 6 + ], + "to": [ + 10, + 4.5, + 7 + ], + "faces": { + "down": { + "uv": [ + 9, + 9, + 10, + 10 + ], + "texture": "#Energy" + }, + "up": { + "uv": [ + 9, + 6, + 10, + 7 + ], + "texture": "#Energy" + }, + "north": { + "uv": [ + 10, + 4.5, + 9, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 7, + 4.5, + 6, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 10, + 2.5, + 5 + ], + "to": [ + 11, + 3.5, + 6 + ], + "faces": { + "down": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy" + }, + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy" + }, + "north": { + "uv": [ + 10, + 4.5, + 9, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 7, + 4.5, + 6, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 11, + 1.5, + 4 + ], + "to": [ + 12, + 2.5, + 5 + ], + "faces": { + "down": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy" + }, + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy" + }, + "north": { + "uv": [ + 10, + 4.5, + 9, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 7, + 4.5, + 6, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 12, + 0.5, + 3.5 + ], + "to": [ + 13, + 1.5, + 4.5 + ], + "faces": { + "up": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy" + }, + "north": { + "uv": [ + 10, + 4.5, + 9, + 3.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 7, + 4.5, + 6, + 3.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "east": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy", + "rotation": 180 + } + } + }, + { + "__comment": "Box14", + "from": [ + 8.5, + 11.5, + 6 + ], + "to": [ + 9.5, + 12.5, + 7 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "north": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 9.5, + 12.5, + 5 + ], + "to": [ + 10.5, + 13.5, + 6 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "north": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 10.5, + 13.5, + 4 + ], + "to": [ + 11.5, + 14.5, + 5 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "north": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 11.5, + 14.5, + 3.5 + ], + "to": [ + 12.5, + 15.5, + 4.5 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "north": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 6, + 11.5, + 6 + ], + "to": [ + 7, + 12.5, + 7 + ], + "faces": { + "down": { + "uv": [ + 9, + 6, + 10, + 7 + ], + "texture": "#Energy", + "rotation": 180 + }, + "up": { + "uv": [ + 9, + 9, + 10, + 10 + ], + "texture": "#Energy", + "rotation": 180 + }, + "north": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 5, + 12.5, + 5 + ], + "to": [ + 6, + 13.5, + 6 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "north": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 4, + 13.5, + 4 + ], + "to": [ + 5, + 14.5, + 5 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "north": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 3, + 14.5, + 3.5 + ], + "to": [ + 4, + 15.5, + 4.5 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 180 + }, + "north": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 6.5, + 11.5, + 9 + ], + "to": [ + 7.5, + 12.5, + 10 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "north": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 5.5, + 12.5, + 10 + ], + "to": [ + 6.5, + 13.5, + 11 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "north": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 4.5, + 13.5, + 11 + ], + "to": [ + 5.5, + 14.5, + 12 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy", + "rotation": 270 + }, + "north": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 3.5, + 14.5, + 11.5 + ], + "to": [ + 4.5, + 15.5, + 12.5 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy", + "rotation": 90 + }, + "north": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 9, + 11.5, + 9 + ], + "to": [ + 10, + 12.5, + 10 + ], + "faces": { + "down": { + "uv": [ + 9, + 6, + 10, + 7 + ], + "texture": "#Energy" + }, + "up": { + "uv": [ + 9, + 9, + 10, + 10 + ], + "texture": "#Energy" + }, + "north": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 10, + 12.5, + 10 + ], + "to": [ + 11, + 13.5, + 11 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy" + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy" + }, + "north": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 11, + 13.5, + 11 + ], + "to": [ + 12, + 14.5, + 12 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy" + }, + "up": { + "uv": [ + 9, + 8.5, + 10, + 9.5 + ], + "texture": "#Energy" + }, + "north": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box14", + "from": [ + 12, + 14.5, + 11.5 + ], + "to": [ + 13, + 15.5, + 12.5 + ], + "faces": { + "down": { + "uv": [ + 9, + 6.5, + 10, + 7.5 + ], + "texture": "#Energy" + }, + "north": { + "uv": [ + 6, + 3.5, + 7, + 4.5 + ], + "texture": "#Energy" + }, + "south": { + "uv": [ + 9, + 3.5, + 10, + 4.5 + ], + "texture": "#Energy" + }, + "west": { + "uv": [ + 8.5, + 3.5, + 9.5, + 4.5 + ], + "texture": "#Energy" + }, + "east": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.5 + ], + "texture": "#Energy" + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 1, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#Box" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#Box", + "cullface": "up" + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Box", + "cullface": "north" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Box", + "cullface": "south" + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Box", + "cullface": "west" + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Box", + "cullface": "east" + } + } + }, + { + "__comment": "Box49", + "from": [ + 0, + 1, + 1 + ], + "to": [ + 1, + 2, + 15 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box" + }, + "up": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box" + }, + "north": { + "uv": [ + 15, + 14, + 16, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 0, + 14, + 1, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + } + } + }, + { + "__comment": "Box49", + "from": [ + 15, + 1, + 1 + ], + "to": [ + 16, + 2, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#Box" + }, + "up": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#Box" + }, + "north": { + "uv": [ + 0, + 14, + 1, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 15, + 14, + 16, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + } + } + }, + { + "__comment": "Box49", + "from": [ + 0, + 14, + 1 + ], + "to": [ + 1, + 15, + 15 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box" + }, + "up": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box" + }, + "north": { + "uv": [ + 15, + 14, + 16, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 0, + 14, + 1, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + } + } + }, + { + "__comment": "Box49", + "from": [ + 15, + 14, + 1 + ], + "to": [ + 16, + 15, + 15 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box" + }, + "up": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box" + }, + "north": { + "uv": [ + 15, + 14, + 16, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 0, + 14, + 1, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + } + } + }, + { + "__comment": "Box49", + "from": [ + 1, + 1, + 0 + ], + "to": [ + 15, + 2, + 1 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box", + "rotation": 270 + }, + "up": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 0, + 14, + 1, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 15, + 14, + 16, + 15 + ], + "texture": "#Box" + } + } + }, + { + "__comment": "Box49", + "from": [ + 1, + 1, + 15 + ], + "to": [ + 15, + 2, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box", + "rotation": 270 + }, + "up": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 0, + 14, + 1, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 15, + 14, + 16, + 15 + ], + "texture": "#Box" + } + } + }, + { + "__comment": "Box49", + "from": [ + 1, + 14, + 15 + ], + "to": [ + 15, + 15, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box", + "rotation": 270 + }, + "up": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 0, + 14, + 1, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 15, + 14, + 16, + 15 + ], + "texture": "#Box" + } + } + }, + { + "__comment": "Box49", + "from": [ + 0, + 14, + 0 + ], + "to": [ + 14, + 15, + 1 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box", + "rotation": 270 + }, + "up": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#Box", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "south": { + "uv": [ + 1, + 14, + 15, + 15 + ], + "texture": "#Box" + }, + "west": { + "uv": [ + 0, + 14, + 1, + 15 + ], + "texture": "#Box" + }, + "east": { + "uv": [ + 15, + 14, + 16, + 15 + ], + "texture": "#Box" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/cubik_model.json b/src/main/resources/assets/easysurvival/models/custom/cubik_model.json new file mode 100644 index 0000000..c2ce1c8 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/cubik_model.json @@ -0,0 +1,695 @@ +{ + "__comment": "Designed by Nunocraft with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 8, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#texture2" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#texture1" + }, + "north": { + "uv": [ + 0, + 8, + 16, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 8, + 16, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 0, + 8, + 16, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 8, + 16, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 8, + 1 + ], + "to": [ + 1.5, + 16, + 1.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 14.5, + 8, + 14.5 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 14.5, + 8, + 1 + ], + "to": [ + 15, + 16, + 1.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 8, + 14.5 + ], + "to": [ + 1.5, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 15.5, + 14.5 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 15.5, + 1 + ], + "to": [ + 15, + 16, + 1.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box15", + "from": [ + 1, + 15.5, + 1 + ], + "to": [ + 1.5, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 1, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 0.5 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box15", + "from": [ + 14.5, + 15.5, + 1 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 1, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 0.5 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Glas", + "from": [ + 1.5, + 8, + 1.5 + ], + "to": [ + 14.5, + 15.5, + 14.5 + ], + "faces": { + "down": { + "uv": [ + 1.5, + 1.5, + 14.5, + 14.5 + ], + "texture": "#Glas" + }, + "up": { + "uv": [ + 1.5, + 1.5, + 14.5, + 14.5 + ], + "texture": "#Glas" + }, + "north": { + "uv": [ + 1.5, + 0.5, + 14.5, + 8 + ], + "texture": "#Glas" + }, + "south": { + "uv": [ + 1.5, + 0.5, + 14.5, + 8 + ], + "texture": "#Glas" + }, + "west": { + "uv": [ + 1.5, + 0.5, + 14.5, + 8 + ], + "texture": "#Glas" + }, + "east": { + "uv": [ + 1.5, + 0.5, + 14.5, + 8 + ], + "texture": "#Glas" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/enchantmenttable.json b/src/main/resources/assets/easysurvival/models/custom/enchantmenttable.json new file mode 100644 index 0000000..63855f3 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/enchantmenttable.json @@ -0,0 +1,1117 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 12, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#TopTexture" + }, + "north": { + "uv": [ + 0, + 4, + 16, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 4, + 16, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 0, + 4, + 16, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 4, + 16, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box8", + "from": [ + 7, + 12, + 4 + ], + "to": [ + 8, + 12.5, + 12 + ], + "faces": { + "down": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover", + "rotation": 180 + }, + "up": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover", + "rotation": 180 + }, + "north": { + "uv": [ + 2, + 15.5, + 3, + 16 + ], + "texture": "#Cover" + }, + "south": { + "uv": [ + 13, + 15.5, + 14, + 16 + ], + "texture": "#Cover" + }, + "west": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + }, + "east": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + } + } + }, + { + "__comment": "Box8", + "from": [ + 5, + 12.5, + 4 + ], + "to": [ + 7, + 13, + 12 + ], + "faces": { + "down": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover", + "rotation": 180 + }, + "up": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover", + "rotation": 180 + }, + "north": { + "uv": [ + 2, + 15.5, + 3, + 16 + ], + "texture": "#Cover" + }, + "south": { + "uv": [ + 13, + 15.5, + 14, + 16 + ], + "texture": "#Cover" + }, + "west": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + }, + "east": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + } + } + }, + { + "__comment": "Box8", + "from": [ + 3, + 13, + 4 + ], + "to": [ + 5, + 13.5, + 12 + ], + "faces": { + "down": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover", + "rotation": 180 + }, + "up": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover", + "rotation": 180 + }, + "north": { + "uv": [ + 2, + 15.5, + 3, + 16 + ], + "texture": "#Cover" + }, + "south": { + "uv": [ + 13, + 15.5, + 14, + 16 + ], + "texture": "#Cover" + }, + "west": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + }, + "east": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + } + } + }, + { + "__comment": "Box8", + "from": [ + 1, + 13.5, + 4 + ], + "to": [ + 3, + 14, + 12 + ], + "faces": { + "down": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover", + "rotation": 180 + }, + "up": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover", + "rotation": 180 + }, + "north": { + "uv": [ + 2, + 15.5, + 3, + 16 + ], + "texture": "#Cover" + }, + "south": { + "uv": [ + 13, + 15.5, + 14, + 16 + ], + "texture": "#Cover" + }, + "west": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + }, + "east": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + } + } + }, + { + "__comment": "Box8", + "from": [ + 8, + 12, + 4 + ], + "to": [ + 9, + 12.5, + 12 + ], + "faces": { + "down": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover" + }, + "up": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover" + }, + "north": { + "uv": [ + 13, + 15.5, + 14, + 16 + ], + "texture": "#Cover" + }, + "south": { + "uv": [ + 2, + 15.5, + 3, + 16 + ], + "texture": "#Cover" + }, + "west": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + }, + "east": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + } + } + }, + { + "__comment": "Box8", + "from": [ + 9, + 12.5, + 4 + ], + "to": [ + 11, + 13, + 12 + ], + "faces": { + "down": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover" + }, + "up": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover" + }, + "north": { + "uv": [ + 13, + 15.5, + 14, + 16 + ], + "texture": "#Cover" + }, + "south": { + "uv": [ + 2, + 15.5, + 3, + 16 + ], + "texture": "#Cover" + }, + "west": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + }, + "east": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + } + } + }, + { + "__comment": "Box8", + "from": [ + 11, + 13, + 4 + ], + "to": [ + 13, + 13.5, + 12 + ], + "faces": { + "down": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover" + }, + "up": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover" + }, + "north": { + "uv": [ + 13, + 15.5, + 14, + 16 + ], + "texture": "#Cover" + }, + "south": { + "uv": [ + 2, + 15.5, + 3, + 16 + ], + "texture": "#Cover" + }, + "west": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + }, + "east": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + } + } + }, + { + "__comment": "Box8", + "from": [ + 13, + 13.5, + 4 + ], + "to": [ + 15, + 14, + 12 + ], + "faces": { + "down": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover" + }, + "up": { + "uv": [ + 2, + 4, + 3, + 12 + ], + "texture": "#Cover" + }, + "north": { + "uv": [ + 13, + 15.5, + 14, + 16 + ], + "texture": "#Cover" + }, + "south": { + "uv": [ + 2, + 15.5, + 3, + 16 + ], + "texture": "#Cover" + }, + "west": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + }, + "east": { + "uv": [ + 4, + 15.5, + 12, + 16 + ], + "texture": "#Cover" + } + } + }, + { + "__comment": "Box11", + "from": [ + 7, + 12.5, + 4.5 + ], + "to": [ + 9, + 13, + 11.5 + ], + "faces": { + "down": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "up": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "north": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "south": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "west": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + }, + "east": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + } + } + }, + { + "__comment": "Box11", + "from": [ + 9, + 13, + 4.5 + ], + "to": [ + 11, + 13.5, + 11.5 + ], + "faces": { + "down": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "up": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "north": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "south": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "west": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + }, + "east": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + } + } + }, + { + "__comment": "Box11", + "from": [ + 11, + 13.5, + 4.5 + ], + "to": [ + 13, + 14, + 11.5 + ], + "faces": { + "down": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "up": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "north": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "south": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "west": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + }, + "east": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + } + } + }, + { + "__comment": "Box11", + "from": [ + 13, + 14, + 4.5 + ], + "to": [ + 14.5, + 14.5, + 11.5 + ], + "faces": { + "down": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "up": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "north": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "south": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "west": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + }, + "east": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + } + } + }, + { + "__comment": "Box11", + "from": [ + 5, + 13, + 4.5 + ], + "to": [ + 7, + 13.5, + 11.5 + ], + "faces": { + "down": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "up": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "north": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "south": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "west": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + }, + "east": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + } + } + }, + { + "__comment": "Box11", + "from": [ + 3, + 13.5, + 4.5 + ], + "to": [ + 5, + 14, + 11.5 + ], + "faces": { + "down": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "up": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "north": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "south": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "west": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + }, + "east": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + } + } + }, + { + "__comment": "Box11", + "from": [ + 1.5, + 14, + 4.5 + ], + "to": [ + 3, + 14.5, + 11.5 + ], + "faces": { + "down": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "up": { + "uv": [ + 7, + 4.5, + 9, + 11.5 + ], + "texture": "#Paper" + }, + "north": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "south": { + "uv": [ + 7, + 3, + 9, + 3.5 + ], + "texture": "#Paper" + }, + "west": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + }, + "east": { + "uv": [ + 4.5, + 3, + 11.5, + 3.5 + ], + "texture": "#Paper" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/forge.json b/src/main/resources/assets/easysurvival/models/custom/forge.json new file mode 100644 index 0000000..bb76709 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/forge.json @@ -0,0 +1,74 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box2", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#forgeTop" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#forgeTop" + }, + "north": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#ForgeFront" + }, + "south": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#ForgeSide" + }, + "west": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#ForgeSide" + }, + "east": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#ForgeSide" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/fridge.json b/src/main/resources/assets/easysurvival/models/custom/fridge.json new file mode 100644 index 0000000..75ba6de --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/fridge.json @@ -0,0 +1,626 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 0, + 1, + 0 + ], + "to": [ + 16, + 15, + 15 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 16, + 16 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 15 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 0, + 1, + 16, + 15 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 0, + 1, + 16, + 15 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 0, + 1, + 15, + 15 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 1, + 1, + 16, + 15 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 1, + 15 + ], + "to": [ + 15, + 15, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box4", + "from": [ + 1, + 0, + 13 + ], + "to": [ + 2, + 1, + 14 + ], + "faces": { + "down": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 14, + 15, + 15, + 16 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 15, + 2, + 16 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 13, + 15, + 14, + 16 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 15, + 3, + 16 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box4", + "from": [ + 14, + 0, + 13 + ], + "to": [ + 15, + 1, + 14 + ], + "faces": { + "down": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 14, + 15, + 15, + 16 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 15, + 2, + 16 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 13, + 15, + 14, + 16 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 15, + 3, + 16 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box4", + "from": [ + 1, + 0, + 1 + ], + "to": [ + 2, + 1, + 2 + ], + "faces": { + "down": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 14, + 15, + 15, + 16 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 15, + 2, + 16 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 13, + 15, + 14, + 16 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 15, + 3, + 16 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box4", + "from": [ + 14, + 0, + 1 + ], + "to": [ + 15, + 1, + 2 + ], + "faces": { + "down": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 14, + 15, + 15, + 16 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 15, + 2, + 16 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 13, + 15, + 14, + 16 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 15, + 3, + 16 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box8", + "from": [ + 1, + 15, + 0 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 1, + 15, + 16 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 0, + 15, + 15 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 0, + 0, + 15, + 1 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 1, + 0, + 16, + 1 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box9", + "from": [ + 0, + 15, + 1 + ], + "to": [ + 1, + 16, + 14 + ], + "faces": { + "down": { + "uv": [ + 0, + 2, + 1, + 15 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 0, + 1, + 1, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 15, + 0, + 16, + 1 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 1 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 1, + 0, + 14, + 1 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 0, + 15, + 1 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box9", + "from": [ + 15, + 15, + 1 + ], + "to": [ + 16, + 16, + 14 + ], + "faces": { + "down": { + "uv": [ + 0, + 2, + 1, + 15 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 0, + 1, + 1, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 15, + 0, + 16, + 1 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 1 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 1, + 0, + 14, + 1 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 0, + 15, + 1 + ], + "texture": "#Sides" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/fridge_oriented.json b/src/main/resources/assets/easysurvival/models/custom/fridge_oriented.json new file mode 100644 index 0000000..1339ac3 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/fridge_oriented.json @@ -0,0 +1,626 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 0, + 1, + 0 + ], + "to": [ + 16, + 15, + 15 + ], + "faces": { + "down": { + "uv": [ + 0, + 1, + 16, + 16 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 15 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 0, + 1, + 16, + 15 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 0, + 1, + 16, + 15 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 0, + 1, + 15, + 15 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 1, + 1, + 16, + 15 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 1, + -1 + ], + "to": [ + 15, + 15, + 0 + ], + "faces": { + "down": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 15, + 1, + 16, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 1, + 1, + 15 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box4", + "from": [ + 1, + 0, + 13 + ], + "to": [ + 2, + 1, + 14 + ], + "faces": { + "down": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 14, + 15, + 15, + 16 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 15, + 2, + 16 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 13, + 15, + 14, + 16 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 15, + 3, + 16 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box4", + "from": [ + 14, + 0, + 13 + ], + "to": [ + 15, + 1, + 14 + ], + "faces": { + "down": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 14, + 15, + 15, + 16 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 15, + 2, + 16 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 13, + 15, + 14, + 16 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 15, + 3, + 16 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box4", + "from": [ + 1, + 0, + 1 + ], + "to": [ + 2, + 1, + 2 + ], + "faces": { + "down": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 14, + 15, + 15, + 16 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 15, + 2, + 16 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 13, + 15, + 14, + 16 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 15, + 3, + 16 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box4", + "from": [ + 14, + 0, + 1 + ], + "to": [ + 15, + 1, + 2 + ], + "faces": { + "down": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 14, + 15, + 15, + 16 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 15, + 2, + 16 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 13, + 15, + 14, + 16 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 15, + 3, + 16 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box8", + "from": [ + 1, + 15, + 0 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 1, + 15, + 16 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 1, + 0, + 15, + 15 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 1, + 0, + 15, + 1 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 0, + 0, + 15, + 1 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 1, + 0, + 16, + 1 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box9", + "from": [ + 0, + 15, + 1 + ], + "to": [ + 1, + 16, + 14 + ], + "faces": { + "down": { + "uv": [ + 0, + 2, + 1, + 15 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 0, + 1, + 1, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 15, + 0, + 16, + 1 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 1 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 1, + 0, + 14, + 1 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 0, + 15, + 1 + ], + "texture": "#Sides" + } + } + }, + { + "__comment": "Box9", + "from": [ + 15, + 15, + 1 + ], + "to": [ + 16, + 16, + 14 + ], + "faces": { + "down": { + "uv": [ + 0, + 2, + 1, + 15 + ], + "texture": "#Sides" + }, + "up": { + "uv": [ + 0, + 1, + 1, + 14 + ], + "texture": "#Sides" + }, + "north": { + "uv": [ + 15, + 0, + 16, + 1 + ], + "texture": "#Sides" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 1 + ], + "texture": "#Sides" + }, + "west": { + "uv": [ + 1, + 0, + 14, + 1 + ], + "texture": "#Sides" + }, + "east": { + "uv": [ + 2, + 0, + 15, + 1 + ], + "texture": "#Sides" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/sawblock.json b/src/main/resources/assets/easysurvival/models/custom/sawblock.json new file mode 100644 index 0000000..4e38bc0 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/sawblock.json @@ -0,0 +1,428 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 8, + 11, + 2 + ], + "to": [ + 8.5, + 11.5, + 14 + ], + "rotation": { + "origin": [ + 8, + 11, + 2 + ], + "axis": "x", + "angle": 0 + }, + "faces": { + "down": { + "uv": [ + 0, + 4, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "up": { + "uv": [ + 0, + 0, + 0.5, + 12 + ], + "texture": "#sawblade" + }, + "north": { + "uv": [ + 15.5, + 15, + 16, + 16 + ], + "texture": "#sawblade" + }, + "south": { + "uv": [ + 0, + 15, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "west": { + "uv": [ + 0, + 15, + 12, + 16 + ], + "texture": "#sawblade" + }, + "east": { + "uv": [ + 4, + 15, + 16, + 16 + ], + "texture": "#sawblade" + } + } + }, + { + "__comment": "Box1", + "from": [ + 8, + 11.5, + 2.5 + ], + "to": [ + 8.5, + 12, + 13.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 4, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "up": { + "uv": [ + 0, + 0, + 0.5, + 12 + ], + "texture": "#sawblade" + }, + "north": { + "uv": [ + 15.5, + 15, + 16, + 16 + ], + "texture": "#sawblade" + }, + "south": { + "uv": [ + 0, + 15, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "west": { + "uv": [ + 0, + 15, + 12, + 16 + ], + "texture": "#sawblade" + }, + "east": { + "uv": [ + 4, + 15, + 16, + 16 + ], + "texture": "#sawblade" + } + } + }, + { + "__comment": "Box1", + "from": [ + 8, + 12, + 3.5 + ], + "to": [ + 8.5, + 12.5, + 12.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 4, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "up": { + "uv": [ + 0, + 0, + 0.5, + 12 + ], + "texture": "#sawblade" + }, + "north": { + "uv": [ + 15.5, + 15, + 16, + 16 + ], + "texture": "#sawblade" + }, + "south": { + "uv": [ + 0, + 15, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "west": { + "uv": [ + 0, + 15, + 12, + 16 + ], + "texture": "#sawblade" + }, + "east": { + "uv": [ + 4, + 15, + 16, + 16 + ], + "texture": "#sawblade" + } + } + }, + { + "__comment": "Box1", + "from": [ + 8, + 12.5, + 5 + ], + "to": [ + 8.5, + 13, + 11 + ], + "faces": { + "down": { + "uv": [ + 0, + 4, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "up": { + "uv": [ + 0, + 0, + 0.5, + 12 + ], + "texture": "#sawblade" + }, + "north": { + "uv": [ + 15.5, + 15, + 16, + 16 + ], + "texture": "#sawblade" + }, + "south": { + "uv": [ + 0, + 15, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "west": { + "uv": [ + 0, + 15, + 12, + 16 + ], + "texture": "#sawblade" + }, + "east": { + "uv": [ + 4, + 15, + 16, + 16 + ], + "texture": "#sawblade" + } + } + }, + { + "__comment": "Box1", + "from": [ + 8, + 13, + 6.5 + ], + "to": [ + 8.5, + 13.5, + 9.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 4, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "up": { + "uv": [ + 0, + 0, + 0.5, + 12 + ], + "texture": "#sawblade" + }, + "north": { + "uv": [ + 15.5, + 15, + 16, + 16 + ], + "texture": "#sawblade" + }, + "south": { + "uv": [ + 0, + 15, + 0.5, + 16 + ], + "texture": "#sawblade" + }, + "west": { + "uv": [ + 0, + 15, + 12, + 16 + ], + "texture": "#sawblade" + }, + "east": { + "uv": [ + 4, + 15, + 16, + 16 + ], + "texture": "#sawblade" + } + } + }, + { + "__comment": "Box7", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 11, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#sawblock" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#sawblock" + }, + "north": { + "uv": [ + 0, + 5, + 16, + 16 + ], + "texture": "#sawblockside" + }, + "south": { + "uv": [ + 0, + 5, + 16, + 16 + ], + "texture": "#sawblockside" + }, + "west": { + "uv": [ + 0, + 5, + 16, + 16 + ], + "texture": "#sawblockside" + }, + "east": { + "uv": [ + 0, + 5, + 16, + 16 + ], + "texture": "#sawblockside" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/seedcrop.json b/src/main/resources/assets/easysurvival/models/custom/seedcrop.json new file mode 100644 index 0000000..c2ce1c8 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/seedcrop.json @@ -0,0 +1,695 @@ +{ + "__comment": "Designed by Nunocraft with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 8, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#texture2" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#texture1" + }, + "north": { + "uv": [ + 0, + 8, + 16, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 8, + 16, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 0, + 8, + 16, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 8, + 16, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 8, + 1 + ], + "to": [ + 1.5, + 16, + 1.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 14.5, + 8, + 14.5 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 14.5, + 8, + 1 + ], + "to": [ + 15, + 16, + 1.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 8, + 14.5 + ], + "to": [ + 1.5, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 15.5, + 14.5 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 15.5, + 1 + ], + "to": [ + 15, + 16, + 1.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 14.5, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 1.5 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 1.5, + 8 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 14.5, + 0, + 15, + 8 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box15", + "from": [ + 1, + 15.5, + 1 + ], + "to": [ + 1.5, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 1, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 0.5 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Box15", + "from": [ + 14.5, + 15.5, + 1 + ], + "to": [ + 15, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 1, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "up": { + "uv": [ + 1, + 1, + 1.5, + 15 + ], + "texture": "#schwarz" + }, + "north": { + "uv": [ + 14.5, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + }, + "south": { + "uv": [ + 1, + 0, + 1.5, + 0.5 + ], + "texture": "#schwarz" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#schwarz" + } + } + }, + { + "__comment": "Glas", + "from": [ + 1.5, + 8, + 1.5 + ], + "to": [ + 14.5, + 15.5, + 14.5 + ], + "faces": { + "down": { + "uv": [ + 1.5, + 1.5, + 14.5, + 14.5 + ], + "texture": "#Glas" + }, + "up": { + "uv": [ + 1.5, + 1.5, + 14.5, + 14.5 + ], + "texture": "#Glas" + }, + "north": { + "uv": [ + 1.5, + 0.5, + 14.5, + 8 + ], + "texture": "#Glas" + }, + "south": { + "uv": [ + 1.5, + 0.5, + 14.5, + 8 + ], + "texture": "#Glas" + }, + "west": { + "uv": [ + 1.5, + 0.5, + 14.5, + 8 + ], + "texture": "#Glas" + }, + "east": { + "uv": [ + 1.5, + 0.5, + 14.5, + 8 + ], + "texture": "#Glas" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/smeltblock.json b/src/main/resources/assets/easysurvival/models/custom/smeltblock.json new file mode 100644 index 0000000..5f3cf2b --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/smeltblock.json @@ -0,0 +1,3387 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 7, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 0, + 9, + 16, + 16 + ], + "texture": "#smeltblock" + }, + "south": { + "uv": [ + 0, + 9, + 16, + 16 + ], + "texture": "#smeltblock" + }, + "west": { + "uv": [ + 0, + 9, + 16, + 16 + ], + "texture": "#smeltblock" + }, + "east": { + "uv": [ + 0, + 9, + 16, + 16 + ], + "texture": "#smeltblock" + } + } + }, + { + "__comment": "Box13", + "from": [ + 3, + 13, + 7 + ], + "to": [ + 4, + 16, + 9 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 0, + 13, + 3 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 0, + 4, + 3 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 0, + 9, + 3 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 0, + 9, + 3 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 12, + 13, + 7 + ], + "to": [ + 13, + 16, + 9 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 6, + 13, + 3 + ], + "to": [ + 7.5, + 16, + 4 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 6, + 13, + 12 + ], + "to": [ + 10, + 16, + 13 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 5, + 13, + 11 + ], + "to": [ + 7, + 16, + 12 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 9, + 13, + 11 + ], + "to": [ + 11, + 16, + 12 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 4, + 13, + 10 + ], + "to": [ + 6, + 16, + 11 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 3, + 13, + 9 + ], + "to": [ + 5, + 16, + 10 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 3, + 13, + 6 + ], + "to": [ + 5, + 16, + 7 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 4, + 13, + 5 + ], + "to": [ + 6, + 16, + 6 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 5, + 13, + 4 + ], + "to": [ + 7, + 16, + 5 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 9, + 13, + 4 + ], + "to": [ + 11, + 16, + 5 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 10, + 13, + 5 + ], + "to": [ + 12, + 16, + 6 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 11, + 13, + 6 + ], + "to": [ + 13, + 16, + 7 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 11, + 13, + 9 + ], + "to": [ + 13, + 16, + 10 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 10, + 13, + 10 + ], + "to": [ + 12, + 16, + 11 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 6, + 12, + 11 + ], + "to": [ + 10, + 13, + 12 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 5, + 12, + 10 + ], + "to": [ + 7, + 13, + 11 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 4, + 12, + 9 + ], + "to": [ + 6, + 13, + 10 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 4, + 12, + 6 + ], + "to": [ + 6, + 13, + 7 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 4, + 12, + 7 + ], + "to": [ + 5, + 13, + 9 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 5, + 12, + 5 + ], + "to": [ + 7, + 13, + 6 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 6, + 12, + 4 + ], + "to": [ + 10, + 13, + 5 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 9, + 12, + 5 + ], + "to": [ + 11, + 13, + 6 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 10, + 12, + 6 + ], + "to": [ + 12, + 13, + 7 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 10, + 12, + 9 + ], + "to": [ + 12, + 13, + 10 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 11, + 12, + 7 + ], + "to": [ + 12, + 13, + 9 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 9, + 12, + 10 + ], + "to": [ + 11, + 13, + 11 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 7, + 11, + 10 + ], + "to": [ + 9, + 12, + 11 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 7, + 11, + 5 + ], + "to": [ + 9, + 12, + 6 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 6, + 11, + 6 + ], + "to": [ + 10, + 12, + 10 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 5, + 11, + 7 + ], + "to": [ + 6, + 12, + 9 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 10, + 11, + 7 + ], + "to": [ + 11, + 12, + 9 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 8.5, + 13, + 3 + ], + "to": [ + 10, + 16, + 4 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box13", + "from": [ + 7.5, + 13, + 3 + ], + "to": [ + 8.5, + 15, + 4 + ], + "faces": { + "down": { + "uv": [ + 7, + 12, + 9, + 13 + ], + "texture": "#pottexture", + "rotation": 90 + }, + "up": { + "uv": [ + 7, + 3, + 9, + 4 + ], + "texture": "#pottexture", + "rotation": 270 + }, + "north": { + "uv": [ + 12, + 15, + 13, + 16 + ], + "texture": "#pottexture" + }, + "south": { + "uv": [ + 3, + 15, + 4, + 16 + ], + "texture": "#pottexture" + }, + "west": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + }, + "east": { + "uv": [ + 7, + 15, + 9, + 16 + ], + "texture": "#pottexture" + } + } + }, + { + "__comment": "Box37", + "from": [ + 0, + 13.5, + 7.5 + ], + "to": [ + 3, + 14.5, + 8.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 7.5, + 3, + 8.5 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 7.5, + 3, + 8.5 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 13, + 1.5, + 16, + 2.5 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 1.5, + 3, + 2.5 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 7.5, + 1.5, + 8.5, + 2.5 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 7.5, + 1.5, + 8.5, + 2.5 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box37", + "from": [ + 13, + 13.5, + 7.5 + ], + "to": [ + 16, + 14.5, + 8.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 7.5, + 3, + 8.5 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 7.5, + 3, + 8.5 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 13, + 1.5, + 16, + 2.5 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 1.5, + 3, + 2.5 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 7.5, + 1.5, + 8.5, + 2.5 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 7.5, + 1.5, + 8.5, + 2.5 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box37", + "from": [ + 0, + 8, + 7.5 + ], + "to": [ + 1, + 14.5, + 8.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 7.5, + 3, + 8.5 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 7.5, + 3, + 8.5 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 13, + 1.5, + 16, + 2.5 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 1.5, + 3, + 2.5 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 7.5, + 1.5, + 8.5, + 2.5 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 7.5, + 1.5, + 8.5, + 2.5 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box37", + "from": [ + 15, + 8, + 7.5 + ], + "to": [ + 16, + 14.5, + 8.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 7.5, + 3, + 8.5 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 7.5, + 3, + 8.5 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 13, + 1.5, + 16, + 2.5 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 1.5, + 3, + 2.5 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 7.5, + 1.5, + 8.5, + 2.5 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 7.5, + 1.5, + 8.5, + 2.5 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box49", + "from": [ + 0, + 7, + 6 + ], + "to": [ + 16, + 7.5, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 10 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 6, + 16, + 16 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 0, + 8.5, + 16, + 9 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 8.5, + 16, + 9 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 6, + 8.5, + 16, + 9 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 0, + 8.5, + 10, + 9 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box52", + "from": [ + 0, + 7, + 0 + ], + "to": [ + 16, + 7.5, + 4 + ], + "faces": { + "down": { + "uv": [ + 0, + 12, + 16, + 16 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 4 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 0, + 8.5, + 16, + 9 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 8.5, + 16, + 9 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 0, + 8.5, + 4, + 9 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 12, + 8.5, + 16, + 9 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box54", + "from": [ + 0, + 7, + 4 + ], + "to": [ + 6, + 7.5, + 6 + ], + "faces": { + "down": { + "uv": [ + 0, + 10, + 6, + 12 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 4, + 6, + 6 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 10, + 8.5, + 16, + 9 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 8.5, + 6, + 9 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 4, + 8.5, + 6, + 9 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 10, + 8.5, + 12, + 9 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box54", + "from": [ + 10, + 7, + 4 + ], + "to": [ + 16, + 7.5, + 6 + ], + "faces": { + "down": { + "uv": [ + 0, + 9.5, + 5.5, + 12.5 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 3.5, + 5.5, + 6.5 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 10.5, + 15, + 16, + 16 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 15, + 5.5, + 16 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 3.5, + 15, + 6.5, + 16 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 9.5, + 15, + 12.5, + 16 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box49", + "from": [ + 0, + 7.5, + 6.5 + ], + "to": [ + 16, + 8, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 9.5 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 6.5, + 16, + 16 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 0, + 8, + 16, + 8.5 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 8, + 16, + 8.5 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 6.5, + 8, + 16, + 8.5 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 0, + 8, + 9.5, + 8.5 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box52", + "from": [ + 0, + 7.5, + 0 + ], + "to": [ + 16, + 8, + 3.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 12.5, + 16, + 16 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 3.5 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 0, + 8, + 16, + 8.5 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 8, + 16, + 8.5 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 0, + 8, + 3.5, + 8.5 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 12.5, + 8, + 16, + 8.5 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box54", + "from": [ + 0, + 7.5, + 3.5 + ], + "to": [ + 5.5, + 8, + 6.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 9.5, + 5.5, + 12.5 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 3.5, + 5.5, + 6.5 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 10.5, + 8, + 16, + 8.5 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 8, + 5.5, + 8.5 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 3.5, + 8, + 6.5, + 8.5 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 9.5, + 8, + 12.5, + 8.5 + ], + "texture": "#metal" + } + } + }, + { + "__comment": "Box54", + "from": [ + 10.5, + 7.5, + 3.5 + ], + "to": [ + 16, + 8, + 6.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 9.5, + 5.5, + 12.5 + ], + "texture": "#metal" + }, + "up": { + "uv": [ + 0, + 3.5, + 5.5, + 6.5 + ], + "texture": "#metal" + }, + "north": { + "uv": [ + 10.5, + 15, + 16, + 16 + ], + "texture": "#metal" + }, + "south": { + "uv": [ + 0, + 15, + 5.5, + 16 + ], + "texture": "#metal" + }, + "west": { + "uv": [ + 3.5, + 15, + 6.5, + 16 + ], + "texture": "#metal" + }, + "east": { + "uv": [ + 9.5, + 15, + 12.5, + 16 + ], + "texture": "#metal" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/spawner.json b/src/main/resources/assets/easysurvival/models/custom/spawner.json new file mode 100644 index 0000000..5eac45a --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/spawner.json @@ -0,0 +1,5217 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box1", + "from": [ + 0, + 15, + 0 + ], + "to": [ + 16, + 16, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 15.5, + 0.5 + ], + "to": [ + 16, + 16, + 1 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 15, + 0 + ], + "to": [ + 0.5, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0.5, + 15.5, + 0 + ], + "to": [ + 1, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 15, + 15.5 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 90 + }, + "up": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 270 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 15.5, + 15 + ], + "to": [ + 16, + 16, + 15.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 90 + }, + "up": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 270 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 15.5, + 15, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "up": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "north": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 15, + 15.5, + 0 + ], + "to": [ + 15.5, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "up": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "north": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 1, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "up": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0.5 + ], + "to": [ + 16, + 0.5, + 1 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "up": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box1", + "from": [ + 15.5, + 0, + 0 + ], + "to": [ + 16, + 1, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box1", + "from": [ + 15, + 0, + 0 + ], + "to": [ + 15.5, + 0.5, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 0, + 15.5 + ], + "to": [ + 16, + 1, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 0, + 15 + ], + "to": [ + 16, + 0.5, + 15.5 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box1", + "from": [ + 15.5, + 0, + 15 + ], + "to": [ + 16, + 16, + 15.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "up": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 15, + 0, + 15.5 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "up": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 0.5, + 1, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "up": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "north": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box1", + "from": [ + 0.5, + 0, + 0 + ], + "to": [ + 1, + 0.5, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "up": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "north": { + "uv": [ + 0, + 15, + 1, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 0, + 15 + ], + "to": [ + 0.5, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0.5, + 0, + 15.5 + ], + "to": [ + 1, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0.5 + ], + "to": [ + 0.5, + 16, + 1 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 1, + 16, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "east": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + } + } + }, + { + "__comment": "Box1", + "from": [ + 15, + 0, + 0 + ], + "to": [ + 15.5, + 16, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 15 + ], + "texture": "#texture", + "rotation": 180 + }, + "up": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "north": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + } + } + }, + { + "__comment": "Box1", + "from": [ + 15.5, + 0, + 0 + ], + "to": [ + 16, + 16, + 1 + ], + "faces": { + "down": { + "uv": [ + 1, + 16, + 0, + 15 + ], + "texture": "#texture", + "rotation": 180 + }, + "up": { + "uv": [ + 15, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "north": { + "uv": [ + 0, + 0, + 1, + 16 + ], + "texture": "#texture", + "rotation": 180 + }, + "south": { + "uv": [ + 1, + 16, + 0, + 0 + ], + "texture": "#texture", + "rotation": 180 + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#texture", + "rotation": 270 + } + } + }, + { + "__comment": "Box25", + "from": [ + 15.5, + 10, + 1 + ], + "to": [ + 16, + 10.5, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 10.5, + 15, + 10, + 1 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 15.5, + 13, + 1 + ], + "to": [ + 16, + 13.5, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 13.5, + 15, + 13, + 1 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 15.5, + 2.5, + 1 + ], + "to": [ + 16, + 3, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 3, + 15, + 2.5, + 1 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 15.5, + 5.5, + 1 + ], + "to": [ + 16, + 6, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 6, + 15, + 5.5, + 1 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 15.5, + 1, + 2.5 + ], + "to": [ + 16, + 15, + 3 + ], + "faces": { + "down": { + "uv": [ + 13.5, + 16, + 13, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 3, + 15, + 2.5, + 1 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 15.5, + 1, + 5.5 + ], + "to": [ + 16, + 15, + 6 + ], + "faces": { + "down": { + "uv": [ + 10.5, + 16, + 10, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 6, + 15, + 5.5, + 1 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 15.5, + 1, + 10 + ], + "to": [ + 16, + 15, + 10.5 + ], + "faces": { + "down": { + "uv": [ + 6, + 16, + 5.5, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 10.5, + 15, + 10, + 1 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 15.5, + 1, + 13 + ], + "to": [ + 16, + 15, + 13.5 + ], + "faces": { + "down": { + "uv": [ + 3, + 16, + 2.5, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 13.5, + 15, + 13, + 1 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 0, + 10, + 1 + ], + "to": [ + 0.5, + 10.5, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 10.5, + 15, + 10, + 1 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 0, + 13, + 1 + ], + "to": [ + 0.5, + 13.5, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 13.5, + 15, + 13, + 1 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 0, + 2.5, + 1 + ], + "to": [ + 0.5, + 3, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 3, + 15, + 2.5, + 1 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 0, + 5.5, + 1 + ], + "to": [ + 0.5, + 6, + 15 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 6, + 15, + 5.5, + 1 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 0, + 1, + 2.5 + ], + "to": [ + 0.5, + 15, + 3 + ], + "faces": { + "down": { + "uv": [ + 13.5, + 16, + 13, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 3, + 15, + 2.5, + 1 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 0, + 1, + 5.5 + ], + "to": [ + 0.5, + 15, + 6 + ], + "faces": { + "down": { + "uv": [ + 10.5, + 16, + 10, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 6, + 15, + 5.5, + 1 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 0, + 1, + 10 + ], + "to": [ + 0.5, + 15, + 10.5 + ], + "faces": { + "down": { + "uv": [ + 6, + 16, + 5.5, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 10.5, + 15, + 10, + 1 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 0, + 1, + 13 + ], + "to": [ + 0.5, + 15, + 13.5 + ], + "faces": { + "down": { + "uv": [ + 3, + 16, + 2.5, + 15.5 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + }, + "west": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 13.5, + 15, + 13, + 1 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 15.5, + 10 + ], + "to": [ + 15, + 16, + 10.5 + ], + "faces": { + "down": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 15.5, + 13 + ], + "to": [ + 15, + 16, + 13.5 + ], + "faces": { + "down": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 15.5, + 2.5 + ], + "to": [ + 15, + 16, + 3 + ], + "faces": { + "down": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 15.5, + 5.5 + ], + "to": [ + 15, + 16, + 6 + ], + "faces": { + "down": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 2.5, + 15.5, + 1 + ], + "to": [ + 3, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 13, + 0, + 13.5, + 0.5 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 2.5, + 0, + 3, + 0.5 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 5.5, + 15.5, + 1 + ], + "to": [ + 6, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 10, + 0, + 10.5, + 0.5 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 5.5, + 0, + 6, + 0.5 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 10, + 15.5, + 1 + ], + "to": [ + 10.5, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 5.5, + 0, + 6, + 0.5 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 10, + 0, + 10.5, + 0.5 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 13, + 15.5, + 1 + ], + "to": [ + 13.5, + 16, + 15 + ], + "faces": { + "down": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 2.5, + 0, + 3, + 0.5 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 13, + 0, + 13.5, + 0.5 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 1, + 0, + 15, + 0.5 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 0, + 10 + ], + "to": [ + 15, + 0.5, + 10.5 + ], + "faces": { + "down": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 0, + 13 + ], + "to": [ + 15, + 0.5, + 13.5 + ], + "faces": { + "down": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 0, + 2.5 + ], + "to": [ + 15, + 0.5, + 3 + ], + "faces": { + "down": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 0, + 5.5 + ], + "to": [ + 15, + 0.5, + 6 + ], + "faces": { + "down": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "up": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture", + "rotation": 90 + }, + "north": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 2.5, + 0, + 1 + ], + "to": [ + 3, + 0.5, + 15 + ], + "faces": { + "down": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 5.5, + 0, + 1 + ], + "to": [ + 6, + 0.5, + 15 + ], + "faces": { + "down": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 10, + 0, + 1 + ], + "to": [ + 10.5, + 0.5, + 15 + ], + "faces": { + "down": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 13, + 0, + 1 + ], + "to": [ + 13.5, + 0.5, + 15 + ], + "faces": { + "down": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 10, + 0 + ], + "to": [ + 15, + 10.5, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 10.5, + 15, + 10, + 1 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 13, + 0 + ], + "to": [ + 15, + 13.5, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 13.5, + 15, + 13, + 1 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 2.5, + 0 + ], + "to": [ + 15, + 3, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 3, + 15, + 2.5, + 1 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 5.5, + 0 + ], + "to": [ + 15, + 6, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 6, + 15, + 5.5, + 1 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 2.5, + 1, + 0 + ], + "to": [ + 3, + 15, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 13.5, + 16, + 13, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 3, + 15, + 2.5, + 1 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 5.5, + 1, + 0 + ], + "to": [ + 6, + 15, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 10.5, + 16, + 10, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 6, + 15, + 5.5, + 1 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 10, + 1, + 0 + ], + "to": [ + 10.5, + 15, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 6, + 16, + 5.5, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 10.5, + 15, + 10, + 1 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 13, + 1, + 0 + ], + "to": [ + 13.5, + 15, + 0.5 + ], + "faces": { + "down": { + "uv": [ + 3, + 16, + 2.5, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 13.5, + 15, + 13, + 1 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 10, + 15.5 + ], + "to": [ + 15, + 10.5, + 16 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 10.5, + 15, + 10, + 1 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 13, + 15.5 + ], + "to": [ + 15, + 13.5, + 16 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 13.5, + 15, + 13, + 1 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 2.5, + 15.5 + ], + "to": [ + 15, + 3, + 16 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 3, + 15, + 2.5, + 1 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 1, + 5.5, + 15.5 + ], + "to": [ + 15, + 6, + 16 + ], + "faces": { + "down": { + "uv": [ + 15, + 16, + 1, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 6, + 15, + 5.5, + 1 + ], + "texture": "#texture", + "rotation": 90 + }, + "south": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture", + "rotation": 270 + }, + "west": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 2.5, + 1, + 15.5 + ], + "to": [ + 3, + 15, + 16 + ], + "faces": { + "down": { + "uv": [ + 13.5, + 16, + 13, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 2.5, + 15.5, + 3, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 3, + 15, + 2.5, + 1 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 2.5, + 1, + 3, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 5.5, + 1, + 15.5 + ], + "to": [ + 6, + 15, + 16 + ], + "faces": { + "down": { + "uv": [ + 10.5, + 16, + 10, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 5.5, + 15.5, + 6, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 6, + 15, + 5.5, + 1 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 5.5, + 1, + 6, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 10, + 1, + 15.5 + ], + "to": [ + 10.5, + 15, + 16 + ], + "faces": { + "down": { + "uv": [ + 6, + 16, + 5.5, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 10, + 15.5, + 10.5, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 10.5, + 15, + 10, + 1 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 10, + 1, + 10.5, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + }, + { + "__comment": "Box25", + "from": [ + 13, + 1, + 15.5 + ], + "to": [ + 13.5, + 15, + 16 + ], + "faces": { + "down": { + "uv": [ + 3, + 16, + 2.5, + 15.5 + ], + "texture": "#texture" + }, + "up": { + "uv": [ + 13, + 15.5, + 13.5, + 16 + ], + "texture": "#texture" + }, + "north": { + "uv": [ + 13.5, + 15, + 13, + 1 + ], + "texture": "#texture" + }, + "south": { + "uv": [ + 13, + 1, + 13.5, + 15 + ], + "texture": "#texture" + }, + "west": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 270 + }, + "east": { + "uv": [ + 1, + 15.5, + 15, + 16 + ], + "texture": "#texture", + "rotation": 90 + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/custom/teleporter.json b/src/main/resources/assets/easysurvival/models/custom/teleporter.json new file mode 100644 index 0000000..f7e51a9 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/custom/teleporter.json @@ -0,0 +1,639 @@ +{ + "__comment": "Designed by Netquick with Cubik Studio - https://cubik.studio", + "elements": [ + { + "__comment": "Box3", + "from": [ + 0, + 1, + 15 + ], + "to": [ + 3, + 1.5, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 13, + 1, + 16 + ], + "texture": "#Border", + "rotation": 90 + }, + "up": { + "uv": [ + 0, + 0, + 1, + 3 + ], + "texture": "#Border", + "rotation": 270 + }, + "north": { + "uv": [ + 13, + 14.5, + 16, + 15 + ], + "texture": "#Border" + }, + "south": { + "uv": [ + 0, + 14.5, + 3, + 15 + ], + "texture": "#Border" + }, + "west": { + "uv": [ + 15, + 14.5, + 16, + 15 + ], + "texture": "#Border" + }, + "east": { + "uv": [ + 0, + 14.5, + 1, + 15 + ], + "texture": "#Border" + } + } + }, + { + "__comment": "Box3", + "from": [ + 0, + 1, + 13 + ], + "to": [ + 1, + 1.5, + 15 + ], + "faces": { + "down": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Border", + "rotation": 90 + }, + "up": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Border", + "rotation": 270 + }, + "north": { + "uv": [ + 13, + 14, + 14, + 15 + ], + "texture": "#Border" + }, + "south": { + "uv": [ + 2, + 14, + 3, + 15 + ], + "texture": "#Border" + }, + "west": { + "uv": [ + 14, + 14, + 15, + 15 + ], + "texture": "#Border" + }, + "east": { + "uv": [ + 1, + 14, + 2, + 15 + ], + "texture": "#Border" + } + } + }, + { + "__comment": "Box3", + "from": [ + 0, + 1, + 0 + ], + "to": [ + 1, + 1.5, + 3 + ], + "faces": { + "down": { + "uv": [ + 0, + 13, + 1, + 16 + ], + "texture": "#Border" + }, + "up": { + "uv": [ + 0, + 0, + 1, + 3 + ], + "texture": "#Border" + }, + "north": { + "uv": [ + 15, + 14.5, + 16, + 15 + ], + "texture": "#Border" + }, + "south": { + "uv": [ + 0, + 14.5, + 1, + 15 + ], + "texture": "#Border" + }, + "west": { + "uv": [ + 0, + 14.5, + 3, + 15 + ], + "texture": "#Border" + }, + "east": { + "uv": [ + 13, + 14.5, + 16, + 15 + ], + "texture": "#Border" + } + } + }, + { + "__comment": "Box3", + "from": [ + 1, + 1, + 0 + ], + "to": [ + 3, + 1.5, + 1 + ], + "faces": { + "down": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Border" + }, + "up": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Border" + }, + "north": { + "uv": [ + 14, + 14, + 15, + 15 + ], + "texture": "#Border" + }, + "south": { + "uv": [ + 1, + 14, + 2, + 15 + ], + "texture": "#Border" + }, + "west": { + "uv": [ + 2, + 14, + 3, + 15 + ], + "texture": "#Border" + }, + "east": { + "uv": [ + 13, + 14, + 14, + 15 + ], + "texture": "#Border" + } + } + }, + { + "__comment": "Box3", + "from": [ + 13, + 1, + 0 + ], + "to": [ + 16, + 1.5, + 1 + ], + "faces": { + "down": { + "uv": [ + 0, + 13, + 1, + 16 + ], + "texture": "#Border", + "rotation": 270 + }, + "up": { + "uv": [ + 0, + 0, + 1, + 3 + ], + "texture": "#Border", + "rotation": 90 + }, + "north": { + "uv": [ + 0, + 14.5, + 3, + 15 + ], + "texture": "#Border" + }, + "south": { + "uv": [ + 13, + 14.5, + 16, + 15 + ], + "texture": "#Border" + }, + "west": { + "uv": [ + 0, + 14.5, + 1, + 15 + ], + "texture": "#Border" + }, + "east": { + "uv": [ + 15, + 14.5, + 16, + 15 + ], + "texture": "#Border" + } + } + }, + { + "__comment": "Box3", + "from": [ + 15, + 1, + 1 + ], + "to": [ + 16, + 1.5, + 3 + ], + "faces": { + "down": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Border", + "rotation": 270 + }, + "up": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Border", + "rotation": 90 + }, + "north": { + "uv": [ + 2, + 14, + 3, + 15 + ], + "texture": "#Border" + }, + "south": { + "uv": [ + 13, + 14, + 14, + 15 + ], + "texture": "#Border" + }, + "west": { + "uv": [ + 1, + 14, + 2, + 15 + ], + "texture": "#Border" + }, + "east": { + "uv": [ + 14, + 14, + 15, + 15 + ], + "texture": "#Border" + } + } + }, + { + "__comment": "Box3", + "from": [ + 15, + 1, + 13 + ], + "to": [ + 16, + 1.5, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 13, + 1, + 16 + ], + "texture": "#Border", + "rotation": 180 + }, + "up": { + "uv": [ + 0, + 0, + 1, + 3 + ], + "texture": "#Border", + "rotation": 180 + }, + "north": { + "uv": [ + 0, + 14.5, + 1, + 15 + ], + "texture": "#Border" + }, + "south": { + "uv": [ + 15, + 14.5, + 16, + 15 + ], + "texture": "#Border" + }, + "west": { + "uv": [ + 13, + 14.5, + 16, + 15 + ], + "texture": "#Border" + }, + "east": { + "uv": [ + 0, + 14.5, + 3, + 15 + ], + "texture": "#Border" + } + } + }, + { + "__comment": "Box3", + "from": [ + 13, + 1, + 15 + ], + "to": [ + 15, + 1.5, + 16 + ], + "faces": { + "down": { + "uv": [ + 1, + 13, + 2, + 14 + ], + "texture": "#Border", + "rotation": 180 + }, + "up": { + "uv": [ + 1, + 2, + 2, + 3 + ], + "texture": "#Border", + "rotation": 180 + }, + "north": { + "uv": [ + 1, + 14, + 2, + 15 + ], + "texture": "#Border" + }, + "south": { + "uv": [ + 14, + 14, + 15, + 15 + ], + "texture": "#Border" + }, + "west": { + "uv": [ + 13, + 14, + 14, + 15 + ], + "texture": "#Border" + }, + "east": { + "uv": [ + 2, + 14, + 3, + 15 + ], + "texture": "#Border" + } + } + }, + { + "__comment": "Box10", + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 1, + 16 + ], + "shade": false, + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#Plate" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#Plate" + }, + "north": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Plate" + }, + "south": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Plate" + }, + "west": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Plate" + }, + "east": { + "uv": [ + 0, + 15, + 16, + 16 + ], + "texture": "#Plate" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/basalt_axe.json b/src/main/resources/assets/easysurvival/models/item/basalt_axe.json new file mode 100644 index 0000000..c557a32 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/basalt_axe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/basalt_axe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/basalt_hoe.json b/src/main/resources/assets/easysurvival/models/item/basalt_hoe.json new file mode 100644 index 0000000..9495ef6 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/basalt_hoe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/basalt_hoe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/basalt_pickaxe.json b/src/main/resources/assets/easysurvival/models/item/basalt_pickaxe.json new file mode 100644 index 0000000..fea0b81 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/basalt_pickaxe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/basalt_pickaxe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/basalt_shovel.json b/src/main/resources/assets/easysurvival/models/item/basalt_shovel.json new file mode 100644 index 0000000..b6f89f5 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/basalt_shovel.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/basalt_shovel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/basalt_sword.json b/src/main/resources/assets/easysurvival/models/item/basalt_sword.json new file mode 100644 index 0000000..16e31a6 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/basalt_sword.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/basalt_sword" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/crop.json b/src/main/resources/assets/easysurvival/models/item/crop.json new file mode 100644 index 0000000..4903609 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/crop.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/crop", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/easy_anvil.json b/src/main/resources/assets/easysurvival/models/item/easy_anvil.json new file mode 100644 index 0000000..9d62bf6 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/easy_anvil.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/easy_anvil", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/easy_converter.json b/src/main/resources/assets/easysurvival/models/item/easy_converter.json new file mode 100644 index 0000000..797a7bf --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/easy_converter.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/easy_converter", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/easy_enchantment_table.json b/src/main/resources/assets/easysurvival/models/item/easy_enchantment_table.json new file mode 100644 index 0000000..e767bb4 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/easy_enchantment_table.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/easy_enchantment_table", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/easy_forge.json b/src/main/resources/assets/easysurvival/models/item/easy_forge.json new file mode 100644 index 0000000..206da7c --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/easy_forge.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/easy_forge", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/easy_forge_auto.json b/src/main/resources/assets/easysurvival/models/item/easy_forge_auto.json new file mode 100644 index 0000000..48c7085 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/easy_forge_auto.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/easy_forge_auto", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/easy_fridge.json b/src/main/resources/assets/easysurvival/models/item/easy_fridge.json new file mode 100644 index 0000000..5c293d5 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/easy_fridge.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/easy_fridge", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/easy_intake.json b/src/main/resources/assets/easysurvival/models/item/easy_intake.json new file mode 100644 index 0000000..1160c7a --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/easy_intake.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/easy_intake", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/easy_saw.json b/src/main/resources/assets/easysurvival/models/item/easy_saw.json new file mode 100644 index 0000000..790d277 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/easy_saw.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/easy_saw", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/easy_smelter.json b/src/main/resources/assets/easysurvival/models/item/easy_smelter.json new file mode 100644 index 0000000..223b3f4 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/easy_smelter.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/easy_smelter", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/nether_stick.json b/src/main/resources/assets/easysurvival/models/item/nether_stick.json new file mode 100644 index 0000000..e2aa620 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/nether_stick.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "easysurvival:item/netherstick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/netherrack_armor_boots.json b/src/main/resources/assets/easysurvival/models/item/netherrack_armor_boots.json new file mode 100644 index 0000000..a6ec5fe --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/netherrack_armor_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "easysurvival:item/netherrack_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/netherrack_armor_chestplate.json b/src/main/resources/assets/easysurvival/models/item/netherrack_armor_chestplate.json new file mode 100644 index 0000000..a1739a8 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/netherrack_armor_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "easysurvival:item/netherrack_body" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/netherrack_armor_helmet.json b/src/main/resources/assets/easysurvival/models/item/netherrack_armor_helmet.json new file mode 100644 index 0000000..05a05b0 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/netherrack_armor_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "easysurvival:item/netherrack_head" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/netherrack_armor_leggings.json b/src/main/resources/assets/easysurvival/models/item/netherrack_armor_leggings.json new file mode 100644 index 0000000..27d485f --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/netherrack_armor_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "easysurvival:item/netherrack_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/netherrack_axe.json b/src/main/resources/assets/easysurvival/models/item/netherrack_axe.json new file mode 100644 index 0000000..c689cce --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/netherrack_axe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/netherrack_axe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/netherrack_hoe.json b/src/main/resources/assets/easysurvival/models/item/netherrack_hoe.json new file mode 100644 index 0000000..7065a48 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/netherrack_hoe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/netherrack_hoe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/netherrack_pickaxe.json b/src/main/resources/assets/easysurvival/models/item/netherrack_pickaxe.json new file mode 100644 index 0000000..1bebba5 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/netherrack_pickaxe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/netherrack_pickaxe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/netherrack_shovel.json b/src/main/resources/assets/easysurvival/models/item/netherrack_shovel.json new file mode 100644 index 0000000..d30ca54 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/netherrack_shovel.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/netherrack_shovel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/netherrack_sword.json b/src/main/resources/assets/easysurvival/models/item/netherrack_sword.json new file mode 100644 index 0000000..c7b69fa --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/netherrack_sword.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/netherrack_sword" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/portable_crafting_table.json b/src/main/resources/assets/easysurvival/models/item/portable_crafting_table.json new file mode 100644 index 0000000..e2aa620 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/portable_crafting_table.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "easysurvival:item/netherstick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/quarz_axe.json b/src/main/resources/assets/easysurvival/models/item/quarz_axe.json new file mode 100644 index 0000000..0243bf2 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/quarz_axe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/quarz_axe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/quarz_hoe.json b/src/main/resources/assets/easysurvival/models/item/quarz_hoe.json new file mode 100644 index 0000000..8b75535 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/quarz_hoe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/quarz_hoe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/quarz_pickaxe.json b/src/main/resources/assets/easysurvival/models/item/quarz_pickaxe.json new file mode 100644 index 0000000..a4db69e --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/quarz_pickaxe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/quarz_pickaxe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/quarz_shovel.json b/src/main/resources/assets/easysurvival/models/item/quarz_shovel.json new file mode 100644 index 0000000..cc6449a --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/quarz_shovel.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/quarz_shovel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/quarz_sword.json b/src/main/resources/assets/easysurvival/models/item/quarz_sword.json new file mode 100644 index 0000000..35bbb14 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/quarz_sword.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "easysurvival:item/quarz_sword" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/spawner_blaze.json b/src/main/resources/assets/easysurvival/models/item/spawner_blaze.json new file mode 100644 index 0000000..ee3dc68 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/spawner_blaze.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/spawner_blaze", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/spawner_creeper.json b/src/main/resources/assets/easysurvival/models/item/spawner_creeper.json new file mode 100644 index 0000000..232ee93 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/spawner_creeper.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/spawner_creeper", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/spawner_evoker.json b/src/main/resources/assets/easysurvival/models/item/spawner_evoker.json new file mode 100644 index 0000000..8b00117 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/spawner_evoker.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/spawner_evoker", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/spawner_ghast.json b/src/main/resources/assets/easysurvival/models/item/spawner_ghast.json new file mode 100644 index 0000000..65238c0 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/spawner_ghast.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/spawner_ghast", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/spawner_pillager.json b/src/main/resources/assets/easysurvival/models/item/spawner_pillager.json new file mode 100644 index 0000000..56f52cb --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/spawner_pillager.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/spawner_pillager", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/spawner_slime.json b/src/main/resources/assets/easysurvival/models/item/spawner_slime.json new file mode 100644 index 0000000..19e38b0 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/spawner_slime.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/spawner_slime", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/spawner_wither_skelett.json b/src/main/resources/assets/easysurvival/models/item/spawner_wither_skelett.json new file mode 100644 index 0000000..3562b42 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/spawner_wither_skelett.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/spawner_wither_skelett", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/teleporter_plate.json b/src/main/resources/assets/easysurvival/models/item/teleporter_plate.json new file mode 100644 index 0000000..6dc444d --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/teleporter_plate.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/teleporter_plate", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/models/item/tree_crop.json b/src/main/resources/assets/easysurvival/models/item/tree_crop.json new file mode 100644 index 0000000..9ed5b93 --- /dev/null +++ b/src/main/resources/assets/easysurvival/models/item/tree_crop.json @@ -0,0 +1,22 @@ +{ + "parent": "easysurvival:block/tree_crop", + "display": { + "thirdperson": { + "rotation": [ + 10, + -45, + 170 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/easysurvival/textures/2015-07-31_17.50.39.png b/src/main/resources/assets/easysurvival/textures/2015-07-31_17.50.39.png new file mode 100644 index 0000000..bc00360 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/2015-07-31_17.50.39.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/2.png b/src/main/resources/assets/easysurvival/textures/block/2.png new file mode 100644 index 0000000..cb46d5f Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/2.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/anviltexture.png b/src/main/resources/assets/easysurvival/textures/block/anviltexture.png new file mode 100644 index 0000000..ba190c1 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/anviltexture.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/barrel.png b/src/main/resources/assets/easysurvival/textures/block/barrel.png new file mode 100644 index 0000000..f5c82c3 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/barrel.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/barreltop.png b/src/main/resources/assets/easysurvival/textures/block/barreltop.png new file mode 100644 index 0000000..6276c3b Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/barreltop.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/border.png b/src/main/resources/assets/easysurvival/textures/block/border.png new file mode 100644 index 0000000..7906f54 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/border.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/bowl.png b/src/main/resources/assets/easysurvival/textures/block/bowl.png new file mode 100644 index 0000000..587275a Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/bowl.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/box.png b/src/main/resources/assets/easysurvival/textures/block/box.png new file mode 100644 index 0000000..a68b48e Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/box.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/cover.png b/src/main/resources/assets/easysurvival/textures/block/cover.png new file mode 100644 index 0000000..ddb1571 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/cover.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/cropdown.png b/src/main/resources/assets/easysurvival/textures/block/cropdown.png new file mode 100644 index 0000000..e610cd1 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/cropdown.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/croptexture.png b/src/main/resources/assets/easysurvival/textures/block/croptexture.png new file mode 100644 index 0000000..ecb5e8f Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/croptexture.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/enchantmenttexture.png b/src/main/resources/assets/easysurvival/textures/block/enchantmenttexture.png new file mode 100644 index 0000000..6e00da9 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/enchantmenttexture.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/energy.png b/src/main/resources/assets/easysurvival/textures/block/energy.png new file mode 100644 index 0000000..1d786a2 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/energy.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/forgefront.png b/src/main/resources/assets/easysurvival/textures/block/forgefront.png new file mode 100644 index 0000000..5fd3a48 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/forgefront.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/forgeside.png b/src/main/resources/assets/easysurvival/textures/block/forgeside.png new file mode 100644 index 0000000..ffd9dda Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/forgeside.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/forgetop.png b/src/main/resources/assets/easysurvival/textures/block/forgetop.png new file mode 100644 index 0000000..e79368b Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/forgetop.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/fridgefront.png b/src/main/resources/assets/easysurvival/textures/block/fridgefront.png new file mode 100644 index 0000000..b8b5c19 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/fridgefront.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/glas.png b/src/main/resources/assets/easysurvival/textures/block/glas.png new file mode 100644 index 0000000..458cb1d Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/glas.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/glastexture.png b/src/main/resources/assets/easysurvival/textures/block/glastexture.png new file mode 100644 index 0000000..1373f78 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/glastexture.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/metal.png b/src/main/resources/assets/easysurvival/textures/block/metal.png new file mode 100644 index 0000000..e29f210 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/metal.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/monster_spawner.png b/src/main/resources/assets/easysurvival/textures/block/monster_spawner.png new file mode 100644 index 0000000..92e46b8 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/monster_spawner.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/netherstick.png b/src/main/resources/assets/easysurvival/textures/block/netherstick.png new file mode 100644 index 0000000..74e2b63 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/netherstick.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/paper.png b/src/main/resources/assets/easysurvival/textures/block/paper.png new file mode 100644 index 0000000..b51cdbd Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/paper.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/plate.png b/src/main/resources/assets/easysurvival/textures/block/plate.png new file mode 100644 index 0000000..1ff453e Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/plate.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/pottexture.png b/src/main/resources/assets/easysurvival/textures/block/pottexture.png new file mode 100644 index 0000000..1dcc62a Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/pottexture.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/sawblade.png b/src/main/resources/assets/easysurvival/textures/block/sawblade.png new file mode 100644 index 0000000..e29f210 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/sawblade.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/sawblock.png b/src/main/resources/assets/easysurvival/textures/block/sawblock.png new file mode 100644 index 0000000..e6b7bac Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/sawblock.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/sawblockside.png b/src/main/resources/assets/easysurvival/textures/block/sawblockside.png new file mode 100644 index 0000000..9482188 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/sawblockside.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/schwarz.png b/src/main/resources/assets/easysurvival/textures/block/schwarz.png new file mode 100644 index 0000000..834e0cb Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/schwarz.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/sides.png b/src/main/resources/assets/easysurvival/textures/block/sides.png new file mode 100644 index 0000000..16b9b98 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/sides.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/simple-wood-texture_1048-4655.png b/src/main/resources/assets/easysurvival/textures/block/simple-wood-texture_1048-4655.png new file mode 100644 index 0000000..d69a534 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/simple-wood-texture_1048-4655.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/smeltblock.png b/src/main/resources/assets/easysurvival/textures/block/smeltblock.png new file mode 100644 index 0000000..2b5b977 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/smeltblock.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/spawnertexture.png b/src/main/resources/assets/easysurvival/textures/block/spawnertexture.png new file mode 100644 index 0000000..15a0b6a Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/spawnertexture.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/texture.png b/src/main/resources/assets/easysurvival/textures/block/texture.png new file mode 100644 index 0000000..9d95fb7 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/texture.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/texture1.png b/src/main/resources/assets/easysurvival/textures/block/texture1.png new file mode 100644 index 0000000..c9b4d88 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/texture1.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/texture2.png b/src/main/resources/assets/easysurvival/textures/block/texture2.png new file mode 100644 index 0000000..1d047c0 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/texture2.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/toptexture.png b/src/main/resources/assets/easysurvival/textures/block/toptexture.png new file mode 100644 index 0000000..8911d78 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/toptexture.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/upcrop.png b/src/main/resources/assets/easysurvival/textures/block/upcrop.png new file mode 100644 index 0000000..cb46d5f Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/upcrop.png differ diff --git a/src/main/resources/assets/easysurvival/textures/block/wood.png b/src/main/resources/assets/easysurvival/textures/block/wood.png new file mode 100644 index 0000000..3bf5175 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/block/wood.png differ diff --git a/src/main/resources/assets/easysurvival/textures/easy_crafter_gui.png b/src/main/resources/assets/easysurvival/textures/easy_crafter_gui.png new file mode 100644 index 0000000..cd1d22e Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/easy_crafter_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/easy_enchant_table_gui.png b/src/main/resources/assets/easysurvival/textures/easy_enchant_table_gui.png new file mode 100644 index 0000000..cfafdc9 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/easy_enchant_table_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/easy_forge_auto_gui.png b/src/main/resources/assets/easysurvival/textures/easy_forge_auto_gui.png new file mode 100644 index 0000000..8e3f1ed Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/easy_forge_auto_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/basalt_axe.png b/src/main/resources/assets/easysurvival/textures/item/basalt_axe.png new file mode 100644 index 0000000..0c65ee0 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/basalt_axe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/basalt_hoe.png b/src/main/resources/assets/easysurvival/textures/item/basalt_hoe.png new file mode 100644 index 0000000..859ae9a Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/basalt_hoe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/basalt_pickaxe.png b/src/main/resources/assets/easysurvival/textures/item/basalt_pickaxe.png new file mode 100644 index 0000000..eec7ba1 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/basalt_pickaxe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/basalt_shovel.png b/src/main/resources/assets/easysurvival/textures/item/basalt_shovel.png new file mode 100644 index 0000000..acc0b43 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/basalt_shovel.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/basalt_sword.png b/src/main/resources/assets/easysurvival/textures/item/basalt_sword.png new file mode 100644 index 0000000..cc4784f Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/basalt_sword.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherite_axe.png b/src/main/resources/assets/easysurvival/textures/item/netherite_axe.png new file mode 100644 index 0000000..3d4440e Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherite_axe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherite_hoe.png b/src/main/resources/assets/easysurvival/textures/item/netherite_hoe.png new file mode 100644 index 0000000..d06cb90 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherite_hoe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherite_pickaxe.png b/src/main/resources/assets/easysurvival/textures/item/netherite_pickaxe.png new file mode 100644 index 0000000..38c3bcf Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherite_pickaxe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherite_shovel.png b/src/main/resources/assets/easysurvival/textures/item/netherite_shovel.png new file mode 100644 index 0000000..ff2bb35 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherite_shovel.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherite_sword.png b/src/main/resources/assets/easysurvival/textures/item/netherite_sword.png new file mode 100644 index 0000000..3d0c3f7 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherite_sword.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherrack_axe.png b/src/main/resources/assets/easysurvival/textures/item/netherrack_axe.png new file mode 100644 index 0000000..280ad93 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherrack_axe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherrack_body.png b/src/main/resources/assets/easysurvival/textures/item/netherrack_body.png new file mode 100644 index 0000000..5160ba5 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherrack_body.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherrack_boots.png b/src/main/resources/assets/easysurvival/textures/item/netherrack_boots.png new file mode 100644 index 0000000..afd2603 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherrack_boots.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherrack_head.png b/src/main/resources/assets/easysurvival/textures/item/netherrack_head.png new file mode 100644 index 0000000..429d31a Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherrack_head.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherrack_hoe.png b/src/main/resources/assets/easysurvival/textures/item/netherrack_hoe.png new file mode 100644 index 0000000..7239535 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherrack_hoe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherrack_leggings.png b/src/main/resources/assets/easysurvival/textures/item/netherrack_leggings.png new file mode 100644 index 0000000..4428f54 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherrack_leggings.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherrack_pickaxe.png b/src/main/resources/assets/easysurvival/textures/item/netherrack_pickaxe.png new file mode 100644 index 0000000..2785adc Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherrack_pickaxe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherrack_shovel.png b/src/main/resources/assets/easysurvival/textures/item/netherrack_shovel.png new file mode 100644 index 0000000..de68612 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherrack_shovel.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherrack_sword.png b/src/main/resources/assets/easysurvival/textures/item/netherrack_sword.png new file mode 100644 index 0000000..3df0179 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherrack_sword.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/netherstick.png b/src/main/resources/assets/easysurvival/textures/item/netherstick.png new file mode 100644 index 0000000..5912eaa Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/netherstick.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/quarz_axe.png b/src/main/resources/assets/easysurvival/textures/item/quarz_axe.png new file mode 100644 index 0000000..4b277f7 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/quarz_axe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/quarz_hoe.png b/src/main/resources/assets/easysurvival/textures/item/quarz_hoe.png new file mode 100644 index 0000000..2e73371 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/quarz_hoe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/quarz_pickaxe.png b/src/main/resources/assets/easysurvival/textures/item/quarz_pickaxe.png new file mode 100644 index 0000000..44498bf Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/quarz_pickaxe.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/quarz_shovel.png b/src/main/resources/assets/easysurvival/textures/item/quarz_shovel.png new file mode 100644 index 0000000..b5bd233 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/quarz_shovel.png differ diff --git a/src/main/resources/assets/easysurvival/textures/item/quarz_sword.png b/src/main/resources/assets/easysurvival/textures/item/quarz_sword.png new file mode 100644 index 0000000..a976645 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/item/quarz_sword.png differ diff --git a/src/main/resources/assets/easysurvival/textures/models/armor/netherrack_layer_1.png b/src/main/resources/assets/easysurvival/textures/models/armor/netherrack_layer_1.png new file mode 100644 index 0000000..8103ad7 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/models/armor/netherrack_layer_1.png differ diff --git a/src/main/resources/assets/easysurvival/textures/models/armor/netherrack_layer_2.png b/src/main/resources/assets/easysurvival/textures/models/armor/netherrack_layer_2.png new file mode 100644 index 0000000..cbc53fa Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/models/armor/netherrack_layer_2.png differ diff --git a/src/main/resources/assets/easysurvival/textures/portable_crafting_table_gui.png b/src/main/resources/assets/easysurvival/textures/portable_crafting_table_gui.png new file mode 100644 index 0000000..bfa64c0 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/portable_crafting_table_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/crafting_stick_gui.png b/src/main/resources/assets/easysurvival/textures/screens/crafting_stick_gui.png new file mode 100644 index 0000000..4019ff2 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/crafting_stick_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/crop_gui.png b/src/main/resources/assets/easysurvival/textures/screens/crop_gui.png new file mode 100644 index 0000000..36f642f Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/crop_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/dedicated_storage_gui.png b/src/main/resources/assets/easysurvival/textures/screens/dedicated_storage_gui.png new file mode 100644 index 0000000..d971f91 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/dedicated_storage_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/easy_anvil_gui.png b/src/main/resources/assets/easysurvival/textures/screens/easy_anvil_gui.png new file mode 100644 index 0000000..399df87 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/easy_anvil_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/easy_converter_gui.png b/src/main/resources/assets/easysurvival/textures/screens/easy_converter_gui.png new file mode 100644 index 0000000..e831fd4 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/easy_converter_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/easy_enchantment_table_gui.png b/src/main/resources/assets/easysurvival/textures/screens/easy_enchantment_table_gui.png new file mode 100644 index 0000000..4c0c16f Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/easy_enchantment_table_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/easy_forge_gui.png b/src/main/resources/assets/easysurvival/textures/screens/easy_forge_gui.png new file mode 100644 index 0000000..d7351bd Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/easy_forge_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/easy_fridge_gui.png b/src/main/resources/assets/easysurvival/textures/screens/easy_fridge_gui.png new file mode 100644 index 0000000..d8b66bf Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/easy_fridge_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/easy_intake_gui.png b/src/main/resources/assets/easysurvival/textures/screens/easy_intake_gui.png new file mode 100644 index 0000000..85b5a5e Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/easy_intake_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/easy_saw_gui.png b/src/main/resources/assets/easysurvival/textures/screens/easy_saw_gui.png new file mode 100644 index 0000000..3f1dc58 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/easy_saw_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/easy_smelter_gui.png b/src/main/resources/assets/easysurvival/textures/screens/easy_smelter_gui.png new file mode 100644 index 0000000..d8b66bf Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/easy_smelter_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/teleport_set_gui.png b/src/main/resources/assets/easysurvival/textures/screens/teleport_set_gui.png new file mode 100644 index 0000000..d0b99fa Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/teleport_set_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/teleporter_gui.png b/src/main/resources/assets/easysurvival/textures/screens/teleporter_gui.png new file mode 100644 index 0000000..d0b99fa Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/teleporter_gui.png differ diff --git a/src/main/resources/assets/easysurvival/textures/screens/tree_crop_gui.png b/src/main/resources/assets/easysurvival/textures/screens/tree_crop_gui.png new file mode 100644 index 0000000..d082cd1 Binary files /dev/null and b/src/main/resources/assets/easysurvival/textures/screens/tree_crop_gui.png differ diff --git a/src/main/resources/data/easysurvival/recipes/basalt_axe_recipe.json b/src/main/resources/data/easysurvival/recipes/basalt_axe_recipe.json new file mode 100644 index 0000000..430ad18 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/basalt_axe_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aa", + "ab", + " b" + ], + "key": { + "a": { + "item": "minecraft:basalt" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:basalt_axe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/basalt_hoe_recipe.json b/src/main/resources/data/easysurvival/recipes/basalt_hoe_recipe.json new file mode 100644 index 0000000..f20be1f --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/basalt_hoe_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aa", + " b", + " b" + ], + "key": { + "a": { + "item": "minecraft:basalt" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:basalt_hoe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/basalt_pickaxe_recipe.json b/src/main/resources/data/easysurvival/recipes/basalt_pickaxe_recipe.json new file mode 100644 index 0000000..18b3a4d --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/basalt_pickaxe_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + " b ", + " b " + ], + "key": { + "a": { + "item": "minecraft:basalt" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:basalt_pickaxe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/basalt_shovel_recipe.json b/src/main/resources/data/easysurvival/recipes/basalt_shovel_recipe.json new file mode 100644 index 0000000..bbd739d --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/basalt_shovel_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "b", + "b" + ], + "key": { + "a": { + "item": "minecraft:basalt" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:basalt_shovel", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/basalt_sword_recipe.json b/src/main/resources/data/easysurvival/recipes/basalt_sword_recipe.json new file mode 100644 index 0000000..23bda9b --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/basalt_sword_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "a", + "b" + ], + "key": { + "a": { + "item": "minecraft:basalt" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:basalt_sword", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/cobble_stone_recipe.json b/src/main/resources/data/easysurvival/recipes/cobble_stone_recipe.json new file mode 100644 index 0000000..cda66e8 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/cobble_stone_recipe.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "minecraft:netherrack" + } + ], + "result": { + "item": "minecraft:cobblestone", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/crop_recipe.json b/src/main/resources/data/easysurvival/recipes/crop_recipe.json new file mode 100644 index 0000000..3e8b726 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/crop_recipe.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "bcb", + "ddd" + ], + "key": { + "a": { + "item": "minecraft:glass" + }, + "b": { + "tag": "minecraft:dirt" + }, + "c": { + "tag": "minecraft:tagseeds" + }, + "d": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "easysurvival:crop", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_anvil_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_anvil_recipe.json new file mode 100644 index 0000000..04018dd --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_anvil_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + " b ", + "bbb" + ], + "key": { + "a": { + "item": "minecraft:iron_block" + }, + "b": { + "item": "minecraft:obsidian" + } + }, + "result": { + "item": "easysurvival:easy_anvil", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_converter_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_converter_recipe.json new file mode 100644 index 0000000..f4fc576 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_converter_recipe.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "bbb", + "ccc" + ], + "key": { + "a": { + "item": "minecraft:iron_ingot" + }, + "b": { + "tag": "minecraft:tagstone" + }, + "c": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "easysurvival:easy_converter", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_enchantment_table_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_enchantment_table_recipe.json new file mode 100644 index 0000000..42a605c --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_enchantment_table_recipe.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " a ", + "bcb", + "ddd" + ], + "key": { + "a": { + "item": "minecraft:ghast_tear" + }, + "b": { + "item": "minecraft:diamond" + }, + "c": { + "item": "minecraft:ender_eye" + }, + "d": { + "item": "minecraft:obsidian" + } + }, + "result": { + "item": "easysurvival:easy_enchantment_table", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_forge_auto_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_forge_auto_recipe.json new file mode 100644 index 0000000..1cab0e2 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_forge_auto_recipe.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aba", + "aca", + "aba" + ], + "key": { + "a": { + "item": "minecraft:obsidian" + }, + "b": { + "item": "minecraft:redstone" + }, + "c": { + "item": "minecraft:lava_bucket" + } + }, + "result": { + "item": "easysurvival:easy_forge", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_forge_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_forge_recipe.json new file mode 100644 index 0000000..6fed017 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_forge_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "aba", + "aaa" + ], + "key": { + "a": { + "item": "minecraft:obsidian" + }, + "b": { + "item": "minecraft:lava_bucket" + } + }, + "result": { + "item": "easysurvival:easy_forge", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_fridge_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_fridge_recipe.json new file mode 100644 index 0000000..ab35962 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_fridge_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "aba", + "aaa" + ], + "key": { + "a": { + "item": "minecraft:cobblestone" + }, + "b": { + "item": "minecraft:water_bucket" + } + }, + "result": { + "item": "easysurvival:easy_fridge", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_intake_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_intake_recipe.json new file mode 100644 index 0000000..c18e93d --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_intake_recipe.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " a ", + "bcb", + " d " + ], + "key": { + "a": { + "item": "minecraft:hopper" + }, + "b": { + "item": "minecraft:redstone" + }, + "c": { + "item": "minecraft:chest" + }, + "d": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "easysurvival:easy_intake", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_saw_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_saw_recipe.json new file mode 100644 index 0000000..429e3a1 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_saw_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " a ", + "bbb", + "bbb" + ], + "key": { + "a": { + "item": "minecraft:iron_ingot" + }, + "b": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "easysurvival:easy_saw", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_smelter_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_smelter_recipe.json new file mode 100644 index 0000000..d1b1749 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_smelter_recipe.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aba", + "ccc", + "ddd" + ], + "key": { + "a": { + "item": "minecraft:iron_ingot" + }, + "b": { + "item": "minecraft:lava_bucket" + }, + "c": { + "tag": "minecraft:stone" + }, + "d": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "easysurvival:easy_smelter", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/easy_teleport_recipe.json b/src/main/resources/data/easysurvival/recipes/easy_teleport_recipe.json new file mode 100644 index 0000000..e3a3bf8 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/easy_teleport_recipe.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aba" + ], + "key": { + "a": { + "item": "minecraft:iron_ingot" + }, + "b": { + "item": "minecraft:ender_pearl" + } + }, + "result": { + "item": "easysurvival:teleporter_plate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/elytra.json b/src/main/resources/data/easysurvival/recipes/elytra.json new file mode 100644 index 0000000..c52709d --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/elytra.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aba", + "aca", + "a a" + ], + "key": { + "a": { + "item": "minecraft:feather" + }, + "b": { + "item": "minecraft:ghast_tear" + }, + "c": { + "item": "minecraft:end_stone" + } + }, + "result": { + "item": "minecraft:elytra", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/enderp_pearl_recipe.json b/src/main/resources/data/easysurvival/recipes/enderp_pearl_recipe.json new file mode 100644 index 0000000..2b500e5 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/enderp_pearl_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " a ", + "aba", + " a " + ], + "key": { + "a": { + "item": "minecraft:bone_meal" + }, + "b": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "minecraft:ender_pearl", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/nether_bucket.json b/src/main/resources/data/easysurvival/recipes/nether_bucket.json new file mode 100644 index 0000000..0bdc7a6 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/nether_bucket.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a a", + " a " + ], + "key": { + "a": { + "item": "minecraft:quartz" + } + }, + "result": { + "item": "minecraft:bucket", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/nether_forge.json b/src/main/resources/data/easysurvival/recipes/nether_forge.json new file mode 100644 index 0000000..53f2df8 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/nether_forge.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "a a", + "aaa" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + } + }, + "result": { + "item": "minecraft:furnace", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/nether_ladder_recipe.json b/src/main/resources/data/easysurvival/recipes/nether_ladder_recipe.json new file mode 100644 index 0000000..c0b65c0 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/nether_ladder_recipe.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a a", + "aaa", + "a a" + ], + "key": { + "a": { + "item": "easysurvival:nether_stick" + } + }, + "result": { + "item": "minecraft:ladder", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/nether_stick_recipe.json b/src/main/resources/data/easysurvival/recipes/nether_stick_recipe.json new file mode 100644 index 0000000..16cc77c --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/nether_stick_recipe.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "a" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + } + }, + "result": { + "item": "easysurvival:nether_stick", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/nether_wart_recipe.json b/src/main/resources/data/easysurvival/recipes/nether_wart_recipe.json new file mode 100644 index 0000000..bab3896 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/nether_wart_recipe.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a" + ], + "key": { + "a": { + "item": "minecraft:nether_wart_block" + } + }, + "result": { + "item": "minecraft:nether_wart", + "count": 10 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/nether_workbench.json b/src/main/resources/data/easysurvival/recipes/nether_workbench.json new file mode 100644 index 0000000..2554681 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/nether_workbench.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aa", + "aa" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + } + }, + "result": { + "item": "minecraft:crafting_table", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/netherrack_armor_body_recipe.json b/src/main/resources/data/easysurvival/recipes/netherrack_armor_body_recipe.json new file mode 100644 index 0000000..cd737af --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/netherrack_armor_body_recipe.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a a", + "aaa", + "aaa" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + } + }, + "result": { + "item": "easysurvival:netherrack_armor_chestplate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/netherrack_armor_boots_recipe.json b/src/main/resources/data/easysurvival/recipes/netherrack_armor_boots_recipe.json new file mode 100644 index 0000000..1bd8b5d --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/netherrack_armor_boots_recipe.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a a", + "a a" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + } + }, + "result": { + "item": "easysurvival:netherrack_armor_boots", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/netherrack_armor_helmet_recipe.json b/src/main/resources/data/easysurvival/recipes/netherrack_armor_helmet_recipe.json new file mode 100644 index 0000000..1ede65a --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/netherrack_armor_helmet_recipe.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "a a" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + } + }, + "result": { + "item": "easysurvival:netherrack_armor_helmet", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/netherrack_armor_leggings_recipe.json b/src/main/resources/data/easysurvival/recipes/netherrack_armor_leggings_recipe.json new file mode 100644 index 0000000..29306c8 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/netherrack_armor_leggings_recipe.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "a a", + "a a" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + } + }, + "result": { + "item": "easysurvival:netherrack_armor_leggings", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/netherrack_axe_recipe.json b/src/main/resources/data/easysurvival/recipes/netherrack_axe_recipe.json new file mode 100644 index 0000000..30d0f75 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/netherrack_axe_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aa", + "ab", + " b" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:netherrack_axe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/netherrack_hoe_recipe.json b/src/main/resources/data/easysurvival/recipes/netherrack_hoe_recipe.json new file mode 100644 index 0000000..a49666e --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/netherrack_hoe_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aa", + " b", + " b" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:netherrack_hoe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/netherrack_pickaxe_recipe.json b/src/main/resources/data/easysurvival/recipes/netherrack_pickaxe_recipe.json new file mode 100644 index 0000000..aafb19c --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/netherrack_pickaxe_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + " b ", + " b " + ], + "key": { + "a": { + "item": "minecraft:netherrack" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:netherrack_pickaxe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/netherrack_shovel_recipe.json b/src/main/resources/data/easysurvival/recipes/netherrack_shovel_recipe.json new file mode 100644 index 0000000..2e21427 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/netherrack_shovel_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "b", + "b" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:netherrack_shovel", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/netherrack_sword_recipe.json b/src/main/resources/data/easysurvival/recipes/netherrack_sword_recipe.json new file mode 100644 index 0000000..6e1f4af --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/netherrack_sword_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "a", + "b" + ], + "key": { + "a": { + "item": "minecraft:netherrack" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:netherrack_sword", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/quarz_axe_recipe.json b/src/main/resources/data/easysurvival/recipes/quarz_axe_recipe.json new file mode 100644 index 0000000..8cdd5f2 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/quarz_axe_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aa", + "ab", + " b" + ], + "key": { + "a": { + "item": "minecraft:quartz" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:quarz_axe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/quarz_block.json b/src/main/resources/data/easysurvival/recipes/quarz_block.json new file mode 100644 index 0000000..f2857f9 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/quarz_block.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "aaa", + "aaa" + ], + "key": { + "a": { + "item": "minecraft:quartz" + } + }, + "result": { + "item": "minecraft:iron_block", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/quarz_hoe_recipe.json b/src/main/resources/data/easysurvival/recipes/quarz_hoe_recipe.json new file mode 100644 index 0000000..5de5627 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/quarz_hoe_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aa", + " b", + " b" + ], + "key": { + "a": { + "item": "minecraft:quartz" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:quarz_hoe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/quarz_pickaxe_recipe.json b/src/main/resources/data/easysurvival/recipes/quarz_pickaxe_recipe.json new file mode 100644 index 0000000..2d1a4c5 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/quarz_pickaxe_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + " b ", + " b " + ], + "key": { + "a": { + "item": "minecraft:quartz" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:quarz_pickaxe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/quarz_shovel_recipe.json b/src/main/resources/data/easysurvival/recipes/quarz_shovel_recipe.json new file mode 100644 index 0000000..79ac387 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/quarz_shovel_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "b", + "b" + ], + "key": { + "a": { + "item": "minecraft:quartz" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:quarz_shovel", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/quarz_sword_recipe.json b/src/main/resources/data/easysurvival/recipes/quarz_sword_recipe.json new file mode 100644 index 0000000..e7a97ec --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/quarz_sword_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "a", + "b" + ], + "key": { + "a": { + "item": "minecraft:quartz" + }, + "b": { + "tag": "forge:tag_stick" + } + }, + "result": { + "item": "easysurvival:quarz_sword", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/shulker_box_recipe.json b/src/main/resources/data/easysurvival/recipes/shulker_box_recipe.json new file mode 100644 index 0000000..f5ab8e3 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/shulker_box_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "b", + "a" + ], + "key": { + "a": { + "item": "minecraft:hopper" + }, + "b": { + "item": "minecraft:chest" + } + }, + "result": { + "item": "minecraft:black_shulker_box", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/spawner_blaze_recipe.json b/src/main/resources/data/easysurvival/recipes/spawner_blaze_recipe.json new file mode 100644 index 0000000..1c8f9c2 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/spawner_blaze_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " a ", + "aba", + " a " + ], + "key": { + "a": { + "item": "minecraft:glowstone_dust" + }, + "b": { + "item": "minecraft:torch" + } + }, + "result": { + "item": "easysurvival:spawner_blaze", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/spawner_creeper_recipe.json b/src/main/resources/data/easysurvival/recipes/spawner_creeper_recipe.json new file mode 100644 index 0000000..b857441 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/spawner_creeper_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aba", + "bab", + "aba" + ], + "key": { + "a": { + "item": "minecraft:paper" + }, + "b": { + "item": "minecraft:gunpowder" + } + }, + "result": { + "item": "easysurvival:spawner_creeper", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/spawner_evoker_recipe.json b/src/main/resources/data/easysurvival/recipes/spawner_evoker_recipe.json new file mode 100644 index 0000000..eb6db99 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/spawner_evoker_recipe.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " a ", + "aba", + " c " + ], + "key": { + "a": { + "item": "minecraft:gold_ingot" + }, + "b": { + "item": "minecraft:emerald" + }, + "c": { + "item": "minecraft:gold_nugget" + } + }, + "result": { + "item": "easysurvival:spawner_evoker", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/spawner_ghas_recipe.json b/src/main/resources/data/easysurvival/recipes/spawner_ghas_recipe.json new file mode 100644 index 0000000..84540dc --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/spawner_ghas_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " a ", + "aba", + " a " + ], + "key": { + "a": { + "item": "minecraft:obsidian" + }, + "b": { + "item": "minecraft:ghast_tear" + } + }, + "result": { + "item": "easysurvival:spawner_ghast", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/spawner_pillager_recipe.json b/src/main/resources/data/easysurvival/recipes/spawner_pillager_recipe.json new file mode 100644 index 0000000..55c9758 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/spawner_pillager_recipe.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aba", + " c " + ], + "key": { + "a": { + "item": "minecraft:emerald" + }, + "b": { + "item": "minecraft:crossbow" + }, + "c": { + "item": "minecraft:cobblestone" + } + }, + "result": { + "item": "easysurvival:spawner_pillager", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/spawner_slime_recipe.json b/src/main/resources/data/easysurvival/recipes/spawner_slime_recipe.json new file mode 100644 index 0000000..19098db --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/spawner_slime_recipe.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "b" + ], + "key": { + "a": { + "item": "minecraft:kelp" + }, + "b": { + "tag": "minecraft:leaves" + } + }, + "result": { + "item": "easysurvival:spawner_slime", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/tree_crop_recipe.json b/src/main/resources/data/easysurvival/recipes/tree_crop_recipe.json new file mode 100644 index 0000000..eae54fc --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/tree_crop_recipe.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "bcb", + "ddd" + ], + "key": { + "a": { + "item": "minecraft:glass" + }, + "b": { + "tag": "minecraft:dirt" + }, + "c": { + "tag": "minecraft:tagsaplings" + }, + "d": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "easysurvival:tree_crop", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/trident.json b/src/main/resources/data/easysurvival/recipes/trident.json new file mode 100644 index 0000000..31356a2 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/trident.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + " b ", + " b " + ], + "key": { + "a": { + "item": "minecraft:ghast_tear" + }, + "b": { + "item": "minecraft:diamond" + } + }, + "result": { + "item": "minecraft:trident", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/easysurvival/recipes/wither_skeletton_spawner_recipe.json b/src/main/resources/data/easysurvival/recipes/wither_skeletton_spawner_recipe.json new file mode 100644 index 0000000..4160c55 --- /dev/null +++ b/src/main/resources/data/easysurvival/recipes/wither_skeletton_spawner_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aaa", + "aba", + "aaa" + ], + "key": { + "a": { + "item": "minecraft:soul_sand" + }, + "b": { + "item": "minecraft:blaze_rod" + } + }, + "result": { + "item": "easysurvival:spawner_wither_skelett", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/planks.json b/src/main/resources/data/forge/tags/items/planks.json new file mode 100644 index 0000000..34ef51f --- /dev/null +++ b/src/main/resources/data/forge/tags/items/planks.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "minecraft:oak_planks", + "minecraft:spruce_planks", + "minecraft:birch_planks", + "minecraft:jungle_planks", + "minecraft:acacia_planks", + "minecraft:dark_oak_planks", + "minecraft:crimson_planks", + "minecraft:warped_planks" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/tag_armor.json b/src/main/resources/data/forge/tags/items/tag_armor.json new file mode 100644 index 0000000..7588244 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/tag_armor.json @@ -0,0 +1,34 @@ +{ + "replace": false, + "values": [ + "easysurvival:netherrack_armor_helmet", + "easysurvival:netherrack_armor_chestplate", + "easysurvival:netherrack_armor_leggings", + "easysurvival:netherrack_armor_boots", + "minecraft:leather_helmet", + "minecraft:leather_chestplate", + "minecraft:leather_leggings", + "minecraft:leather_boots", + "minecraft:chainmail_helmet", + "minecraft:chainmail_chestplate", + "minecraft:chainmail_leggings", + "minecraft:chainmail_boots", + "minecraft:turtle_helmet", + "minecraft:iron_helmet", + "minecraft:iron_chestplate", + "minecraft:iron_leggings", + "minecraft:iron_boots", + "minecraft:golden_helmet", + "minecraft:golden_chestplate", + "minecraft:golden_leggings", + "minecraft:golden_boots", + "minecraft:diamond_helmet", + "minecraft:diamond_chestplate", + "minecraft:diamond_leggings", + "minecraft:diamond_boots", + "minecraft:netherite_helmet", + "minecraft:netherite_chestplate", + "minecraft:netherite_leggings", + "minecraft:netherite_boots" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/tag_boots.json b/src/main/resources/data/forge/tags/items/tag_boots.json new file mode 100644 index 0000000..acf7106 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/tag_boots.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "easysurvival:netherrack_armor_boots", + "minecraft:leather_boots", + "minecraft:chainmail_boots", + "minecraft:iron_boots", + "minecraft:golden_boots", + "minecraft:diamond_boots", + "minecraft:netherite_boots" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/tag_chest.json b/src/main/resources/data/forge/tags/items/tag_chest.json new file mode 100644 index 0000000..fac85c4 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/tag_chest.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "easysurvival:netherrack_armor_chestplate", + "minecraft:leather_chestplate", + "minecraft:chainmail_chestplate", + "minecraft:iron_chestplate", + "minecraft:golden_chestplate", + "minecraft:diamond_chestplate", + "minecraft:netherite_chestplate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/tag_helmet.json b/src/main/resources/data/forge/tags/items/tag_helmet.json new file mode 100644 index 0000000..b462769 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/tag_helmet.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "minecraft:iron_helmet", + "minecraft:chainmail_helmet", + "minecraft:leather_helmet", + "minecraft:turtle_helmet", + "minecraft:golden_helmet", + "minecraft:diamond_helmet", + "minecraft:netherite_helmet" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/tag_intake.json b/src/main/resources/data/forge/tags/items/tag_intake.json new file mode 100644 index 0000000..62d373b --- /dev/null +++ b/src/main/resources/data/forge/tags/items/tag_intake.json @@ -0,0 +1,184 @@ +{ + "replace": false, + "values": [ + "minecraft:stone", + "minecraft:granite", + "minecraft:diorite", + "minecraft:andesite", + "minecraft:smooth_stone", + "minecraft:grass_block", + "minecraft:dirt", + "minecraft:cobblestone", + "minecraft:mossy_cobblestone", + "minecraft:oak_planks", + "minecraft:spruce_planks", + "minecraft:birch_planks", + "minecraft:jungle_planks", + "minecraft:acacia_planks", + "minecraft:dark_oak_planks", + "minecraft:crimson_planks", + "minecraft:warped_planks", + "minecraft:oak_sapling", + "minecraft:spruce_sapling", + "minecraft:birch_sapling", + "minecraft:jungle_sapling", + "minecraft:acacia_sapling", + "minecraft:dark_oak_sapling", + "minecraft:sugar_cane", + "minecraft:sand", + "minecraft:red_sand", + "minecraft:gravel", + "minecraft:magma_block", + "minecraft:obsidian", + "minecraft:crying_obsidian", + "minecraft:coal_ore", + "minecraft:iron_ore", + "minecraft:redstone_ore", + "minecraft:gold_ore", + "minecraft:lapis_ore", + "minecraft:diamond_ore", + "minecraft:emerald_ore", + "minecraft:nether_quartz_ore", + "minecraft:nether_gold_ore", + "minecraft:gilded_blackstone", + "minecraft:coal_block", + "minecraft:iron_block", + "minecraft:redstone_block", + "minecraft:gold_block", + "minecraft:lapis_block", + "minecraft:diamond_block", + "minecraft:emerald_block", + "minecraft:netherite_block", + "minecraft:smooth_quartz", + "minecraft:chiseled_quartz_block", + "minecraft:quartz_pillar", + "minecraft:quartz_block", + "minecraft:quartz_bricks", + "minecraft:slime_block", + "#minecraft:logs", + "#minecraft:logs", + "minecraft:warped_stem", + "minecraft:crimson_stem", + "minecraft:stripped_oak_log", + "minecraft:stripped_spruce_log", + "minecraft:stripped_birch_log", + "minecraft:stripped_jungle_log", + "minecraft:stripped_acacia_log", + "minecraft:stripped_dark_oak_log", + "minecraft:stripped_warped_stem", + "minecraft:stripped_crimson_stem", + "minecraft:oak_wood", + "minecraft:spruce_wood", + "minecraft:birch_wood", + "minecraft:jungle_wood", + "minecraft:acacia_wood", + "minecraft:dark_oak_wood", + "minecraft:warped_hyphae", + "minecraft:crimson_hyphae", + "minecraft:stripped_oak_wood", + "minecraft:stripped_spruce_wood", + "minecraft:stripped_birch_wood", + "minecraft:stripped_jungle_wood", + "minecraft:stripped_acacia_wood", + "minecraft:stripped_dark_oak_wood", + "minecraft:stripped_warped_hyphae", + "minecraft:stripped_crimson_hyphae", + "#minecraft:leaves", + "minecraft:sponge", + "minecraft:sandstone", + "minecraft:chiseled_sandstone", + "minecraft:cut_sandstone", + "minecraft:smooth_sandstone", + "minecraft:red_sandstone", + "minecraft:chiseled_red_sandstone", + "minecraft:cut_red_sandstone", + "minecraft:smooth_red_sandstone", + "minecraft:note_block", + "minecraft:rail", + "minecraft:powered_rail", + "minecraft:detector_rail", + "minecraft:activator_rail", + "minecraft:nether_bricks", + "minecraft:chiseled_nether_bricks", + "minecraft:cracked_nether_bricks", + "minecraft:red_nether_bricks", + "minecraft:netherrack", + "minecraft:warped_nylium", + "minecraft:crimson_nylium", + "minecraft:soul_sand", + "minecraft:soul_soil", + "minecraft:glowstone", + "minecraft:shroomlight", + "minecraft:bone_block", + "minecraft:nether_wart_block", + "minecraft:stone_bricks", + "minecraft:mossy_stone_bricks", + "minecraft:cracked_stone_bricks", + "minecraft:chiseled_stone_bricks", + "minecraft:end_stone", + "minecraft:end_stone_bricks", + "minecraft:purpur_block", + "minecraft:purpur_pillar", + "minecraft:purpur_slab", + "minecraft:white_wool", + "minecraft:orange_wool", + "minecraft:magenta_wool", + "minecraft:light_blue_wool", + "minecraft:yellow_wool", + "minecraft:lime_wool", + "minecraft:pink_wool", + "minecraft:gray_wool", + "minecraft:light_gray_wool", + "minecraft:cyan_wool", + "minecraft:purple_wool", + "minecraft:blue_wool", + "minecraft:brown_wool", + "minecraft:green_wool", + "minecraft:red_wool", + "minecraft:black_wool", + "minecraft:terracotta", + "minecraft:white_terracotta", + "minecraft:orange_terracotta", + "minecraft:magenta_terracotta", + "minecraft:light_blue_terracotta", + "minecraft:yellow_terracotta", + "minecraft:lime_terracotta", + "minecraft:pink_terracotta", + "minecraft:gray_terracotta", + "minecraft:light_gray_terracotta", + "minecraft:cyan_terracotta", + "minecraft:purple_terracotta", + "minecraft:blue_terracotta", + "minecraft:brown_terracotta", + "minecraft:green_terracotta", + "minecraft:red_terracotta", + "minecraft:black_terracotta", + "minecraft:glass", + "minecraft:diamond", + "minecraft:lapis_lazuli", + "minecraft:bone_meal", + "minecraft:coal", + "minecraft:iron_ingot", + "minecraft:gold_ingot", + "minecraft:gold_nugget", + "minecraft:netherite_ingot", + "minecraft:netherite_scrap", + "minecraft:emerald", + "minecraft:quartz", + "minecraft:wheat", + "minecraft:flint", + "minecraft:apple", + "minecraft:feather", + "minecraft:string", + "minecraft:gunpowder", + "minecraft:beef", + "minecraft:porkchop", + "minecraft:chicken", + "minecraft:bone", + "minecraft:leather", + "minecraft:spruce_log", + "minecraft:birch_log", + "minecraft:jungle_log", + "minecraft:dark_oak_log" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/tag_leggings.json b/src/main/resources/data/forge/tags/items/tag_leggings.json new file mode 100644 index 0000000..e606d07 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/tag_leggings.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "easysurvival:netherrack_armor_leggings", + "minecraft:leather_leggings", + "minecraft:chainmail_leggings", + "minecraft:iron_leggings", + "minecraft:golden_leggings", + "minecraft:diamond_leggings", + "minecraft:netherite_leggings" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/tag_log.json b/src/main/resources/data/forge/tags/items/tag_log.json new file mode 100644 index 0000000..a630f28 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/tag_log.json @@ -0,0 +1,26 @@ +{ + "replace": false, + "values": [ + "minecraft:oak_log", + "minecraft:spruce_log", + "minecraft:birch_log", + "minecraft:jungle_log", + "minecraft:acacia_log", + "minecraft:dark_oak_log", + "minecraft:warped_stem", + "minecraft:crimson_stem", + "minecraft:stripped_oak_log", + "minecraft:stripped_spruce_log", + "minecraft:stripped_birch_log", + "minecraft:stripped_jungle_log", + "minecraft:stripped_acacia_log", + "minecraft:stripped_dark_oak_log", + "minecraft:stripped_warped_stem", + "minecraft:stripped_crimson_stem", + "minecraft:dark_oak_wood", + "minecraft:mangrove_log", + "minecraft:cherry_log", + "minecraft:stripped_cherry_log", + "minecraft:stripped_mangrove_log" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/tag_stick.json b/src/main/resources/data/forge/tags/items/tag_stick.json new file mode 100644 index 0000000..32586bd --- /dev/null +++ b/src/main/resources/data/forge/tags/items/tag_stick.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "easysurvival:nether_stick", + "minecraft:stick" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json new file mode 100644 index 0000000..1402e11 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "easysurvival:easy_anvil", + "easysurvival:tree_crop", + "easysurvival:crop" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/tagsaplings.json b/src/main/resources/data/minecraft/tags/items/tagsaplings.json new file mode 100644 index 0000000..56ffddc --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/tagsaplings.json @@ -0,0 +1,17 @@ +{ + "replace": false, + "values": [ + "minecraft:oak_sapling", + "minecraft:spruce_sapling", + "minecraft:birch_sapling", + "minecraft:jungle_sapling", + "minecraft:acacia_sapling", + "minecraft:dark_oak_sapling", + "minecraft:cherry_sapling", + "minecraft:bamboo_sapling", + "minecraft:sugar_cane", + "minecraft:sugar_cane", + "minecraft:cactus", + "minecraft:mangrove_propagule" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/tagseeds.json b/src/main/resources/data/minecraft/tags/items/tagseeds.json new file mode 100644 index 0000000..6c76ef5 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/tagseeds.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "minecraft:wheat_seeds", + "minecraft:pumpkin_seeds", + "minecraft:torchflower_seeds", + "minecraft:melon_seeds", + "minecraft:beetroot_seeds", + "minecraft:carrot", + "minecraft:potato", + "minecraft:chorus_fruit" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/tagstone.json b/src/main/resources/data/minecraft/tags/items/tagstone.json new file mode 100644 index 0000000..1397c77 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/tagstone.json @@ -0,0 +1,23 @@ +{ + "replace": false, + "values": [ + "minecraft:stone", + "minecraft:granite", + "minecraft:diorite", + "minecraft:polished_diorite", + "minecraft:andesite", + "minecraft:polished_andesite", + "minecraft:smooth_stone", + "minecraft:deepslate", + "minecraft:cobbled_deepslate", + "minecraft:polished_deepslate", + "minecraft:deepslate_tiles", + "minecraft:deepslate_bricks", + "minecraft:calcite", + "minecraft:dripstone_block", + "minecraft:cobblestone", + "minecraft:mossy_cobblestone", + "minecraft:podzol", + "minecraft:cracked_deepslate_tiles" + ] +} \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..e690c7f --- /dev/null +++ b/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 15, + "description": "" + } +} \ No newline at end of file