woo
|
@ -56,7 +56,7 @@
|
||||||
"material": {
|
"material": {
|
||||||
"value": "ROCK"
|
"value": "ROCK"
|
||||||
},
|
},
|
||||||
"tickRate": 0,
|
"tickRate": 20,
|
||||||
"tickRandomly": false,
|
"tickRandomly": false,
|
||||||
"isReplaceable": false,
|
"isReplaceable": false,
|
||||||
"canProvidePower": false,
|
"canProvidePower": false,
|
||||||
|
@ -100,13 +100,13 @@
|
||||||
"unbreakable": false,
|
"unbreakable": false,
|
||||||
"breakHarvestLevel": 1,
|
"breakHarvestLevel": 1,
|
||||||
"isBonemealable": false,
|
"isBonemealable": false,
|
||||||
"hasInventory": false,
|
"hasInventory": true,
|
||||||
"guiBoundTo": "<NONE>",
|
"guiBoundTo": "<NONE>",
|
||||||
"openGUIOnRightClick": false,
|
"openGUIOnRightClick": false,
|
||||||
"inventorySize": 9,
|
"inventorySize": 0,
|
||||||
"inventoryStackSize": 64,
|
"inventoryStackSize": 64,
|
||||||
"inventoryDropWhenDestroyed": true,
|
"inventoryDropWhenDestroyed": false,
|
||||||
"inventoryComparatorPower": true,
|
"inventoryComparatorPower": false,
|
||||||
"inventoryOutSlotIDs": [],
|
"inventoryOutSlotIDs": [],
|
||||||
"inventoryInSlotIDs": [],
|
"inventoryInSlotIDs": [],
|
||||||
"hasEnergyStorage": false,
|
"hasEnergyStorage": false,
|
||||||
|
@ -119,20 +119,7 @@
|
||||||
"fluidRestrictions": [],
|
"fluidRestrictions": [],
|
||||||
"spawnWorldTypes": [],
|
"spawnWorldTypes": [],
|
||||||
"restrictionBiomes": [],
|
"restrictionBiomes": [],
|
||||||
"blocksToReplace": [
|
"blocksToReplace": [],
|
||||||
{
|
|
||||||
"value": "Blocks.STONE#0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "Blocks.STONE#1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "Blocks.STONE#3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "Blocks.STONE#5"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"generationShape": "UNIFORM",
|
"generationShape": "UNIFORM",
|
||||||
"frequencyPerChunks": 10,
|
"frequencyPerChunks": 10,
|
||||||
"frequencyOnChunk": 16,
|
"frequencyOnChunk": 16,
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
"_fv": 47,
|
"_fv": 47,
|
||||||
"_type": "block",
|
"_type": "block",
|
||||||
"definition": {
|
"definition": {
|
||||||
"texture": "heart",
|
"texture": "heartblock",
|
||||||
"textureTop": "heart",
|
"textureTop": "heartblock",
|
||||||
"textureLeft": "heart",
|
"textureLeft": "heartblock",
|
||||||
"textureFront": "heart",
|
"textureFront": "heartblock",
|
||||||
"textureRight": "heart",
|
"textureRight": "heartblock",
|
||||||
"textureBack": "heart",
|
"textureBack": "heartblock",
|
||||||
"renderType": 10,
|
"renderType": 10,
|
||||||
"customModelName": "Normal",
|
"customModelName": "Normal",
|
||||||
"rotationMode": 0,
|
"rotationMode": 0,
|
||||||
|
|
129
elements/HeartCluster.mod.json
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
{
|
||||||
|
"_fv": 47,
|
||||||
|
"_type": "block",
|
||||||
|
"definition": {
|
||||||
|
"texture": "heartcluster",
|
||||||
|
"textureTop": "",
|
||||||
|
"textureLeft": "",
|
||||||
|
"textureFront": "",
|
||||||
|
"textureRight": "",
|
||||||
|
"textureBack": "",
|
||||||
|
"renderType": 12,
|
||||||
|
"customModelName": "Cross model",
|
||||||
|
"rotationMode": 2,
|
||||||
|
"enablePitch": false,
|
||||||
|
"emissiveRendering": false,
|
||||||
|
"displayFluidOverlay": false,
|
||||||
|
"itemTexture": "heartcluster",
|
||||||
|
"particleTexture": "",
|
||||||
|
"tintType": "No tint",
|
||||||
|
"isItemTinted": false,
|
||||||
|
"hasTransparency": false,
|
||||||
|
"connectedSides": false,
|
||||||
|
"transparencyType": "CUTOUT",
|
||||||
|
"disableOffset": false,
|
||||||
|
"boundingBoxes": [
|
||||||
|
{
|
||||||
|
"mx": 0.0,
|
||||||
|
"my": 0.0,
|
||||||
|
"mz": 0.0,
|
||||||
|
"Mx": 16.0,
|
||||||
|
"My": 16.0,
|
||||||
|
"Mz": 16.0,
|
||||||
|
"subtract": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Heart Cluster",
|
||||||
|
"specialInfo": [],
|
||||||
|
"hardness": 1.0,
|
||||||
|
"resistance": 10.0,
|
||||||
|
"hasGravity": false,
|
||||||
|
"isWaterloggable": true,
|
||||||
|
"creativeTab": {
|
||||||
|
"value": "No creative tab entry"
|
||||||
|
},
|
||||||
|
"destroyTool": "pickaxe",
|
||||||
|
"customDrop": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"dropAmount": 4,
|
||||||
|
"useLootTableForDrops": false,
|
||||||
|
"requiresCorrectTool": true,
|
||||||
|
"enchantPowerBonus": 0.0,
|
||||||
|
"plantsGrowOn": false,
|
||||||
|
"canRedstoneConnect": false,
|
||||||
|
"lightOpacity": 0,
|
||||||
|
"material": {
|
||||||
|
"value": "GLASS"
|
||||||
|
},
|
||||||
|
"tickRate": 20,
|
||||||
|
"tickRandomly": false,
|
||||||
|
"isReplaceable": false,
|
||||||
|
"canProvidePower": false,
|
||||||
|
"emittedRedstonePower": {
|
||||||
|
"fixedValue": 15.0
|
||||||
|
},
|
||||||
|
"colorOnMap": "RED_TERRACOTTA",
|
||||||
|
"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": "AMETHYST_CLUSTER"
|
||||||
|
},
|
||||||
|
"breakSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"fallSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"hitSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"placeSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"stepSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"luminance": 0,
|
||||||
|
"unbreakable": false,
|
||||||
|
"breakHarvestLevel": 1,
|
||||||
|
"isBonemealable": false,
|
||||||
|
"hasInventory": true,
|
||||||
|
"guiBoundTo": "<NONE>",
|
||||||
|
"openGUIOnRightClick": false,
|
||||||
|
"inventorySize": 0,
|
||||||
|
"inventoryStackSize": 64,
|
||||||
|
"inventoryDropWhenDestroyed": false,
|
||||||
|
"inventoryComparatorPower": false,
|
||||||
|
"inventoryOutSlotIDs": [],
|
||||||
|
"inventoryInSlotIDs": [],
|
||||||
|
"hasEnergyStorage": false,
|
||||||
|
"energyInitial": 0,
|
||||||
|
"energyCapacity": 400000,
|
||||||
|
"energyMaxReceive": 200,
|
||||||
|
"energyMaxExtract": 200,
|
||||||
|
"isFluidTank": false,
|
||||||
|
"fluidCapacity": 8000,
|
||||||
|
"fluidRestrictions": [],
|
||||||
|
"spawnWorldTypes": [],
|
||||||
|
"restrictionBiomes": [],
|
||||||
|
"blocksToReplace": [],
|
||||||
|
"generationShape": "UNIFORM",
|
||||||
|
"frequencyPerChunks": 10,
|
||||||
|
"frequencyOnChunk": 16,
|
||||||
|
"minGenerateHeight": 0,
|
||||||
|
"maxGenerateHeight": 64
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,7 +4,7 @@
|
||||||
"definition": {
|
"definition": {
|
||||||
"name": "Heart Geodes",
|
"name": "Heart Geodes",
|
||||||
"icon": {
|
"icon": {
|
||||||
"value": "CUSTOM:BuddingHeartBlock"
|
"value": "CUSTOM:HeartCluster"
|
||||||
},
|
},
|
||||||
"showSearch": false
|
"showSearch": false
|
||||||
}
|
}
|
||||||
|
|
129
elements/LargeHeartBud.mod.json
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
{
|
||||||
|
"_fv": 47,
|
||||||
|
"_type": "block",
|
||||||
|
"definition": {
|
||||||
|
"texture": "largeheartbud",
|
||||||
|
"textureTop": "",
|
||||||
|
"textureLeft": "",
|
||||||
|
"textureFront": "",
|
||||||
|
"textureRight": "",
|
||||||
|
"textureBack": "",
|
||||||
|
"renderType": 12,
|
||||||
|
"customModelName": "Cross model",
|
||||||
|
"rotationMode": 2,
|
||||||
|
"enablePitch": false,
|
||||||
|
"emissiveRendering": false,
|
||||||
|
"displayFluidOverlay": false,
|
||||||
|
"itemTexture": "largeheartbud",
|
||||||
|
"particleTexture": "",
|
||||||
|
"tintType": "No tint",
|
||||||
|
"isItemTinted": false,
|
||||||
|
"hasTransparency": true,
|
||||||
|
"connectedSides": false,
|
||||||
|
"transparencyType": "CUTOUT",
|
||||||
|
"disableOffset": false,
|
||||||
|
"boundingBoxes": [
|
||||||
|
{
|
||||||
|
"mx": 0.125,
|
||||||
|
"my": 0.125,
|
||||||
|
"mz": 0.0,
|
||||||
|
"Mx": 0.875,
|
||||||
|
"My": 0.875,
|
||||||
|
"Mz": 1.0,
|
||||||
|
"subtract": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Large Heart Bud",
|
||||||
|
"specialInfo": [],
|
||||||
|
"hardness": 1.0,
|
||||||
|
"resistance": 10.0,
|
||||||
|
"hasGravity": false,
|
||||||
|
"isWaterloggable": false,
|
||||||
|
"creativeTab": {
|
||||||
|
"value": "No creative tab entry"
|
||||||
|
},
|
||||||
|
"destroyTool": "pickaxe",
|
||||||
|
"customDrop": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"dropAmount": 0,
|
||||||
|
"useLootTableForDrops": false,
|
||||||
|
"requiresCorrectTool": true,
|
||||||
|
"enchantPowerBonus": 0.0,
|
||||||
|
"plantsGrowOn": false,
|
||||||
|
"canRedstoneConnect": false,
|
||||||
|
"lightOpacity": 0,
|
||||||
|
"material": {
|
||||||
|
"value": "GLASS"
|
||||||
|
},
|
||||||
|
"tickRate": 20,
|
||||||
|
"tickRandomly": false,
|
||||||
|
"isReplaceable": false,
|
||||||
|
"canProvidePower": false,
|
||||||
|
"emittedRedstonePower": {
|
||||||
|
"fixedValue": 15.0
|
||||||
|
},
|
||||||
|
"colorOnMap": "RED_TERRACOTTA",
|
||||||
|
"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": "AMETHYST_CLUSTER"
|
||||||
|
},
|
||||||
|
"breakSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"fallSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"hitSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"placeSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"stepSound": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"luminance": 0,
|
||||||
|
"unbreakable": false,
|
||||||
|
"breakHarvestLevel": 1,
|
||||||
|
"isBonemealable": false,
|
||||||
|
"hasInventory": true,
|
||||||
|
"guiBoundTo": "<NONE>",
|
||||||
|
"openGUIOnRightClick": false,
|
||||||
|
"inventorySize": 0,
|
||||||
|
"inventoryStackSize": 64,
|
||||||
|
"inventoryDropWhenDestroyed": false,
|
||||||
|
"inventoryComparatorPower": false,
|
||||||
|
"inventoryOutSlotIDs": [],
|
||||||
|
"inventoryInSlotIDs": [],
|
||||||
|
"hasEnergyStorage": false,
|
||||||
|
"energyInitial": 0,
|
||||||
|
"energyCapacity": 400000,
|
||||||
|
"energyMaxReceive": 200,
|
||||||
|
"energyMaxExtract": 200,
|
||||||
|
"isFluidTank": false,
|
||||||
|
"fluidCapacity": 8000,
|
||||||
|
"fluidRestrictions": [],
|
||||||
|
"spawnWorldTypes": [],
|
||||||
|
"restrictionBiomes": [],
|
||||||
|
"blocksToReplace": [],
|
||||||
|
"generationShape": "UNIFORM",
|
||||||
|
"frequencyPerChunks": 10,
|
||||||
|
"frequencyOnChunk": 16,
|
||||||
|
"minGenerateHeight": 0,
|
||||||
|
"maxGenerateHeight": 64
|
||||||
|
}
|
||||||
|
}
|
9
elements/TestRules.mod.json
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"_fv": 47,
|
||||||
|
"_type": "command",
|
||||||
|
"definition": {
|
||||||
|
"commandName": "testrules",
|
||||||
|
"permissionLevel": "4",
|
||||||
|
"argsxml": "<xml xmlns=\"https://developers.google.com/blockly/xml\"><block type=\"args_start\" deletable=\"false\" x=\"40\" y=\"40\"><next><block type=\"logic\"><field name=\"name\">enable</field><statement name=\"args\"><block type=\"call_procedure\"><field name=\"procedure\">TestRulesP</field></block></statement></block></next></block></xml>"
|
||||||
|
}
|
||||||
|
}
|
7
elements/TestRulesP.mod.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"_fv": 47,
|
||||||
|
"_type": "procedure",
|
||||||
|
"definition": {
|
||||||
|
"procedurexml": "<xml xmlns=\"https://developers.google.com/blockly/xml\"><block type=\"event_trigger\" deletable=\"false\" x=\"65\" y=\"68\"><field name=\"trigger\">no_ext_trigger</field><next><block type=\"controls_if\"><mutation else=\"1\"></mutation><value name=\"IF0\"><block type=\"get_command_parameter_logic\"><field name=\"param\">enabled</field></block></value><statement name=\"DO0\"><block type=\"world_data_logic_setgamerule\"><field name=\"gamerulesboolean\">KEEP_INVENTORY</field><value name=\"gameruleValue\"><block type=\"logic_boolean\"><field name=\"BOOL\">TRUE</field></block></value><next><block type=\"world_data_logic_setgamerule\"><field name=\"gamerulesboolean\">DO_MOB_SPAWNING</field><value name=\"gameruleValue\"><block type=\"logic_boolean\"><field name=\"BOOL\">FALSE</field></block></value><next><block type=\"world_data_logic_setgamerule\"><field name=\"gamerulesboolean\">DO_DAYLIGHT_CYCLE</field><value name=\"gameruleValue\"><block type=\"logic_boolean\"><field name=\"BOOL\">FALSE</field></block></value><next><block type=\"world_data_logic_setgamerule\"><field name=\"gamerulesboolean\">DO_WEATHER_CYCLE</field><value name=\"gameruleValue\"><block type=\"logic_boolean\"><field name=\"BOOL\">FALSE</field></block></value><next><block type=\"entity_send_chat\"><value name=\"text\"><block type=\"text\"><field name=\"TEXT\">Test rules enabled!</field></block></value><value name=\"entity\"><block type=\"entity_from_deps\"></block></value><value name=\"actbar\"><block type=\"logic_boolean\"><field name=\"BOOL\">FALSE</field></block></value></block></next></block></next></block></next></block></next></block></statement><statement name=\"ELSE\"><block type=\"world_data_logic_setgamerule\"><field name=\"gamerulesboolean\">KEEP_INVENTORY</field><value name=\"gameruleValue\"><block type=\"logic_boolean\"><field name=\"BOOL\">FALSE</field></block></value><next><block type=\"world_data_logic_setgamerule\"><field name=\"gamerulesboolean\">DO_MOB_SPAWNING</field><value name=\"gameruleValue\"><block type=\"logic_boolean\"><field name=\"BOOL\">TRUE</field></block></value><next><block type=\"world_data_logic_setgamerule\"><field name=\"gamerulesboolean\">DO_DAYLIGHT_CYCLE</field><value name=\"gameruleValue\"><block type=\"logic_boolean\"><field name=\"BOOL\">TRUE</field></block></value><next><block type=\"world_data_logic_setgamerule\"><field name=\"gamerulesboolean\">DO_WEATHER_CYCLE</field><value name=\"gameruleValue\"><block type=\"logic_boolean\"><field name=\"BOOL\">TRUE</field></block></value><next><block type=\"entity_send_chat\"><value name=\"text\"><block type=\"text\"><field name=\"TEXT\">Test rules disabled!</field></block></value><value name=\"entity\"><block type=\"entity_from_deps\"></block></value><value name=\"actbar\"><block type=\"logic_boolean\"><field name=\"BOOL\">FALSE</field></block></value></block></next></block></next></block></next></block></next></block></statement></block></next></block></xml>"
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,10 +9,11 @@
|
||||||
"registry_name": "budding_heart_block",
|
"registry_name": "budding_heart_block",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"files": [
|
"files": [
|
||||||
|
"src/main/java/net/seaswimmerthefsh/heartgeodes/block/entity/BuddingHeartBlockBlockEntity.java",
|
||||||
"src/main/resources/assets/heartgeodes/models/block/budding_heart_block.json",
|
"src/main/resources/assets/heartgeodes/models/block/budding_heart_block.json",
|
||||||
"src/main/resources/assets/heartgeodes/blockstates/budding_heart_block.json",
|
"src/main/resources/assets/heartgeodes/blockstates/budding_heart_block.json",
|
||||||
"src/main/resources/assets/heartgeodes/models/item/budding_heart_block.json",
|
"src/main/resources/assets/heartgeodes/models/item/budding_heart_block.json",
|
||||||
"src/main/java/net/mcreator/heartgeodes/block/BuddingHeartBlockBlock.java"
|
"src/main/java/net/seaswimmerthefsh/heartgeodes/block/BuddingHeartBlockBlock.java"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -26,7 +27,7 @@
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"files": [
|
"files": [
|
||||||
"src/main/resources/assets/heartgeodes/models/item/heart_block.json",
|
"src/main/resources/assets/heartgeodes/models/item/heart_block.json",
|
||||||
"src/main/java/net/mcreator/heartgeodes/block/HeartBlockBlock.java",
|
"src/main/java/net/seaswimmerthefsh/heartgeodes/block/HeartBlockBlock.java",
|
||||||
"src/main/resources/assets/heartgeodes/blockstates/heart_block.json",
|
"src/main/resources/assets/heartgeodes/blockstates/heart_block.json",
|
||||||
"src/main/resources/assets/heartgeodes/models/block/heart_block.json"
|
"src/main/resources/assets/heartgeodes/models/block/heart_block.json"
|
||||||
]
|
]
|
||||||
|
@ -42,6 +43,80 @@
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"files": []
|
"files": []
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "HeartCluster",
|
||||||
|
"type": "block",
|
||||||
|
"sortid": 4,
|
||||||
|
"compiles": true,
|
||||||
|
"locked_code": false,
|
||||||
|
"registry_name": "heart_cluster",
|
||||||
|
"metadata": {
|
||||||
|
"files": [
|
||||||
|
"src/main/java/net/seaswimmerthefsh/heartgeodes/block/HeartClusterBlock.java",
|
||||||
|
"src/main/java/net/seaswimmerthefsh/heartgeodes/block/entity/HeartClusterBlockEntity.java",
|
||||||
|
"src/main/resources/assets/heartgeodes/models/block/heart_cluster.json",
|
||||||
|
"src/main/resources/assets/heartgeodes/blockstates/heart_cluster.json",
|
||||||
|
"src/main/resources/assets/heartgeodes/models/item/heart_cluster.json"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LargeHeartBud",
|
||||||
|
"type": "block",
|
||||||
|
"sortid": 5,
|
||||||
|
"compiles": true,
|
||||||
|
"locked_code": false,
|
||||||
|
"registry_name": "large_heart_bud",
|
||||||
|
"metadata": {
|
||||||
|
"files": [
|
||||||
|
"src/main/resources/assets/heartgeodes/blockstates/large_heart_bud.json",
|
||||||
|
"src/main/resources/assets/heartgeodes/models/block/large_heart_bud.json",
|
||||||
|
"src/main/java/net/seaswimmerthefsh/heartgeodes/block/entity/LargeHeartBudBlockEntity.java",
|
||||||
|
"src/main/resources/assets/heartgeodes/models/item/large_heart_bud.json",
|
||||||
|
"src/main/java/net/seaswimmerthefsh/heartgeodes/block/LargeHeartBudBlock.java"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "TestRules",
|
||||||
|
"type": "command",
|
||||||
|
"sortid": 6,
|
||||||
|
"compiles": true,
|
||||||
|
"locked_code": false,
|
||||||
|
"registry_name": "test_rules",
|
||||||
|
"metadata": {
|
||||||
|
"files": [
|
||||||
|
"src/main/java/net/seaswimmerthefsh/heartgeodes/command/TestRulesCommand.java"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "TestRulesP",
|
||||||
|
"type": "procedure",
|
||||||
|
"sortid": 7,
|
||||||
|
"compiles": true,
|
||||||
|
"locked_code": false,
|
||||||
|
"registry_name": "test_rules_p",
|
||||||
|
"metadata": {
|
||||||
|
"files": [
|
||||||
|
"src/main/java/net/seaswimmerthefsh/heartgeodes/procedures/TestRulesPProcedure.java"
|
||||||
|
],
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"name": "arguments",
|
||||||
|
"type": "cmdcontext"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "entity",
|
||||||
|
"type": "entity"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "world",
|
||||||
|
"type": "world"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"variable_elements": [],
|
"variable_elements": [],
|
||||||
|
@ -49,8 +124,10 @@
|
||||||
"language_map": {
|
"language_map": {
|
||||||
"en_us": {
|
"en_us": {
|
||||||
"block.heartgeodes.budding_heart_block": "Budding Heart Block",
|
"block.heartgeodes.budding_heart_block": "Budding Heart Block",
|
||||||
|
"block.heartgeodes.heart_cluster": "Heart Cluster",
|
||||||
"block.heartgeodes.heart_block": "Heart Block",
|
"block.heartgeodes.heart_block": "Heart Block",
|
||||||
"item_group.heartgeodes.heart_geodes": "Heart Geodes"
|
"item_group.heartgeodes.heart_geodes": "Heart Geodes",
|
||||||
|
"block.heartgeodes.large_heart_bud": "Large Heart Bud"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"foldersRoot": {
|
"foldersRoot": {
|
||||||
|
@ -61,9 +138,10 @@
|
||||||
"modid": "heartgeodes",
|
"modid": "heartgeodes",
|
||||||
"modName": "HeartGeodes",
|
"modName": "HeartGeodes",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"author": "seasw, MCreator",
|
"description": "This mod adds Geodes for Scaling Difficulty to the game.",
|
||||||
"websiteURL": "https://mcreator.net",
|
"author": "SeaswimmerTheFsh",
|
||||||
"license": "Academic Free License v3.0",
|
"websiteURL": "https://coastalcommits.com/GalacticFactory/HeartGeodes",
|
||||||
|
"license": "MIT License",
|
||||||
"disableForgeVersionCheck": true,
|
"disableForgeVersionCheck": true,
|
||||||
"serverSideOnly": false,
|
"serverSideOnly": false,
|
||||||
"requiredMods": [],
|
"requiredMods": [],
|
||||||
|
@ -71,7 +149,8 @@
|
||||||
"dependants": [],
|
"dependants": [],
|
||||||
"mcreatorDependencies": [],
|
"mcreatorDependencies": [],
|
||||||
"currentGenerator": "neoforge-1.20.1",
|
"currentGenerator": "neoforge-1.20.1",
|
||||||
"modElementsPackage": "net.mcreator.heartgeodes",
|
"credits": "Created using mod maker MCreator - https://mcreator.net/about",
|
||||||
|
"modElementsPackage": "net.seaswimmerthefsh.heartgeodes",
|
||||||
"lockBaseModFiles": false
|
"lockBaseModFiles": false
|
||||||
},
|
},
|
||||||
"mcreatorVersion": 202300336712
|
"mcreatorVersion": 202300336712
|
||||||
|
|
60
models/crystal_0.json
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"textures": {
|
||||||
|
"particle": "Desktop/ice_crystal_3",
|
||||||
|
"crystal": "Desktop/ice_crystal_3"
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"gui": {
|
||||||
|
"rotation": [ 30, 225, 0 ],
|
||||||
|
"translation": [ 0, 0, 0],
|
||||||
|
"scale":[ 0.625, 0.625, 0.625 ]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 0, 3, 0],
|
||||||
|
"scale":[ 0.25, 0.25, 0.25 ]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 0, 0, 0],
|
||||||
|
"scale":[ 0.5, 0.5, 0.5 ]
|
||||||
|
},
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [ 75, 45, 0 ],
|
||||||
|
"translation": [ 0, 2.5, 0],
|
||||||
|
"scale": [ 0.375, 0.375, 0.375 ]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [ 0, 45, 0 ],
|
||||||
|
"translation": [ 0, 0, 0 ],
|
||||||
|
"scale": [ 0.40, 0.40, 0.40 ]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [ 0, 225, 0 ],
|
||||||
|
"translation": [ 0, 0, 0 ],
|
||||||
|
"scale": [ 0.40, 0.40, 0.40 ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "crystal1",
|
||||||
|
"from": [8, 0, 0],
|
||||||
|
"to": [8, 16, 16],
|
||||||
|
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#crystal"},
|
||||||
|
"west": {"uv": [0, 16, 16, 0], "rotation": 270, "texture": "#crystal"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "crystal2",
|
||||||
|
"from": [8, 0, 0],
|
||||||
|
"to": [8, 16, 16],
|
||||||
|
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#crystal"},
|
||||||
|
"west": {"uv": [0, 16, 16, 0], "rotation": 270, "texture": "#crystal"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
10
models/crystal_0.json.textures
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"mappings": {
|
||||||
|
"default": {
|
||||||
|
"map": {
|
||||||
|
"crystal": "smallheartbud"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
60
models/crystal_1.json
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"textures": {
|
||||||
|
"particle": "Desktop/ice_crystal_3",
|
||||||
|
"crystal": "Desktop/ice_crystal_3"
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"gui": {
|
||||||
|
"rotation": [ 30, 225, 0 ],
|
||||||
|
"translation": [ 0, 0, 0],
|
||||||
|
"scale":[ 0.625, 0.625, 0.625 ]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 0, 3, 0],
|
||||||
|
"scale":[ 0.25, 0.25, 0.25 ]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 0, 0, 0],
|
||||||
|
"scale":[ 0.5, 0.5, 0.5 ]
|
||||||
|
},
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [ 75, 45, 0 ],
|
||||||
|
"translation": [ 0, 2.5, 0],
|
||||||
|
"scale": [ 0.375, 0.375, 0.375 ]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [ 0, 45, 0 ],
|
||||||
|
"translation": [ 0, 0, 0 ],
|
||||||
|
"scale": [ 0.40, 0.40, 0.40 ]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [ 0, 225, 0 ],
|
||||||
|
"translation": [ 0, 0, 0 ],
|
||||||
|
"scale": [ 0.40, 0.40, 0.40 ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "crystal1",
|
||||||
|
"from": [8, 0, 0],
|
||||||
|
"to": [8, 16, 16],
|
||||||
|
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#crystal"},
|
||||||
|
"west": {"uv": [0, 16, 16, 0], "rotation": 270, "texture": "#crystal"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "crystal2",
|
||||||
|
"from": [8, 0, 0],
|
||||||
|
"to": [8, 16, 16],
|
||||||
|
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#crystal"},
|
||||||
|
"west": {"uv": [0, 16, 16, 0], "rotation": 270, "texture": "#crystal"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
10
models/crystal_1.json.textures
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"mappings": {
|
||||||
|
"default": {
|
||||||
|
"map": {
|
||||||
|
"crystal": "mediumheartbud"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
60
models/crystal_2.json
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"textures": {
|
||||||
|
"particle": "Desktop/ice_crystal_3",
|
||||||
|
"crystal": "Desktop/ice_crystal_3"
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"gui": {
|
||||||
|
"rotation": [ 30, 225, 0 ],
|
||||||
|
"translation": [ 0, 0, 0],
|
||||||
|
"scale":[ 0.625, 0.625, 0.625 ]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 0, 3, 0],
|
||||||
|
"scale":[ 0.25, 0.25, 0.25 ]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 0, 0, 0],
|
||||||
|
"scale":[ 0.5, 0.5, 0.5 ]
|
||||||
|
},
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [ 75, 45, 0 ],
|
||||||
|
"translation": [ 0, 2.5, 0],
|
||||||
|
"scale": [ 0.375, 0.375, 0.375 ]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [ 0, 45, 0 ],
|
||||||
|
"translation": [ 0, 0, 0 ],
|
||||||
|
"scale": [ 0.40, 0.40, 0.40 ]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [ 0, 225, 0 ],
|
||||||
|
"translation": [ 0, 0, 0 ],
|
||||||
|
"scale": [ 0.40, 0.40, 0.40 ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "crystal1",
|
||||||
|
"from": [8, 0, 0],
|
||||||
|
"to": [8, 16, 16],
|
||||||
|
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#crystal"},
|
||||||
|
"west": {"uv": [0, 16, 16, 0], "rotation": 270, "texture": "#crystal"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "crystal2",
|
||||||
|
"from": [8, 0, 0],
|
||||||
|
"to": [8, 16, 16],
|
||||||
|
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#crystal"},
|
||||||
|
"west": {"uv": [0, 16, 16, 0], "rotation": 270, "texture": "#crystal"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
10
models/crystal_2.json.textures
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"mappings": {
|
||||||
|
"default": {
|
||||||
|
"map": {
|
||||||
|
"crystal": "largeheartbud"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
60
models/crystal_3.json
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"textures": {
|
||||||
|
"particle": "Desktop/ice_crystal_3",
|
||||||
|
"crystal": "Desktop/ice_crystal_3"
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"gui": {
|
||||||
|
"rotation": [ 30, 225, 0 ],
|
||||||
|
"translation": [ 0, 0, 0],
|
||||||
|
"scale":[ 0.625, 0.625, 0.625 ]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 0, 3, 0],
|
||||||
|
"scale":[ 0.25, 0.25, 0.25 ]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 0, 0, 0],
|
||||||
|
"scale":[ 0.5, 0.5, 0.5 ]
|
||||||
|
},
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [ 75, 45, 0 ],
|
||||||
|
"translation": [ 0, 2.5, 0],
|
||||||
|
"scale": [ 0.375, 0.375, 0.375 ]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [ 0, 45, 0 ],
|
||||||
|
"translation": [ 0, 0, 0 ],
|
||||||
|
"scale": [ 0.40, 0.40, 0.40 ]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [ 0, 225, 0 ],
|
||||||
|
"translation": [ 0, 0, 0 ],
|
||||||
|
"scale": [ 0.40, 0.40, 0.40 ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "crystal1",
|
||||||
|
"from": [8, 0, 0],
|
||||||
|
"to": [8, 16, 16],
|
||||||
|
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#crystal"},
|
||||||
|
"west": {"uv": [0, 16, 16, 0], "rotation": 270, "texture": "#crystal"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "crystal2",
|
||||||
|
"from": [8, 0, 0],
|
||||||
|
"to": [8, 16, 16],
|
||||||
|
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#crystal"},
|
||||||
|
"west": {"uv": [0, 16, 16, 0], "rotation": 270, "texture": "#crystal"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
10
models/crystal_3.json.textures
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"mappings": {
|
||||||
|
"default": {
|
||||||
|
"map": {
|
||||||
|
"crystal": "heartcluster"
|
||||||
|
},
|
||||||
|
"name": "default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,11 +11,16 @@
|
||||||
* will be REGENERATED on each build.
|
* will be REGENERATED on each build.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package net.mcreator.heartgeodes;
|
package net.seaswimmerthefsh.heartgeodes;
|
||||||
|
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.init.HeartgeodesModTabs;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.init.HeartgeodesModItems;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.init.HeartgeodesModBlocks;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.init.HeartgeodesModBlockEntities;
|
||||||
|
|
||||||
import net.minecraftforge.network.simple.SimpleChannel;
|
import net.minecraftforge.network.simple.SimpleChannel;
|
||||||
import net.minecraftforge.network.NetworkRegistry;
|
import net.minecraftforge.network.NetworkRegistry;
|
||||||
import net.minecraftforge.network.NetworkEvent;
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
@ -29,10 +34,6 @@ import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
|
|
||||||
import net.mcreator.heartgeodes.init.HeartgeodesModTabs;
|
|
||||||
import net.mcreator.heartgeodes.init.HeartgeodesModItems;
|
|
||||||
import net.mcreator.heartgeodes.init.HeartgeodesModBlocks;
|
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
@ -52,7 +53,7 @@ public class HeartgeodesMod {
|
||||||
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
|
|
||||||
HeartgeodesModBlocks.REGISTRY.register(bus);
|
HeartgeodesModBlocks.REGISTRY.register(bus);
|
||||||
|
HeartgeodesModBlockEntities.REGISTRY.register(bus);
|
||||||
HeartgeodesModItems.REGISTRY.register(bus);
|
HeartgeodesModItems.REGISTRY.register(bus);
|
||||||
|
|
||||||
HeartgeodesModTabs.REGISTRY.register(bus);
|
HeartgeodesModTabs.REGISTRY.register(bus);
|
|
@ -1,24 +1,29 @@
|
||||||
|
|
||||||
package net.mcreator.heartgeodes.block;
|
package net.seaswimmerthefsh.heartgeodes.block;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.init.HeartgeodesModBlocks;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.entity.BuddingHeartBlockBlockEntity;
|
||||||
|
|
||||||
import net.minecraft.world.level.storage.loot.LootParams;
|
import net.minecraft.world.level.storage.loot.LootParams;
|
||||||
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
|
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
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.SoundType;
|
||||||
|
import net.minecraft.world.level.block.EntityBlock;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.BlockGetter;
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.item.PickaxeItem;
|
import net.minecraft.world.item.PickaxeItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.MenuProvider;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
|
|
||||||
import net.mcreator.heartgeodes.init.HeartgeodesModBlocks;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
public class BuddingHeartBlockBlock extends Block {
|
public class BuddingHeartBlockBlock extends Block implements EntityBlock {
|
||||||
public BuddingHeartBlockBlock() {
|
public BuddingHeartBlockBlock() {
|
||||||
super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.AMETHYST).strength(1f, 10f).requiresCorrectToolForDrops());
|
super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.AMETHYST).strength(1f, 10f).requiresCorrectToolForDrops());
|
||||||
}
|
}
|
||||||
|
@ -42,4 +47,22 @@ public class BuddingHeartBlockBlock extends Block {
|
||||||
return dropsOriginal;
|
return dropsOriginal;
|
||||||
return Collections.singletonList(new ItemStack(HeartgeodesModBlocks.HEART_BLOCK.get()));
|
return Collections.singletonList(new ItemStack(HeartgeodesModBlocks.HEART_BLOCK.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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 BuddingHeartBlockBlockEntity(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);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
package net.mcreator.heartgeodes.block;
|
package net.seaswimmerthefsh.heartgeodes.block;
|
||||||
|
|
||||||
import net.minecraft.world.level.storage.loot.LootParams;
|
import net.minecraft.world.level.storage.loot.LootParams;
|
||||||
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
|
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
|
|
@ -0,0 +1,122 @@
|
||||||
|
|
||||||
|
package net.seaswimmerthefsh.heartgeodes.block;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.entity.HeartClusterBlockEntity;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.storage.loot.LootParams;
|
||||||
|
import net.minecraft.world.level.material.MapColor;
|
||||||
|
import net.minecraft.world.level.material.Fluids;
|
||||||
|
import net.minecraft.world.level.material.FluidState;
|
||||||
|
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
|
||||||
|
import net.minecraft.world.level.block.state.properties.DirectionProperty;
|
||||||
|
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||||
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
|
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.SimpleWaterloggedBlock;
|
||||||
|
import net.minecraft.world.level.block.Rotation;
|
||||||
|
import net.minecraft.world.level.block.Mirror;
|
||||||
|
import net.minecraft.world.level.block.EntityBlock;
|
||||||
|
import net.minecraft.world.level.block.DirectionalBlock;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraft.world.level.LevelAccessor;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
|
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||||
|
import net.minecraft.world.item.PickaxeItem;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.MenuProvider;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class HeartClusterBlock extends Block implements SimpleWaterloggedBlock, EntityBlock {
|
||||||
|
public static final DirectionProperty FACING = DirectionalBlock.FACING;
|
||||||
|
public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED;
|
||||||
|
|
||||||
|
public HeartClusterBlock() {
|
||||||
|
super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.HAT).mapColor(MapColor.TERRACOTTA_RED).sound(SoundType.AMETHYST_CLUSTER).strength(1f, 10f).requiresCorrectToolForDrops());
|
||||||
|
this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(WATERLOGGED, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean propagatesSkylightDown(BlockState state, BlockGetter reader, BlockPos pos) {
|
||||||
|
return state.getFluidState().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
|
||||||
|
builder.add(FACING, WATERLOGGED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getStateForPlacement(BlockPlaceContext context) {
|
||||||
|
boolean flag = context.getLevel().getFluidState(context.getClickedPos()).getType() == Fluids.WATER;
|
||||||
|
return this.defaultBlockState().setValue(FACING, context.getNearestLookingDirection().getOpposite()).setValue(WATERLOGGED, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
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 FluidState getFluidState(BlockState state) {
|
||||||
|
return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor world, BlockPos currentPos, BlockPos facingPos) {
|
||||||
|
if (state.getValue(WATERLOGGED)) {
|
||||||
|
world.scheduleTick(currentPos, Fluids.WATER, Fluids.WATER.getTickDelay(world));
|
||||||
|
}
|
||||||
|
return super.updateShape(state, facing, facingState, world, currentPos, facingPos);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) {
|
||||||
|
if (player.getInventory().getSelected().getItem() instanceof PickaxeItem tieredItem)
|
||||||
|
return tieredItem.getTier().getLevel() >= 1;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ItemStack> getDrops(BlockState state, LootParams.Builder builder) {
|
||||||
|
List<ItemStack> dropsOriginal = super.getDrops(state, builder);
|
||||||
|
if (!dropsOriginal.isEmpty())
|
||||||
|
return dropsOriginal;
|
||||||
|
return Collections.singletonList(new ItemStack(this, 4));
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 HeartClusterBlockEntity(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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,109 @@
|
||||||
|
|
||||||
|
package net.seaswimmerthefsh.heartgeodes.block;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.entity.LargeHeartBudBlockEntity;
|
||||||
|
|
||||||
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
|
import net.minecraft.world.phys.shapes.Shapes;
|
||||||
|
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
|
import net.minecraft.world.level.material.MapColor;
|
||||||
|
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
|
||||||
|
import net.minecraft.world.level.block.state.properties.DirectionProperty;
|
||||||
|
import net.minecraft.world.level.block.state.StateDefinition;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.world.level.block.SoundType;
|
||||||
|
import net.minecraft.world.level.block.Rotation;
|
||||||
|
import net.minecraft.world.level.block.Mirror;
|
||||||
|
import net.minecraft.world.level.block.EntityBlock;
|
||||||
|
import net.minecraft.world.level.block.DirectionalBlock;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
|
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||||
|
import net.minecraft.world.item.PickaxeItem;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.MenuProvider;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
|
||||||
|
public class LargeHeartBudBlock extends Block implements EntityBlock {
|
||||||
|
public static final DirectionProperty FACING = DirectionalBlock.FACING;
|
||||||
|
|
||||||
|
public LargeHeartBudBlock() {
|
||||||
|
super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.HAT).mapColor(MapColor.TERRACOTTA_RED).sound(SoundType.AMETHYST_CLUSTER).strength(1f, 10f).requiresCorrectToolForDrops().noOcclusion()
|
||||||
|
.isRedstoneConductor((bs, br, bp) -> false).noLootTable());
|
||||||
|
this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean propagatesSkylightDown(BlockState state, BlockGetter reader, BlockPos pos) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VoxelShape getVisualShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
|
||||||
|
return Shapes.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
|
||||||
|
return switch (state.getValue(FACING)) {
|
||||||
|
default -> box(15.125, 0.125, 15, 15.875, 0.875, 16);
|
||||||
|
case NORTH -> box(0.125, 0.125, 0, 0.875, 0.875, 1);
|
||||||
|
case EAST -> box(15, 0.125, 0.125, 16, 0.875, 0.875);
|
||||||
|
case WEST -> box(0, 0.125, 15.125, 1, 0.875, 15.875);
|
||||||
|
case UP -> box(0.125, 15, 0.125, 0.875, 16, 0.875);
|
||||||
|
case DOWN -> box(0.125, 0, 15.125, 0.875, 1, 15.875);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
|
||||||
|
builder.add(FACING);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getStateForPlacement(BlockPlaceContext context) {
|
||||||
|
return this.defaultBlockState().setValue(FACING, context.getNearestLookingDirection().getOpposite());
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockState rotate(BlockState state, Rotation rot) {
|
||||||
|
return state.setValue(FACING, rot.rotate(state.getValue(FACING)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockState mirror(BlockState state, Mirror mirrorIn) {
|
||||||
|
return state.rotate(mirrorIn.getRotation(state.getValue(FACING)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) {
|
||||||
|
if (player.getInventory().getSelected().getItem() instanceof PickaxeItem tieredItem)
|
||||||
|
return tieredItem.getTier().getLevel() >= 1;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public 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 LargeHeartBudBlockEntity(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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,140 @@
|
||||||
|
package net.seaswimmerthefsh.heartgeodes.block.entity;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.init.HeartgeodesModBlockEntities;
|
||||||
|
|
||||||
|
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.common.util.LazyOptional;
|
||||||
|
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||||
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.inventory.ChestMenu;
|
||||||
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
|
import net.minecraft.world.WorldlyContainer;
|
||||||
|
import net.minecraft.world.ContainerHelper;
|
||||||
|
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.core.NonNullList;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
public class BuddingHeartBlockBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer {
|
||||||
|
private NonNullList<ItemStack> stacks = NonNullList.<ItemStack>withSize(0, ItemStack.EMPTY);
|
||||||
|
private final LazyOptional<? extends IItemHandler>[] handlers = SidedInvWrapper.create(this, Direction.values());
|
||||||
|
|
||||||
|
public BuddingHeartBlockBlockEntity(BlockPos position, BlockState state) {
|
||||||
|
super(HeartgeodesModBlockEntities.BUDDING_HEART_BLOCK.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("budding_heart_block");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxStackSize() {
|
||||||
|
return 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AbstractContainerMenu createMenu(int id, Inventory inventory) {
|
||||||
|
return ChestMenu.threeRows(id, inventory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getDisplayName() {
|
||||||
|
return Component.literal("Budding Heart Block");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected NonNullList<ItemStack> getItems() {
|
||||||
|
return this.stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setItems(NonNullList<ItemStack> stacks) {
|
||||||
|
this.stacks = stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlaceItem(int index, ItemStack stack) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getSlotsForFace(Direction side) {
|
||||||
|
return IntStream.range(0, this.getContainerSize()).toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlaceItemThroughFace(int index, ItemStack stack, @Nullable Direction direction) {
|
||||||
|
return this.canPlaceItem(index, stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canTakeItemThroughFace(int index, ItemStack stack, Direction direction) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> LazyOptional<T> getCapability(Capability<T> 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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,140 @@
|
||||||
|
package net.seaswimmerthefsh.heartgeodes.block.entity;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.init.HeartgeodesModBlockEntities;
|
||||||
|
|
||||||
|
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.common.util.LazyOptional;
|
||||||
|
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||||
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.inventory.ChestMenu;
|
||||||
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
|
import net.minecraft.world.WorldlyContainer;
|
||||||
|
import net.minecraft.world.ContainerHelper;
|
||||||
|
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.core.NonNullList;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
public class HeartClusterBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer {
|
||||||
|
private NonNullList<ItemStack> stacks = NonNullList.<ItemStack>withSize(0, ItemStack.EMPTY);
|
||||||
|
private final LazyOptional<? extends IItemHandler>[] handlers = SidedInvWrapper.create(this, Direction.values());
|
||||||
|
|
||||||
|
public HeartClusterBlockEntity(BlockPos position, BlockState state) {
|
||||||
|
super(HeartgeodesModBlockEntities.HEART_CLUSTER.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("heart_cluster");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxStackSize() {
|
||||||
|
return 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AbstractContainerMenu createMenu(int id, Inventory inventory) {
|
||||||
|
return ChestMenu.threeRows(id, inventory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getDisplayName() {
|
||||||
|
return Component.literal("Heart Cluster");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected NonNullList<ItemStack> getItems() {
|
||||||
|
return this.stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setItems(NonNullList<ItemStack> stacks) {
|
||||||
|
this.stacks = stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlaceItem(int index, ItemStack stack) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getSlotsForFace(Direction side) {
|
||||||
|
return IntStream.range(0, this.getContainerSize()).toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlaceItemThroughFace(int index, ItemStack stack, @Nullable Direction direction) {
|
||||||
|
return this.canPlaceItem(index, stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canTakeItemThroughFace(int index, ItemStack stack, Direction direction) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> LazyOptional<T> getCapability(Capability<T> 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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,140 @@
|
||||||
|
package net.seaswimmerthefsh.heartgeodes.block.entity;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.init.HeartgeodesModBlockEntities;
|
||||||
|
|
||||||
|
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.common.util.LazyOptional;
|
||||||
|
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||||
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.inventory.ChestMenu;
|
||||||
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
|
import net.minecraft.world.WorldlyContainer;
|
||||||
|
import net.minecraft.world.ContainerHelper;
|
||||||
|
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.core.NonNullList;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
public class LargeHeartBudBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer {
|
||||||
|
private NonNullList<ItemStack> stacks = NonNullList.<ItemStack>withSize(0, ItemStack.EMPTY);
|
||||||
|
private final LazyOptional<? extends IItemHandler>[] handlers = SidedInvWrapper.create(this, Direction.values());
|
||||||
|
|
||||||
|
public LargeHeartBudBlockEntity(BlockPos position, BlockState state) {
|
||||||
|
super(HeartgeodesModBlockEntities.LARGE_HEART_BUD.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("large_heart_bud");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxStackSize() {
|
||||||
|
return 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AbstractContainerMenu createMenu(int id, Inventory inventory) {
|
||||||
|
return ChestMenu.threeRows(id, inventory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getDisplayName() {
|
||||||
|
return Component.literal("Large Heart Bud");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected NonNullList<ItemStack> getItems() {
|
||||||
|
return this.stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setItems(NonNullList<ItemStack> stacks) {
|
||||||
|
this.stacks = stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlaceItem(int index, ItemStack stack) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getSlotsForFace(Direction side) {
|
||||||
|
return IntStream.range(0, this.getContainerSize()).toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlaceItemThroughFace(int index, ItemStack stack, @Nullable Direction direction) {
|
||||||
|
return this.canPlaceItem(index, stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canTakeItemThroughFace(int index, ItemStack stack, Direction direction) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> LazyOptional<T> getCapability(Capability<T> 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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
|
||||||
|
package net.seaswimmerthefsh.heartgeodes.command;
|
||||||
|
|
||||||
|
import org.checkerframework.checker.units.qual.s;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.procedures.TestRulesPProcedure;
|
||||||
|
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.event.RegisterCommandsEvent;
|
||||||
|
import net.minecraftforge.common.util.FakePlayerFactory;
|
||||||
|
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.commands.Commands;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.arguments.BoolArgumentType;
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber
|
||||||
|
public class TestRulesCommand {
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void registerCommand(RegisterCommandsEvent event) {
|
||||||
|
event.getDispatcher().register(Commands.literal("testrules").requires(s -> s.hasPermission(4)).then(Commands.argument("enable", BoolArgumentType.bool()).executes(arguments -> {
|
||||||
|
ServerLevel world = arguments.getSource().getLevel();
|
||||||
|
double x = arguments.getSource().getPosition().x();
|
||||||
|
double y = arguments.getSource().getPosition().y();
|
||||||
|
double z = arguments.getSource().getPosition().z();
|
||||||
|
Entity entity = arguments.getSource().getEntity();
|
||||||
|
if (entity == null)
|
||||||
|
entity = FakePlayerFactory.getMinecraft(world);
|
||||||
|
Direction direction = entity.getDirection();
|
||||||
|
|
||||||
|
TestRulesPProcedure.execute(world, arguments, entity);
|
||||||
|
return 0;
|
||||||
|
})));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MCreator note: This file will be REGENERATED on each build.
|
||||||
|
*/
|
||||||
|
package net.seaswimmerthefsh.heartgeodes.init;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.entity.LargeHeartBudBlockEntity;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.entity.HeartClusterBlockEntity;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.entity.BuddingHeartBlockBlockEntity;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.HeartgeodesMod;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
public class HeartgeodesModBlockEntities {
|
||||||
|
public static final DeferredRegister<BlockEntityType<?>> REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, HeartgeodesMod.MODID);
|
||||||
|
public static final RegistryObject<BlockEntityType<?>> BUDDING_HEART_BLOCK = register("budding_heart_block", HeartgeodesModBlocks.BUDDING_HEART_BLOCK, BuddingHeartBlockBlockEntity::new);
|
||||||
|
public static final RegistryObject<BlockEntityType<?>> HEART_CLUSTER = register("heart_cluster", HeartgeodesModBlocks.HEART_CLUSTER, HeartClusterBlockEntity::new);
|
||||||
|
public static final RegistryObject<BlockEntityType<?>> LARGE_HEART_BUD = register("large_heart_bud", HeartgeodesModBlocks.LARGE_HEART_BUD, LargeHeartBudBlockEntity::new);
|
||||||
|
|
||||||
|
private static RegistryObject<BlockEntityType<?>> register(String registryname, RegistryObject<Block> block, BlockEntityType.BlockEntitySupplier<?> supplier) {
|
||||||
|
return REGISTRY.register(registryname, () -> BlockEntityType.Builder.of(supplier, block.get()).build(null));
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,7 +2,13 @@
|
||||||
/*
|
/*
|
||||||
* MCreator note: This file will be REGENERATED on each build.
|
* MCreator note: This file will be REGENERATED on each build.
|
||||||
*/
|
*/
|
||||||
package net.mcreator.heartgeodes.init;
|
package net.seaswimmerthefsh.heartgeodes.init;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.LargeHeartBudBlock;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.HeartClusterBlock;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.HeartBlockBlock;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.block.BuddingHeartBlockBlock;
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.HeartgeodesMod;
|
||||||
|
|
||||||
import net.minecraftforge.registries.RegistryObject;
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
@ -10,12 +16,10 @@ import net.minecraftforge.registries.DeferredRegister;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
|
|
||||||
import net.mcreator.heartgeodes.block.HeartBlockBlock;
|
|
||||||
import net.mcreator.heartgeodes.block.BuddingHeartBlockBlock;
|
|
||||||
import net.mcreator.heartgeodes.HeartgeodesMod;
|
|
||||||
|
|
||||||
public class HeartgeodesModBlocks {
|
public class HeartgeodesModBlocks {
|
||||||
public static final DeferredRegister<Block> REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCKS, HeartgeodesMod.MODID);
|
public static final DeferredRegister<Block> REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCKS, HeartgeodesMod.MODID);
|
||||||
public static final RegistryObject<Block> HEART_BLOCK = REGISTRY.register("heart_block", () -> new HeartBlockBlock());
|
public static final RegistryObject<Block> HEART_BLOCK = REGISTRY.register("heart_block", () -> new HeartBlockBlock());
|
||||||
public static final RegistryObject<Block> BUDDING_HEART_BLOCK = REGISTRY.register("budding_heart_block", () -> new BuddingHeartBlockBlock());
|
public static final RegistryObject<Block> BUDDING_HEART_BLOCK = REGISTRY.register("budding_heart_block", () -> new BuddingHeartBlockBlock());
|
||||||
|
public static final RegistryObject<Block> HEART_CLUSTER = REGISTRY.register("heart_cluster", () -> new HeartClusterBlock());
|
||||||
|
public static final RegistryObject<Block> LARGE_HEART_BUD = REGISTRY.register("large_heart_bud", () -> new LargeHeartBudBlock());
|
||||||
}
|
}
|
|
@ -2,7 +2,9 @@
|
||||||
/*
|
/*
|
||||||
* MCreator note: This file will be REGENERATED on each build.
|
* MCreator note: This file will be REGENERATED on each build.
|
||||||
*/
|
*/
|
||||||
package net.mcreator.heartgeodes.init;
|
package net.seaswimmerthefsh.heartgeodes.init;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.HeartgeodesMod;
|
||||||
|
|
||||||
import net.minecraftforge.registries.RegistryObject;
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
@ -12,12 +14,12 @@ import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.BlockItem;
|
import net.minecraft.world.item.BlockItem;
|
||||||
|
|
||||||
import net.mcreator.heartgeodes.HeartgeodesMod;
|
|
||||||
|
|
||||||
public class HeartgeodesModItems {
|
public class HeartgeodesModItems {
|
||||||
public static final DeferredRegister<Item> REGISTRY = DeferredRegister.create(ForgeRegistries.ITEMS, HeartgeodesMod.MODID);
|
public static final DeferredRegister<Item> REGISTRY = DeferredRegister.create(ForgeRegistries.ITEMS, HeartgeodesMod.MODID);
|
||||||
public static final RegistryObject<Item> HEART_BLOCK = block(HeartgeodesModBlocks.HEART_BLOCK);
|
public static final RegistryObject<Item> HEART_BLOCK = block(HeartgeodesModBlocks.HEART_BLOCK);
|
||||||
public static final RegistryObject<Item> BUDDING_HEART_BLOCK = block(HeartgeodesModBlocks.BUDDING_HEART_BLOCK);
|
public static final RegistryObject<Item> BUDDING_HEART_BLOCK = block(HeartgeodesModBlocks.BUDDING_HEART_BLOCK);
|
||||||
|
public static final RegistryObject<Item> HEART_CLUSTER = block(HeartgeodesModBlocks.HEART_CLUSTER);
|
||||||
|
public static final RegistryObject<Item> LARGE_HEART_BUD = block(HeartgeodesModBlocks.LARGE_HEART_BUD);
|
||||||
|
|
||||||
private static RegistryObject<Item> block(RegistryObject<Block> block) {
|
private static RegistryObject<Item> block(RegistryObject<Block> block) {
|
||||||
return REGISTRY.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties()));
|
return REGISTRY.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties()));
|
|
@ -2,7 +2,9 @@
|
||||||
/*
|
/*
|
||||||
* MCreator note: This file will be REGENERATED on each build.
|
* MCreator note: This file will be REGENERATED on each build.
|
||||||
*/
|
*/
|
||||||
package net.mcreator.heartgeodes.init;
|
package net.seaswimmerthefsh.heartgeodes.init;
|
||||||
|
|
||||||
|
import net.seaswimmerthefsh.heartgeodes.HeartgeodesMod;
|
||||||
|
|
||||||
import net.minecraftforge.registries.RegistryObject;
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
import net.minecraftforge.registries.DeferredRegister;
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
|
@ -12,12 +14,10 @@ import net.minecraft.world.item.CreativeModeTab;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.core.registries.Registries;
|
import net.minecraft.core.registries.Registries;
|
||||||
|
|
||||||
import net.mcreator.heartgeodes.HeartgeodesMod;
|
|
||||||
|
|
||||||
public class HeartgeodesModTabs {
|
public class HeartgeodesModTabs {
|
||||||
public static final DeferredRegister<CreativeModeTab> REGISTRY = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, HeartgeodesMod.MODID);
|
public static final DeferredRegister<CreativeModeTab> REGISTRY = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, HeartgeodesMod.MODID);
|
||||||
public static final RegistryObject<CreativeModeTab> HEART_GEODES = REGISTRY.register("heart_geodes",
|
public static final RegistryObject<CreativeModeTab> HEART_GEODES = REGISTRY.register("heart_geodes",
|
||||||
() -> CreativeModeTab.builder().title(Component.translatable("item_group.heartgeodes.heart_geodes")).icon(() -> new ItemStack(HeartgeodesModBlocks.BUDDING_HEART_BLOCK.get())).displayItems((parameters, tabData) -> {
|
() -> CreativeModeTab.builder().title(Component.translatable("item_group.heartgeodes.heart_geodes")).icon(() -> new ItemStack(HeartgeodesModBlocks.HEART_CLUSTER.get())).displayItems((parameters, tabData) -> {
|
||||||
tabData.accept(HeartgeodesModBlocks.HEART_BLOCK.get().asItem());
|
tabData.accept(HeartgeodesModBlocks.HEART_BLOCK.get().asItem());
|
||||||
tabData.accept(HeartgeodesModBlocks.BUDDING_HEART_BLOCK.get().asItem());
|
tabData.accept(HeartgeodesModBlocks.BUDDING_HEART_BLOCK.get().asItem());
|
||||||
})
|
})
|
|
@ -0,0 +1,33 @@
|
||||||
|
package net.seaswimmerthefsh.heartgeodes.procedures;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.LevelAccessor;
|
||||||
|
import net.minecraft.world.level.GameRules;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.commands.CommandSourceStack;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.context.CommandContext;
|
||||||
|
import com.mojang.brigadier.arguments.BoolArgumentType;
|
||||||
|
|
||||||
|
public class TestRulesPProcedure {
|
||||||
|
public static void execute(LevelAccessor world, CommandContext<CommandSourceStack> arguments, Entity entity) {
|
||||||
|
if (entity == null)
|
||||||
|
return;
|
||||||
|
if (BoolArgumentType.getBool(arguments, "enabled")) {
|
||||||
|
world.getLevelData().getGameRules().getRule(GameRules.RULE_KEEPINVENTORY).set(true, world.getServer());
|
||||||
|
world.getLevelData().getGameRules().getRule(GameRules.RULE_DOMOBSPAWNING).set(false, world.getServer());
|
||||||
|
world.getLevelData().getGameRules().getRule(GameRules.RULE_DAYLIGHT).set(false, world.getServer());
|
||||||
|
world.getLevelData().getGameRules().getRule(GameRules.RULE_WEATHER_CYCLE).set(false, world.getServer());
|
||||||
|
if (entity instanceof Player _player && !_player.level().isClientSide())
|
||||||
|
_player.displayClientMessage(Component.literal("Test rules enabled!"), false);
|
||||||
|
} else {
|
||||||
|
world.getLevelData().getGameRules().getRule(GameRules.RULE_KEEPINVENTORY).set(false, world.getServer());
|
||||||
|
world.getLevelData().getGameRules().getRule(GameRules.RULE_DOMOBSPAWNING).set(true, world.getServer());
|
||||||
|
world.getLevelData().getGameRules().getRule(GameRules.RULE_DAYLIGHT).set(true, world.getServer());
|
||||||
|
world.getLevelData().getGameRules().getRule(GameRules.RULE_WEATHER_CYCLE).set(true, world.getServer());
|
||||||
|
if (entity instanceof Player _player && !_player.level().isClientSide())
|
||||||
|
_player.displayClientMessage(Component.literal("Test rules disabled!"), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,14 +1,15 @@
|
||||||
modLoader="javafml"
|
modLoader="javafml"
|
||||||
loaderVersion="[47,)"
|
loaderVersion="[47,)"
|
||||||
license="Academic Free License v3.0"
|
license="MIT License"
|
||||||
|
|
||||||
[[mods]]
|
[[mods]]
|
||||||
modId="heartgeodes"
|
modId="heartgeodes"
|
||||||
version="1.0.0"
|
version="1.0.0"
|
||||||
displayName="HeartGeodes"
|
displayName="HeartGeodes"
|
||||||
credits="Created using mod maker MCreator - https://mcreator.net/about"
|
credits="Created using mod maker MCreator - https://mcreator.net/about"
|
||||||
displayURL="https://mcreator.net"
|
displayURL="https://coastalcommits.com/GalacticFactory/HeartGeodes"
|
||||||
authors="seasw, MCreator"
|
authors="SeaswimmerTheFsh"
|
||||||
|
description="This mod adds Geodes for Scaling Difficulty to the game."
|
||||||
|
|
||||||
[[dependencies.heartgeodes]]
|
[[dependencies.heartgeodes]]
|
||||||
modId="minecraft"
|
modId="minecraft"
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"facing=north": {
|
||||||
|
"model": "heartgeodes:block/heart_cluster"
|
||||||
|
},
|
||||||
|
"facing=east": {
|
||||||
|
"model": "heartgeodes:block/heart_cluster",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"facing=south": {
|
||||||
|
"model": "heartgeodes:block/heart_cluster",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"facing=west": {
|
||||||
|
"model": "heartgeodes:block/heart_cluster",
|
||||||
|
"y": 270
|
||||||
|
},
|
||||||
|
"facing=up": {
|
||||||
|
"model": "heartgeodes:block/heart_cluster",
|
||||||
|
"x": 270
|
||||||
|
},
|
||||||
|
"facing=down": {
|
||||||
|
"model": "heartgeodes:block/heart_cluster",
|
||||||
|
"x": 90
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"facing=north": {
|
||||||
|
"model": "heartgeodes:block/large_heart_bud"
|
||||||
|
},
|
||||||
|
"facing=east": {
|
||||||
|
"model": "heartgeodes:block/large_heart_bud",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"facing=south": {
|
||||||
|
"model": "heartgeodes:block/large_heart_bud",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"facing=west": {
|
||||||
|
"model": "heartgeodes:block/large_heart_bud",
|
||||||
|
"y": 270
|
||||||
|
},
|
||||||
|
"facing=up": {
|
||||||
|
"model": "heartgeodes:block/large_heart_bud",
|
||||||
|
"x": 270
|
||||||
|
},
|
||||||
|
"facing=down": {
|
||||||
|
"model": "heartgeodes:block/large_heart_bud",
|
||||||
|
"x": 90
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
{
|
{
|
||||||
"block.heartgeodes.budding_heart_block": "Budding Heart Block",
|
"block.heartgeodes.budding_heart_block": "Budding Heart Block",
|
||||||
|
"block.heartgeodes.heart_cluster": "Heart Cluster",
|
||||||
"block.heartgeodes.heart_block": "Heart Block",
|
"block.heartgeodes.heart_block": "Heart Block",
|
||||||
"item_group.heartgeodes.heart_geodes": "Heart Geodes"
|
"item_group.heartgeodes.heart_geodes": "Heart Geodes",
|
||||||
|
"block.heartgeodes.large_heart_bud": "Large Heart Bud"
|
||||||
}
|
}
|
|
@ -1,13 +1,13 @@
|
||||||
{
|
{
|
||||||
"parent": "block/cube",
|
"parent": "block/cube",
|
||||||
"textures": {
|
"textures": {
|
||||||
"down": "heartgeodes:block/heart",
|
"down": "heartgeodes:block/heartblock",
|
||||||
"up": "heartgeodes:block/heart",
|
"up": "heartgeodes:block/heartblock",
|
||||||
"north": "heartgeodes:block/heart",
|
"north": "heartgeodes:block/heartblock",
|
||||||
"east": "heartgeodes:block/heart",
|
"east": "heartgeodes:block/heartblock",
|
||||||
"south": "heartgeodes:block/heart",
|
"south": "heartgeodes:block/heartblock",
|
||||||
"west": "heartgeodes:block/heart",
|
"west": "heartgeodes:block/heartblock",
|
||||||
"particle": "heartgeodes:block/heart"
|
"particle": "heartgeodes:block/heartblock"
|
||||||
},
|
},
|
||||||
"render_type": "solid"
|
"render_type": "solid"
|
||||||
}
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "heartgeodes:block/heartcluster",
|
||||||
|
"particle": "heartgeodes:block/heartcluster"
|
||||||
|
},
|
||||||
|
"render_type": "cutout"
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "heartgeodes:block/largeheartbud",
|
||||||
|
"particle": "heartgeodes:block/largeheartbud"
|
||||||
|
},
|
||||||
|
"render_type": "cutout"
|
||||||
|
}
|
|
@ -0,0 +1,196 @@
|
||||||
|
{
|
||||||
|
"display": {
|
||||||
|
"gui": {
|
||||||
|
"rotation": [
|
||||||
|
30,
|
||||||
|
225,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.625,
|
||||||
|
0.625,
|
||||||
|
0.625
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.25,
|
||||||
|
0.25,
|
||||||
|
0.25
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [
|
||||||
|
75,
|
||||||
|
45,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
2.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.375,
|
||||||
|
0.375,
|
||||||
|
0.375
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
45,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.40,
|
||||||
|
0.40,
|
||||||
|
0.40
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
225,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.40,
|
||||||
|
0.40,
|
||||||
|
0.40
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "crystal1",
|
||||||
|
"from": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": {
|
||||||
|
"angle": 45,
|
||||||
|
"axis": "z",
|
||||||
|
"origin": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"faces": {
|
||||||
|
"east": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "crystal2",
|
||||||
|
"from": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": {
|
||||||
|
"angle": -45,
|
||||||
|
"axis": "z",
|
||||||
|
"origin": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"faces": {
|
||||||
|
"east": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,196 @@
|
||||||
|
{
|
||||||
|
"display": {
|
||||||
|
"gui": {
|
||||||
|
"rotation": [
|
||||||
|
30,
|
||||||
|
225,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.625,
|
||||||
|
0.625,
|
||||||
|
0.625
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.25,
|
||||||
|
0.25,
|
||||||
|
0.25
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [
|
||||||
|
75,
|
||||||
|
45,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
2.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.375,
|
||||||
|
0.375,
|
||||||
|
0.375
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
45,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.40,
|
||||||
|
0.40,
|
||||||
|
0.40
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
225,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.40,
|
||||||
|
0.40,
|
||||||
|
0.40
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "crystal1",
|
||||||
|
"from": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": {
|
||||||
|
"angle": 45,
|
||||||
|
"axis": "z",
|
||||||
|
"origin": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"faces": {
|
||||||
|
"east": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "crystal2",
|
||||||
|
"from": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": {
|
||||||
|
"angle": -45,
|
||||||
|
"axis": "z",
|
||||||
|
"origin": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"faces": {
|
||||||
|
"east": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,196 @@
|
||||||
|
{
|
||||||
|
"display": {
|
||||||
|
"gui": {
|
||||||
|
"rotation": [
|
||||||
|
30,
|
||||||
|
225,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.625,
|
||||||
|
0.625,
|
||||||
|
0.625
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.25,
|
||||||
|
0.25,
|
||||||
|
0.25
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [
|
||||||
|
75,
|
||||||
|
45,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
2.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.375,
|
||||||
|
0.375,
|
||||||
|
0.375
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
45,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.40,
|
||||||
|
0.40,
|
||||||
|
0.40
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
225,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.40,
|
||||||
|
0.40,
|
||||||
|
0.40
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "crystal1",
|
||||||
|
"from": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": {
|
||||||
|
"angle": 45,
|
||||||
|
"axis": "z",
|
||||||
|
"origin": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"faces": {
|
||||||
|
"east": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "crystal2",
|
||||||
|
"from": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": {
|
||||||
|
"angle": -45,
|
||||||
|
"axis": "z",
|
||||||
|
"origin": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"faces": {
|
||||||
|
"east": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,196 @@
|
||||||
|
{
|
||||||
|
"display": {
|
||||||
|
"gui": {
|
||||||
|
"rotation": [
|
||||||
|
30,
|
||||||
|
225,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.625,
|
||||||
|
0.625,
|
||||||
|
0.625
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.25,
|
||||||
|
0.25,
|
||||||
|
0.25
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [
|
||||||
|
75,
|
||||||
|
45,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
2.5,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.375,
|
||||||
|
0.375,
|
||||||
|
0.375
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
45,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.40,
|
||||||
|
0.40,
|
||||||
|
0.40
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [
|
||||||
|
0,
|
||||||
|
225,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
0.40,
|
||||||
|
0.40,
|
||||||
|
0.40
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "crystal1",
|
||||||
|
"from": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": {
|
||||||
|
"angle": 45,
|
||||||
|
"axis": "z",
|
||||||
|
"origin": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"faces": {
|
||||||
|
"east": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "crystal2",
|
||||||
|
"from": [
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": {
|
||||||
|
"angle": -45,
|
||||||
|
"axis": "z",
|
||||||
|
"origin": [
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"faces": {
|
||||||
|
"east": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
},
|
||||||
|
"west": {
|
||||||
|
"uv": [
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"rotation": 270,
|
||||||
|
"texture": "#crystal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "heartgeodes:item/heartcluster"
|
||||||
|
},
|
||||||
|
"render_type": "translucent"
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "heartgeodes:item/largeheartbud"
|
||||||
|
},
|
||||||
|
"render_type": "translucent"
|
||||||
|
}
|
Before Width: | Height: | Size: 153 B After Width: | Height: | Size: 326 B |
After Width: | Height: | Size: 153 B |
After Width: | Height: | Size: 525 B |
After Width: | Height: | Size: 417 B |
Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 152 B |
After Width: | Height: | Size: 337 B |
After Width: | Height: | Size: 261 B |
After Width: | Height: | Size: 225 B |
After Width: | Height: | Size: 417 B |
After Width: | Height: | Size: 337 B |
After Width: | Height: | Size: 261 B |
After Width: | Height: | Size: 225 B |
|
@ -2,6 +2,8 @@
|
||||||
"replace": false,
|
"replace": false,
|
||||||
"values": [
|
"values": [
|
||||||
"heartgeodes:heart_block",
|
"heartgeodes:heart_block",
|
||||||
"heartgeodes:budding_heart_block"
|
"heartgeodes:budding_heart_block",
|
||||||
|
"heartgeodes:heart_cluster",
|
||||||
|
"heartgeodes:large_heart_bud"
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"pack": {
|
"pack": {
|
||||||
"pack_format": 15,
|
"pack_format": 15,
|
||||||
"description": ""
|
"description": "This mod adds Geodes for Scaling Difficulty to the game."
|
||||||
}
|
}
|
||||||
}
|
}
|