diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..2d8f8e5
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,615 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1ebf95e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,22 @@
+# Gradle build system ignores
+.gradle/
+build/
+
+# Other IDE related folders
+.idea/
+.settings/
+
+# MCreator workspace cache
+.mcreator/
+
+# Minecraft client/server files
+run/
+
+# MCreator generator ignores (auto-regenerated)
+src/main/resources/assets/*/models/custom
+src/main/resources/assets/*/models/item
+src/main/resources/assets/*/textures/blocks
+src/main/resources/assets/*/textures/items
+src/main/resources/assets/*/textures/models/armor
+src/main/resources/assets/*/textures/*.png
+src/main/resources/assets/*/sounds
diff --git a/.project b/.project
new file mode 100644
index 0000000..b32ea59
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ nims_random_bullshit
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..f4a39f2
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,54 @@
+plugins {
+ id 'eclipse'
+ id 'net.minecraftforge.gradle' version '[6.0.16,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 {
+ def mcreatorJvmOptions = System.getenv('MCREATOR_JVM_OPTIONS')
+ if (mcreatorJvmOptions) {
+ jvmArgs += mcreatorJvmOptions.split("\\s+").findAll { it.trim() }.toList()
+ }
+ }
+
+ server {
+ }
+
+ configureEach {
+ 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.3.0'
+}
+
+tasks.withType(JavaCompile).configureEach {
+ options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
+}
+
+apply from: 'mcreator.gradle'
+
diff --git a/elements/BlockEater.mod.json b/elements/BlockEater.mod.json
new file mode 100644
index 0000000..ea38ece
--- /dev/null
+++ b/elements/BlockEater.mod.json
@@ -0,0 +1,62 @@
+{
+ "_fv": 73,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "block_eater",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Block Eater",
+ "rarity": "EPIC",
+ "creativeTabs": [
+ {
+ "value": "TOOLS"
+ }
+ ],
+ "stackSize": 1,
+ "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
+ },
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedOnBlock": {
+ "name": "BlockEaterRightclickedOnBlock"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "rangedItemChargesPower": false,
+ "projectile": {
+ "value": "Arrow"
+ },
+ "projectileDisableAmmoCheck": false,
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "block",
+ "isMusicDisc": false,
+ "musicDiscLengthInTicks": 0,
+ "musicDiscAnalogOutput": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/BlockEaterRecipe.mod.json b/elements/BlockEaterRecipe.mod.json
new file mode 100644
index 0000000..7d9328a
--- /dev/null
+++ b/elements/BlockEaterRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.SKULL#5"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BlockEater"
+ },
+ "name": "block_eater_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BlockEaterRightclickedOnBlock.mod.json b/elements/BlockEaterRightclickedOnBlock.mod.json
new file mode 100644
index 0000000..9818ce2
--- /dev/null
+++ b/elements/BlockEaterRightclickedOnBlock.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerNEQ-1ADD4GTE20ADD2entity.generic.eatplayer0.50.84END_ROD41110.4600"
+ }
+}
\ No newline at end of file
diff --git a/elements/BonemealRecipe.mod.json b/elements/BonemealRecipe.mod.json
new file mode 100644
index 0000000..a0e9828
--- /dev/null
+++ b/elements/BonemealRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 3,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:Shit"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "Items.DYE#15"
+ },
+ "name": "bonemeal_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BrokenGlass.mod.json b/elements/BrokenGlass.mod.json
new file mode 100644
index 0000000..6d43486
--- /dev/null
+++ b/elements/BrokenGlass.mod.json
@@ -0,0 +1,138 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "broken_glass",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "blockBase": "Pane",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": true,
+ "connectedSides": false,
+ "transparencyType": "TRANSLUCENT",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 16.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "customProperties": [],
+ "name": "Broken Glass",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 0.3,
+ "resistance": 0.3,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTabs": [
+ {
+ "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": "GLASS"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "GLASS"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "vanillaToolTier": "STONE",
+ "isBonemealable": false,
+ "hasInventory": false,
+ "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": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/BrokenGlassRecipe.mod.json b/elements/BrokenGlassRecipe.mod.json
new file mode 100644
index 0000000..9a74d27
--- /dev/null
+++ b/elements/BrokenGlassRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DYE#1"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.DYE#2"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.GLASS_PANE"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.DYE#18"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.DYE#11"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BrokenGlass"
+ },
+ "name": "broken_glass_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CondensedCondensedCondensedNetherrack.mod.json b/elements/CondensedCondensedCondensedNetherrack.mod.json
new file mode 100644
index 0000000..8c0ed94
--- /dev/null
+++ b/elements/CondensedCondensedCondensedNetherrack.mod.json
@@ -0,0 +1,137 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "condensed_condensed_condensed_netherrack",
+ "textureTop": "condensed_condensed_condensed_netherrack",
+ "textureLeft": "condensed_condensed_condensed_netherrack",
+ "textureFront": "condensed_condensed_condensed_netherrack",
+ "textureRight": "condensed_condensed_condensed_netherrack",
+ "textureBack": "condensed_condensed_condensed_netherrack",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "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
+ }
+ ],
+ "customProperties": [],
+ "name": "Condensed Condensed Condensed Netherrack",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 291.6,
+ "resistance": 291.6,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTabs": [
+ {
+ "value": "BUILDING_BLOCKS"
+ }
+ ],
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "NETHERRACK"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "vanillaToolTier": "NONE",
+ "isBonemealable": false,
+ "hasInventory": false,
+ "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": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/CondensedCondensedCondensedNetherrackRecipe.mod.json b/elements/CondensedCondensedCondensedNetherrackRecipe.mod.json
new file mode 100644
index 0000000..302a5a6
--- /dev/null
+++ b/elements/CondensedCondensedCondensedNetherrackRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ "name": "condensed_condensed_condensed_netherrack_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CondensedCondensedNetherrack.mod.json b/elements/CondensedCondensedNetherrack.mod.json
new file mode 100644
index 0000000..6d36953
--- /dev/null
+++ b/elements/CondensedCondensedNetherrack.mod.json
@@ -0,0 +1,137 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "condensed_condensed_netherrack_1",
+ "textureTop": "condensed_condensed_netherrack_1",
+ "textureLeft": "condensed_condensed_netherrack_1",
+ "textureFront": "condensed_condensed_netherrack_1",
+ "textureRight": "condensed_condensed_netherrack_1",
+ "textureBack": "condensed_condensed_netherrack_1",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "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
+ }
+ ],
+ "customProperties": [],
+ "name": "Condensed Condensed Netherrack",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 32.4,
+ "resistance": 32.4,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTabs": [
+ {
+ "value": "BUILDING_BLOCKS"
+ }
+ ],
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "NETHERRACK"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "vanillaToolTier": "NONE",
+ "isBonemealable": false,
+ "hasInventory": false,
+ "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": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/CondensedCondensedNetherrack2.mod.json b/elements/CondensedCondensedNetherrack2.mod.json
new file mode 100644
index 0000000..863a35c
--- /dev/null
+++ b/elements/CondensedCondensedNetherrack2.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 9,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ "name": "condensed_condensed_netherrack_2",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CondensedCondensedNetherrackRecipe.mod.json b/elements/CondensedCondensedNetherrackRecipe.mod.json
new file mode 100644
index 0000000..76a9791
--- /dev/null
+++ b/elements/CondensedCondensedNetherrackRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ "name": "condensed_condensed_netherrack_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CondensedNetherrack.mod.json b/elements/CondensedNetherrack.mod.json
new file mode 100644
index 0000000..9871857
--- /dev/null
+++ b/elements/CondensedNetherrack.mod.json
@@ -0,0 +1,137 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "condensed_netherrack_1",
+ "textureTop": "condensed_netherrack_1",
+ "textureLeft": "condensed_netherrack_1",
+ "textureFront": "condensed_netherrack_1",
+ "textureRight": "condensed_netherrack_1",
+ "textureBack": "condensed_netherrack_1",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "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
+ }
+ ],
+ "customProperties": [],
+ "name": "Condensed Netherrack",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 3.6,
+ "resistance": 3.6,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTabs": [
+ {
+ "value": "BUILDING_BLOCKS"
+ }
+ ],
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "NETHERRACK"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "vanillaToolTier": "NONE",
+ "isBonemealable": false,
+ "hasInventory": false,
+ "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": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/CondensedNetherrackRecipe.mod.json b/elements/CondensedNetherrackRecipe.mod.json
new file mode 100644
index 0000000..4a747f2
--- /dev/null
+++ b/elements/CondensedNetherrackRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Blocks.NETHERRACK"
+ },
+ {
+ "value": "Blocks.NETHERRACK"
+ },
+ {
+ "value": "Blocks.NETHERRACK"
+ },
+ {
+ "value": "Blocks.NETHERRACK"
+ },
+ {
+ "value": "Blocks.NETHERRACK"
+ },
+ {
+ "value": "Blocks.NETHERRACK"
+ },
+ {
+ "value": "Blocks.NETHERRACK"
+ },
+ {
+ "value": "Blocks.NETHERRACK"
+ },
+ {
+ "value": "Blocks.NETHERRACK"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ "name": "condensed_netherrack_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CondensedNetherrackRecipe2.mod.json b/elements/CondensedNetherrackRecipe2.mod.json
new file mode 100644
index 0000000..7ba990a
--- /dev/null
+++ b/elements/CondensedNetherrackRecipe2.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 9,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:CondensedCondensedNetherrack"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ "name": "condensed_netherrack_recipe_2",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Ghoul.mod.json b/elements/Ghoul.mod.json
new file mode 100644
index 0000000..a40ce78
--- /dev/null
+++ b/elements/Ghoul.mod.json
@@ -0,0 +1,160 @@
+{
+ "_fv": 73,
+ "_type": "livingentity",
+ "definition": {
+ "mobName": "Ghoul",
+ "mobLabel": "",
+ "mobModelName": "Biped",
+ "mobModelTexture": "ghoul.png",
+ "transparentModelCondition": {
+ "fixedValue": false
+ },
+ "isShakingCondition": {
+ "fixedValue": false
+ },
+ "solidBoundingBox": {
+ "fixedValue": false
+ },
+ "visualScale": {
+ "fixedValue": 0.5
+ },
+ "boundingBoxScale": {
+ "fixedValue": 0.5
+ },
+ "modelLayers": [],
+ "animations": [],
+ "modelWidth": 0.6,
+ "modelHeight": 1.8,
+ "modelShadowSize": 0.25,
+ "mountedYOffset": 0.0,
+ "hasSpawnEgg": true,
+ "spawnEggBaseColor": {
+ "value": -16777216,
+ "falpha": 0.0
+ },
+ "spawnEggDotColor": {
+ "value": -13421773,
+ "falpha": 0.0
+ },
+ "creativeTabs": [
+ {
+ "value": "MISC"
+ }
+ ],
+ "isBoss": false,
+ "bossBarColor": "PINK",
+ "bossBarType": "PROGRESS",
+ "equipmentMainHand": {
+ "value": ""
+ },
+ "equipmentOffHand": {
+ "value": ""
+ },
+ "equipmentHelmet": {
+ "value": ""
+ },
+ "equipmentBody": {
+ "value": ""
+ },
+ "equipmentLeggings": {
+ "value": ""
+ },
+ "equipmentBoots": {
+ "value": ""
+ },
+ "mobBehaviourType": "Mob",
+ "mobCreatureType": "UNDEAD",
+ "attackStrength": 3,
+ "attackKnockback": 0.0,
+ "knockbackResistance": 0.0,
+ "movementSpeed": 0.36,
+ "stepHeight": 0.6,
+ "armorBaseValue": 0.0,
+ "trackingRange": 64,
+ "followRange": 19,
+ "health": 9,
+ "xpAmount": 0,
+ "waterMob": false,
+ "breatheUnderwater": {
+ "fixedValue": false
+ },
+ "pushedByFluids": {
+ "fixedValue": true
+ },
+ "flyingMob": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "disableCollisions": false,
+ "ridable": false,
+ "canControlForward": false,
+ "canControlStrafe": false,
+ "immuneToFire": true,
+ "immuneToArrows": false,
+ "immuneToFallDamage": true,
+ "immuneToCactus": true,
+ "immuneToDrowning": true,
+ "immuneToLightning": false,
+ "immuneToPotions": false,
+ "immuneToPlayer": false,
+ "immuneToExplosion": false,
+ "immuneToTrident": false,
+ "immuneToAnvil": false,
+ "immuneToWither": true,
+ "immuneToDragonBreath": false,
+ "mobDrop": {
+ "value": ""
+ },
+ "livingSound": {
+ "value": "entity.wither_skeleton.ambient"
+ },
+ "hurtSound": {
+ "value": "entity.wither_skeleton.hurt"
+ },
+ "deathSound": {
+ "value": "entity.wither_skeleton.death"
+ },
+ "stepSound": {
+ "value": "entity.wither_skeleton.step"
+ },
+ "raidCelebrationSound": {
+ "value": ""
+ },
+ "entityDataEntries": [],
+ "whenThisMobKillsAnother": {
+ "name": "GhoulThisEntityKillsAnotherOne"
+ },
+ "onInitialSpawn": {
+ "name": "GhoulOnInitialEntitySpawn"
+ },
+ "hasAI": true,
+ "aiBase": "(none)",
+ "aixml": "FALSETRUEEntityZombienull,nullFALSETRUEEntityZombieVillagernull,nullFALSETRUEEntityCreepernull,nullFALSETRUEEntityEndermannull,nullFALSETRUEEntitySpidernull,nullFALSETRUEEntityCaveSpidernull,nullFALSETRUEEntityPillagernull,nullFALSETRUEEntitySkeletonnull,null1.2FALSEnull,nullFALSEnull,null1null,nullnull,null",
+ "breedable": false,
+ "tameable": false,
+ "breedTriggerItems": [],
+ "ranged": false,
+ "rangedAttackItem": {
+ "value": ""
+ },
+ "rangedItemType": "Default item",
+ "rangedAttackInterval": 20,
+ "rangedAttackRadius": 10.0,
+ "spawnThisMob": false,
+ "doesDespawnWhenIdle": false,
+ "spawningProbability": 20,
+ "mobSpawningType": "monster",
+ "minNumberOfMobsPerGroup": 1,
+ "maxNumberOfMobsPerGroup": 4,
+ "restrictionBiomes": [],
+ "spawnInDungeons": false,
+ "raidSpawnsCount": [
+ 4,
+ 3,
+ 3,
+ 4,
+ 4,
+ 4,
+ 2
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/GhoulOnInitialEntitySpawn.mod.json b/elements/GhoulOnInitialEntitySpawn.mod.json
new file mode 100644
index 0000000..8f0ee61
--- /dev/null
+++ b/elements/GhoulOnInitialEntitySpawn.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerCUSTOM:SummonedEntityEffect1200FALSEFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/GhoulThisEntityKillsAnotherOne.mod.json b/elements/GhoulThisEntityKillsAnotherOne.mod.json
new file mode 100644
index 0000000..e0b19c3
--- /dev/null
+++ b/elements/GhoulThisEntityKillsAnotherOne.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerCUSTOM:Ghoul00000"
+ }
+}
\ No newline at end of file
diff --git a/elements/GoldenBerries.mod.json b/elements/GoldenBerries.mod.json
new file mode 100644
index 0000000..f5e7c2c
--- /dev/null
+++ b/elements/GoldenBerries.mod.json
@@ -0,0 +1,63 @@
+{
+ "_fv": 73,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "golden_berries",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Golden Berries",
+ "rarity": "UNCOMMON",
+ "creativeTabs": [
+ {
+ "value": "FOOD"
+ }
+ ],
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 24,
+ "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
+ },
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "rangedItemChargesPower": false,
+ "projectile": {
+ "value": "CUSTOM:ShitProjectile"
+ },
+ "projectileDisableAmmoCheck": false,
+ "isFood": true,
+ "nutritionalValue": 4,
+ "saturation": 12.0,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "eat",
+ "isMusicDisc": false,
+ "musicDiscMusic": {
+ "value": ""
+ },
+ "musicDiscDescription": "",
+ "musicDiscLengthInTicks": 100,
+ "musicDiscAnalogOutput": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/GoldenBerriesRecipe.mod.json b/elements/GoldenBerriesRecipe.mod.json
new file mode 100644
index 0000000..80ae827
--- /dev/null
+++ b/elements/GoldenBerriesRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.GOLD_NUGGET"
+ },
+ {
+ "value": "Items.GOLD_NUGGET"
+ },
+ {
+ "value": "Items.GOLD_NUGGET"
+ },
+ {
+ "value": "Items.GOLD_NUGGET"
+ },
+ {
+ "value": "Items.SWEET_BERRIES"
+ },
+ {
+ "value": "Items.GOLD_NUGGET"
+ },
+ {
+ "value": "Items.GOLD_NUGGET"
+ },
+ {
+ "value": "Items.GOLD_NUGGET"
+ },
+ {
+ "value": "Items.GOLD_NUGGET"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:GoldenBerries"
+ },
+ "name": "golden_berries_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Gravedigger.mod.json b/elements/Gravedigger.mod.json
new file mode 100644
index 0000000..048cc3f
--- /dev/null
+++ b/elements/Gravedigger.mod.json
@@ -0,0 +1,45 @@
+{
+ "_fv": 73,
+ "_type": "tool",
+ "definition": {
+ "toolType": "Spade",
+ "renderType": 0,
+ "blockingRenderType": 0,
+ "texture": "gravedigger",
+ "customModelName": "Normal",
+ "blockingModelName": "Normal blocking",
+ "name": "Gravedigger",
+ "specialInformation": {
+ "fixedValue": [
+ "Right-Click on soul sand or soul soil to use them, summoning a ghoul that attacks hostile mobs.",
+ "We must dig!"
+ ]
+ },
+ "creativeTabs": [
+ {
+ "value": "TOOLS"
+ }
+ ],
+ "efficiency": 4.0,
+ "attackSpeed": 1.0,
+ "enchantability": 2,
+ "damageVsEntity": 4.0,
+ "usageCount": 3666,
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "repairItems": [
+ {
+ "value": "Items.SKULL#1"
+ }
+ ],
+ "immuneToFire": true,
+ "blockDropsTier": "STONE",
+ "blocksAffected": [],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "onRightClickedOnBlock": {
+ "name": "GravediggerRightclickedOnBlock"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/GravediggerRecipe.mod.json b/elements/GravediggerRecipe.mod.json
new file mode 100644
index 0000000..cfb6110
--- /dev/null
+++ b/elements/GravediggerRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.SKULL#1"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.GHAST_TEAR"
+ },
+ {
+ "value": "Items.BONE"
+ },
+ {
+ "value": "Items.GHAST_TEAR"
+ },
+ {
+ "value": "Items.GHAST_TEAR"
+ },
+ {
+ "value": "Items.BONE"
+ },
+ {
+ "value": "Items.GHAST_TEAR"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Gravedigger"
+ },
+ "name": "gravedigger_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/GravediggerRightclickedOnBlock.mod.json b/elements/GravediggerRightclickedOnBlock.mod.json
new file mode 100644
index 0000000..f69d861
--- /dev/null
+++ b/elements/GravediggerRightclickedOnBlock.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerORBlocks.SOUL_SANDBlocks.SOUL_SOIL16entity.blaze.ambienthostile0.70.60.7CUSTOM:Ghoul00000"
+ }
+}
\ No newline at end of file
diff --git a/elements/HexaCondensedNetherrack.mod.json b/elements/HexaCondensedNetherrack.mod.json
new file mode 100644
index 0000000..4cd8789
--- /dev/null
+++ b/elements/HexaCondensedNetherrack.mod.json
@@ -0,0 +1,137 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "hexa-condensed_netherrack",
+ "textureTop": "hexa-condensed_netherrack",
+ "textureLeft": "hexa-condensed_netherrack",
+ "textureFront": "hexa-condensed_netherrack",
+ "textureRight": "hexa-condensed_netherrack",
+ "textureBack": "hexa-condensed_netherrack",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "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
+ }
+ ],
+ "customProperties": [],
+ "name": "Hexa-condensed Netherrack",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 64000.0,
+ "resistance": 64000.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTabs": [
+ {
+ "value": "BUILDING_BLOCKS"
+ }
+ ],
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "NETHERRACK"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "vanillaToolTier": "NONE",
+ "isBonemealable": false,
+ "hasInventory": false,
+ "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": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/HexaCondensedNetherrackRecipe.mod.json b/elements/HexaCondensedNetherrackRecipe.mod.json
new file mode 100644
index 0000000..34c3aeb
--- /dev/null
+++ b/elements/HexaCondensedNetherrackRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:HexaCondensedNetherrack"
+ },
+ "name": "hexa_condensed_netherrack_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/HexaCondensedNetherrackRecipe2.mod.json b/elements/HexaCondensedNetherrackRecipe2.mod.json
new file mode 100644
index 0000000..7042cfd
--- /dev/null
+++ b/elements/HexaCondensedNetherrackRecipe2.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 9,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:HexaCondensedNetherrack"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ "name": "hexa_condensed_netherrack_recipe_2",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/LapisLazuliNugget.mod.json b/elements/LapisLazuliNugget.mod.json
new file mode 100644
index 0000000..35258fb
--- /dev/null
+++ b/elements/LapisLazuliNugget.mod.json
@@ -0,0 +1,63 @@
+{
+ "_fv": 73,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "lapis_lazuli_nugget",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Lapis Lazuli Nugget",
+ "rarity": "COMMON",
+ "creativeTabs": [
+ {
+ "value": "MATERIALS"
+ }
+ ],
+ "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
+ },
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "rangedItemChargesPower": false,
+ "projectile": {
+ "value": "Arrow"
+ },
+ "projectileDisableAmmoCheck": false,
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "isMusicDisc": false,
+ "musicDiscMusic": {
+ "value": ""
+ },
+ "musicDiscDescription": "",
+ "musicDiscLengthInTicks": 100,
+ "musicDiscAnalogOutput": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/LapisLazuliNuggetRecipe.mod.json b/elements/LapisLazuliNuggetRecipe.mod.json
new file mode 100644
index 0000000..9995903
--- /dev/null
+++ b/elements/LapisLazuliNuggetRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 9,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ "name": "lapis_lazuli_nugget_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/LapisLazuliRecipe.mod.json b/elements/LapisLazuliRecipe.mod.json
new file mode 100644
index 0000000..6a0c3ba
--- /dev/null
+++ b/elements/LapisLazuliRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "Items.DYE#4"
+ },
+ "name": "lapis_lazuli_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/MagicDust.mod.json b/elements/MagicDust.mod.json
new file mode 100644
index 0000000..2eb7fc1
--- /dev/null
+++ b/elements/MagicDust.mod.json
@@ -0,0 +1,63 @@
+{
+ "_fv": 73,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "magic_dust",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Magic Dust",
+ "rarity": "UNCOMMON",
+ "creativeTabs": [
+ {
+ "value": "MATERIALS"
+ }
+ ],
+ "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
+ },
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "rangedItemChargesPower": false,
+ "projectile": {
+ "value": "Arrow"
+ },
+ "projectileDisableAmmoCheck": false,
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "isMusicDisc": false,
+ "musicDiscMusic": {
+ "value": ""
+ },
+ "musicDiscDescription": "",
+ "musicDiscLengthInTicks": 100,
+ "musicDiscAnalogOutput": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/MagicDustRecipe.mod.json b/elements/MagicDustRecipe.mod.json
new file mode 100644
index 0000000..1e71293
--- /dev/null
+++ b/elements/MagicDustRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:SandDust"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ },
+ {
+ "value": "CUSTOM:LapisLazuliNugget"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:MagicDust"
+ },
+ "name": "magic_dust_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/MagicFlesh.mod.json b/elements/MagicFlesh.mod.json
new file mode 100644
index 0000000..f945160
--- /dev/null
+++ b/elements/MagicFlesh.mod.json
@@ -0,0 +1,66 @@
+{
+ "_fv": 73,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "magic_flesh",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Magic Flesh",
+ "rarity": "UNCOMMON",
+ "creativeTabs": [
+ {
+ "value": "FOOD"
+ }
+ ],
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 12,
+ "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
+ },
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onFinishUsingItem": {
+ "name": "MagicFleshOnPlayerStoppedUsing"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "rangedItemChargesPower": false,
+ "projectile": {
+ "value": "Arrow"
+ },
+ "projectileDisableAmmoCheck": false,
+ "isFood": true,
+ "nutritionalValue": 4,
+ "saturation": 0.2,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": true,
+ "animation": "eat",
+ "isMusicDisc": false,
+ "musicDiscMusic": {
+ "value": ""
+ },
+ "musicDiscDescription": "",
+ "musicDiscLengthInTicks": 100,
+ "musicDiscAnalogOutput": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/MagicFleshOnPlayerStoppedUsing.mod.json b/elements/MagicFleshOnPlayerStoppedUsing.mod.json
new file mode 100644
index 0000000..97912cf
--- /dev/null
+++ b/elements/MagicFleshOnPlayerStoppedUsing.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger69"
+ }
+}
\ No newline at end of file
diff --git a/elements/MagicFleshRecipe.mod.json b/elements/MagicFleshRecipe.mod.json
new file mode 100644
index 0000000..680b89c
--- /dev/null
+++ b/elements/MagicFleshRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "Items.ROTTEN_FLESH"
+ },
+ {
+ "value": "CUSTOM:MagicDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:MagicFlesh"
+ },
+ "name": "magic_flesh_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetherrackRecipe.mod.json b/elements/NetherrackRecipe.mod.json
new file mode 100644
index 0000000..bbc1e1f
--- /dev/null
+++ b/elements/NetherrackRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 9,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:CondensedNetherrack"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "Blocks.NETHERRACK"
+ },
+ "name": "netherrack_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetherrackingEnchantment.mod.json b/elements/NetherrackingEnchantment.mod.json
new file mode 100644
index 0000000..dc1f430
--- /dev/null
+++ b/elements/NetherrackingEnchantment.mod.json
@@ -0,0 +1,26 @@
+{
+ "_fv": 73,
+ "_type": "enchantment",
+ "definition": {
+ "name": "Netherracking",
+ "supportedSlots": "mainhand",
+ "weight": 2,
+ "anvilCost": 4,
+ "maxLevel": 20,
+ "damageModifier": 0,
+ "incompatibleEnchantments": [
+ {
+ "value": "EFFICIENCY"
+ }
+ ],
+ "supportedItems": [
+ {
+ "value": "CUSTOM:NetherrackitePickaxe"
+ }
+ ],
+ "isTreasureEnchantment": false,
+ "isCurse": false,
+ "canGenerateInLootTables": true,
+ "canVillagerTrade": true
+ }
+}
\ No newline at end of file
diff --git a/elements/NetherrackingLogic.mod.json b/elements/NetherrackingLogic.mod.json
new file mode 100644
index 0000000..66a90e2
--- /dev/null
+++ b/elements/NetherrackingLogic.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGTCUSTOM:NetherrackingEnchantment0HASTEMULTIPLYCUSTOM:NetherrackingEnchantment42FALSEFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Netherrackite.mod.json b/elements/Netherrackite.mod.json
new file mode 100644
index 0000000..f08a2e5
--- /dev/null
+++ b/elements/Netherrackite.mod.json
@@ -0,0 +1,59 @@
+{
+ "_fv": 73,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "netherrackite",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Netherrackite",
+ "rarity": "RARE",
+ "creativeTabs": [
+ {
+ "value": "MATERIALS"
+ }
+ ],
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": true,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "rangedItemChargesPower": false,
+ "projectile": {
+ "value": "Arrow"
+ },
+ "projectileDisableAmmoCheck": false,
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "isMusicDisc": false,
+ "musicDiscLengthInTicks": 0,
+ "musicDiscAnalogOutput": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/NetherrackitePickaxe.mod.json b/elements/NetherrackitePickaxe.mod.json
new file mode 100644
index 0000000..2fe933e
--- /dev/null
+++ b/elements/NetherrackitePickaxe.mod.json
@@ -0,0 +1,43 @@
+{
+ "_fv": 73,
+ "_type": "tool",
+ "definition": {
+ "toolType": "Pickaxe",
+ "renderType": 0,
+ "blockingRenderType": 0,
+ "texture": "netherrackite_pickaxe",
+ "customModelName": "Normal",
+ "blockingModelName": "Normal blocking",
+ "name": "Netherrackite Pickaxe",
+ "specialInformation": {
+ "fixedValue": [
+ "Non-condensed netherracks broken by this pickaxe drop themselves an additional time."
+ ]
+ },
+ "creativeTabs": [
+ {
+ "value": "TOOLS"
+ }
+ ],
+ "efficiency": 729.0,
+ "attackSpeed": 1.0,
+ "enchantability": 15,
+ "damageVsEntity": 4.0,
+ "usageCount": 18279,
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "repairItems": [],
+ "immuneToFire": true,
+ "blockDropsTier": "WOOD",
+ "blocksAffected": [],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "onItemInUseTick": {
+ "name": "NetherrackingLogic"
+ },
+ "onBlockDestroyedWithTool": {
+ "name": "NetherrackitePickaxeBlockDestroyedWithTool"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/NetherrackitePickaxeBlockDestroyedWithTool.mod.json b/elements/NetherrackitePickaxeBlockDestroyedWithTool.mod.json
new file mode 100644
index 0000000..52e03e1
--- /dev/null
+++ b/elements/NetherrackitePickaxeBlockDestroyedWithTool.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerBlocks.NETHERRACKTRUEBlocks.NETHERRACK10"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetherrackitePickaxeRecipe.mod.json b/elements/NetherrackitePickaxeRecipe.mod.json
new file mode 100644
index 0000000..3caccad
--- /dev/null
+++ b/elements/NetherrackitePickaxeRecipe.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "Items.NETHERITE_PICKAXE"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:Netherrackite"
+ },
+ "smithingInputTemplateStack": {
+ "value": ""
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:NetherrackitePickaxe"
+ },
+ "name": "netherrackite_pickaxe_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetherrackiteRecipe.mod.json b/elements/NetherrackiteRecipe.mod.json
new file mode 100644
index 0000000..fac558d
--- /dev/null
+++ b/elements/NetherrackiteRecipe.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ "smithingInputTemplateStack": {
+ "value": ""
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Netherrackite"
+ },
+ "name": "netherrackite_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetherriteTemplateRecipe.mod.json b/elements/NetherriteTemplateRecipe.mod.json
new file mode 100644
index 0000000..558be7c
--- /dev/null
+++ b/elements/NetherriteTemplateRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.NETHERITE_SCRAP"
+ },
+ {
+ "value": "Items.NETHERITE_SCRAP"
+ },
+ {
+ "value": "Items.NETHERITE_SCRAP"
+ },
+ {
+ "value": "Items.NETHERITE_SCRAP"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.NETHERITE_SCRAP"
+ },
+ {
+ "value": "Items.NETHERITE_SCRAP"
+ },
+ {
+ "value": "Items.NETHERITE_SCRAP"
+ },
+ {
+ "value": "Items.NETHERITE_SCRAP"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "Items.NETHERITE_UPGRADE"
+ },
+ "name": "netherrite_template_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetherriteTemplateRecipe2.mod.json b/elements/NetherriteTemplateRecipe2.mod.json
new file mode 100644
index 0000000..314ced6
--- /dev/null
+++ b/elements/NetherriteTemplateRecipe2.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.DIAMOND"
+ },
+ "smithingInputTemplateStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingReturnStack": {
+ "value": "Items.NETHERITE_UPGRADE"
+ },
+ "name": "netherrite_template_recipe_2",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/OreMiner.mod.json b/elements/OreMiner.mod.json
new file mode 100644
index 0000000..0a8a720
--- /dev/null
+++ b/elements/OreMiner.mod.json
@@ -0,0 +1,147 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "ore_miner_bottom",
+ "textureTop": "ore_miner_top_180",
+ "textureLeft": "ore_miner_side",
+ "textureFront": "ore_miner_side",
+ "textureRight": "ore_miner_side",
+ "textureBack": "ore_miner_side",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 1,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "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
+ }
+ ],
+ "customProperties": [],
+ "name": "Ore Miner",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 1.0,
+ "resistance": 100.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTabs": [
+ {
+ "value": "TRANSPORTATION"
+ }
+ ],
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "NONE"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "STONE"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "vanillaToolTier": "NONE",
+ "isBonemealable": false,
+ "hasInventory": true,
+ "guiBoundTo": "OreMinerGUI",
+ "openGUIOnRightClick": true,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/OreMinerGUI.mod.json b/elements/OreMinerGUI.mod.json
new file mode 100644
index 0000000..faacfea
--- /dev/null
+++ b/elements/OreMinerGUI.mod.json
@@ -0,0 +1,206 @@
+{
+ "_fv": 73,
+ "_type": "gui",
+ "definition": {
+ "type": 1,
+ "width": 176,
+ "height": 166,
+ "inventoryOffsetX": 0,
+ "inventoryOffsetY": 0,
+ "renderBgLayer": true,
+ "doesPauseGame": false,
+ "components": [
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": "Items.DIAMOND_PICKAXE"
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 0,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 156,
+ "y": 53,
+ "locked": false
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_mine",
+ "text": "Mine",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "OreMinerMineButtonPressed"
+ },
+ "width": 46,
+ "height": 20,
+ "x": 141,
+ "y": 80,
+ "locked": false
+ }
+ },
+ {
+ "type": "image",
+ "data": {
+ "image": "diamond_pickaxe_blueprint.png",
+ "use1Xscale": false,
+ "displayCondition": {
+ "name": "OreMinerGUISlot0ImageDisplayCondition"
+ },
+ "x": 157,
+ "y": 54,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "color": {
+ "value": -16777216,
+ "falpha": 0.0
+ },
+ "id": 1,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 204,
+ "y": 53,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "color": {
+ "value": -26266,
+ "falpha": 0.0
+ },
+ "id": 2,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 222,
+ "y": 53,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "color": {
+ "value": -3355393,
+ "falpha": 0.0
+ },
+ "id": 3,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 240,
+ "y": 53,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "color": {
+ "value": -2838729,
+ "falpha": 0.0
+ },
+ "id": 4,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 258,
+ "y": 53,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "color": {
+ "value": -10027009,
+ "falpha": 0.0
+ },
+ "id": 5,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 204,
+ "y": 71,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "color": {
+ "value": -10027162,
+ "falpha": 0.0
+ },
+ "id": 6,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 222,
+ "y": 71,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "color": {
+ "value": -52429,
+ "falpha": 0.0
+ },
+ "id": 7,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 240,
+ "y": 71,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "color": {
+ "value": -13434880,
+ "falpha": 0.0
+ },
+ "id": 8,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 258,
+ "y": 71,
+ "locked": false
+ }
+ }
+ ],
+ "gridSettings": {
+ "sx": 18,
+ "sy": 18,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/OreMinerGUISlot0ImageDisplayCondition.mod.json b/elements/OreMinerGUISlot0ImageDisplayCondition.mod.json
new file mode 100644
index 0000000..a6024d2
--- /dev/null
+++ b/elements/OreMinerGUISlot0ImageDisplayCondition.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGT00FALSETRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/OreMinerMineButtonPressed.mod.json b/elements/OreMinerMineButtonPressed.mod.json
new file mode 100644
index 0000000..b60cde3
--- /dev/null
+++ b/elements/OreMinerMineButtonPressed.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "oreMinerRollno_ext_trigger0Items.DIAMOND_PICKAXEblock.stone.breakblock0.80.91.110local:oreMinerRollRANDOMLTlocal:oreMinerRoll0.125ADD113Items.COAL#01LTlocal:oreMinerRoll0.25ADD224Items.RAW_COPPER2LTlocal:oreMinerRoll0.375ADD31Items.RAW_IRON3LTlocal:oreMinerRoll0.5ADD41Items.RAW_GOLD4LTlocal:oreMinerRoll0.625ADD512Items.DIAMOND5LTlocal:oreMinerRoll0.75ADD612Items.EMERALD6LTlocal:oreMinerRoll0.875ADD736Items.REDSTONE7ADD81Items.NETHERITE_SCRAP8"
+ }
+}
\ No newline at end of file
diff --git a/elements/OreMinerRecipe.mod.json b/elements/OreMinerRecipe.mod.json
new file mode 100644
index 0000000..cd0499e
--- /dev/null
+++ b/elements/OreMinerRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "Items.COAL#0"
+ },
+ {
+ "value": "Items.RAW_COPPER"
+ },
+ {
+ "value": "Items.RAW_IRON"
+ },
+ {
+ "value": "Items.NETHERITE_SCRAP"
+ },
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": "Items.RAW_GOLD"
+ },
+ {
+ "value": "Items.REDSTONE"
+ },
+ {
+ "value": "Items.EMERALD"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:OreMiner"
+ },
+ "name": "ore_miner_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/PassiveIncomeEnchantment.mod.json b/elements/PassiveIncomeEnchantment.mod.json
new file mode 100644
index 0000000..8b739d7
--- /dev/null
+++ b/elements/PassiveIncomeEnchantment.mod.json
@@ -0,0 +1,22 @@
+{
+ "_fv": 73,
+ "_type": "enchantment",
+ "definition": {
+ "name": "Passive Income",
+ "supportedSlots": "armor",
+ "weight": 1,
+ "anvilCost": 8,
+ "maxLevel": 5,
+ "damageModifier": 0,
+ "incompatibleEnchantments": [],
+ "supportedItems": [
+ {
+ "value": "TAG:enchantable/equippable"
+ }
+ ],
+ "isTreasureEnchantment": true,
+ "isCurse": false,
+ "canGenerateInLootTables": true,
+ "canVillagerTrade": true
+ }
+}
\ No newline at end of file
diff --git a/elements/PassiveIncomeProcedure.mod.json b/elements/PassiveIncomeProcedure.mod.json
new file mode 100644
index 0000000..6d037cc
--- /dev/null
+++ b/elements/PassiveIncomeProcedure.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksPassiveIncomeCounterADDPassiveIncomeCounter1EQMODPassiveIncomeCounter800GTCUSTOM:PassiveIncomeEnchantment00CUSTOM:PassiveIncomeEnchantment0GTCUSTOM:PassiveIncomeEnchantment10CUSTOM:PassiveIncomeEnchantment1GTCUSTOM:PassiveIncomeEnchantment20CUSTOM:PassiveIncomeEnchantment2GTCUSTOM:PassiveIncomeEnchantment30CUSTOM:PassiveIncomeEnchantment3"
+ }
+}
\ No newline at end of file
diff --git a/elements/PentaCondensedNetherrack.mod.json b/elements/PentaCondensedNetherrack.mod.json
new file mode 100644
index 0000000..098f28a
--- /dev/null
+++ b/elements/PentaCondensedNetherrack.mod.json
@@ -0,0 +1,137 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "penta-condensed_netherrack",
+ "textureTop": "penta-condensed_netherrack",
+ "textureLeft": "penta-condensed_netherrack",
+ "textureFront": "penta-condensed_netherrack",
+ "textureRight": "penta-condensed_netherrack",
+ "textureBack": "penta-condensed_netherrack",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "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
+ }
+ ],
+ "customProperties": [],
+ "name": "Penta-condensed Netherrack",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 23619.6,
+ "resistance": 23619.6,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTabs": [
+ {
+ "value": "BUILDING_BLOCKS"
+ }
+ ],
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "NETHERRACK"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "vanillaToolTier": "NONE",
+ "isBonemealable": false,
+ "hasInventory": false,
+ "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": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/PentaCondensedNetherrackRecipe.mod.json b/elements/PentaCondensedNetherrackRecipe.mod.json
new file mode 100644
index 0000000..5d08680
--- /dev/null
+++ b/elements/PentaCondensedNetherrackRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ "name": "penta_condensed_netherrack_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/PentaCondensedNetherrackRecipe2.mod.json b/elements/PentaCondensedNetherrackRecipe2.mod.json
new file mode 100644
index 0000000..2cd0cbb
--- /dev/null
+++ b/elements/PentaCondensedNetherrackRecipe2.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 9,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:PentaCondensedNetherrack"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ "name": "penta_condensed_netherrack_recipe_2",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/QuadraCondensedNetherrack.mod.json b/elements/QuadraCondensedNetherrack.mod.json
new file mode 100644
index 0000000..1f4107a
--- /dev/null
+++ b/elements/QuadraCondensedNetherrack.mod.json
@@ -0,0 +1,137 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "quadra-condensed_netherrack",
+ "textureTop": "quadra-condensed_netherrack",
+ "textureLeft": "quadra-condensed_netherrack",
+ "textureFront": "quadra-condensed_netherrack",
+ "textureRight": "quadra-condensed_netherrack",
+ "textureBack": "quadra-condensed_netherrack",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "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
+ }
+ ],
+ "customProperties": [],
+ "name": "Quadra-condensed Netherrack",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 2624.4,
+ "resistance": 2624.4,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTabs": [
+ {
+ "value": "BUILDING_BLOCKS"
+ }
+ ],
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "NETHERRACK"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "vanillaToolTier": "NONE",
+ "isBonemealable": false,
+ "hasInventory": false,
+ "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": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/QuadraCondensedNetherrackRecipe.mod.json b/elements/QuadraCondensedNetherrackRecipe.mod.json
new file mode 100644
index 0000000..c3d9b26
--- /dev/null
+++ b/elements/QuadraCondensedNetherrackRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ "name": "quadra_condensed_netherrack_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/QuadraCondensedNetherrackRecipe2.mod.json b/elements/QuadraCondensedNetherrackRecipe2.mod.json
new file mode 100644
index 0000000..e97d6c7
--- /dev/null
+++ b/elements/QuadraCondensedNetherrackRecipe2.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 9,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:QuadraCondensedNetherrack"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CondensedCondensedCondensedNetherrack"
+ },
+ "name": "quadra_condensed_netherrack_recipe_2",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SandDust.mod.json b/elements/SandDust.mod.json
new file mode 100644
index 0000000..ff373e1
--- /dev/null
+++ b/elements/SandDust.mod.json
@@ -0,0 +1,63 @@
+{
+ "_fv": 73,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "sand_dust",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Sand Dust",
+ "rarity": "COMMON",
+ "creativeTabs": [
+ {
+ "value": "MATERIALS"
+ }
+ ],
+ "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
+ },
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "rangedItemChargesPower": false,
+ "projectile": {
+ "value": "Arrow"
+ },
+ "projectileDisableAmmoCheck": false,
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "isMusicDisc": false,
+ "musicDiscMusic": {
+ "value": ""
+ },
+ "musicDiscDescription": "",
+ "musicDiscLengthInTicks": 100,
+ "musicDiscAnalogOutput": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/SandDustRecipe.mod.json b/elements/SandDustRecipe.mod.json
new file mode 100644
index 0000000..987d6a2
--- /dev/null
+++ b/elements/SandDustRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 4,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.SAND#0"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SandDust"
+ },
+ "name": "sand_dust_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SandRecipe.mod.json b/elements/SandRecipe.mod.json
new file mode 100644
index 0000000..d554a52
--- /dev/null
+++ b/elements/SandRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SandDust"
+ },
+ {
+ "value": "CUSTOM:SandDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SandDust"
+ },
+ {
+ "value": "CUSTOM:SandDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "Blocks.SAND#0"
+ },
+ "name": "sand_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Shit.mod.json b/elements/Shit.mod.json
new file mode 100644
index 0000000..73f1b14
--- /dev/null
+++ b/elements/Shit.mod.json
@@ -0,0 +1,63 @@
+{
+ "_fv": 73,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "shit",
+ "customModelName": "Ranged item",
+ "customProperties": {},
+ "states": [],
+ "name": "Shit",
+ "rarity": "UNCOMMON",
+ "creativeTabs": [
+ {
+ "value": "TOOLS"
+ }
+ ],
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 72000,
+ "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
+ },
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": true,
+ "shootConstantly": false,
+ "rangedItemChargesPower": true,
+ "projectile": {
+ "value": "CUSTOM:ShitProjectile"
+ },
+ "projectileDisableAmmoCheck": false,
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "spear",
+ "isMusicDisc": false,
+ "musicDiscMusic": {
+ "value": ""
+ },
+ "musicDiscDescription": "",
+ "musicDiscLengthInTicks": 100,
+ "musicDiscAnalogOutput": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/ShitGUI.mod.json b/elements/ShitGUI.mod.json
new file mode 100644
index 0000000..da6816b
--- /dev/null
+++ b/elements/ShitGUI.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "gui",
+ "definition": {
+ "type": 0,
+ "width": 176,
+ "height": 166,
+ "inventoryOffsetX": 0,
+ "inventoryOffsetY": 0,
+ "renderBgLayer": false,
+ "doesPauseGame": false,
+ "components": [
+ {
+ "type": "image",
+ "data": {
+ "image": "shit.png",
+ "use1Xscale": false,
+ "x": 96,
+ "y": -1,
+ "locked": false
+ }
+ },
+ {
+ "type": "label",
+ "data": {
+ "name": "label_uh_ohh_stinky",
+ "text": {
+ "fixedValue": "UH OHH!!! STINKY!!! UH OHH!!! STINKY!!! UH OHH!!! STINKY!!! UH OHH!!! STINKY!!! "
+ },
+ "color": {
+ "value": -52,
+ "falpha": 0.0
+ },
+ "x": 5,
+ "y": 3,
+ "locked": false
+ }
+ }
+ ],
+ "gridSettings": {
+ "sx": 18,
+ "sy": 18,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/ShitProjectile.mod.json b/elements/ShitProjectile.mod.json
new file mode 100644
index 0000000..f5013ae
--- /dev/null
+++ b/elements/ShitProjectile.mod.json
@@ -0,0 +1,24 @@
+{
+ "_fv": 73,
+ "_type": "projectile",
+ "definition": {
+ "projectileItem": {
+ "value": "CUSTOM:Shit"
+ },
+ "showParticles": false,
+ "actionSound": {
+ "value": "entity.snowball.throw"
+ },
+ "igniteFire": false,
+ "power": 1.0,
+ "damage": 0.0,
+ "knockback": 0,
+ "entityModel": "Default",
+ "customModelTexture": "",
+ "modelWidth": 0.5,
+ "modelHeight": 0.5,
+ "onHitsPlayer": {
+ "name": "ShitProjectileProjectileHitsPlayer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/ShitProjectileProjectileHitsPlayer.mod.json b/elements/ShitProjectileProjectileHitsPlayer.mod.json
new file mode 100644
index 0000000..784841b
--- /dev/null
+++ b/elements/ShitProjectileProjectileHitsPlayer.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerentity.ghast.screamplayer0.80.91.1CUSTOM:StinkyEffect160FALSEFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShitRecipe.mod.json b/elements/ShitRecipe.mod.json
new file mode 100644
index 0000000..618d1c2
--- /dev/null
+++ b/elements/ShitRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "Blocks.DIRT#1"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Shit"
+ },
+ "name": "shit_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShitRecipe2.mod.json b/elements/ShitRecipe2.mod.json
new file mode 100644
index 0000000..8957409
--- /dev/null
+++ b/elements/ShitRecipe2.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:BrokenGlass"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Shit"
+ },
+ "name": "shit_recipe_2",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShitSpawnLogic.mod.json b/elements/ShitSpawnLogic.mod.json
new file mode 100644
index 0000000..c1a0d9c
--- /dev/null
+++ b/elements/ShitSpawnLogic.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_ticksShitCounterADDShitCounter1ANDEQMODShitCounter60000LTRANDOM0.125TRUECUSTOM:Shit20"
+ }
+}
\ No newline at end of file
diff --git a/elements/StinkyEffect.mod.json b/elements/StinkyEffect.mod.json
new file mode 100644
index 0000000..d465992
--- /dev/null
+++ b/elements/StinkyEffect.mod.json
@@ -0,0 +1,26 @@
+{
+ "_fv": 73,
+ "_type": "potioneffect",
+ "definition": {
+ "effectName": "Stinky",
+ "icon": "stinky_effect",
+ "color": {
+ "value": -2621555,
+ "falpha": 0.0
+ },
+ "isInstant": false,
+ "mobEffectCategory": "HARMFUL",
+ "renderStatusInInventory": true,
+ "renderStatusInHUD": true,
+ "isCuredByMilk": false,
+ "isProtectedByTotem": false,
+ "isCuredbyHoney": false,
+ "modifiers": [],
+ "onActiveTick": {
+ "name": "StinkyEffectOnEffectActiveTick"
+ },
+ "onExpired": {
+ "name": "StinkyEffectEffectExpires"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/StinkyEffectEffectExpires.mod.json b/elements/StinkyEffectEffectExpires.mod.json
new file mode 100644
index 0000000..33e0c40
--- /dev/null
+++ b/elements/StinkyEffectEffectExpires.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerShitGUI"
+ }
+}
\ No newline at end of file
diff --git a/elements/StinkyEffectOnEffectActiveTick.mod.json b/elements/StinkyEffectOnEffectActiveTick.mod.json
new file mode 100644
index 0000000..0962890
--- /dev/null
+++ b/elements/StinkyEffectOnEffectActiveTick.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerShitGUIShitGUI"
+ }
+}
\ No newline at end of file
diff --git a/elements/SummonedEntityEffect.mod.json b/elements/SummonedEntityEffect.mod.json
new file mode 100644
index 0000000..16d0f78
--- /dev/null
+++ b/elements/SummonedEntityEffect.mod.json
@@ -0,0 +1,23 @@
+{
+ "_fv": 73,
+ "_type": "potioneffect",
+ "definition": {
+ "effectName": "Summoned Entity",
+ "icon": "summoned_entity_effect",
+ "color": {
+ "value": -16777216,
+ "falpha": 0.0
+ },
+ "isInstant": false,
+ "mobEffectCategory": "HARMFUL",
+ "renderStatusInInventory": false,
+ "renderStatusInHUD": false,
+ "isCuredByMilk": false,
+ "isProtectedByTotem": false,
+ "isCuredbyHoney": false,
+ "modifiers": [],
+ "onExpired": {
+ "name": "SummonedEntityEffectEffectExpires"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/SummonedEntityEffectEffectExpires.mod.json b/elements/SummonedEntityEffectEffectExpires.mod.json
new file mode 100644
index 0000000..af06763
--- /dev/null
+++ b/elements/SummonedEntityEffectEffectExpires.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerSOUL_FIRE_FLAME60.60.60.60.16999OUT_OF_WORLD"
+ }
+}
\ No newline at end of file
diff --git a/forge 1.20.1/1.0/nims_random_bullshit-1.0.0-forge-1.20.1.jar b/forge 1.20.1/1.0/nims_random_bullshit-1.0.0-forge-1.20.1.jar
deleted file mode 100644
index a1b41ee..0000000
Binary files a/forge 1.20.1/1.0/nims_random_bullshit-1.0.0-forge-1.20.1.jar and /dev/null differ
diff --git a/forge 1.20.1/1.1/nims_random_bullshit-1.1.0-forge-1.20.1.jar b/forge 1.20.1/1.1/nims_random_bullshit-1.1.0-forge-1.20.1.jar
deleted file mode 100644
index 2a09ac3..0000000
Binary files a/forge 1.20.1/1.1/nims_random_bullshit-1.1.0-forge-1.20.1.jar and /dev/null differ
diff --git a/forge 1.20.1/1.1/nims_random_bullshit-1.1.1-forge-1.20.1.jar b/forge 1.20.1/1.1/nims_random_bullshit-1.1.1-forge-1.20.1.jar
deleted file mode 100644
index 6cd7273..0000000
Binary files a/forge 1.20.1/1.1/nims_random_bullshit-1.1.1-forge-1.20.1.jar and /dev/null differ
diff --git a/forge 1.20.1/1.2/nims_random_bullshit-1.2.0-forge-1.20.1.jar b/forge 1.20.1/1.2/nims_random_bullshit-1.2.0-forge-1.20.1.jar
deleted file mode 100644
index 8d2a24a..0000000
Binary files a/forge 1.20.1/1.2/nims_random_bullshit-1.2.0-forge-1.20.1.jar and /dev/null differ
diff --git a/forge 1.20.1/1.2/nims_random_bullshit-1.2.1-forge-1.20.1.jar b/forge 1.20.1/1.2/nims_random_bullshit-1.2.1-forge-1.20.1.jar
deleted file mode 100644
index d352f48..0000000
Binary files a/forge 1.20.1/1.2/nims_random_bullshit-1.2.1-forge-1.20.1.jar and /dev/null differ
diff --git a/forge 1.20.1/1.2/nims_random_bullshit-1.2.2-forge-1.20.1.jar b/forge 1.20.1/1.2/nims_random_bullshit-1.2.2-forge-1.20.1.jar
deleted file mode 100644
index 7b6855a..0000000
Binary files a/forge 1.20.1/1.2/nims_random_bullshit-1.2.2-forge-1.20.1.jar and /dev/null differ
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..e644113
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..a441313
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
+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/nims_random_bullshit.mcreator b/nims_random_bullshit.mcreator
new file mode 100644
index 0000000..1fe2ad7
--- /dev/null
+++ b/nims_random_bullshit.mcreator
@@ -0,0 +1,1347 @@
+{
+ "mod_elements": [
+ {
+ "name": "CondensedNetherrack",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "condensed_netherrack",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/block/CondensedNetherrackBlock.java",
+ "src/main/resources/assets/nims_random_bullshit/models/block/condensed_netherrack.json",
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/models/item/condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/condensed_netherrack.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "CondensedCondensedNetherrack",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "condensed_condensed_netherrack",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/block/CondensedCondensedNetherrackBlock.java",
+ "src/main/resources/assets/nims_random_bullshit/models/block/condensed_condensed_netherrack.json",
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/condensed_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/models/item/condensed_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/condensed_condensed_netherrack.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "CondensedCondensedCondensedNetherrack",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "condensed_condensed_condensed_netherrack",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/condensed_condensed_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/condensed_condensed_condensed_netherrack.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/CondensedCondensedCondensedNetherrackBlock.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/condensed_condensed_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/condensed_condensed_condensed_netherrack.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "CondensedNetherrackRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "condensed_netherrack_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/condensed_netherrack_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "CondensedCondensedNetherrackRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "condensed_condensed_netherrack_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/condensed_condensed_netherrack_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "CondensedCondensedCondensedNetherrackRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "condensed_condensed_condensed_netherrack_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/condensed_condensed_condensed_netherrack_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "NetherrackRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherrack_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/netherrack_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "CondensedNetherrackRecipe2",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "condensed_netherrack_recipe_2",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/condensed_netherrack_recipe_2.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "CondensedCondensedNetherrack2",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "condensed_condensed_netherrack_2",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/condensed_condensed_netherrack_2.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "BlockEater",
+ "type": "item",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "block_eater",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/item/block_eater.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/item/BlockEaterItem.java"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "BlockEaterRightclickedOnBlock",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "block_eater_rightclicked_on_block",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/BlockEaterRightclickedOnBlockProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "itemstack",
+ "type": "itemstack"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "BlockEaterRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "block_eater_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/block_eater_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "PassiveIncomeEnchantment",
+ "type": "enchantment",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "passive_income_enchantment",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/enchantment/PassiveIncomeEnchantmentEnchantment.java"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "PassiveIncomeProcedure",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "passive_income_procedure",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/PassiveIncomeProcedureProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "BrokenGlass",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "broken_glass",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/blockstates/broken_glass.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_side.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/BrokenGlassBlock.java",
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/broken_glass.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_noside_alt.json",
+ "src/main/resources/assets/nims_random_bullshit/models/item/broken_glass.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_noside.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_post.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_side_alt.json"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "BrokenGlassRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "broken_glass_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/broken_glass_recipe.json"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "QuadraCondensedNetherrack",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "quadra_condensed_netherrack",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/block/quadra_condensed_netherrack.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/QuadraCondensedNetherrackBlock.java",
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/quadra_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/quadra_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/models/item/quadra_condensed_netherrack.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "NetherrackitePickaxe",
+ "type": "tool",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherrackite_pickaxe",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/item/netherrackite_pickaxe.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/item/NetherrackitePickaxeItem.java"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "Netherrackite",
+ "type": "item",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherrackite",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/item/netherrackite.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/item/NetherrackiteItem.java"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "NetherrackiteRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherrackite_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/netherrackite_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "NetherrackitePickaxeRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherrackite_pickaxe_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/netherrackite_pickaxe_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "QuadraCondensedNetherrackRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "quadra_condensed_netherrack_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/quadra_condensed_netherrack_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "QuadraCondensedNetherrackRecipe2",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "quadra_condensed_netherrack_recipe_2",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/quadra_condensed_netherrack_recipe_2.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "NetherrackingEnchantment",
+ "type": "enchantment",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherracking_enchantment",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/enchantment/NetherrackingEnchantmentEnchantment.java"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "NetherrackingLogic",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherracking_logic",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/NetherrackingLogicProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "itemstack",
+ "type": "itemstack"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "PentaCondensedNetherrack",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "penta_condensed_netherrack",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/penta_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/models/item/penta_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/penta_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/penta_condensed_netherrack.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/PentaCondensedNetherrackBlock.java"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "PentaCondensedNetherrackRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "penta_condensed_netherrack_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/penta_condensed_netherrack_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "PentaCondensedNetherrackRecipe2",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "penta_condensed_netherrack_recipe_2",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/penta_condensed_netherrack_recipe_2.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "HexaCondensedNetherrack",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "hexa_condensed_netherrack",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/hexa_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/models/item/hexa_condensed_netherrack.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/hexa_condensed_netherrack.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/HexaCondensedNetherrackBlock.java",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/hexa_condensed_netherrack.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "HexaCondensedNetherrackRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "hexa_condensed_netherrack_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/hexa_condensed_netherrack_recipe.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "HexaCondensedNetherrackRecipe2",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "hexa_condensed_netherrack_recipe_2",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/hexa_condensed_netherrack_recipe_2.json"
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "NetherrackitePickaxeBlockDestroyedWithTool",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherrackite_pickaxe_block_destroyed_with_tool",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/NetherrackitePickaxeBlockDestroyedWithToolProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "blockstate",
+ "type": "blockstate"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Netherracks"
+ },
+ {
+ "name": "SandDust",
+ "type": "item",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "sand_dust",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/item/sand_dust.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/item/SandDustItem.java"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "LapisLazuliNugget",
+ "type": "item",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "lapis_lazuli_nugget",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/item/LapisLazuliNuggetItem.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/lapis_lazuli_nugget.json"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "LapisLazuliNuggetRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "lapis_lazuli_nugget_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/lapis_lazuli_nugget_recipe.json"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "LapisLazuliRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "lapis_lazuli_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/lapis_lazuli_recipe.json"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "MagicDust",
+ "type": "item",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "magic_dust",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/item/MagicDustItem.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/magic_dust.json"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "MagicDustRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "magic_dust_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/magic_dust_recipe.json"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "SandDustRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "sand_dust_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/sand_dust_recipe.json"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "SandRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "sand_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/sand_recipe.json"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "MagicFlesh",
+ "type": "item",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "magic_flesh",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/item/MagicFleshItem.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/magic_flesh.json"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "MagicFleshOnPlayerStoppedUsing",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "magic_flesh_on_player_stopped_using",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/MagicFleshOnPlayerStoppedUsingProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "MagicFleshRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "magic_flesh_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/magic_flesh_recipe.json"
+ ]
+ },
+ "path": "~/Lapis"
+ },
+ {
+ "name": "Shit",
+ "type": "item",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "shit",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/item/shit.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/item/ShitItem.java"
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "ShitProjectile",
+ "type": "projectile",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "shit_projectile",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/entity/ShitProjectileEntity.java"
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "StinkyEffect",
+ "type": "potioneffect",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "stinky_effect",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/potion/StinkyEffectMobEffect.java"
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "ShitProjectileProjectileHitsPlayer",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "shit_projectile_projectile_hits_player",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/ShitProjectileProjectileHitsPlayerProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "sourceentity",
+ "type": "entity"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "ShitGUI",
+ "type": "gui",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "shit_gui",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/client/gui/ShitGUIScreen.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/world/inventory/ShitGUIMenu.java"
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "StinkyEffectOnEffectActiveTick",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "stinky_effect_on_effect_active_tick",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/StinkyEffectOnEffectActiveTickProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "StinkyEffectEffectExpires",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "stinky_effect_effect_expires",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/StinkyEffectEffectExpiresProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ }
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "ShitSpawnLogic",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "shit_spawn_logic",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/ShitSpawnLogicProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "BonemealRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "bonemeal_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/bonemeal_recipe.json"
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "ShitRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "shit_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/shit_recipe.json"
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "ShitRecipe2",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "shit_recipe_2",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/shit_recipe_2.json"
+ ]
+ },
+ "path": "~/Shit"
+ },
+ {
+ "name": "GoldenBerries",
+ "type": "item",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "golden_berries",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/item/golden_berries.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/item/GoldenBerriesItem.java"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "GoldenBerriesRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "golden_berries_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/golden_berries_recipe.json"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "OreMinerGUI",
+ "type": "gui",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "ore_miner_gui",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/client/gui/OreMinerGUIScreen.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/world/inventory/OreMinerGUIMenu.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/network/OreMinerGUIButtonMessage.java"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "OreMinerGUISlot0ImageDisplayCondition",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "ore_miner_gui_slot_0_image_display_condition",
+ "metadata": {
+ "return_type": "logic",
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/OreMinerGUISlot0ImageDisplayConditionProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ }
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "NetherriteTemplateRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherrite_template_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/netherrite_template_recipe.json"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "OreMiner",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "ore_miner",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/item/ore_miner.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/ore_miner.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/entity/OreMinerBlockEntity.java",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/ore_miner.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/OreMinerBlock.java",
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/ore_miner.json"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "OreMinerMineButtonPressed",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "ore_miner_mine_button_pressed",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/OreMinerMineButtonPressedProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "OreMinerRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "ore_miner_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/ore_miner_recipe.json"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "NetherriteTemplateRecipe2",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "netherrite_template_recipe_2",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/netherrite_template_recipe_2.json"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "Ghoul",
+ "type": "livingentity",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "ghoul",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/entity/GhoulEntity.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/ghoul_spawn_egg.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/client/renderer/GhoulRenderer.java"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "GhoulThisEntityKillsAnotherOne",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "ghoul_this_entity_kills_another_one",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/GhoulThisEntityKillsAnotherOneProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "Gravedigger",
+ "type": "tool",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "gravedigger",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/item/gravedigger.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/item/GravediggerItem.java"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "GravediggerRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "gravedigger_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/gravedigger_recipe.json"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "GravediggerRightclickedOnBlock",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "gravedigger_rightclicked_on_block",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/GravediggerRightclickedOnBlockProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "blockstate",
+ "type": "blockstate"
+ },
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "itemstack",
+ "type": "itemstack"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "SummonedEntityEffect",
+ "type": "potioneffect",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "summoned_entity_effect",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/potion/SummonedEntityEffectMobEffect.java"
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "SummonedEntityEffectEffectExpires",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "summoned_entity_effect_effect_expires",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/SummonedEntityEffectEffectExpiresProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Other"
+ },
+ {
+ "name": "GhoulOnInitialEntitySpawn",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "ghoul_on_initial_entity_spawn",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/GhoulOnInitialEntitySpawnProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ }
+ ]
+ },
+ "path": "~/Other"
+ }
+ ],
+ "variable_elements": [],
+ "sound_elements": [],
+ "tag_elements": {
+ "BLOCKS:minecraft:mineable/pickaxe": [
+ "~CUSTOM:HexaCondensedNetherrack",
+ "~CUSTOM:PentaCondensedNetherrack",
+ "~CUSTOM:QuadraCondensedNetherrack",
+ "~CUSTOM:CondensedCondensedCondensedNetherrack",
+ "~CUSTOM:CondensedCondensedNetherrack",
+ "~CUSTOM:CondensedNetherrack"
+ ],
+ "ITEMS:minecraft:pickaxes": [
+ "~CUSTOM:NetherrackitePickaxe"
+ ],
+ "ITEMS:minecraft:shovels": [
+ "~CUSTOM:Gravedigger"
+ ],
+ "BLOCKS:mod:netherrack": [
+ "Blocks.NETHERRACK",
+ "CUSTOM:CondensedNetherrack",
+ "CUSTOM:CondensedCondensedNetherrack",
+ "CUSTOM:CondensedCondensedCondensedNetherrack",
+ "CUSTOM:QuadraCondensedNetherrack",
+ "CUSTOM:PentaCondensedNetherrack"
+ ]
+ },
+ "tab_element_order": {},
+ "language_map": {
+ "en_us": {
+ "block.nims_random_bullshit.condensed_condensed_netherrack": "Condensed Condensed Netherrack",
+ "item.nims_random_bullshit.gravedigger": "Gravedigger",
+ "gui.nims_random_bullshit.ore_miner_gui.button_mine": "Mine",
+ "block.nims_random_bullshit.quadra_condensed_netherrack": "Quadra-condensed Netherrack",
+ "block.nims_random_bullshit.penta_condensed_netherrack": "Penta-condensed Netherrack",
+ "item.nims_random_bullshit.magic_dust": "Magic Dust",
+ "enchantment.nims_random_bullshit.passive_income_enchantment": "Passive Income",
+ "item.nims_random_bullshit.netherrackite_pickaxe.description_0": "Non-condensed netherracks broken by this pickaxe drop themselves an additional time.",
+ "item.nims_random_bullshit.netherrackite_pickaxe": "Netherrackite Pickaxe",
+ "effect.nims_random_bullshit.stinky_effect": "Stinky",
+ "block.nims_random_bullshit.broken_glass": "Broken Glass",
+ "block.nims_random_bullshit.hexa_condensed_netherrack": "Hexa-condensed Netherrack",
+ "block.nims_random_bullshit.ore_miner": "Ore Miner",
+ "effect.nims_random_bullshit.summoned_entity_effect": "Summoned Entity",
+ "item.nims_random_bullshit.sand_dust": "Sand Dust",
+ "item.nims_random_bullshit.magic_flesh": "Magic Flesh",
+ "item.nims_random_bullshit.ghoul_spawn_egg": "Ghoul Spawn Egg",
+ "item.nims_random_bullshit.block_eater": "Block Eater",
+ "item.nims_random_bullshit.golden_berries": "Golden Berries",
+ "block.nims_random_bullshit.condensed_condensed_condensed_netherrack": "Condensed Condensed Condensed Netherrack",
+ "entity.nims_random_bullshit.ghoul": "Ghoul",
+ "gui.nims_random_bullshit.shit_gui.label_uh_ohh_stinky": "UH OHH!!! STINKY!!! UH OHH!!! STINKY!!! UH OHH!!! STINKY!!! UH OHH!!! STINKY!!! ",
+ "item.nims_random_bullshit.lapis_lazuli_nugget": "Lapis Lazuli Nugget",
+ "item.nims_random_bullshit.gravedigger.description_1": "We must dig!",
+ "item.nims_random_bullshit.gravedigger.description_0": "Right-Click on soul sand or soul soil to use them, summoning a ghoul that attacks hostile mobs.",
+ "item.nims_random_bullshit.shit": "Shit",
+ "block.nims_random_bullshit.condensed_netherrack": "Condensed Netherrack",
+ "enchantment.nims_random_bullshit.netherracking_enchantment": "Netherracking",
+ "item.nims_random_bullshit.netherrackite": "Netherrackite"
+ }
+ },
+ "foldersRoot": {
+ "name": "~",
+ "children": [
+ {
+ "name": "Netherracks",
+ "children": []
+ },
+ {
+ "name": "Other",
+ "children": []
+ },
+ {
+ "name": "Shit",
+ "children": []
+ },
+ {
+ "name": "Lapis",
+ "children": []
+ }
+ ]
+ },
+ "workspaceSettings": {
+ "modid": "nims_random_bullshit",
+ "modName": "Nim\u0027s Random Bullshit",
+ "version": "1.0.0",
+ "author": "nimsolated, MCreator",
+ "websiteURL": "https://mcreator.net",
+ "license": "Academic Free License v3.0",
+ "serverSideOnly": false,
+ "requiredMods": [],
+ "dependencies": [],
+ "dependants": [],
+ "mcreatorDependencies": [],
+ "currentGenerator": "forge-1.20.1",
+ "modElementsPackage": "net.mcreator.nimsrandombullshit"
+ },
+ "mcreatorVersion": 202400452410
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..93f1b80
--- /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.7.0'
+}
\ No newline at end of file
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/NimsRandomBullshitMod.java b/src/main/java/net/mcreator/nimsrandombullshit/NimsRandomBullshitMod.java
new file mode 100644
index 0000000..9789cf5
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/NimsRandomBullshitMod.java
@@ -0,0 +1,95 @@
+package net.mcreator.nimsrandombullshit;
+
+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 net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModTabs;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModMobEffects;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModMenus;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModItems;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModEntities;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModEnchantments;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModBlocks;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModBlockEntities;
+
+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;
+
+@Mod("nims_random_bullshit")
+public class NimsRandomBullshitMod {
+ public static final Logger LOGGER = LogManager.getLogger(NimsRandomBullshitMod.class);
+ public static final String MODID = "nims_random_bullshit";
+
+ public NimsRandomBullshitMod() {
+ // Start of user code block mod constructor
+ // End of user code block mod constructor
+ MinecraftForge.EVENT_BUS.register(this);
+ IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
+
+ NimsRandomBullshitModBlocks.REGISTRY.register(bus);
+ NimsRandomBullshitModBlockEntities.REGISTRY.register(bus);
+ NimsRandomBullshitModItems.REGISTRY.register(bus);
+ NimsRandomBullshitModEntities.REGISTRY.register(bus);
+ NimsRandomBullshitModEnchantments.REGISTRY.register(bus);
+ NimsRandomBullshitModTabs.REGISTRY.register(bus);
+
+ NimsRandomBullshitModMobEffects.REGISTRY.register(bus);
+
+ NimsRandomBullshitModMenus.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/net/mcreator/nimsrandombullshit/block/BrokenGlassBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/BrokenGlassBlock.java
new file mode 100644
index 0000000..200ef4d
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/BrokenGlassBlock.java
@@ -0,0 +1,21 @@
+
+package net.mcreator.nimsrandombullshit.block;
+
+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.IronBarsBlock;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.core.BlockPos;
+
+public class BrokenGlassBlock extends IronBarsBlock {
+ public BrokenGlassBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.HAT).sound(SoundType.GLASS).strength(0.3f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false));
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 0;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/CondensedCondensedCondensedNetherrackBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/CondensedCondensedCondensedNetherrackBlock.java
new file mode 100644
index 0000000..70f805e
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/CondensedCondensedCondensedNetherrackBlock.java
@@ -0,0 +1,21 @@
+
+package net.mcreator.nimsrandombullshit.block;
+
+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.BlockGetter;
+import net.minecraft.core.BlockPos;
+
+public class CondensedCondensedCondensedNetherrackBlock extends Block {
+ public CondensedCondensedCondensedNetherrackBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.NETHERRACK).strength(291.6f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/CondensedCondensedNetherrackBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/CondensedCondensedNetherrackBlock.java
new file mode 100644
index 0000000..e7bbe13
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/CondensedCondensedNetherrackBlock.java
@@ -0,0 +1,21 @@
+
+package net.mcreator.nimsrandombullshit.block;
+
+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.BlockGetter;
+import net.minecraft.core.BlockPos;
+
+public class CondensedCondensedNetherrackBlock extends Block {
+ public CondensedCondensedNetherrackBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.NETHERRACK).strength(32.4f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/CondensedNetherrackBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/CondensedNetherrackBlock.java
new file mode 100644
index 0000000..98a5ca8
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/CondensedNetherrackBlock.java
@@ -0,0 +1,21 @@
+
+package net.mcreator.nimsrandombullshit.block;
+
+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.BlockGetter;
+import net.minecraft.core.BlockPos;
+
+public class CondensedNetherrackBlock extends Block {
+ public CondensedNetherrackBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.NETHERRACK).strength(3.6f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/HexaCondensedNetherrackBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/HexaCondensedNetherrackBlock.java
new file mode 100644
index 0000000..515e655
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/HexaCondensedNetherrackBlock.java
@@ -0,0 +1,21 @@
+
+package net.mcreator.nimsrandombullshit.block;
+
+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.BlockGetter;
+import net.minecraft.core.BlockPos;
+
+public class HexaCondensedNetherrackBlock extends Block {
+ public HexaCondensedNetherrackBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.NETHERRACK).strength(64000f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/OreMinerBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/OreMinerBlock.java
new file mode 100644
index 0000000..3291171
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/OreMinerBlock.java
@@ -0,0 +1,133 @@
+
+package net.mcreator.nimsrandombullshit.block;
+
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.phys.BlockHitResult;
+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.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 net.mcreator.nimsrandombullshit.world.inventory.OreMinerGUIMenu;
+import net.mcreator.nimsrandombullshit.block.entity.OreMinerBlockEntity;
+
+import io.netty.buffer.Unpooled;
+
+public class OreMinerBlock extends Block implements EntityBlock {
+ public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
+
+ public OreMinerBlock() {
+ super(BlockBehaviour.Properties.of().sound(SoundType.STONE).strength(1f, 100f));
+ this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH));
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+
+ @Override
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
+ super.createBlockStateDefinition(builder);
+ builder.add(FACING);
+ }
+
+ @Override
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
+ return super.getStateForPlacement(context).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 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("Ore Miner");
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) {
+ return new OreMinerGUIMenu(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 OreMinerBlockEntity(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 OreMinerBlockEntity 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 OreMinerBlockEntity be)
+ return AbstractContainerMenu.getRedstoneSignalFromContainer(be);
+ else
+ return 0;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/PentaCondensedNetherrackBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/PentaCondensedNetherrackBlock.java
new file mode 100644
index 0000000..f734afc
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/PentaCondensedNetherrackBlock.java
@@ -0,0 +1,21 @@
+
+package net.mcreator.nimsrandombullshit.block;
+
+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.BlockGetter;
+import net.minecraft.core.BlockPos;
+
+public class PentaCondensedNetherrackBlock extends Block {
+ public PentaCondensedNetherrackBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.NETHERRACK).strength(23619.6f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/QuadraCondensedNetherrackBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/QuadraCondensedNetherrackBlock.java
new file mode 100644
index 0000000..bacf92c
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/QuadraCondensedNetherrackBlock.java
@@ -0,0 +1,21 @@
+
+package net.mcreator.nimsrandombullshit.block;
+
+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.BlockGetter;
+import net.minecraft.core.BlockPos;
+
+public class QuadraCondensedNetherrackBlock extends Block {
+ public QuadraCondensedNetherrackBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.NETHERRACK).strength(2624.4f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/entity/OreMinerBlockEntity.java b/src/main/java/net/mcreator/nimsrandombullshit/block/entity/OreMinerBlockEntity.java
new file mode 100644
index 0000000..3290e6d
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/entity/OreMinerBlockEntity.java
@@ -0,0 +1,159 @@
+package net.mcreator.nimsrandombullshit.block.entity;
+
+import net.minecraftforge.items.wrapper.SidedInvWrapper;
+import net.minecraftforge.items.IItemHandler;
+import net.minecraftforge.common.util.LazyOptional;
+import net.minecraftforge.common.capabilities.ForgeCapabilities;
+import net.minecraftforge.common.capabilities.Capability;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.WorldlyContainer;
+import net.minecraft.world.ContainerHelper;
+import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.NonNullList;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.world.inventory.OreMinerGUIMenu;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModBlockEntities;
+
+import javax.annotation.Nullable;
+
+import java.util.stream.IntStream;
+
+import io.netty.buffer.Unpooled;
+
+public class OreMinerBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer {
+ private NonNullList stacks = NonNullList.withSize(9, ItemStack.EMPTY);
+ private final LazyOptional extends IItemHandler>[] handlers = SidedInvWrapper.create(this, Direction.values());
+
+ public OreMinerBlockEntity(BlockPos position, BlockState state) {
+ super(NimsRandomBullshitModBlockEntities.ORE_MINER.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("ore_miner");
+ }
+
+ @Override
+ public int getMaxStackSize() {
+ return 64;
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory) {
+ return new OreMinerGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition));
+ }
+
+ @Override
+ public Component getDisplayName() {
+ return Component.literal("Ore Miner");
+ }
+
+ @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;
+ return true;
+ }
+
+ @Override
+ public int[] getSlotsForFace(Direction side) {
+ return IntStream.range(0, this.getContainerSize()).toArray();
+ }
+
+ @Override
+ public boolean canPlaceItemThroughFace(int index, ItemStack stack, @Nullable Direction direction) {
+ return this.canPlaceItem(index, stack);
+ }
+
+ @Override
+ public boolean canTakeItemThroughFace(int index, ItemStack stack, Direction direction) {
+ return true;
+ }
+
+ @Override
+ public LazyOptional getCapability(Capability capability, @Nullable Direction facing) {
+ if (!this.remove && facing != null && capability == ForgeCapabilities.ITEM_HANDLER)
+ return handlers[facing.ordinal()].cast();
+ return super.getCapability(capability, facing);
+ }
+
+ @Override
+ public void setRemoved() {
+ super.setRemoved();
+ for (LazyOptional extends IItemHandler> handler : handlers)
+ handler.invalidate();
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/client/gui/OreMinerGUIScreen.java b/src/main/java/net/mcreator/nimsrandombullshit/client/gui/OreMinerGUIScreen.java
new file mode 100644
index 0000000..88e29f5
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/client/gui/OreMinerGUIScreen.java
@@ -0,0 +1,85 @@
+package net.mcreator.nimsrandombullshit.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 net.mcreator.nimsrandombullshit.world.inventory.OreMinerGUIMenu;
+import net.mcreator.nimsrandombullshit.procedures.OreMinerGUISlot0ImageDisplayConditionProcedure;
+import net.mcreator.nimsrandombullshit.network.OreMinerGUIButtonMessage;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+import java.util.HashMap;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+
+public class OreMinerGUIScreen extends AbstractContainerScreen {
+ private final static HashMap guistate = OreMinerGUIMenu.guistate;
+ private final Level world;
+ private final int x, y, z;
+ private final Player entity;
+ Button button_mine;
+
+ public OreMinerGUIScreen(OreMinerGUIMenu 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("nims_random_bullshit:textures/screens/ore_miner_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);
+ if (OreMinerGUISlot0ImageDisplayConditionProcedure.execute(entity)) {
+ guiGraphics.blit(new ResourceLocation("nims_random_bullshit:textures/screens/diamond_pickaxe_blueprint.png"), this.leftPos + 31, this.topPos + 17, 0, 0, 16, 16, 16, 16);
+ }
+ 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
+ protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) {
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ button_mine = Button.builder(Component.translatable("gui.nims_random_bullshit.ore_miner_gui.button_mine"), e -> {
+ if (true) {
+ NimsRandomBullshitMod.PACKET_HANDLER.sendToServer(new OreMinerGUIButtonMessage(0, x, y, z));
+ OreMinerGUIButtonMessage.handleButtonAction(entity, 0, x, y, z);
+ }
+ }).bounds(this.leftPos + 15, this.topPos + 43, 46, 20).build();
+ guistate.put("button:button_mine", button_mine);
+ this.addRenderableWidget(button_mine);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/client/gui/ShitGUIScreen.java b/src/main/java/net/mcreator/nimsrandombullshit/client/gui/ShitGUIScreen.java
new file mode 100644
index 0000000..fa1cd2a
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/client/gui/ShitGUIScreen.java
@@ -0,0 +1,70 @@
+package net.mcreator.nimsrandombullshit.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 net.mcreator.nimsrandombullshit.world.inventory.ShitGUIMenu;
+
+import java.util.HashMap;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+
+public class ShitGUIScreen extends AbstractContainerScreen {
+ private final static HashMap guistate = ShitGUIMenu.guistate;
+ private final Level world;
+ private final int x, y, z;
+ private final Player entity;
+
+ public ShitGUIScreen(ShitGUIMenu 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;
+ }
+
+ @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(new ResourceLocation("nims_random_bullshit:textures/screens/shit.png"), this.leftPos + -30, this.topPos + -38, 0, 0, 240, 240, 240, 240);
+
+ 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
+ protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) {
+ guiGraphics.drawString(this.font, Component.translatable("gui.nims_random_bullshit.shit_gui.label_uh_ohh_stinky"), -121, -34, -52, false);
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/client/renderer/GhoulRenderer.java b/src/main/java/net/mcreator/nimsrandombullshit/client/renderer/GhoulRenderer.java
new file mode 100644
index 0000000..79c823e
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/client/renderer/GhoulRenderer.java
@@ -0,0 +1,30 @@
+
+package net.mcreator.nimsrandombullshit.client.renderer;
+
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer;
+import net.minecraft.client.renderer.entity.HumanoidMobRenderer;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.model.geom.ModelLayers;
+import net.minecraft.client.model.HumanoidModel;
+
+import net.mcreator.nimsrandombullshit.entity.GhoulEntity;
+
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class GhoulRenderer extends HumanoidMobRenderer> {
+ public GhoulRenderer(EntityRendererProvider.Context context) {
+ super(context, new HumanoidModel(context.bakeLayer(ModelLayers.PLAYER)), 0.25f);
+ this.addLayer(new HumanoidArmorLayer(this, new HumanoidModel(context.bakeLayer(ModelLayers.PLAYER_INNER_ARMOR)), new HumanoidModel(context.bakeLayer(ModelLayers.PLAYER_OUTER_ARMOR)), context.getModelManager()));
+ }
+
+ @Override
+ protected void scale(GhoulEntity entity, PoseStack poseStack, float f) {
+ poseStack.scale(0.5f, 0.5f, 0.5f);
+ }
+
+ @Override
+ public ResourceLocation getTextureLocation(GhoulEntity entity) {
+ return new ResourceLocation("nims_random_bullshit:textures/entities/ghoul.png");
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/enchantment/NetherrackingEnchantmentEnchantment.java b/src/main/java/net/mcreator/nimsrandombullshit/enchantment/NetherrackingEnchantmentEnchantment.java
new file mode 100644
index 0000000..9e59fb0
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/enchantment/NetherrackingEnchantmentEnchantment.java
@@ -0,0 +1,42 @@
+
+package net.mcreator.nimsrandombullshit.enchantment;
+
+import net.minecraft.world.item.enchantment.Enchantments;
+import net.minecraft.world.item.enchantment.EnchantmentCategory;
+import net.minecraft.world.item.enchantment.Enchantment;
+import net.minecraft.world.item.crafting.Ingredient;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.EquipmentSlot;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModItems;
+
+import java.util.List;
+
+public class NetherrackingEnchantmentEnchantment extends Enchantment {
+ private static final EnchantmentCategory ENCHANTMENT_CATEGORY = EnchantmentCategory.create("nims_random_bullshit_netherracking_enchantment",
+ item -> Ingredient.of(new ItemStack(NimsRandomBullshitModItems.NETHERRACKITE_PICKAXE.get())).test(new ItemStack(item)));
+
+ public NetherrackingEnchantmentEnchantment() {
+ super(Enchantment.Rarity.RARE, ENCHANTMENT_CATEGORY, new EquipmentSlot[]{EquipmentSlot.MAINHAND});
+ }
+
+ @Override
+ public int getMinCost(int level) {
+ return 1 + level * 10;
+ }
+
+ @Override
+ public int getMaxCost(int level) {
+ return 6 + level * 10;
+ }
+
+ @Override
+ public int getMaxLevel() {
+ return 20;
+ }
+
+ @Override
+ protected boolean checkCompatibility(Enchantment enchantment) {
+ return super.checkCompatibility(enchantment) && !List.of(Enchantments.BLOCK_EFFICIENCY).contains(enchantment);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/enchantment/PassiveIncomeEnchantmentEnchantment.java b/src/main/java/net/mcreator/nimsrandombullshit/enchantment/PassiveIncomeEnchantmentEnchantment.java
new file mode 100644
index 0000000..6153de7
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/enchantment/PassiveIncomeEnchantmentEnchantment.java
@@ -0,0 +1,39 @@
+
+package net.mcreator.nimsrandombullshit.enchantment;
+
+import net.minecraft.world.item.enchantment.EnchantmentCategory;
+import net.minecraft.world.item.enchantment.Enchantment;
+import net.minecraft.world.item.crafting.Ingredient;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.EquipmentSlot;
+import net.minecraft.tags.ItemTags;
+import net.minecraft.resources.ResourceLocation;
+
+public class PassiveIncomeEnchantmentEnchantment extends Enchantment {
+ private static final EnchantmentCategory ENCHANTMENT_CATEGORY = EnchantmentCategory.create("nims_random_bullshit_passive_income_enchantment",
+ item -> Ingredient.of(ItemTags.create(new ResourceLocation("enchantable/equippable"))).test(new ItemStack(item)));
+
+ public PassiveIncomeEnchantmentEnchantment() {
+ super(Enchantment.Rarity.VERY_RARE, ENCHANTMENT_CATEGORY, new EquipmentSlot[]{EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET});
+ }
+
+ @Override
+ public int getMinCost(int level) {
+ return 1 + level * 10;
+ }
+
+ @Override
+ public int getMaxCost(int level) {
+ return 6 + level * 10;
+ }
+
+ @Override
+ public int getMaxLevel() {
+ return 5;
+ }
+
+ @Override
+ public boolean isTreasureOnly() {
+ return true;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/entity/GhoulEntity.java b/src/main/java/net/mcreator/nimsrandombullshit/entity/GhoulEntity.java
new file mode 100644
index 0000000..12e47a8
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/entity/GhoulEntity.java
@@ -0,0 +1,178 @@
+
+package net.mcreator.nimsrandombullshit.entity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.ServerLevelAccessor;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.monster.ZombieVillager;
+import net.minecraft.world.entity.monster.Zombie;
+import net.minecraft.world.entity.monster.Spider;
+import net.minecraft.world.entity.monster.Skeleton;
+import net.minecraft.world.entity.monster.Pillager;
+import net.minecraft.world.entity.monster.Monster;
+import net.minecraft.world.entity.monster.EnderMan;
+import net.minecraft.world.entity.monster.Creeper;
+import net.minecraft.world.entity.monster.CaveSpider;
+import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal;
+import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal;
+import net.minecraft.world.entity.ai.goal.RandomStrollGoal;
+import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal;
+import net.minecraft.world.entity.ai.goal.MeleeAttackGoal;
+import net.minecraft.world.entity.ai.attributes.Attributes;
+import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
+import net.minecraft.world.entity.SpawnGroupData;
+import net.minecraft.world.entity.Pose;
+import net.minecraft.world.entity.MobType;
+import net.minecraft.world.entity.MobSpawnType;
+import net.minecraft.world.entity.Mob;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.EntityDimensions;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.damagesource.DamageTypes;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.DifficultyInstance;
+import net.minecraft.sounds.SoundEvent;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.procedures.GhoulThisEntityKillsAnotherOneProcedure;
+import net.mcreator.nimsrandombullshit.procedures.GhoulOnInitialEntitySpawnProcedure;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModEntities;
+
+import javax.annotation.Nullable;
+
+public class GhoulEntity extends Monster {
+ public GhoulEntity(PlayMessages.SpawnEntity packet, Level world) {
+ this(NimsRandomBullshitModEntities.GHOUL.get(), world);
+ }
+
+ public GhoulEntity(EntityType type, Level world) {
+ super(type, world);
+ setMaxUpStep(0.6f);
+ xpReward = 0;
+ setNoAi(false);
+ setPersistenceRequired();
+ refreshDimensions();
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ protected void registerGoals() {
+ super.registerGoals();
+ this.targetSelector.addGoal(1, new NearestAttackableTargetGoal(this, Zombie.class, false, true));
+ this.targetSelector.addGoal(2, new NearestAttackableTargetGoal(this, ZombieVillager.class, false, true));
+ this.targetSelector.addGoal(3, new NearestAttackableTargetGoal(this, Creeper.class, false, true));
+ this.targetSelector.addGoal(4, new NearestAttackableTargetGoal(this, EnderMan.class, false, true));
+ this.targetSelector.addGoal(5, new NearestAttackableTargetGoal(this, Spider.class, false, true));
+ this.targetSelector.addGoal(6, new NearestAttackableTargetGoal(this, CaveSpider.class, false, true));
+ this.targetSelector.addGoal(7, new NearestAttackableTargetGoal(this, Pillager.class, false, true));
+ this.targetSelector.addGoal(8, new NearestAttackableTargetGoal(this, Skeleton.class, false, true));
+ this.goalSelector.addGoal(9, new MeleeAttackGoal(this, 1.2, false) {
+ @Override
+ protected double getAttackReachSqr(LivingEntity entity) {
+ return this.mob.getBbWidth() * this.mob.getBbWidth() + entity.getBbWidth();
+ }
+ });
+ this.targetSelector.addGoal(10, new HurtByTargetGoal(this));
+ this.goalSelector.addGoal(11, new RandomStrollGoal(this, 1));
+ this.goalSelector.addGoal(12, new RandomLookAroundGoal(this));
+ }
+
+ @Override
+ public MobType getMobType() {
+ return MobType.UNDEAD;
+ }
+
+ @Override
+ public boolean removeWhenFarAway(double distanceToClosestPlayer) {
+ return false;
+ }
+
+ @Override
+ public double getMyRidingOffset() {
+ return -0.35D;
+ }
+
+ @Override
+ public SoundEvent getAmbientSound() {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.wither_skeleton.ambient"));
+ }
+
+ @Override
+ public void playStepSound(BlockPos pos, BlockState blockIn) {
+ this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.wither_skeleton.step")), 0.15f, 1);
+ }
+
+ @Override
+ public SoundEvent getHurtSound(DamageSource ds) {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.wither_skeleton.hurt"));
+ }
+
+ @Override
+ public SoundEvent getDeathSound() {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.wither_skeleton.death"));
+ }
+
+ @Override
+ public boolean hurt(DamageSource damagesource, float amount) {
+ if (damagesource.is(DamageTypes.IN_FIRE))
+ return false;
+ if (damagesource.is(DamageTypes.FALL))
+ return false;
+ if (damagesource.is(DamageTypes.CACTUS))
+ return false;
+ if (damagesource.is(DamageTypes.DROWN))
+ return false;
+ if (damagesource.is(DamageTypes.WITHER) || damagesource.is(DamageTypes.WITHER_SKULL))
+ return false;
+ return super.hurt(damagesource, amount);
+ }
+
+ @Override
+ public boolean fireImmune() {
+ return true;
+ }
+
+ @Override
+ public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) {
+ SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag);
+ GhoulOnInitialEntitySpawnProcedure.execute(this);
+ return retval;
+ }
+
+ @Override
+ public void awardKillScore(Entity entity, int score, DamageSource damageSource) {
+ super.awardKillScore(entity, score, damageSource);
+ GhoulThisEntityKillsAnotherOneProcedure.execute(this.level(), this.getX(), this.getY(), this.getZ());
+ }
+
+ @Override
+ public EntityDimensions getDimensions(Pose pose) {
+ return super.getDimensions(pose).scale(0.5f);
+ }
+
+ public static void init() {
+ }
+
+ public static AttributeSupplier.Builder createAttributes() {
+ AttributeSupplier.Builder builder = Mob.createMobAttributes();
+ builder = builder.add(Attributes.MOVEMENT_SPEED, 0.36);
+ builder = builder.add(Attributes.MAX_HEALTH, 9);
+ builder = builder.add(Attributes.ARMOR, 0);
+ builder = builder.add(Attributes.ATTACK_DAMAGE, 3);
+ builder = builder.add(Attributes.FOLLOW_RANGE, 19);
+ return builder;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/entity/ShitProjectileEntity.java b/src/main/java/net/mcreator/nimsrandombullshit/entity/ShitProjectileEntity.java
new file mode 100644
index 0000000..a148023
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/entity/ShitProjectileEntity.java
@@ -0,0 +1,116 @@
+
+package net.mcreator.nimsrandombullshit.entity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.projectile.ItemSupplier;
+import net.minecraft.world.entity.projectile.AbstractArrow;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.util.RandomSource;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+
+import net.mcreator.nimsrandombullshit.procedures.ShitProjectileProjectileHitsPlayerProcedure;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModItems;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModEntities;
+
+@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
+public class ShitProjectileEntity extends AbstractArrow implements ItemSupplier {
+ public static final ItemStack PROJECTILE_ITEM = new ItemStack(NimsRandomBullshitModItems.SHIT.get());
+
+ public ShitProjectileEntity(PlayMessages.SpawnEntity packet, Level world) {
+ super(NimsRandomBullshitModEntities.SHIT_PROJECTILE.get(), world);
+ }
+
+ public ShitProjectileEntity(EntityType extends ShitProjectileEntity> type, Level world) {
+ super(type, world);
+ }
+
+ public ShitProjectileEntity(EntityType extends ShitProjectileEntity> type, double x, double y, double z, Level world) {
+ super(type, x, y, z, world);
+ }
+
+ public ShitProjectileEntity(EntityType extends ShitProjectileEntity> type, LivingEntity entity, Level world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected ItemStack getPickupItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected void doPostHurtEffects(LivingEntity entity) {
+ super.doPostHurtEffects(entity);
+ entity.setArrowCount(entity.getArrowCount() - 1);
+ }
+
+ @Override
+ public void playerTouch(Player entity) {
+ super.playerTouch(entity);
+ ShitProjectileProjectileHitsPlayerProcedure.execute(this.level(), this.getX(), this.getY(), this.getZ(), entity, this.getOwner());
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ if (this.inGround)
+ this.discard();
+ }
+
+ public static ShitProjectileEntity shoot(Level world, LivingEntity entity, RandomSource source) {
+ return shoot(world, entity, source, 1f, 0, 0);
+ }
+
+ public static ShitProjectileEntity shoot(Level world, LivingEntity entity, RandomSource source, float pullingPower) {
+ return shoot(world, entity, source, pullingPower * 1f, 0, 0);
+ }
+
+ public static ShitProjectileEntity shoot(Level world, LivingEntity entity, RandomSource random, float power, double damage, int knockback) {
+ ShitProjectileEntity entityarrow = new ShitProjectileEntity(NimsRandomBullshitModEntities.SHIT_PROJECTILE.get(), entity, world);
+ entityarrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0);
+ entityarrow.setSilent(true);
+ entityarrow.setCritArrow(false);
+ entityarrow.setBaseDamage(damage);
+ entityarrow.setKnockback(knockback);
+ world.addFreshEntity(entityarrow);
+ world.playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.snowball.throw")), SoundSource.PLAYERS, 1, 1f / (random.nextFloat() * 0.5f + 1) + (power / 2));
+ return entityarrow;
+ }
+
+ public static ShitProjectileEntity shoot(LivingEntity entity, LivingEntity target) {
+ ShitProjectileEntity entityarrow = new ShitProjectileEntity(NimsRandomBullshitModEntities.SHIT_PROJECTILE.get(), entity, entity.level());
+ double dx = target.getX() - entity.getX();
+ double dy = target.getY() + target.getEyeHeight() - 1.1;
+ double dz = target.getZ() - entity.getZ();
+ entityarrow.shoot(dx, dy - entityarrow.getY() + Math.hypot(dx, dz) * 0.2F, dz, 1f * 2, 12.0F);
+ entityarrow.setSilent(true);
+ entityarrow.setBaseDamage(0);
+ entityarrow.setKnockback(0);
+ entityarrow.setCritArrow(false);
+ entity.level().addFreshEntity(entityarrow);
+ entity.level().playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.snowball.throw")), SoundSource.PLAYERS, 1, 1f / (RandomSource.create().nextFloat() * 0.5f + 1));
+ return entityarrow;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java
new file mode 100644
index 0000000..1d4a423
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java
@@ -0,0 +1,26 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.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 net.mcreator.nimsrandombullshit.block.entity.OreMinerBlockEntity;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+public class NimsRandomBullshitModBlockEntities {
+ public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, NimsRandomBullshitMod.MODID);
+ public static final RegistryObject> ORE_MINER = register("ore_miner", NimsRandomBullshitModBlocks.ORE_MINER, OreMinerBlockEntity::new);
+
+ // Start of user code block custom block entities
+ // End of user code block custom block entities
+ private static RegistryObject> register(String registryname, RegistryObject block, BlockEntityType.BlockEntitySupplier> supplier) {
+ return REGISTRY.register(registryname, () -> BlockEntityType.Builder.of(supplier, block.get()).build(null));
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlocks.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlocks.java
new file mode 100644
index 0000000..8349073
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlocks.java
@@ -0,0 +1,35 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.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.mcreator.nimsrandombullshit.block.QuadraCondensedNetherrackBlock;
+import net.mcreator.nimsrandombullshit.block.PentaCondensedNetherrackBlock;
+import net.mcreator.nimsrandombullshit.block.OreMinerBlock;
+import net.mcreator.nimsrandombullshit.block.HexaCondensedNetherrackBlock;
+import net.mcreator.nimsrandombullshit.block.CondensedNetherrackBlock;
+import net.mcreator.nimsrandombullshit.block.CondensedCondensedNetherrackBlock;
+import net.mcreator.nimsrandombullshit.block.CondensedCondensedCondensedNetherrackBlock;
+import net.mcreator.nimsrandombullshit.block.BrokenGlassBlock;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+public class NimsRandomBullshitModBlocks {
+ public static final DeferredRegister REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCKS, NimsRandomBullshitMod.MODID);
+ public static final RegistryObject CONDENSED_NETHERRACK = REGISTRY.register("condensed_netherrack", () -> new CondensedNetherrackBlock());
+ public static final RegistryObject CONDENSED_CONDENSED_NETHERRACK = REGISTRY.register("condensed_condensed_netherrack", () -> new CondensedCondensedNetherrackBlock());
+ public static final RegistryObject CONDENSED_CONDENSED_CONDENSED_NETHERRACK = REGISTRY.register("condensed_condensed_condensed_netherrack", () -> new CondensedCondensedCondensedNetherrackBlock());
+ public static final RegistryObject BROKEN_GLASS = REGISTRY.register("broken_glass", () -> new BrokenGlassBlock());
+ public static final RegistryObject QUADRA_CONDENSED_NETHERRACK = REGISTRY.register("quadra_condensed_netherrack", () -> new QuadraCondensedNetherrackBlock());
+ public static final RegistryObject PENTA_CONDENSED_NETHERRACK = REGISTRY.register("penta_condensed_netherrack", () -> new PentaCondensedNetherrackBlock());
+ public static final RegistryObject HEXA_CONDENSED_NETHERRACK = REGISTRY.register("hexa_condensed_netherrack", () -> new HexaCondensedNetherrackBlock());
+ public static final RegistryObject ORE_MINER = REGISTRY.register("ore_miner", () -> new OreMinerBlock());
+ // Start of user code block custom blocks
+ // End of user code block custom blocks
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEnchantments.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEnchantments.java
new file mode 100644
index 0000000..da92eae
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEnchantments.java
@@ -0,0 +1,21 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.init;
+
+import net.minecraftforge.registries.RegistryObject;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.registries.DeferredRegister;
+
+import net.minecraft.world.item.enchantment.Enchantment;
+
+import net.mcreator.nimsrandombullshit.enchantment.PassiveIncomeEnchantmentEnchantment;
+import net.mcreator.nimsrandombullshit.enchantment.NetherrackingEnchantmentEnchantment;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+public class NimsRandomBullshitModEnchantments {
+ public static final DeferredRegister REGISTRY = DeferredRegister.create(ForgeRegistries.ENCHANTMENTS, NimsRandomBullshitMod.MODID);
+ public static final RegistryObject PASSIVE_INCOME_ENCHANTMENT = REGISTRY.register("passive_income_enchantment", () -> new PassiveIncomeEnchantmentEnchantment());
+ public static final RegistryObject NETHERRACKING_ENCHANTMENT = REGISTRY.register("netherracking_enchantment", () -> new NetherrackingEnchantmentEnchantment());
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntities.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntities.java
new file mode 100644
index 0000000..2b7b851
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntities.java
@@ -0,0 +1,48 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.init;
+
+import net.minecraftforge.registries.RegistryObject;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.registries.DeferredRegister;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
+
+import net.minecraft.world.entity.MobCategory;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.Entity;
+
+import net.mcreator.nimsrandombullshit.entity.ShitProjectileEntity;
+import net.mcreator.nimsrandombullshit.entity.GhoulEntity;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
+public class NimsRandomBullshitModEntities {
+ public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, NimsRandomBullshitMod.MODID);
+ public static final RegistryObject> SHIT_PROJECTILE = register("shit_projectile",
+ EntityType.Builder.of(ShitProjectileEntity::new, MobCategory.MISC).setCustomClientFactory(ShitProjectileEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
+ public static final RegistryObject> GHOUL = register("ghoul",
+ EntityType.Builder.of(GhoulEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(GhoulEntity::new).fireImmune().sized(0.6f, 1.8f));
+
+ // Start of user code block custom entities
+ // End of user code block custom entities
+ private static RegistryObject> register(String registryname, EntityType.Builder entityTypeBuilder) {
+ return REGISTRY.register(registryname, () -> (EntityType) entityTypeBuilder.build(registryname));
+ }
+
+ @SubscribeEvent
+ public static void init(FMLCommonSetupEvent event) {
+ event.enqueueWork(() -> {
+ GhoulEntity.init();
+ });
+ }
+
+ @SubscribeEvent
+ public static void registerAttributes(EntityAttributeCreationEvent event) {
+ event.put(GHOUL.get(), GhoulEntity.createAttributes().build());
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntityRenderers.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntityRenderers.java
new file mode 100644
index 0000000..cae8134
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntityRenderers.java
@@ -0,0 +1,23 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.init;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.client.event.EntityRenderersEvent;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.client.renderer.entity.ThrownItemRenderer;
+
+import net.mcreator.nimsrandombullshit.client.renderer.GhoulRenderer;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
+public class NimsRandomBullshitModEntityRenderers {
+ @SubscribeEvent
+ public static void registerEntityRenderers(EntityRenderersEvent.RegisterRenderers event) {
+ event.registerEntityRenderer(NimsRandomBullshitModEntities.SHIT_PROJECTILE.get(), ThrownItemRenderer::new);
+ event.registerEntityRenderer(NimsRandomBullshitModEntities.GHOUL.get(), GhoulRenderer::new);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java
new file mode 100644
index 0000000..00b3caf
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java
@@ -0,0 +1,55 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.init;
+
+import net.minecraftforge.registries.RegistryObject;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.registries.DeferredRegister;
+import net.minecraftforge.common.ForgeSpawnEggItem;
+
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.BlockItem;
+
+import net.mcreator.nimsrandombullshit.item.ShitItem;
+import net.mcreator.nimsrandombullshit.item.SandDustItem;
+import net.mcreator.nimsrandombullshit.item.NetherrackitePickaxeItem;
+import net.mcreator.nimsrandombullshit.item.NetherrackiteItem;
+import net.mcreator.nimsrandombullshit.item.MagicFleshItem;
+import net.mcreator.nimsrandombullshit.item.MagicDustItem;
+import net.mcreator.nimsrandombullshit.item.LapisLazuliNuggetItem;
+import net.mcreator.nimsrandombullshit.item.GravediggerItem;
+import net.mcreator.nimsrandombullshit.item.GoldenBerriesItem;
+import net.mcreator.nimsrandombullshit.item.BlockEaterItem;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+public class NimsRandomBullshitModItems {
+ public static final DeferredRegister- REGISTRY = DeferredRegister.create(ForgeRegistries.ITEMS, NimsRandomBullshitMod.MODID);
+ public static final RegistryObject
- CONDENSED_NETHERRACK = block(NimsRandomBullshitModBlocks.CONDENSED_NETHERRACK);
+ public static final RegistryObject
- CONDENSED_CONDENSED_NETHERRACK = block(NimsRandomBullshitModBlocks.CONDENSED_CONDENSED_NETHERRACK);
+ public static final RegistryObject
- CONDENSED_CONDENSED_CONDENSED_NETHERRACK = block(NimsRandomBullshitModBlocks.CONDENSED_CONDENSED_CONDENSED_NETHERRACK);
+ public static final RegistryObject
- BLOCK_EATER = REGISTRY.register("block_eater", () -> new BlockEaterItem());
+ public static final RegistryObject
- BROKEN_GLASS = block(NimsRandomBullshitModBlocks.BROKEN_GLASS);
+ public static final RegistryObject
- QUADRA_CONDENSED_NETHERRACK = block(NimsRandomBullshitModBlocks.QUADRA_CONDENSED_NETHERRACK);
+ public static final RegistryObject
- NETHERRACKITE_PICKAXE = REGISTRY.register("netherrackite_pickaxe", () -> new NetherrackitePickaxeItem());
+ public static final RegistryObject
- NETHERRACKITE = REGISTRY.register("netherrackite", () -> new NetherrackiteItem());
+ public static final RegistryObject
- PENTA_CONDENSED_NETHERRACK = block(NimsRandomBullshitModBlocks.PENTA_CONDENSED_NETHERRACK);
+ public static final RegistryObject
- HEXA_CONDENSED_NETHERRACK = block(NimsRandomBullshitModBlocks.HEXA_CONDENSED_NETHERRACK);
+ public static final RegistryObject
- SAND_DUST = REGISTRY.register("sand_dust", () -> new SandDustItem());
+ public static final RegistryObject
- LAPIS_LAZULI_NUGGET = REGISTRY.register("lapis_lazuli_nugget", () -> new LapisLazuliNuggetItem());
+ public static final RegistryObject
- MAGIC_DUST = REGISTRY.register("magic_dust", () -> new MagicDustItem());
+ public static final RegistryObject
- MAGIC_FLESH = REGISTRY.register("magic_flesh", () -> new MagicFleshItem());
+ public static final RegistryObject
- SHIT = REGISTRY.register("shit", () -> new ShitItem());
+ public static final RegistryObject
- GOLDEN_BERRIES = REGISTRY.register("golden_berries", () -> new GoldenBerriesItem());
+ public static final RegistryObject
- ORE_MINER = block(NimsRandomBullshitModBlocks.ORE_MINER);
+ public static final RegistryObject
- GHOUL_SPAWN_EGG = REGISTRY.register("ghoul_spawn_egg", () -> new ForgeSpawnEggItem(NimsRandomBullshitModEntities.GHOUL, -16777216, -13421773, new Item.Properties()));
+ public static final RegistryObject
- GRAVEDIGGER = REGISTRY.register("gravedigger", () -> new GravediggerItem());
+
+ // 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/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMenus.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMenus.java
new file mode 100644
index 0000000..1aea716
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMenus.java
@@ -0,0 +1,22 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.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 net.mcreator.nimsrandombullshit.world.inventory.ShitGUIMenu;
+import net.mcreator.nimsrandombullshit.world.inventory.OreMinerGUIMenu;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+public class NimsRandomBullshitModMenus {
+ public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.MENU_TYPES, NimsRandomBullshitMod.MODID);
+ public static final RegistryObject> SHIT_GUI = REGISTRY.register("shit_gui", () -> IForgeMenuType.create(ShitGUIMenu::new));
+ public static final RegistryObject> ORE_MINER_GUI = REGISTRY.register("ore_miner_gui", () -> IForgeMenuType.create(OreMinerGUIMenu::new));
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMobEffects.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMobEffects.java
new file mode 100644
index 0000000..dc130f9
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMobEffects.java
@@ -0,0 +1,21 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.init;
+
+import net.minecraftforge.registries.RegistryObject;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.registries.DeferredRegister;
+
+import net.minecraft.world.effect.MobEffect;
+
+import net.mcreator.nimsrandombullshit.potion.SummonedEntityEffectMobEffect;
+import net.mcreator.nimsrandombullshit.potion.StinkyEffectMobEffect;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+public class NimsRandomBullshitModMobEffects {
+ public static final DeferredRegister REGISTRY = DeferredRegister.create(ForgeRegistries.MOB_EFFECTS, NimsRandomBullshitMod.MODID);
+ public static final RegistryObject STINKY_EFFECT = REGISTRY.register("stinky_effect", () -> new StinkyEffectMobEffect());
+ public static final RegistryObject SUMMONED_ENTITY_EFFECT = REGISTRY.register("summoned_entity_effect", () -> new SummonedEntityEffectMobEffect());
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java
new file mode 100644
index 0000000..c852792
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java
@@ -0,0 +1,26 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.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 net.mcreator.nimsrandombullshit.client.gui.ShitGUIScreen;
+import net.mcreator.nimsrandombullshit.client.gui.OreMinerGUIScreen;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
+public class NimsRandomBullshitModScreens {
+ @SubscribeEvent
+ public static void clientLoad(FMLClientSetupEvent event) {
+ event.enqueueWork(() -> {
+ MenuScreens.register(NimsRandomBullshitModMenus.SHIT_GUI.get(), ShitGUIScreen::new);
+ MenuScreens.register(NimsRandomBullshitModMenus.ORE_MINER_GUI.get(), OreMinerGUIScreen::new);
+ });
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java
new file mode 100644
index 0000000..b8fbe56
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java
@@ -0,0 +1,51 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.init;
+
+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.item.CreativeModeTabs;
+import net.minecraft.world.item.CreativeModeTab;
+import net.minecraft.core.registries.Registries;
+
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
+public class NimsRandomBullshitModTabs {
+ public static final DeferredRegister REGISTRY = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, NimsRandomBullshitMod.MODID);
+
+ @SubscribeEvent
+ public static void buildTabContentsVanilla(BuildCreativeModeTabContentsEvent tabData) {
+ if (tabData.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) {
+ tabData.accept(NimsRandomBullshitModBlocks.CONDENSED_NETHERRACK.get().asItem());
+ tabData.accept(NimsRandomBullshitModBlocks.CONDENSED_CONDENSED_NETHERRACK.get().asItem());
+ tabData.accept(NimsRandomBullshitModBlocks.CONDENSED_CONDENSED_CONDENSED_NETHERRACK.get().asItem());
+ tabData.accept(NimsRandomBullshitModBlocks.BROKEN_GLASS.get().asItem());
+ tabData.accept(NimsRandomBullshitModBlocks.QUADRA_CONDENSED_NETHERRACK.get().asItem());
+ tabData.accept(NimsRandomBullshitModBlocks.PENTA_CONDENSED_NETHERRACK.get().asItem());
+ tabData.accept(NimsRandomBullshitModBlocks.HEXA_CONDENSED_NETHERRACK.get().asItem());
+ } else if (tabData.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) {
+ tabData.accept(NimsRandomBullshitModItems.BLOCK_EATER.get());
+ tabData.accept(NimsRandomBullshitModItems.NETHERRACKITE_PICKAXE.get());
+ tabData.accept(NimsRandomBullshitModItems.SHIT.get());
+ tabData.accept(NimsRandomBullshitModItems.GRAVEDIGGER.get());
+ } else if (tabData.getTabKey() == CreativeModeTabs.INGREDIENTS) {
+ tabData.accept(NimsRandomBullshitModItems.NETHERRACKITE.get());
+ tabData.accept(NimsRandomBullshitModItems.SAND_DUST.get());
+ tabData.accept(NimsRandomBullshitModItems.LAPIS_LAZULI_NUGGET.get());
+ tabData.accept(NimsRandomBullshitModItems.MAGIC_DUST.get());
+ } else if (tabData.getTabKey() == CreativeModeTabs.FOOD_AND_DRINKS) {
+ tabData.accept(NimsRandomBullshitModItems.MAGIC_FLESH.get());
+ tabData.accept(NimsRandomBullshitModItems.GOLDEN_BERRIES.get());
+ } else if (tabData.getTabKey() == CreativeModeTabs.FUNCTIONAL_BLOCKS) {
+ tabData.accept(NimsRandomBullshitModBlocks.ORE_MINER.get().asItem());
+ } else if (tabData.getTabKey() == CreativeModeTabs.SPAWN_EGGS) {
+ tabData.accept(NimsRandomBullshitModItems.GHOUL_SPAWN_EGG.get());
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/BlockEaterItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/BlockEaterItem.java
new file mode 100644
index 0000000..44cce9a
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/BlockEaterItem.java
@@ -0,0 +1,29 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.item.context.UseOnContext;
+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.InteractionResult;
+
+import net.mcreator.nimsrandombullshit.procedures.BlockEaterRightclickedOnBlockProcedure;
+
+public class BlockEaterItem extends Item {
+ public BlockEaterItem() {
+ super(new Item.Properties().stacksTo(1).rarity(Rarity.EPIC));
+ }
+
+ @Override
+ public UseAnim getUseAnimation(ItemStack itemstack) {
+ return UseAnim.BLOCK;
+ }
+
+ @Override
+ public InteractionResult useOn(UseOnContext context) {
+ super.useOn(context);
+ BlockEaterRightclickedOnBlockProcedure.execute(context.getLevel(), context.getClickedPos().getX(), context.getClickedPos().getY(), context.getClickedPos().getZ(), context.getPlayer(), context.getItemInHand());
+ return InteractionResult.SUCCESS;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/GoldenBerriesItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/GoldenBerriesItem.java
new file mode 100644
index 0000000..4cf05ad
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/GoldenBerriesItem.java
@@ -0,0 +1,18 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.item.Rarity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.food.FoodProperties;
+
+public class GoldenBerriesItem extends Item {
+ public GoldenBerriesItem() {
+ super(new Item.Properties().stacksTo(64).rarity(Rarity.UNCOMMON).food((new FoodProperties.Builder()).nutrition(4).saturationMod(12f).build()));
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 24;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/GravediggerItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/GravediggerItem.java
new file mode 100644
index 0000000..859e646
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/GravediggerItem.java
@@ -0,0 +1,63 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.crafting.Ingredient;
+import net.minecraft.world.item.context.UseOnContext;
+import net.minecraft.world.item.TooltipFlag;
+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;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.network.chat.Component;
+
+import net.mcreator.nimsrandombullshit.procedures.GravediggerRightclickedOnBlockProcedure;
+
+import java.util.List;
+
+public class GravediggerItem extends ShovelItem {
+ public GravediggerItem() {
+ super(new Tier() {
+ public int getUses() {
+ return 3666;
+ }
+
+ public float getSpeed() {
+ return 4f;
+ }
+
+ public float getAttackDamageBonus() {
+ return 2f;
+ }
+
+ public int getLevel() {
+ return 1;
+ }
+
+ public int getEnchantmentValue() {
+ return 2;
+ }
+
+ public Ingredient getRepairIngredient() {
+ return Ingredient.of(new ItemStack(Items.WITHER_SKELETON_SKULL));
+ }
+ }, 1, -3f, new Item.Properties().fireResistant());
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, Level level, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, level, list, flag);
+ list.add(Component.translatable("item.nims_random_bullshit.gravedigger.description_0"));
+ list.add(Component.translatable("item.nims_random_bullshit.gravedigger.description_1"));
+ }
+
+ @Override
+ public InteractionResult useOn(UseOnContext context) {
+ super.useOn(context);
+ GravediggerRightclickedOnBlockProcedure.execute(context.getLevel(), context.getClickedPos().getX(), context.getClickedPos().getY(), context.getClickedPos().getZ(), context.getLevel().getBlockState(context.getClickedPos()),
+ context.getPlayer(), context.getItemInHand());
+ return InteractionResult.SUCCESS;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/LapisLazuliNuggetItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/LapisLazuliNuggetItem.java
new file mode 100644
index 0000000..e5a99f1
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/LapisLazuliNuggetItem.java
@@ -0,0 +1,11 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.item.Rarity;
+import net.minecraft.world.item.Item;
+
+public class LapisLazuliNuggetItem extends Item {
+ public LapisLazuliNuggetItem() {
+ super(new Item.Properties().stacksTo(64).rarity(Rarity.COMMON));
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/MagicDustItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/MagicDustItem.java
new file mode 100644
index 0000000..d21ae6d
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/MagicDustItem.java
@@ -0,0 +1,11 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.item.Rarity;
+import net.minecraft.world.item.Item;
+
+public class MagicDustItem extends Item {
+ public MagicDustItem() {
+ super(new Item.Properties().stacksTo(64).rarity(Rarity.UNCOMMON));
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/MagicFleshItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/MagicFleshItem.java
new file mode 100644
index 0000000..ec44f23
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/MagicFleshItem.java
@@ -0,0 +1,32 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.Rarity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.food.FoodProperties;
+import net.minecraft.world.entity.LivingEntity;
+
+import net.mcreator.nimsrandombullshit.procedures.MagicFleshOnPlayerStoppedUsingProcedure;
+
+public class MagicFleshItem extends Item {
+ public MagicFleshItem() {
+ super(new Item.Properties().stacksTo(64).rarity(Rarity.UNCOMMON).food((new FoodProperties.Builder()).nutrition(4).saturationMod(0.2f).alwaysEat().build()));
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 12;
+ }
+
+ @Override
+ public ItemStack finishUsingItem(ItemStack itemstack, Level world, LivingEntity entity) {
+ ItemStack retval = super.finishUsingItem(itemstack, world, entity);
+ double x = entity.getX();
+ double y = entity.getY();
+ double z = entity.getZ();
+ MagicFleshOnPlayerStoppedUsingProcedure.execute(world, x, y, z);
+ return retval;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/NetherrackiteItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/NetherrackiteItem.java
new file mode 100644
index 0000000..9c111ae
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/NetherrackiteItem.java
@@ -0,0 +1,11 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.item.Rarity;
+import net.minecraft.world.item.Item;
+
+public class NetherrackiteItem extends Item {
+ public NetherrackiteItem() {
+ super(new Item.Properties().stacksTo(64).fireResistant().rarity(Rarity.RARE));
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/NetherrackitePickaxeItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/NetherrackitePickaxeItem.java
new file mode 100644
index 0000000..e33bb49
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/NetherrackitePickaxeItem.java
@@ -0,0 +1,70 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.crafting.Ingredient;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.Tier;
+import net.minecraft.world.item.PickaxeItem;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.network.chat.Component;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.procedures.NetherrackitePickaxeBlockDestroyedWithToolProcedure;
+import net.mcreator.nimsrandombullshit.procedures.NetherrackingLogicProcedure;
+
+import java.util.List;
+
+public class NetherrackitePickaxeItem extends PickaxeItem {
+ public NetherrackitePickaxeItem() {
+ super(new Tier() {
+ public int getUses() {
+ return 18279;
+ }
+
+ public float getSpeed() {
+ return 729f;
+ }
+
+ public float getAttackDamageBonus() {
+ return 2f;
+ }
+
+ public int getLevel() {
+ return 0;
+ }
+
+ public int getEnchantmentValue() {
+ return 15;
+ }
+
+ public Ingredient getRepairIngredient() {
+ return Ingredient.of();
+ }
+ }, 1, -3f, new Item.Properties().fireResistant());
+ }
+
+ @Override
+ public boolean mineBlock(ItemStack itemstack, Level world, BlockState blockstate, BlockPos pos, LivingEntity entity) {
+ boolean retval = super.mineBlock(itemstack, world, blockstate, pos, entity);
+ NetherrackitePickaxeBlockDestroyedWithToolProcedure.execute(world, pos.getX(), pos.getY(), pos.getZ(), blockstate);
+ return retval;
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, Level level, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, level, list, flag);
+ list.add(Component.translatable("item.nims_random_bullshit.netherrackite_pickaxe.description_0"));
+ }
+
+ @Override
+ public void inventoryTick(ItemStack itemstack, Level world, Entity entity, int slot, boolean selected) {
+ super.inventoryTick(itemstack, world, entity, slot, selected);
+ if (selected)
+ NetherrackingLogicProcedure.execute(world, entity, itemstack);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/SandDustItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/SandDustItem.java
new file mode 100644
index 0000000..00b941e
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/SandDustItem.java
@@ -0,0 +1,11 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.item.Rarity;
+import net.minecraft.world.item.Item;
+
+public class SandDustItem extends Item {
+ public SandDustItem() {
+ super(new Item.Properties().stacksTo(64).rarity(Rarity.COMMON));
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/item/ShitItem.java b/src/main/java/net/mcreator/nimsrandombullshit/item/ShitItem.java
new file mode 100644
index 0000000..5529c76
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/item/ShitItem.java
@@ -0,0 +1,87 @@
+
+package net.mcreator.nimsrandombullshit.item;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.UseAnim;
+import net.minecraft.world.item.Rarity;
+import net.minecraft.world.item.ProjectileWeaponItem;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.BowItem;
+import net.minecraft.world.entity.projectile.AbstractArrow;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.InteractionResultHolder;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.server.level.ServerPlayer;
+
+import net.mcreator.nimsrandombullshit.entity.ShitProjectileEntity;
+
+public class ShitItem extends Item {
+ public ShitItem() {
+ super(new Item.Properties().stacksTo(64).rarity(Rarity.UNCOMMON));
+ }
+
+ @Override
+ public UseAnim getUseAnimation(ItemStack itemstack) {
+ return UseAnim.SPEAR;
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 72000;
+ }
+
+ @Override
+ public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) {
+ InteractionResultHolder ar = InteractionResultHolder.fail(entity.getItemInHand(hand));
+ if (entity.getAbilities().instabuild || findAmmo(entity) != ItemStack.EMPTY) {
+ ar = InteractionResultHolder.success(entity.getItemInHand(hand));
+ entity.startUsingItem(hand);
+ }
+ return ar;
+ }
+
+ @Override
+ public void releaseUsing(ItemStack itemstack, Level world, LivingEntity entity, int time) {
+ if (!world.isClientSide() && entity instanceof ServerPlayer player) {
+ float pullingPower = BowItem.getPowerForTime(this.getUseDuration(itemstack) - time);
+ if (pullingPower < 0.1)
+ return;
+ ItemStack stack = findAmmo(player);
+ if (player.getAbilities().instabuild || stack != ItemStack.EMPTY) {
+ ShitProjectileEntity projectile = ShitProjectileEntity.shoot(world, entity, world.getRandom(), pullingPower);
+ if (player.getAbilities().instabuild) {
+ projectile.pickup = AbstractArrow.Pickup.CREATIVE_ONLY;
+ } else {
+ if (stack.isDamageableItem()) {
+ if (stack.hurt(1, world.getRandom(), player)) {
+ stack.shrink(1);
+ stack.setDamageValue(0);
+ if (stack.isEmpty())
+ player.getInventory().removeItem(stack);
+ }
+ } else {
+ stack.shrink(1);
+ if (stack.isEmpty())
+ player.getInventory().removeItem(stack);
+ }
+ }
+ }
+ }
+ }
+
+ private ItemStack findAmmo(Player player) {
+ ItemStack stack = ProjectileWeaponItem.getHeldProjectile(player, e -> e.getItem() == ShitProjectileEntity.PROJECTILE_ITEM.getItem());
+ if (stack == ItemStack.EMPTY) {
+ for (int i = 0; i < player.getInventory().items.size(); i++) {
+ ItemStack teststack = player.getInventory().items.get(i);
+ if (teststack != null && teststack.getItem() == ShitProjectileEntity.PROJECTILE_ITEM.getItem()) {
+ stack = teststack;
+ break;
+ }
+ }
+ }
+ return stack;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/network/OreMinerGUIButtonMessage.java b/src/main/java/net/mcreator/nimsrandombullshit/network/OreMinerGUIButtonMessage.java
new file mode 100644
index 0000000..6c0d069
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/network/OreMinerGUIButtonMessage.java
@@ -0,0 +1,75 @@
+
+package net.mcreator.nimsrandombullshit.network;
+
+import net.minecraftforge.network.NetworkEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.world.inventory.OreMinerGUIMenu;
+import net.mcreator.nimsrandombullshit.procedures.OreMinerMineButtonPressedProcedure;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+import java.util.function.Supplier;
+import java.util.HashMap;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
+public class OreMinerGUIButtonMessage {
+ private final int buttonID, x, y, z;
+
+ public OreMinerGUIButtonMessage(FriendlyByteBuf buffer) {
+ this.buttonID = buffer.readInt();
+ this.x = buffer.readInt();
+ this.y = buffer.readInt();
+ this.z = buffer.readInt();
+ }
+
+ public OreMinerGUIButtonMessage(int buttonID, int x, int y, int z) {
+ this.buttonID = buttonID;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ public static void buffer(OreMinerGUIButtonMessage message, FriendlyByteBuf buffer) {
+ buffer.writeInt(message.buttonID);
+ buffer.writeInt(message.x);
+ buffer.writeInt(message.y);
+ buffer.writeInt(message.z);
+ }
+
+ public static void handler(OreMinerGUIButtonMessage message, Supplier contextSupplier) {
+ NetworkEvent.Context context = contextSupplier.get();
+ context.enqueueWork(() -> {
+ Player entity = context.getSender();
+ int buttonID = message.buttonID;
+ int x = message.x;
+ int y = message.y;
+ int z = message.z;
+ handleButtonAction(entity, buttonID, x, y, z);
+ });
+ context.setPacketHandled(true);
+ }
+
+ public static void handleButtonAction(Player entity, int buttonID, int x, int y, int z) {
+ Level world = entity.level();
+ HashMap guistate = OreMinerGUIMenu.guistate;
+ // security measure to prevent arbitrary chunk generation
+ if (!world.hasChunkAt(new BlockPos(x, y, z)))
+ return;
+ if (buttonID == 0) {
+
+ OreMinerMineButtonPressedProcedure.execute(world, x, y, z, entity);
+ }
+ }
+
+ @SubscribeEvent
+ public static void registerMessage(FMLCommonSetupEvent event) {
+ NimsRandomBullshitMod.addNetworkMessage(OreMinerGUIButtonMessage.class, OreMinerGUIButtonMessage::buffer, OreMinerGUIButtonMessage::new, OreMinerGUIButtonMessage::handler);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/potion/StinkyEffectMobEffect.java b/src/main/java/net/mcreator/nimsrandombullshit/potion/StinkyEffectMobEffect.java
new file mode 100644
index 0000000..d353a85
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/potion/StinkyEffectMobEffect.java
@@ -0,0 +1,42 @@
+
+package net.mcreator.nimsrandombullshit.potion;
+
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.ai.attributes.AttributeMap;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.effect.MobEffectCategory;
+import net.minecraft.world.effect.MobEffect;
+
+import net.mcreator.nimsrandombullshit.procedures.StinkyEffectOnEffectActiveTickProcedure;
+import net.mcreator.nimsrandombullshit.procedures.StinkyEffectEffectExpiresProcedure;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class StinkyEffectMobEffect extends MobEffect {
+ public StinkyEffectMobEffect() {
+ super(MobEffectCategory.HARMFUL, -2621555);
+ }
+
+ @Override
+ public List getCurativeItems() {
+ ArrayList cures = new ArrayList();
+ return cures;
+ }
+
+ @Override
+ public void applyEffectTick(LivingEntity entity, int amplifier) {
+ StinkyEffectOnEffectActiveTickProcedure.execute(entity.level(), entity.getX(), entity.getY(), entity.getZ(), entity);
+ }
+
+ @Override
+ public void removeAttributeModifiers(LivingEntity entity, AttributeMap attributeMap, int amplifier) {
+ super.removeAttributeModifiers(entity, attributeMap, amplifier);
+ StinkyEffectEffectExpiresProcedure.execute(entity);
+ }
+
+ @Override
+ public boolean isDurationEffectTick(int duration, int amplifier) {
+ return true;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/potion/SummonedEntityEffectMobEffect.java b/src/main/java/net/mcreator/nimsrandombullshit/potion/SummonedEntityEffectMobEffect.java
new file mode 100644
index 0000000..fef4d5a
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/potion/SummonedEntityEffectMobEffect.java
@@ -0,0 +1,61 @@
+
+package net.mcreator.nimsrandombullshit.potion;
+
+import net.minecraftforge.client.extensions.common.IClientMobEffectExtensions;
+
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.ai.attributes.AttributeMap;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.effect.MobEffectInstance;
+import net.minecraft.world.effect.MobEffectCategory;
+import net.minecraft.world.effect.MobEffect;
+import net.minecraft.client.gui.screens.inventory.EffectRenderingInventoryScreen;
+import net.minecraft.client.gui.GuiGraphics;
+
+import net.mcreator.nimsrandombullshit.procedures.SummonedEntityEffectEffectExpiresProcedure;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class SummonedEntityEffectMobEffect extends MobEffect {
+ public SummonedEntityEffectMobEffect() {
+ super(MobEffectCategory.HARMFUL, -16777216);
+ }
+
+ @Override
+ public List getCurativeItems() {
+ ArrayList cures = new ArrayList();
+ return cures;
+ }
+
+ @Override
+ public void removeAttributeModifiers(LivingEntity entity, AttributeMap attributeMap, int amplifier) {
+ super.removeAttributeModifiers(entity, attributeMap, amplifier);
+ SummonedEntityEffectEffectExpiresProcedure.execute(entity.level(), entity.getX(), entity.getY(), entity.getZ(), entity);
+ }
+
+ @Override
+ public boolean isDurationEffectTick(int duration, int amplifier) {
+ return true;
+ }
+
+ @Override
+ public void initializeClient(java.util.function.Consumer consumer) {
+ consumer.accept(new IClientMobEffectExtensions() {
+ @Override
+ public boolean isVisibleInInventory(MobEffectInstance effect) {
+ return false;
+ }
+
+ @Override
+ public boolean renderInventoryText(MobEffectInstance instance, EffectRenderingInventoryScreen> screen, GuiGraphics guiGraphics, int x, int y, int blitOffset) {
+ return false;
+ }
+
+ @Override
+ public boolean isVisibleInGui(MobEffectInstance effect) {
+ return false;
+ }
+ });
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/BlockEaterRightclickedOnBlockProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/BlockEaterRightclickedOnBlockProcedure.java
new file mode 100644
index 0000000..a690141
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/BlockEaterRightclickedOnBlockProcedure.java
@@ -0,0 +1,42 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraftforge.registries.ForgeRegistries;
+
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.particles.ParticleTypes;
+import net.minecraft.core.BlockPos;
+
+public class BlockEaterRightclickedOnBlockProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, ItemStack itemstack) {
+ if (entity == null)
+ return;
+ if (world.getBlockState(BlockPos.containing(x, y, z)).getDestroySpeed(world, BlockPos.containing(x, y, z)) != -1) {
+ world.setBlock(BlockPos.containing(x, y, z), Blocks.AIR.defaultBlockState(), 3);
+ if (entity instanceof Player _player)
+ _player.getFoodData().setFoodLevel((int) ((entity instanceof Player _plr ? _plr.getFoodData().getFoodLevel() : 0) + 4));
+ if ((entity instanceof Player _plr ? _plr.getFoodData().getFoodLevel() : 0) >= 20) {
+ if (entity instanceof Player _player)
+ _player.getFoodData().setSaturation((float) ((entity instanceof Player _plr ? _plr.getFoodData().getSaturationLevel() : 0) + 2));
+ }
+ if (world instanceof Level _level) {
+ if (!_level.isClientSide()) {
+ _level.playSound(null, BlockPos.containing(x, y, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.eat")), SoundSource.PLAYERS, (float) 0.5, (float) 0.84);
+ } else {
+ _level.playLocalSound(x, y, z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.eat")), SoundSource.PLAYERS, (float) 0.5, (float) 0.84, false);
+ }
+ }
+ if (world instanceof ServerLevel _level)
+ _level.sendParticles(ParticleTypes.END_ROD, x, y, z, 4, 1, 1, 1, 0.4);
+ if (entity instanceof Player _player)
+ _player.getCooldowns().addCooldown(itemstack.getItem(), 600);
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/GhoulOnInitialEntitySpawnProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/GhoulOnInitialEntitySpawnProcedure.java
new file mode 100644
index 0000000..f59eee6
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/GhoulOnInitialEntitySpawnProcedure.java
@@ -0,0 +1,16 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.effect.MobEffectInstance;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModMobEffects;
+
+public class GhoulOnInitialEntitySpawnProcedure {
+ public static void execute(Entity entity) {
+ if (entity == null)
+ return;
+ if (entity instanceof LivingEntity _entity && !_entity.level().isClientSide())
+ _entity.addEffect(new MobEffectInstance(NimsRandomBullshitModMobEffects.SUMMONED_ENTITY_EFFECT.get(), 200, 1, false, false));
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/GhoulThisEntityKillsAnotherOneProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/GhoulThisEntityKillsAnotherOneProcedure.java
new file mode 100644
index 0000000..d00b072
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/GhoulThisEntityKillsAnotherOneProcedure.java
@@ -0,0 +1,20 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.entity.MobSpawnType;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModEntities;
+
+public class GhoulThisEntityKillsAnotherOneProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z) {
+ if (world instanceof ServerLevel _level) {
+ Entity entityToSpawn = NimsRandomBullshitModEntities.GHOUL.get().spawn(_level, BlockPos.containing(x, y, z), MobSpawnType.MOB_SUMMONED);
+ if (entityToSpawn != null) {
+ entityToSpawn.setDeltaMovement(0, 0, 0);
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/GravediggerRightclickedOnBlockProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/GravediggerRightclickedOnBlockProcedure.java
new file mode 100644
index 0000000..5cb0fc5
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/GravediggerRightclickedOnBlockProcedure.java
@@ -0,0 +1,45 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraftforge.registries.ForgeRegistries;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.MobSpawnType;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.util.RandomSource;
+import net.minecraft.util.Mth;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModEntities;
+
+public class GravediggerRightclickedOnBlockProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z, BlockState blockstate, Entity entity, ItemStack itemstack) {
+ if (entity == null)
+ return;
+ if (blockstate == Blocks.SOUL_SAND.defaultBlockState() || blockstate == Blocks.SOUL_SOIL.defaultBlockState()) {
+ if (entity instanceof Player _player)
+ _player.getCooldowns().addCooldown(itemstack.getItem(), 16);
+ world.setBlock(BlockPos.containing(x, y, z), Blocks.AIR.defaultBlockState(), 3);
+ if (world instanceof Level _level) {
+ if (!_level.isClientSide()) {
+ _level.playSound(null, BlockPos.containing(x, y, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.blaze.ambient")), SoundSource.HOSTILE, (float) 0.7, (float) Mth.nextDouble(RandomSource.create(), 0.6, 0.7));
+ } else {
+ _level.playLocalSound(x, y, z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.blaze.ambient")), SoundSource.HOSTILE, (float) 0.7, (float) Mth.nextDouble(RandomSource.create(), 0.6, 0.7), false);
+ }
+ }
+ if (world instanceof ServerLevel _level) {
+ Entity entityToSpawn = NimsRandomBullshitModEntities.GHOUL.get().spawn(_level, BlockPos.containing(x, y, z), MobSpawnType.MOB_SUMMONED);
+ if (entityToSpawn != null) {
+ entityToSpawn.setDeltaMovement(0, 0, 0);
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/MagicFleshOnPlayerStoppedUsingProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/MagicFleshOnPlayerStoppedUsingProcedure.java
new file mode 100644
index 0000000..017bd18
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/MagicFleshOnPlayerStoppedUsingProcedure.java
@@ -0,0 +1,14 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.entity.ExperienceOrb;
+import net.minecraft.util.RandomSource;
+import net.minecraft.util.Mth;
+import net.minecraft.server.level.ServerLevel;
+
+public class MagicFleshOnPlayerStoppedUsingProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z) {
+ if (world instanceof ServerLevel _level)
+ _level.addFreshEntity(new ExperienceOrb(_level, x, y, z, Mth.nextInt(RandomSource.create(), 6, 9)));
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/NetherrackingLogicProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/NetherrackingLogicProcedure.java
new file mode 100644
index 0000000..447c8b6
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/NetherrackingLogicProcedure.java
@@ -0,0 +1,21 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.effect.MobEffects;
+import net.minecraft.world.effect.MobEffectInstance;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModEnchantments;
+
+public class NetherrackingLogicProcedure {
+ public static void execute(LevelAccessor world, Entity entity, ItemStack itemstack) {
+ if (entity == null)
+ return;
+ if (itemstack.getEnchantmentLevel(NimsRandomBullshitModEnchantments.NETHERRACKING_ENCHANTMENT.get()) > 0) {
+ if (entity instanceof LivingEntity _entity && !_entity.level().isClientSide())
+ _entity.addEffect(new MobEffectInstance(MobEffects.DIG_SPEED, 2, (int) (itemstack.getEnchantmentLevel(NimsRandomBullshitModEnchantments.NETHERRACKING_ENCHANTMENT.get()) * 4), false, false));
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/NetherrackitePickaxeBlockDestroyedWithToolProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/NetherrackitePickaxeBlockDestroyedWithToolProcedure.java
new file mode 100644
index 0000000..19d9e0a
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/NetherrackitePickaxeBlockDestroyedWithToolProcedure.java
@@ -0,0 +1,20 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.item.ItemEntity;
+import net.minecraft.server.level.ServerLevel;
+
+public class NetherrackitePickaxeBlockDestroyedWithToolProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z, BlockState blockstate) {
+ if (blockstate.getBlock() == Blocks.NETHERRACK) {
+ if (world instanceof ServerLevel _level) {
+ ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.NETHERRACK));
+ entityToSpawn.setPickUpDelay(10);
+ _level.addFreshEntity(entityToSpawn);
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/OreMinerGUISlot0ImageDisplayConditionProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/OreMinerGUISlot0ImageDisplayConditionProcedure.java
new file mode 100644
index 0000000..fd9ea2e
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/OreMinerGUISlot0ImageDisplayConditionProcedure.java
@@ -0,0 +1,29 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.item.ItemStack;
+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 OreMinerGUISlot0ImageDisplayConditionProcedure {
+ public static boolean execute(Entity entity) {
+ if (entity == null)
+ return false;
+ if (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(0) > 0) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/OreMinerMineButtonPressedProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/OreMinerMineButtonPressedProcedure.java
new file mode 100644
index 0000000..69c4c87
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/OreMinerMineButtonPressedProcedure.java
@@ -0,0 +1,173 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraftforge.registries.ForgeRegistries;
+
+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.inventory.Slot;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.util.RandomSource;
+import net.minecraft.util.Mth;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.BlockPos;
+
+import java.util.function.Supplier;
+import java.util.Map;
+
+public class OreMinerMineButtonPressedProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) {
+ if (entity == null)
+ return;
+ double oreMinerRoll = 0;
+ if ((entity instanceof Player _plrSlotItem && _plrSlotItem.containerMenu instanceof Supplier _splr && _splr.get() instanceof Map _slt ? ((Slot) _slt.get(0)).getItem() : ItemStack.EMPTY).getItem() == Items.DIAMOND_PICKAXE) {
+ if (world instanceof Level _level) {
+ if (!_level.isClientSide()) {
+ _level.playSound(null, BlockPos.containing(x, y, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("block.stone.break")), SoundSource.BLOCKS, (float) 0.8, (float) Mth.nextDouble(RandomSource.create(), 0.9, 1.1));
+ } else {
+ _level.playLocalSound(x, y, z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("block.stone.break")), SoundSource.BLOCKS, (float) 0.8, (float) Mth.nextDouble(RandomSource.create(), 0.9, 1.1), false);
+ }
+ }
+ {
+ ItemStack _ist = (entity instanceof Player _plrSlotItem && _plrSlotItem.containerMenu instanceof Supplier _splr && _splr.get() instanceof Map _slt ? ((Slot) _slt.get(0)).getItem() : ItemStack.EMPTY);
+ if (_ist.hurt(1, RandomSource.create(), null)) {
+ _ist.shrink(1);
+ _ist.setDamageValue(0);
+ }
+ }
+ oreMinerRoll = Math.random();
+ if (oreMinerRoll < 0.125) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = new ItemStack(Items.COAL).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(1) + Mth.nextInt(RandomSource.create(), 1, 3)));
+ ((Slot) _slots.get(1)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ } else if (oreMinerRoll < 0.25) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = new ItemStack(Items.RAW_COPPER).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(2) + Mth.nextInt(RandomSource.create(), 2, 4)));
+ ((Slot) _slots.get(2)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ } else if (oreMinerRoll < 0.375) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = new ItemStack(Items.RAW_IRON).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(3) + 1));
+ ((Slot) _slots.get(3)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ } else if (oreMinerRoll < 0.5) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = new ItemStack(Items.RAW_GOLD).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(4) + 1));
+ ((Slot) _slots.get(4)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ } else if (oreMinerRoll < 0.625) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = new ItemStack(Items.DIAMOND).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(5) + Mth.nextInt(RandomSource.create(), 1, 2)));
+ ((Slot) _slots.get(5)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ } else if (oreMinerRoll < 0.75) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = new ItemStack(Items.EMERALD).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(6) + Mth.nextInt(RandomSource.create(), 1, 2)));
+ ((Slot) _slots.get(6)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ } else if (oreMinerRoll < 0.875) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = new ItemStack(Items.REDSTONE).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(7) + Mth.nextInt(RandomSource.create(), 3, 6)));
+ ((Slot) _slots.get(7)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ } else {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = new ItemStack(Items.NETHERITE_SCRAP).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(8) + 1));
+ ((Slot) _slots.get(8)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/PassiveIncomeProcedureProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/PassiveIncomeProcedureProcedure.java
new file mode 100644
index 0000000..db42140
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/PassiveIncomeProcedureProcedure.java
@@ -0,0 +1,59 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.eventbus.api.Event;
+import net.minecraftforge.event.TickEvent;
+
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EquipmentSlot;
+import net.minecraft.world.entity.Entity;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModEnchantments;
+
+import javax.annotation.Nullable;
+
+@Mod.EventBusSubscriber
+public class PassiveIncomeProcedureProcedure {
+ @SubscribeEvent
+ public static void onPlayerTick(TickEvent.PlayerTickEvent event) {
+ if (event.phase == TickEvent.Phase.END) {
+ execute(event, event.player.level(), event.player);
+ }
+ }
+
+ public static void execute(LevelAccessor world, Entity entity) {
+ execute(null, world, entity);
+ }
+
+ private static void execute(@Nullable Event event, LevelAccessor world, Entity entity) {
+ if (entity == null)
+ return;
+ entity.getPersistentData().putDouble("PassiveIncomeCounter", (entity.getPersistentData().getDouble("PassiveIncomeCounter") + 1));
+ if (entity.getPersistentData().getDouble("PassiveIncomeCounter") % 80 == 0) {
+ if ((entity instanceof LivingEntity _entGetArmor ? _entGetArmor.getItemBySlot(EquipmentSlot.FEET) : ItemStack.EMPTY).getEnchantmentLevel(NimsRandomBullshitModEnchantments.PASSIVE_INCOME_ENCHANTMENT.get()) > 0) {
+ if (entity instanceof Player _player)
+ _player.giveExperiencePoints(
+ (entity instanceof LivingEntity _entGetArmor ? _entGetArmor.getItemBySlot(EquipmentSlot.FEET) : ItemStack.EMPTY).getEnchantmentLevel(NimsRandomBullshitModEnchantments.PASSIVE_INCOME_ENCHANTMENT.get()));
+ }
+ if ((entity instanceof LivingEntity _entGetArmor ? _entGetArmor.getItemBySlot(EquipmentSlot.LEGS) : ItemStack.EMPTY).getEnchantmentLevel(NimsRandomBullshitModEnchantments.PASSIVE_INCOME_ENCHANTMENT.get()) > 0) {
+ if (entity instanceof Player _player)
+ _player.giveExperiencePoints(
+ (entity instanceof LivingEntity _entGetArmor ? _entGetArmor.getItemBySlot(EquipmentSlot.LEGS) : ItemStack.EMPTY).getEnchantmentLevel(NimsRandomBullshitModEnchantments.PASSIVE_INCOME_ENCHANTMENT.get()));
+ }
+ if ((entity instanceof LivingEntity _entGetArmor ? _entGetArmor.getItemBySlot(EquipmentSlot.CHEST) : ItemStack.EMPTY).getEnchantmentLevel(NimsRandomBullshitModEnchantments.PASSIVE_INCOME_ENCHANTMENT.get()) > 0) {
+ if (entity instanceof Player _player)
+ _player.giveExperiencePoints(
+ (entity instanceof LivingEntity _entGetArmor ? _entGetArmor.getItemBySlot(EquipmentSlot.CHEST) : ItemStack.EMPTY).getEnchantmentLevel(NimsRandomBullshitModEnchantments.PASSIVE_INCOME_ENCHANTMENT.get()));
+ }
+ if ((entity instanceof LivingEntity _entGetArmor ? _entGetArmor.getItemBySlot(EquipmentSlot.HEAD) : ItemStack.EMPTY).getEnchantmentLevel(NimsRandomBullshitModEnchantments.PASSIVE_INCOME_ENCHANTMENT.get()) > 0) {
+ if (entity instanceof Player _player)
+ _player.giveExperiencePoints(
+ (entity instanceof LivingEntity _entGetArmor ? _entGetArmor.getItemBySlot(EquipmentSlot.HEAD) : ItemStack.EMPTY).getEnchantmentLevel(NimsRandomBullshitModEnchantments.PASSIVE_INCOME_ENCHANTMENT.get()));
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/ShitProjectileProjectileHitsPlayerProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/ShitProjectileProjectileHitsPlayerProcedure.java
new file mode 100644
index 0000000..ee60e2e
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/ShitProjectileProjectileHitsPlayerProcedure.java
@@ -0,0 +1,34 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraftforge.registries.ForgeRegistries;
+
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.effect.MobEffectInstance;
+import net.minecraft.util.RandomSource;
+import net.minecraft.util.Mth;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModMobEffects;
+
+public class ShitProjectileProjectileHitsPlayerProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) {
+ if (entity == null || sourceentity == null)
+ return;
+ if (!(entity == sourceentity)) {
+ if (world instanceof Level _level) {
+ if (!_level.isClientSide()) {
+ _level.playSound(null, BlockPos.containing(x, y, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.ghast.scream")), SoundSource.PLAYERS, (float) 0.8, (float) Mth.nextDouble(RandomSource.create(), 0.9, 1.1));
+ } else {
+ _level.playLocalSound(x, y, z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.ghast.scream")), SoundSource.PLAYERS, (float) 0.8, (float) Mth.nextDouble(RandomSource.create(), 0.9, 1.1), false);
+ }
+ }
+ if (entity instanceof LivingEntity _entity && !_entity.level().isClientSide())
+ _entity.addEffect(new MobEffectInstance(NimsRandomBullshitModMobEffects.STINKY_EFFECT.get(), 60, 1, false, false));
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/ShitSpawnLogicProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/ShitSpawnLogicProcedure.java
new file mode 100644
index 0000000..d74b0b1
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/ShitSpawnLogicProcedure.java
@@ -0,0 +1,41 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.eventbus.api.Event;
+import net.minecraftforge.event.entity.living.LivingEvent;
+
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.item.ItemEntity;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.server.level.ServerLevel;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModItems;
+
+import javax.annotation.Nullable;
+
+@Mod.EventBusSubscriber
+public class ShitSpawnLogicProcedure {
+ @SubscribeEvent
+ public static void onEntityTick(LivingEvent.LivingTickEvent event) {
+ execute(event, event.getEntity().level(), event.getEntity().getX(), event.getEntity().getY(), event.getEntity().getZ(), event.getEntity());
+ }
+
+ public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) {
+ execute(null, world, x, y, z, entity);
+ }
+
+ private static void execute(@Nullable Event event, LevelAccessor world, double x, double y, double z, Entity entity) {
+ if (entity == null)
+ return;
+ entity.getPersistentData().putDouble("ShitCounter", (entity.getPersistentData().getDouble("ShitCounter") + 1));
+ if (entity.getPersistentData().getDouble("ShitCounter") % 6000 == 0 && Math.random() < 0.125) {
+ if (world instanceof ServerLevel _level) {
+ ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(NimsRandomBullshitModItems.SHIT.get()));
+ entityToSpawn.setPickUpDelay(20);
+ _level.addFreshEntity(entityToSpawn);
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/StinkyEffectEffectExpiresProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/StinkyEffectEffectExpiresProcedure.java
new file mode 100644
index 0000000..e7cf0c9
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/StinkyEffectEffectExpiresProcedure.java
@@ -0,0 +1,17 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.Entity;
+
+import net.mcreator.nimsrandombullshit.world.inventory.ShitGUIMenu;
+
+public class StinkyEffectEffectExpiresProcedure {
+ public static void execute(Entity entity) {
+ if (entity == null)
+ return;
+ if (entity instanceof Player _plr0 && _plr0.containerMenu instanceof ShitGUIMenu) {
+ if (entity instanceof Player _player)
+ _player.closeContainer();
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/StinkyEffectOnEffectActiveTickProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/StinkyEffectOnEffectActiveTickProcedure.java
new file mode 100644
index 0000000..475b7a4
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/StinkyEffectOnEffectActiveTickProcedure.java
@@ -0,0 +1,41 @@
+package net.mcreator.nimsrandombullshit.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 net.mcreator.nimsrandombullshit.world.inventory.ShitGUIMenu;
+
+import io.netty.buffer.Unpooled;
+
+public class StinkyEffectOnEffectActiveTickProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) {
+ if (entity == null)
+ return;
+ if (!(entity instanceof Player _plr0 && _plr0.containerMenu instanceof ShitGUIMenu)) {
+ 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("ShitGUI");
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) {
+ return new ShitGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(_bpos));
+ }
+ }, _bpos);
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/SummonedEntityEffectEffectExpiresProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/SummonedEntityEffectEffectExpiresProcedure.java
new file mode 100644
index 0000000..7881076
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/SummonedEntityEffectEffectExpiresProcedure.java
@@ -0,0 +1,19 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.damagesource.DamageTypes;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.core.registries.Registries;
+import net.minecraft.core.particles.ParticleTypes;
+
+public class SummonedEntityEffectEffectExpiresProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) {
+ if (entity == null)
+ return;
+ if (world instanceof ServerLevel _level)
+ _level.sendParticles(ParticleTypes.SOUL_FIRE_FLAME, x, y, z, 6, 0.6, 0.6, 0.6, 0.16);
+ entity.hurt(new DamageSource(world.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(DamageTypes.FELL_OUT_OF_WORLD)), 999);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/world/inventory/OreMinerGUIMenu.java b/src/main/java/net/mcreator/nimsrandombullshit/world/inventory/OreMinerGUIMenu.java
new file mode 100644
index 0000000..0613cd6
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/world/inventory/OreMinerGUIMenu.java
@@ -0,0 +1,342 @@
+
+package net.mcreator.nimsrandombullshit.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 net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModMenus;
+
+import java.util.function.Supplier;
+import java.util.Map;
+import java.util.HashMap;
+
+public class OreMinerGUIMenu extends AbstractContainerMenu implements Supplier