diff --git a/elements/Mailbox.mod.json b/elements/Mailbox.mod.json
new file mode 100644
index 0000000..4c53d0a
--- /dev/null
+++ b/elements/Mailbox.mod.json
@@ -0,0 +1,148 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "mailbox_base",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 2,
+ "customModelName": "mailbox:default",
+ "rotationMode": 1,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": true,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 16.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "customProperties": [],
+ "name": "Mailbox",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 1.0,
+ "resistance": 10.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTabs": [
+ {
+ "value": "TRANSPORTATION"
+ }
+ ],
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 0,
+ "material": {
+ "value": "NONE"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "METAL"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "vanillaToolTier": "NONE",
+ "isBonemealable": false,
+ "hasInventory": true,
+ "guiBoundTo": "MailboxGUI",
+ "openGUIOnRightClick": true,
+ "inventorySize": 18,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/MailboxGUI.mod.json b/elements/MailboxGUI.mod.json
new file mode 100644
index 0000000..a354951
--- /dev/null
+++ b/elements/MailboxGUI.mod.json
@@ -0,0 +1,442 @@
+{
+ "_fv": 73,
+ "_type": "gui",
+ "definition": {
+ "type": 1,
+ "width": 360,
+ "height": 180,
+ "inventoryOffsetX": 0,
+ "inventoryOffsetY": 0,
+ "renderBgLayer": true,
+ "doesPauseGame": false,
+ "components": [
+ {
+ "type": "label",
+ "data": {
+ "name": "label_inbox",
+ "text": {
+ "fixedValue": "Inbox"
+ },
+ "color": {
+ "value": -12829636,
+ "falpha": 0.0
+ },
+ "x": 132,
+ "y": 44,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 0,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 132,
+ "y": 58,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 1,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 150,
+ "y": 58,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 2,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 168,
+ "y": 58,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 3,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 132,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 4,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 150,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 5,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 168,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 6,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 132,
+ "y": 94,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 7,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 150,
+ "y": 94,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "id": 8,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 168,
+ "y": 94,
+ "locked": false
+ }
+ },
+ {
+ "type": "label",
+ "data": {
+ "name": "label_outbox",
+ "text": {
+ "fixedValue": "Outbox"
+ },
+ "color": {
+ "value": -12829636,
+ "falpha": 0.0
+ },
+ "x": 195,
+ "y": 44,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 9,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 195,
+ "y": 58,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 10,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 213,
+ "y": 58,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 11,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 231,
+ "y": 58,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 12,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 195,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 13,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 213,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 14,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 231,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 15,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 195,
+ "y": 94,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 16,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 213,
+ "y": 94,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": ""
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 17,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 231,
+ "y": 94,
+ "locked": false
+ }
+ },
+ {
+ "type": "label",
+ "data": {
+ "name": "label_x",
+ "text": {
+ "fixedValue": "X:"
+ },
+ "color": {
+ "value": -12829636,
+ "falpha": 0.0
+ },
+ "x": 258,
+ "y": 49,
+ "locked": false
+ }
+ },
+ {
+ "type": "textfield",
+ "data": {
+ "placeholder": "0",
+ "name": "outbox_x_coord",
+ "width": 120,
+ "height": 20,
+ "x": 267,
+ "y": 44,
+ "locked": false
+ }
+ },
+ {
+ "type": "label",
+ "data": {
+ "name": "label_y",
+ "text": {
+ "fixedValue": "Y:"
+ },
+ "color": {
+ "value": -12829636,
+ "falpha": 0.0
+ },
+ "x": 258,
+ "y": 71,
+ "locked": false
+ }
+ },
+ {
+ "type": "textfield",
+ "data": {
+ "placeholder": "0",
+ "name": "outbox_y_coord",
+ "width": 120,
+ "height": 20,
+ "x": 267,
+ "y": 67,
+ "locked": false
+ }
+ },
+ {
+ "type": "label",
+ "data": {
+ "name": "label_z",
+ "text": {
+ "fixedValue": "Z:"
+ },
+ "color": {
+ "value": -12829636,
+ "falpha": 0.0
+ },
+ "x": 258,
+ "y": 94,
+ "locked": false
+ }
+ },
+ {
+ "type": "textfield",
+ "data": {
+ "placeholder": "0",
+ "name": "outbox_z_coord",
+ "width": 120,
+ "height": 20,
+ "x": 267,
+ "y": 89,
+ "locked": false
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_send",
+ "text": "Send",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "MailboxSmartSendLogic"
+ },
+ "width": 46,
+ "height": 20,
+ "x": 303,
+ "y": 116,
+ "locked": false
+ }
+ }
+ ],
+ "gridSettings": {
+ "sx": 9,
+ "sy": 9,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/MailboxSmartSendLogic.mod.json b/elements/MailboxSmartSendLogic.mod.json
new file mode 100644
index 0000000..d19b0c0
--- /dev/null
+++ b/elements/MailboxSmartSendLogic.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "currInboxItemcurrInboxSlotcurrOutboxSlotcurrInboxSlotRoomcurrRemaindercurrInboxSlot2currInboxItemCountcurrInboxItemCount2no_ext_triggertarget_mailbox_xoutbox_x_coordtarget_mailbox_youtbox_y_coordtarget_mailbox_zoutbox_z_coordtarget_mailbox_xtarget_mailbox_ytarget_mailbox_zCUSTOM:Mailboxlocal:currInboxSlot0local:currOutboxSlot9LTElocal:currInboxSlot8local:currInboxItemlocal:currInboxSlottarget_mailbox_xtarget_mailbox_ytarget_mailbox_zlocal:currInboxItemCountlocal:currInboxSlottarget_mailbox_xtarget_mailbox_ytarget_mailbox_zANDlocal:currInboxItemlocal:currOutboxSlotlocal:currOutboxSlotlocal:currOutboxSlotlocal:currInboxSlottarget_mailbox_xtarget_mailbox_ytarget_mailbox_zlocal:currOutboxSlotANDlocal:currInboxItemlocal:currOutboxSlotLTlocal:currInboxItemCountlocal:currInboxItemlocal:currInboxSlotRoomMINUSlocal:currInboxItemlocal:currInboxItemCountLTElocal:currOutboxSlotlocal:currInboxSlotRoomADDlocal:currInboxItemCountlocal:currOutboxSlotlocal:currInboxItemlocal:currInboxSlottarget_mailbox_xtarget_mailbox_ytarget_mailbox_zlocal:currOutboxSlotlocal:currInboxItemlocal:currInboxItemlocal:currInboxSlottarget_mailbox_xtarget_mailbox_ytarget_mailbox_zlocal:currRemainderMINUSlocal:currOutboxSlotlocal:currInboxSlotRoomlocal:currInboxSlot20LTElocal:currInboxSlot28local:currInboxItemCount2local:currInboxSlot2target_mailbox_xtarget_mailbox_ytarget_mailbox_zEQlocal:currInboxItemCount20local:currRemainderlocal:currInboxItemlocal:currInboxSlot2target_mailbox_xtarget_mailbox_ytarget_mailbox_zlocal:currOutboxSlotlocal:currRemainder0BREAKlocal:currInboxSlot2ADDlocal:currInboxSlot21GTlocal:currRemainder0local:currRemainderlocal:currInboxItemlocal:currOutboxSlotEQlocal:currOutboxSlot0local:currOutboxSlotADDlocal:currOutboxSlot1EQlocal:currInboxItemCountlocal:currInboxItemlocal:currInboxSlotADDlocal:currInboxSlot1EQlocal:currInboxItemCount0local:currOutboxSlotADDlocal:currOutboxSlot1local:currInboxSlotADDlocal:currInboxSlot1"
+ }
+}
\ No newline at end of file
diff --git a/models/mailbox.json b/models/mailbox.json
new file mode 100644
index 0000000..9245089
--- /dev/null
+++ b/models/mailbox.json
@@ -0,0 +1,90 @@
+{
+ "format_version": "1.21.11",
+ "credit": "Made with Blockbench",
+ "textures": {
+ "0": "3",
+ "1": "2",
+ "2": "1",
+ "particle": "3"
+ },
+ "elements": [
+ {
+ "from": [7, 0, 7],
+ "to": [9, 7, 9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]},
+ "faces": {
+ "north": {"uv": [0, 9, 2, 16], "texture": "#0"},
+ "east": {"uv": [0, 9, 2, 16], "texture": "#0"},
+ "south": {"uv": [0, 9, 2, 16], "texture": "#0"},
+ "west": {"uv": [0, 9, 2, 16], "texture": "#0"},
+ "up": {"uv": [0, 0, 2, 2], "texture": "#0"},
+ "down": {"uv": [0, 0, 2, 2], "texture": "#0"}
+ }
+ },
+ {
+ "from": [4, 7, 0],
+ "to": [12, 13, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 7]},
+ "faces": {
+ "north": {"uv": [0, 2, 8, 8], "texture": "#2"},
+ "east": {"uv": [0, 2, 16, 8], "texture": "#2"},
+ "south": {"uv": [0, 2, 8, 8], "texture": "#2"},
+ "west": {"uv": [0, 2, 16, 8], "texture": "#2"},
+ "up": {"uv": [0, 0, 8, 16], "texture": "#2"},
+ "down": {"uv": [0, 0, 8, 16], "texture": "#2"}
+ }
+ },
+ {
+ "from": [5, 13, 0],
+ "to": [11, 14, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7, 13, 7]},
+ "faces": {
+ "north": {"uv": [1, 1, 7, 2], "texture": "#2"},
+ "east": {"uv": [0, 1, 16, 2], "texture": "#2"},
+ "south": {"uv": [0, 1, 6, 2], "texture": "#2"},
+ "west": {"uv": [0, 1, 16, 2], "texture": "#2"},
+ "up": {"uv": [0, 0, 6, 16], "texture": "#2"},
+ "down": {"uv": [0, 0, 6, 16], "texture": "#2"}
+ }
+ },
+ {
+ "from": [6, 14, 0],
+ "to": [10, 15, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7, 14, 7]},
+ "faces": {
+ "north": {"uv": [2, 1, 6, 2], "texture": "#2"},
+ "east": {"uv": [0, 1, 16, 2], "texture": "#2"},
+ "south": {"uv": [1, 1, 5, 2], "texture": "#2"},
+ "west": {"uv": [0, 1, 16, 2], "texture": "#2"},
+ "up": {"uv": [1, 0, 5, 16], "texture": "#2"},
+ "down": {"uv": [1, 0, 5, 16], "texture": "#2"}
+ }
+ },
+ {
+ "from": [7, 15, 0],
+ "to": [9, 16, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7, 15, 7]},
+ "faces": {
+ "north": {"uv": [3, 1, 5, 2], "texture": "#2"},
+ "east": {"uv": [0, 1, 16, 2], "texture": "#2"},
+ "south": {"uv": [2, 1, 4, 2], "texture": "#2"},
+ "west": {"uv": [0, 1, 16, 2], "texture": "#2"},
+ "up": {"uv": [2, 0, 4, 16], "texture": "#2"},
+ "down": {"uv": [2, 0, 4, 16], "texture": "#2"}
+ }
+ },
+ {
+ "from": [3, 11, 2],
+ "to": [4, 16, 4],
+ "rotation": {"angle": 0, "axis": "y", "origin": [2, 11, 2]},
+ "faces": {
+ "north": {"uv": [0, 3, 1, 8], "texture": "#1"},
+ "east": {"uv": [0, 3, 2, 8], "texture": "#1"},
+ "south": {"uv": [1, 3, 2, 8], "texture": "#1"},
+ "west": {"uv": [0, 3, 2, 8], "texture": "#1"},
+ "up": {"uv": [1, 0, 2, 2], "texture": "#1"},
+ "down": {"uv": [1, 0, 2, 2], "texture": "#1"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/mailbox.json.textures b/models/mailbox.json.textures
new file mode 100644
index 0000000..f9a8c6c
--- /dev/null
+++ b/models/mailbox.json.textures
@@ -0,0 +1,12 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "mailbox_rod",
+ "1": "mailbox_flag",
+ "2": "mailbox_base"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/nims_random_bullshit.mcreator b/nims_random_bullshit.mcreator
index bee47cf..e2e909f 100644
--- a/nims_random_bullshit.mcreator
+++ b/nims_random_bullshit.mcreator
@@ -1374,6 +1374,78 @@
]
},
"path": "~/Other"
+ },
+ {
+ "name": "Mailbox",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "mailbox",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/blockstates/mailbox.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/MailboxBlock.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/entity/MailboxBlockEntity.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/mailbox.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/mailbox.json",
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/mailbox.json"
+ ]
+ },
+ "path": "~/Mailbox"
+ },
+ {
+ "name": "MailboxGUI",
+ "type": "gui",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "mailbox_gui",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/world/inventory/MailboxGUIMenu.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/network/MailboxGUIButtonMessage.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/client/gui/MailboxGUIScreen.java"
+ ]
+ },
+ "path": "~/Mailbox"
+ },
+ {
+ "name": "MailboxSmartSendLogic",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "mailbox_smart_send_logic",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/MailboxSmartSendLogicProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "guistate",
+ "type": "map"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ },
+ "path": "~/Mailbox"
}
],
"variable_elements": [],
@@ -1415,15 +1487,18 @@
"item.nims_random_bullshit.star_wand": "Star Wand",
"block.nims_random_bullshit.quadra_condensed_netherrack": "Quadra-condensed Netherrack",
"gui.nims_random_bullshit.ore_miner_gui.button_mine": "Mine",
+ "gui.nims_random_bullshit.mailbox_gui.outbox_z_coord": "0",
"block.nims_random_bullshit.penta_condensed_netherrack": "Penta-condensed Netherrack",
"item.nims_random_bullshit.magic_dust": "Magic Dust",
"enchantment.nims_random_bullshit.passive_income_enchantment": "Passive Income",
"item.nims_random_bullshit.netherrackite_pickaxe.description_0": "Non-condensed netherracks broken by this pickaxe drop themselves an additional time.",
"item.nims_random_bullshit.netherrackite_pickaxe": "Netherrackite Pickaxe",
"effect.nims_random_bullshit.stinky_effect": "Stinky",
+ "gui.nims_random_bullshit.mailbox_gui.outbox_x_coord": "0",
"block.nims_random_bullshit.broken_glass": "Broken Glass",
"block.nims_random_bullshit.hexa_condensed_netherrack": "Hexa-condensed Netherrack",
"block.nims_random_bullshit.ore_miner": "Ore Miner",
+ "gui.nims_random_bullshit.mailbox_gui.label_outbox": "Outbox",
"block.nims_random_bullshit.netherrack_juice": "Netherrack Juice",
"effect.nims_random_bullshit.summoned_entity_effect": "Summoned Entity",
"item.nims_random_bullshit.sand_dust": "Sand Dust",
@@ -1432,7 +1507,10 @@
"item.nims_random_bullshit.block_eater": "Block Eater",
"item.nims_random_bullshit.golden_berries": "Golden Berries",
"item.nims_random_bullshit.netherrack_juice_bucket": "Netherrack Juice Bucket",
+ "gui.nims_random_bullshit.mailbox_gui.label_y": "Y:",
+ "gui.nims_random_bullshit.mailbox_gui.label_z": "Z:",
"block.nims_random_bullshit.condensed_condensed_condensed_netherrack": "Condensed Condensed Condensed Netherrack",
+ "gui.nims_random_bullshit.mailbox_gui.label_x": "X:",
"entity.nims_random_bullshit.ghoul": "Ghoul",
"item.nims_random_bullshit.star": "Star",
"gui.nims_random_bullshit.shit_gui.label_uh_ohh_stinky": "UH OHH!!! STINKY!!! UH OHH!!! STINKY!!! UH OHH!!! STINKY!!! UH OHH!!! STINKY!!! ",
@@ -1441,6 +1519,10 @@
"item.nims_random_bullshit.gravedigger.description_0": "Right-Click on soul sand or soul soil to use them, summoning a ghoul that attacks hostile mobs.",
"item.nims_random_bullshit.shit": "Shit",
"block.nims_random_bullshit.condensed_netherrack": "Condensed Netherrack",
+ "block.nims_random_bullshit.mailbox": "Mailbox",
+ "gui.nims_random_bullshit.mailbox_gui.button_send": "Send",
+ "gui.nims_random_bullshit.mailbox_gui.outbox_y_coord": "0",
+ "gui.nims_random_bullshit.mailbox_gui.label_inbox": "Inbox",
"item.nims_random_bullshit.netherrackite": "Netherrackite Ingot"
}
},
@@ -1474,6 +1556,10 @@
{
"name": "OreMiner",
"children": []
+ },
+ {
+ "name": "Mailbox",
+ "children": []
}
]
},
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/MailboxBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/MailboxBlock.java
new file mode 100644
index 0000000..82139de
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/MailboxBlock.java
@@ -0,0 +1,146 @@
+
+package net.mcreator.nimsrandombullshit.block;
+
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.phys.shapes.VoxelShape;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.phys.shapes.CollisionContext;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.Rotation;
+import net.minecraft.world.level.block.Mirror;
+import net.minecraft.world.level.block.HorizontalDirectionalBlock;
+import net.minecraft.world.level.block.EntityBlock;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.MenuProvider;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.Containers;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.world.inventory.MailboxGUIMenu;
+import net.mcreator.nimsrandombullshit.block.entity.MailboxBlockEntity;
+
+import io.netty.buffer.Unpooled;
+
+public class MailboxBlock extends Block implements EntityBlock {
+ public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
+
+ public MailboxBlock() {
+ super(BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(1f, 10f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false));
+ this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH));
+ }
+
+ @Override
+ public boolean propagatesSkylightDown(BlockState state, BlockGetter reader, BlockPos pos) {
+ return true;
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 0;
+ }
+
+ @Override
+ public VoxelShape getVisualShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
+ return Shapes.empty();
+ }
+
+ @Override
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
+ super.createBlockStateDefinition(builder);
+ builder.add(FACING);
+ }
+
+ @Override
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
+ return super.getStateForPlacement(context).setValue(FACING, context.getHorizontalDirection().getOpposite());
+ }
+
+ public BlockState rotate(BlockState state, Rotation rot) {
+ return state.setValue(FACING, rot.rotate(state.getValue(FACING)));
+ }
+
+ public BlockState mirror(BlockState state, Mirror mirrorIn) {
+ return state.rotate(mirrorIn.getRotation(state.getValue(FACING)));
+ }
+
+ @Override
+ public InteractionResult use(BlockState blockstate, Level world, BlockPos pos, Player entity, InteractionHand hand, BlockHitResult hit) {
+ super.use(blockstate, world, pos, entity, hand, hit);
+ if (entity instanceof ServerPlayer player) {
+ NetworkHooks.openScreen(player, new MenuProvider() {
+ @Override
+ public Component getDisplayName() {
+ return Component.literal("Mailbox");
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) {
+ return new MailboxGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(pos));
+ }
+ }, pos);
+ }
+ return InteractionResult.SUCCESS;
+ }
+
+ @Override
+ public MenuProvider getMenuProvider(BlockState state, Level worldIn, BlockPos pos) {
+ BlockEntity tileEntity = worldIn.getBlockEntity(pos);
+ return tileEntity instanceof MenuProvider menuProvider ? menuProvider : null;
+ }
+
+ @Override
+ public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
+ return new MailboxBlockEntity(pos, state);
+ }
+
+ @Override
+ public boolean triggerEvent(BlockState state, Level world, BlockPos pos, int eventID, int eventParam) {
+ super.triggerEvent(state, world, pos, eventID, eventParam);
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ return blockEntity == null ? false : blockEntity.triggerEvent(eventID, eventParam);
+ }
+
+ @Override
+ public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) {
+ if (state.getBlock() != newState.getBlock()) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity instanceof MailboxBlockEntity be) {
+ Containers.dropContents(world, pos, be);
+ world.updateNeighbourForOutputSignal(pos, this);
+ }
+ super.onRemove(state, world, pos, newState, isMoving);
+ }
+ }
+
+ @Override
+ public boolean hasAnalogOutputSignal(BlockState state) {
+ return true;
+ }
+
+ @Override
+ public int getAnalogOutputSignal(BlockState blockState, Level world, BlockPos pos) {
+ BlockEntity tileentity = world.getBlockEntity(pos);
+ if (tileentity instanceof MailboxBlockEntity be)
+ return AbstractContainerMenu.getRedstoneSignalFromContainer(be);
+ else
+ return 0;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/entity/MailboxBlockEntity.java b/src/main/java/net/mcreator/nimsrandombullshit/block/entity/MailboxBlockEntity.java
new file mode 100644
index 0000000..5a796ff
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/entity/MailboxBlockEntity.java
@@ -0,0 +1,161 @@
+package net.mcreator.nimsrandombullshit.block.entity;
+
+import net.minecraftforge.items.wrapper.SidedInvWrapper;
+import net.minecraftforge.items.IItemHandler;
+import net.minecraftforge.common.util.LazyOptional;
+import net.minecraftforge.common.capabilities.ForgeCapabilities;
+import net.minecraftforge.common.capabilities.Capability;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.WorldlyContainer;
+import net.minecraft.world.ContainerHelper;
+import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.NonNullList;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.world.inventory.MailboxGUIMenu;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModBlockEntities;
+
+import javax.annotation.Nullable;
+
+import java.util.stream.IntStream;
+
+import io.netty.buffer.Unpooled;
+
+public class MailboxBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer {
+ private NonNullList stacks = NonNullList.withSize(18, ItemStack.EMPTY);
+ private final LazyOptional extends IItemHandler>[] handlers = SidedInvWrapper.create(this, Direction.values());
+
+ public MailboxBlockEntity(BlockPos position, BlockState state) {
+ super(NimsRandomBullshitModBlockEntities.MAILBOX.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("mailbox");
+ }
+
+ @Override
+ public int getMaxStackSize() {
+ return 64;
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory) {
+ return new MailboxGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition));
+ }
+
+ @Override
+ public Component getDisplayName() {
+ return Component.literal("Mailbox");
+ }
+
+ @Override
+ protected NonNullList getItems() {
+ return this.stacks;
+ }
+
+ @Override
+ protected void setItems(NonNullList stacks) {
+ this.stacks = stacks;
+ }
+
+ @Override
+ public boolean canPlaceItem(int index, ItemStack stack) {
+ if (index == 0)
+ return false;
+ if (index == 1)
+ return false;
+ if (index == 2)
+ return false;
+ if (index == 3)
+ return false;
+ if (index == 4)
+ return false;
+ if (index == 5)
+ return false;
+ if (index == 6)
+ return false;
+ if (index == 7)
+ return false;
+ if (index == 8)
+ return false;
+ return true;
+ }
+
+ @Override
+ public int[] getSlotsForFace(Direction side) {
+ return IntStream.range(0, this.getContainerSize()).toArray();
+ }
+
+ @Override
+ public boolean canPlaceItemThroughFace(int index, ItemStack stack, @Nullable Direction direction) {
+ return this.canPlaceItem(index, stack);
+ }
+
+ @Override
+ public boolean canTakeItemThroughFace(int index, ItemStack stack, Direction direction) {
+ return true;
+ }
+
+ @Override
+ public LazyOptional getCapability(Capability capability, @Nullable Direction facing) {
+ if (!this.remove && facing != null && capability == ForgeCapabilities.ITEM_HANDLER)
+ return handlers[facing.ordinal()].cast();
+ return super.getCapability(capability, facing);
+ }
+
+ @Override
+ public void setRemoved() {
+ super.setRemoved();
+ for (LazyOptional extends IItemHandler> handler : handlers)
+ handler.invalidate();
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/client/gui/MailboxGUIScreen.java b/src/main/java/net/mcreator/nimsrandombullshit/client/gui/MailboxGUIScreen.java
new file mode 100644
index 0000000..a69ca14
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/client/gui/MailboxGUIScreen.java
@@ -0,0 +1,188 @@
+package net.mcreator.nimsrandombullshit.client.gui;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.chat.Component;
+import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
+import net.minecraft.client.gui.components.EditBox;
+import net.minecraft.client.gui.components.Button;
+import net.minecraft.client.gui.GuiGraphics;
+import net.minecraft.client.Minecraft;
+
+import net.mcreator.nimsrandombullshit.world.inventory.MailboxGUIMenu;
+import net.mcreator.nimsrandombullshit.network.MailboxGUIButtonMessage;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+import java.util.HashMap;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+
+public class MailboxGUIScreen extends AbstractContainerScreen {
+ private final static HashMap guistate = MailboxGUIMenu.guistate;
+ private final Level world;
+ private final int x, y, z;
+ private final Player entity;
+ EditBox outbox_x_coord;
+ EditBox outbox_y_coord;
+ EditBox outbox_z_coord;
+ Button button_send;
+
+ public MailboxGUIScreen(MailboxGUIMenu container, Inventory inventory, Component text) {
+ super(container, inventory, text);
+ this.world = container.world;
+ this.x = container.x;
+ this.y = container.y;
+ this.z = container.z;
+ this.entity = container.entity;
+ this.imageWidth = 360;
+ this.imageHeight = 180;
+ }
+
+ private static final ResourceLocation texture = new ResourceLocation("nims_random_bullshit:textures/screens/mailbox_gui.png");
+
+ @Override
+ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) {
+ this.renderBackground(guiGraphics);
+ super.render(guiGraphics, mouseX, mouseY, partialTicks);
+ outbox_x_coord.render(guiGraphics, mouseX, mouseY, partialTicks);
+ outbox_y_coord.render(guiGraphics, mouseX, mouseY, partialTicks);
+ outbox_z_coord.render(guiGraphics, mouseX, mouseY, partialTicks);
+ this.renderTooltip(guiGraphics, mouseX, mouseY);
+ }
+
+ @Override
+ protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) {
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ RenderSystem.enableBlend();
+ RenderSystem.defaultBlendFunc();
+ guiGraphics.blit(texture, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight, this.imageWidth, this.imageHeight);
+ RenderSystem.disableBlend();
+ }
+
+ @Override
+ public boolean keyPressed(int key, int b, int c) {
+ if (key == 256) {
+ this.minecraft.player.closeContainer();
+ return true;
+ }
+ if (outbox_x_coord.isFocused())
+ return outbox_x_coord.keyPressed(key, b, c);
+ if (outbox_y_coord.isFocused())
+ return outbox_y_coord.keyPressed(key, b, c);
+ if (outbox_z_coord.isFocused())
+ return outbox_z_coord.keyPressed(key, b, c);
+ return super.keyPressed(key, b, c);
+ }
+
+ @Override
+ public void containerTick() {
+ super.containerTick();
+ outbox_x_coord.tick();
+ outbox_y_coord.tick();
+ outbox_z_coord.tick();
+ }
+
+ @Override
+ public void resize(Minecraft minecraft, int width, int height) {
+ String outbox_x_coordValue = outbox_x_coord.getValue();
+ String outbox_y_coordValue = outbox_y_coord.getValue();
+ String outbox_z_coordValue = outbox_z_coord.getValue();
+ super.resize(minecraft, width, height);
+ outbox_x_coord.setValue(outbox_x_coordValue);
+ outbox_y_coord.setValue(outbox_y_coordValue);
+ outbox_z_coord.setValue(outbox_z_coordValue);
+ }
+
+ @Override
+ protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) {
+ guiGraphics.drawString(this.font, Component.translatable("gui.nims_random_bullshit.mailbox_gui.label_inbox"), 98, 14, -12829636, false);
+ guiGraphics.drawString(this.font, Component.translatable("gui.nims_random_bullshit.mailbox_gui.label_outbox"), 161, 14, -12829636, false);
+ guiGraphics.drawString(this.font, Component.translatable("gui.nims_random_bullshit.mailbox_gui.label_x"), 224, 19, -12829636, false);
+ guiGraphics.drawString(this.font, Component.translatable("gui.nims_random_bullshit.mailbox_gui.label_y"), 224, 41, -12829636, false);
+ guiGraphics.drawString(this.font, Component.translatable("gui.nims_random_bullshit.mailbox_gui.label_z"), 224, 64, -12829636, false);
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ outbox_x_coord = new EditBox(this.font, this.leftPos + 234, this.topPos + 15, 118, 18, Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_x_coord")) {
+ @Override
+ public void insertText(String text) {
+ super.insertText(text);
+ if (getValue().isEmpty())
+ setSuggestion(Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_x_coord").getString());
+ else
+ setSuggestion(null);
+ }
+
+ @Override
+ public void moveCursorTo(int pos) {
+ super.moveCursorTo(pos);
+ if (getValue().isEmpty())
+ setSuggestion(Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_x_coord").getString());
+ else
+ setSuggestion(null);
+ }
+ };
+ outbox_x_coord.setSuggestion(Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_x_coord").getString());
+ outbox_x_coord.setMaxLength(32767);
+ guistate.put("text:outbox_x_coord", outbox_x_coord);
+ this.addWidget(this.outbox_x_coord);
+ outbox_y_coord = new EditBox(this.font, this.leftPos + 234, this.topPos + 38, 118, 18, Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_y_coord")) {
+ @Override
+ public void insertText(String text) {
+ super.insertText(text);
+ if (getValue().isEmpty())
+ setSuggestion(Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_y_coord").getString());
+ else
+ setSuggestion(null);
+ }
+
+ @Override
+ public void moveCursorTo(int pos) {
+ super.moveCursorTo(pos);
+ if (getValue().isEmpty())
+ setSuggestion(Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_y_coord").getString());
+ else
+ setSuggestion(null);
+ }
+ };
+ outbox_y_coord.setSuggestion(Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_y_coord").getString());
+ outbox_y_coord.setMaxLength(32767);
+ guistate.put("text:outbox_y_coord", outbox_y_coord);
+ this.addWidget(this.outbox_y_coord);
+ outbox_z_coord = new EditBox(this.font, this.leftPos + 234, this.topPos + 60, 118, 18, Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_z_coord")) {
+ @Override
+ public void insertText(String text) {
+ super.insertText(text);
+ if (getValue().isEmpty())
+ setSuggestion(Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_z_coord").getString());
+ else
+ setSuggestion(null);
+ }
+
+ @Override
+ public void moveCursorTo(int pos) {
+ super.moveCursorTo(pos);
+ if (getValue().isEmpty())
+ setSuggestion(Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_z_coord").getString());
+ else
+ setSuggestion(null);
+ }
+ };
+ outbox_z_coord.setSuggestion(Component.translatable("gui.nims_random_bullshit.mailbox_gui.outbox_z_coord").getString());
+ outbox_z_coord.setMaxLength(32767);
+ guistate.put("text:outbox_z_coord", outbox_z_coord);
+ this.addWidget(this.outbox_z_coord);
+ button_send = Button.builder(Component.translatable("gui.nims_random_bullshit.mailbox_gui.button_send"), e -> {
+ if (true) {
+ NimsRandomBullshitMod.PACKET_HANDLER.sendToServer(new MailboxGUIButtonMessage(0, x, y, z));
+ MailboxGUIButtonMessage.handleButtonAction(entity, 0, x, y, z);
+ }
+ }).bounds(this.leftPos + 269, this.topPos + 86, 46, 20).build();
+ guistate.put("button:button_send", button_send);
+ this.addRenderableWidget(button_send);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java
index 1d4a423..0313723 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java
@@ -12,11 +12,13 @@ import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.Block;
import net.mcreator.nimsrandombullshit.block.entity.OreMinerBlockEntity;
+import net.mcreator.nimsrandombullshit.block.entity.MailboxBlockEntity;
import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
public class NimsRandomBullshitModBlockEntities {
public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, NimsRandomBullshitMod.MODID);
public static final RegistryObject> ORE_MINER = register("ore_miner", NimsRandomBullshitModBlocks.ORE_MINER, OreMinerBlockEntity::new);
+ public static final RegistryObject> MAILBOX = register("mailbox", NimsRandomBullshitModBlocks.MAILBOX, MailboxBlockEntity::new);
// Start of user code block custom block entities
// End of user code block custom block entities
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlocks.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlocks.java
index 9cb9054..6668cb9 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlocks.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlocks.java
@@ -14,6 +14,7 @@ import net.mcreator.nimsrandombullshit.block.QuadraCondensedNetherrackBlock;
import net.mcreator.nimsrandombullshit.block.PentaCondensedNetherrackBlock;
import net.mcreator.nimsrandombullshit.block.OreMinerBlock;
import net.mcreator.nimsrandombullshit.block.NetherrackJuiceBlock;
+import net.mcreator.nimsrandombullshit.block.MailboxBlock;
import net.mcreator.nimsrandombullshit.block.HexaCondensedNetherrackBlock;
import net.mcreator.nimsrandombullshit.block.CondensedNetherrackBlock;
import net.mcreator.nimsrandombullshit.block.CondensedCondensedNetherrackBlock;
@@ -32,6 +33,7 @@ public class NimsRandomBullshitModBlocks {
public static final RegistryObject HEXA_CONDENSED_NETHERRACK = REGISTRY.register("hexa_condensed_netherrack", () -> new HexaCondensedNetherrackBlock());
public static final RegistryObject ORE_MINER = REGISTRY.register("ore_miner", () -> new OreMinerBlock());
public static final RegistryObject NETHERRACK_JUICE = REGISTRY.register("netherrack_juice", () -> new NetherrackJuiceBlock());
+ public static final RegistryObject MAILBOX = REGISTRY.register("mailbox", () -> new MailboxBlock());
// Start of user code block custom blocks
// End of user code block custom blocks
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java
index d662868..537aaa7 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java
@@ -52,6 +52,7 @@ public class NimsRandomBullshitModItems {
public static final RegistryObject- STAR = REGISTRY.register("star", () -> new StarItem());
public static final RegistryObject
- STAR_WAND = REGISTRY.register("star_wand", () -> new StarWandItem());
public static final RegistryObject
- NETHERRACK_JUICE_BUCKET = REGISTRY.register("netherrack_juice_bucket", () -> new NetherrackJuiceItem());
+ public static final RegistryObject
- MAILBOX = block(NimsRandomBullshitModBlocks.MAILBOX);
// Start of user code block custom items
// End of user code block custom items
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMenus.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMenus.java
index 1aea716..f3defcd 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMenus.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMenus.java
@@ -13,10 +13,12 @@ import net.minecraft.world.inventory.MenuType;
import net.mcreator.nimsrandombullshit.world.inventory.ShitGUIMenu;
import net.mcreator.nimsrandombullshit.world.inventory.OreMinerGUIMenu;
+import net.mcreator.nimsrandombullshit.world.inventory.MailboxGUIMenu;
import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
public class NimsRandomBullshitModMenus {
public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.MENU_TYPES, NimsRandomBullshitMod.MODID);
public static final RegistryObject> SHIT_GUI = REGISTRY.register("shit_gui", () -> IForgeMenuType.create(ShitGUIMenu::new));
public static final RegistryObject> ORE_MINER_GUI = REGISTRY.register("ore_miner_gui", () -> IForgeMenuType.create(OreMinerGUIMenu::new));
+ public static final RegistryObject> MAILBOX_GUI = REGISTRY.register("mailbox_gui", () -> IForgeMenuType.create(MailboxGUIMenu::new));
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java
index c852792..80ac408 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java
@@ -13,6 +13,7 @@ import net.minecraft.client.gui.screens.MenuScreens;
import net.mcreator.nimsrandombullshit.client.gui.ShitGUIScreen;
import net.mcreator.nimsrandombullshit.client.gui.OreMinerGUIScreen;
+import net.mcreator.nimsrandombullshit.client.gui.MailboxGUIScreen;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public class NimsRandomBullshitModScreens {
@@ -21,6 +22,7 @@ public class NimsRandomBullshitModScreens {
event.enqueueWork(() -> {
MenuScreens.register(NimsRandomBullshitModMenus.SHIT_GUI.get(), ShitGUIScreen::new);
MenuScreens.register(NimsRandomBullshitModMenus.ORE_MINER_GUI.get(), OreMinerGUIScreen::new);
+ MenuScreens.register(NimsRandomBullshitModMenus.MAILBOX_GUI.get(), MailboxGUIScreen::new);
});
}
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java
index b938d34..b177dda 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java
@@ -47,6 +47,7 @@ public class NimsRandomBullshitModTabs {
tabData.accept(NimsRandomBullshitModItems.GOLDEN_BERRIES.get());
} else if (tabData.getTabKey() == CreativeModeTabs.FUNCTIONAL_BLOCKS) {
tabData.accept(NimsRandomBullshitModBlocks.ORE_MINER.get().asItem());
+ tabData.accept(NimsRandomBullshitModBlocks.MAILBOX.get().asItem());
} else if (tabData.getTabKey() == CreativeModeTabs.SPAWN_EGGS) {
tabData.accept(NimsRandomBullshitModItems.GHOUL_SPAWN_EGG.get());
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/network/MailboxGUIButtonMessage.java b/src/main/java/net/mcreator/nimsrandombullshit/network/MailboxGUIButtonMessage.java
new file mode 100644
index 0000000..913272d
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/network/MailboxGUIButtonMessage.java
@@ -0,0 +1,75 @@
+
+package net.mcreator.nimsrandombullshit.network;
+
+import net.minecraftforge.network.NetworkEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.world.inventory.MailboxGUIMenu;
+import net.mcreator.nimsrandombullshit.procedures.MailboxSmartSendLogicProcedure;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+import java.util.function.Supplier;
+import java.util.HashMap;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
+public class MailboxGUIButtonMessage {
+ private final int buttonID, x, y, z;
+
+ public MailboxGUIButtonMessage(FriendlyByteBuf buffer) {
+ this.buttonID = buffer.readInt();
+ this.x = buffer.readInt();
+ this.y = buffer.readInt();
+ this.z = buffer.readInt();
+ }
+
+ public MailboxGUIButtonMessage(int buttonID, int x, int y, int z) {
+ this.buttonID = buttonID;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ public static void buffer(MailboxGUIButtonMessage message, FriendlyByteBuf buffer) {
+ buffer.writeInt(message.buttonID);
+ buffer.writeInt(message.x);
+ buffer.writeInt(message.y);
+ buffer.writeInt(message.z);
+ }
+
+ public static void handler(MailboxGUIButtonMessage message, Supplier contextSupplier) {
+ NetworkEvent.Context context = contextSupplier.get();
+ context.enqueueWork(() -> {
+ Player entity = context.getSender();
+ int buttonID = message.buttonID;
+ int x = message.x;
+ int y = message.y;
+ int z = message.z;
+ handleButtonAction(entity, buttonID, x, y, z);
+ });
+ context.setPacketHandled(true);
+ }
+
+ public static void handleButtonAction(Player entity, int buttonID, int x, int y, int z) {
+ Level world = entity.level();
+ HashMap guistate = MailboxGUIMenu.guistate;
+ // security measure to prevent arbitrary chunk generation
+ if (!world.hasChunkAt(new BlockPos(x, y, z)))
+ return;
+ if (buttonID == 0) {
+
+ MailboxSmartSendLogicProcedure.execute(world, x, y, z, entity, guistate);
+ }
+ }
+
+ @SubscribeEvent
+ public static void registerMessage(FMLCommonSetupEvent event) {
+ NimsRandomBullshitMod.addNetworkMessage(MailboxGUIButtonMessage.class, MailboxGUIButtonMessage::buffer, MailboxGUIButtonMessage::new, MailboxGUIButtonMessage::handler);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/MailboxSmartSendLogicProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/MailboxSmartSendLogicProcedure.java
new file mode 100644
index 0000000..48f2a96
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/MailboxSmartSendLogicProcedure.java
@@ -0,0 +1,442 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import org.checkerframework.checker.units.qual.s;
+
+import net.minecraftforge.items.IItemHandlerModifiable;
+import net.minecraftforge.common.capabilities.ForgeCapabilities;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.core.BlockPos;
+import net.minecraft.client.gui.components.EditBox;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModBlocks;
+
+import java.util.function.Supplier;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.Map;
+import java.util.HashMap;
+
+public class MailboxSmartSendLogicProcedure {
+ public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, HashMap guistate) {
+ if (entity == null || guistate == null)
+ return;
+ ItemStack currInboxItem = ItemStack.EMPTY;
+ double currInboxSlot = 0;
+ double currOutboxSlot = 0;
+ double currInboxSlotRoom = 0;
+ double currRemainder = 0;
+ double currInboxSlot2 = 0;
+ double currInboxItemCount = 0;
+ double currInboxItemCount2 = 0;
+ if (!world.isClientSide()) {
+ if (!world.isClientSide()) {
+ BlockPos _bp = BlockPos.containing(x, y, z);
+ BlockEntity _blockEntity = world.getBlockEntity(_bp);
+ BlockState _bs = world.getBlockState(_bp);
+ if (_blockEntity != null)
+ _blockEntity.getPersistentData().putDouble("target_mailbox_x", new Object() {
+ double convert(String s) {
+ try {
+ return Double.parseDouble(s.trim());
+ } catch (Exception e) {
+ }
+ return 0;
+ }
+ }.convert(guistate.containsKey("text:outbox_x_coord") ? ((EditBox) guistate.get("text:outbox_x_coord")).getValue() : ""));
+ if (world instanceof Level _level)
+ _level.sendBlockUpdated(_bp, _bs, _bs, 3);
+ }
+ if (!world.isClientSide()) {
+ BlockPos _bp = BlockPos.containing(x, y, z);
+ BlockEntity _blockEntity = world.getBlockEntity(_bp);
+ BlockState _bs = world.getBlockState(_bp);
+ if (_blockEntity != null)
+ _blockEntity.getPersistentData().putDouble("target_mailbox_y", new Object() {
+ double convert(String s) {
+ try {
+ return Double.parseDouble(s.trim());
+ } catch (Exception e) {
+ }
+ return 0;
+ }
+ }.convert(guistate.containsKey("text:outbox_y_coord") ? ((EditBox) guistate.get("text:outbox_y_coord")).getValue() : ""));
+ if (world instanceof Level _level)
+ _level.sendBlockUpdated(_bp, _bs, _bs, 3);
+ }
+ if (!world.isClientSide()) {
+ BlockPos _bp = BlockPos.containing(x, y, z);
+ BlockEntity _blockEntity = world.getBlockEntity(_bp);
+ BlockState _bs = world.getBlockState(_bp);
+ if (_blockEntity != null)
+ _blockEntity.getPersistentData().putDouble("target_mailbox_z", new Object() {
+ double convert(String s) {
+ try {
+ return Double.parseDouble(s.trim());
+ } catch (Exception e) {
+ }
+ return 0;
+ }
+ }.convert(guistate.containsKey("text:outbox_z_coord") ? ((EditBox) guistate.get("text:outbox_z_coord")).getValue() : ""));
+ if (world instanceof Level _level)
+ _level.sendBlockUpdated(_bp, _bs, _bs, 3);
+ }
+ if ((world.getBlockState(BlockPos.containing(new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_x"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_y"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_z")))).getBlock() == NimsRandomBullshitModBlocks.MAILBOX.get()) {
+ currInboxSlot = 0;
+ currOutboxSlot = 9;
+ while (currInboxSlot <= 8) {
+ currInboxItem = (new Object() {
+ public ItemStack getItemStack(LevelAccessor world, BlockPos pos, int slotid) {
+ AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY);
+ BlockEntity _ent = world.getBlockEntity(pos);
+ if (_ent != null)
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> _retval.set(capability.getStackInSlot(slotid).copy()));
+ return _retval.get();
+ }
+ }.getItemStack(world, BlockPos.containing(new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_x"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_y"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_z")), (int) currInboxSlot)).copy();
+ currInboxItemCount = new Object() {
+ public int getAmount(LevelAccessor world, BlockPos pos, int slotid) {
+ AtomicInteger _retval = new AtomicInteger(0);
+ BlockEntity _ent = world.getBlockEntity(pos);
+ if (_ent != null)
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> _retval.set(capability.getStackInSlot(slotid).getCount()));
+ return _retval.get();
+ }
+ }.getAmount(world, BlockPos.containing(new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_x"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_y"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_z")), (int) currInboxSlot);
+ if (currInboxItem.getItem() == ItemStack.EMPTY.getItem()
+ && !((entity instanceof Player _plrSlotItem && _plrSlotItem.containerMenu instanceof Supplier _splr && _splr.get() instanceof Map _slt ? ((Slot) _slt.get((int) currOutboxSlot)).getItem() : ItemStack.EMPTY)
+ .getItem() == ItemStack.EMPTY.getItem())) {
+ {
+ BlockEntity _ent = world.getBlockEntity(BlockPos.containing(new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_x"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_y"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_z")));
+ if (_ent != null) {
+ final int _slotid = (int) currInboxSlot;
+ final ItemStack _setstack = (entity instanceof Player _plrSlotItem && _plrSlotItem.containerMenu instanceof Supplier _splr && _splr.get() instanceof Map _slt
+ ? ((Slot) _slt.get((int) currOutboxSlot)).getItem()
+ : ItemStack.EMPTY).copy();
+ _setstack.setCount(new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount((int) currOutboxSlot));
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> {
+ if (capability instanceof IItemHandlerModifiable)
+ ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack);
+ });
+ }
+ }
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ((Slot) _slots.get((int) currOutboxSlot)).set(ItemStack.EMPTY);
+ _player.containerMenu.broadcastChanges();
+ }
+ } else {
+ if (currInboxItem
+ .getItem() == (entity instanceof Player _plrSlotItem && _plrSlotItem.containerMenu instanceof Supplier _splr && _splr.get() instanceof Map _slt ? ((Slot) _slt.get((int) currOutboxSlot)).getItem() : ItemStack.EMPTY)
+ .getItem()
+ && currInboxItemCount < currInboxItem.getMaxStackSize()) {
+ currInboxSlotRoom = currInboxItem.getMaxStackSize() - currInboxItemCount;
+ if (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount((int) currOutboxSlot) <= currInboxSlotRoom) {
+ {
+ BlockEntity _ent = world.getBlockEntity(BlockPos.containing(new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_x"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_y"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_z")));
+ if (_ent != null) {
+ final int _slotid = (int) currInboxSlot;
+ final ItemStack _setstack = currInboxItem.copy();
+ _setstack.setCount((int) (currInboxItemCount + new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount((int) currOutboxSlot)));
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> {
+ if (capability instanceof IItemHandlerModifiable)
+ ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack);
+ });
+ }
+ }
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ((Slot) _slots.get((int) currOutboxSlot)).set(ItemStack.EMPTY);
+ _player.containerMenu.broadcastChanges();
+ }
+ } else {
+ {
+ BlockEntity _ent = world.getBlockEntity(BlockPos.containing(new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_x"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_y"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_z")));
+ if (_ent != null) {
+ final int _slotid = (int) currInboxSlot;
+ final ItemStack _setstack = currInboxItem.copy();
+ _setstack.setCount(currInboxItem.getMaxStackSize());
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> {
+ if (capability instanceof IItemHandlerModifiable)
+ ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack);
+ });
+ }
+ }
+ currRemainder = new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount((int) currOutboxSlot) - currInboxSlotRoom;
+ currInboxSlot2 = 0;
+ while (currInboxSlot2 <= 8) {
+ currInboxItemCount2 = new Object() {
+ public int getAmount(LevelAccessor world, BlockPos pos, int slotid) {
+ AtomicInteger _retval = new AtomicInteger(0);
+ BlockEntity _ent = world.getBlockEntity(pos);
+ if (_ent != null)
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> _retval.set(capability.getStackInSlot(slotid).getCount()));
+ return _retval.get();
+ }
+ }.getAmount(world, BlockPos.containing(new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_x"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_y"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_z")), (int) currInboxSlot2);
+ if (currInboxItemCount2 == 0) {
+ {
+ BlockEntity _ent = world.getBlockEntity(BlockPos.containing(new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_x"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_y"), new Object() {
+ public double getValue(LevelAccessor world, BlockPos pos, String tag) {
+ BlockEntity blockEntity = world.getBlockEntity(pos);
+ if (blockEntity != null)
+ return blockEntity.getPersistentData().getDouble(tag);
+ return -1;
+ }
+ }.getValue(world, BlockPos.containing(x, y, z), "target_mailbox_z")));
+ if (_ent != null) {
+ final int _slotid = (int) currInboxSlot2;
+ final ItemStack _setstack = currInboxItem.copy();
+ _setstack.setCount((int) currRemainder);
+ _ent.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> {
+ if (capability instanceof IItemHandlerModifiable)
+ ((IItemHandlerModifiable) capability).setStackInSlot(_slotid, _setstack);
+ });
+ }
+ }
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ((Slot) _slots.get((int) currOutboxSlot)).set(ItemStack.EMPTY);
+ _player.containerMenu.broadcastChanges();
+ }
+ currRemainder = 0;
+ break;
+ }
+ currInboxSlot2 = currInboxSlot2 + 1;
+ }
+ if (currRemainder > 0) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = currInboxItem.copy();
+ _setstack.setCount((int) currRemainder);
+ ((Slot) _slots.get((int) currOutboxSlot)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ }
+ }
+ }
+ }
+ if (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount((int) currOutboxSlot) == 0) {
+ currOutboxSlot = currOutboxSlot + 1;
+ if (currInboxItemCount == currInboxItem.getMaxStackSize()) {
+ currInboxSlot = currInboxSlot + 1;
+ }
+ } else if (currInboxItemCount == 0) {
+ currOutboxSlot = currOutboxSlot + 1;
+ } else {
+ currInboxSlot = currInboxSlot + 1;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/world/inventory/MailboxGUIMenu.java b/src/main/java/net/mcreator/nimsrandombullshit/world/inventory/MailboxGUIMenu.java
new file mode 100644
index 0000000..1a4570a
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/world/inventory/MailboxGUIMenu.java
@@ -0,0 +1,402 @@
+
+package net.mcreator.nimsrandombullshit.world.inventory;
+
+import net.minecraftforge.items.SlotItemHandler;
+import net.minecraftforge.items.ItemStackHandler;
+import net.minecraftforge.items.IItemHandler;
+import net.minecraftforge.common.capabilities.ForgeCapabilities;
+
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.inventory.ContainerLevelAccess;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModMenus;
+
+import java.util.function.Supplier;
+import java.util.Map;
+import java.util.HashMap;
+
+public class MailboxGUIMenu extends AbstractContainerMenu implements Supplier