diff --git a/elements/LabelCopyMachine.mod.json b/elements/LabelCopyMachine.mod.json
new file mode 100644
index 0000000..a628245
--- /dev/null
+++ b/elements/LabelCopyMachine.mod.json
@@ -0,0 +1,138 @@
+{
+ "_fv": 73,
+ "_type": "block",
+ "definition": {
+ "texture": "label_copy_machine_buttons",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 2,
+ "customModelName": "label_copy_machine: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": "Label Copy Machine",
+ "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": "LabelCopyMachineGUI",
+ "openGUIOnRightClick": true,
+ "inventorySize": 4,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/LabelCopyMachineCopyButtonPressed.mod.json b/elements/LabelCopyMachineCopyButtonPressed.mod.json
new file mode 100644
index 0000000..c8a0d88
--- /dev/null
+++ b/elements/LabelCopyMachineCopyButtonPressed.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerAND0CUSTOM:ShippingLabelANDGT10GT20MINUS1111MINUS2122ADD3103"
+ }
+}
\ No newline at end of file
diff --git a/elements/LabelCopyMachineGUI.mod.json b/elements/LabelCopyMachineGUI.mod.json
new file mode 100644
index 0000000..5e76f47
--- /dev/null
+++ b/elements/LabelCopyMachineGUI.mod.json
@@ -0,0 +1,248 @@
+{
+ "_fv": 73,
+ "_type": "gui",
+ "definition": {
+ "type": 1,
+ "width": 176,
+ "height": 188,
+ "inventoryOffsetX": 0,
+ "inventoryOffsetY": 0,
+ "renderBgLayer": true,
+ "doesPauseGame": false,
+ "components": [
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": "CUSTOM:ShippingLabel"
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "color": {
+ "value": -3355444,
+ "falpha": 0.0
+ },
+ "id": 0,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 146,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": "Items.PAPER"
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "color": {
+ "value": -3342337,
+ "falpha": 0.0
+ },
+ "id": 1,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 182,
+ "y": 49,
+ "locked": false
+ }
+ },
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": "Items.DYE#0"
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "color": {
+ "value": -13421773,
+ "falpha": 0.0
+ },
+ "id": 2,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 222,
+ "y": 49,
+ "locked": false
+ }
+ },
+ {
+ "type": "outputslot",
+ "data": {
+ "color": {
+ "value": -6684775,
+ "falpha": 0.0
+ },
+ "id": 3,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": false,
+ "x": 258,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "label",
+ "data": {
+ "name": "label_label_copy_machine",
+ "text": {
+ "fixedValue": "Label Copy Machine"
+ },
+ "color": {
+ "value": -12829636,
+ "falpha": 0.0
+ },
+ "x": 132,
+ "y": 31,
+ "locked": false
+ }
+ },
+ {
+ "type": "image",
+ "data": {
+ "image": "plus_sign.png",
+ "use1Xscale": false,
+ "x": 204,
+ "y": 49,
+ "locked": false
+ }
+ },
+ {
+ "type": "image",
+ "data": {
+ "image": "copy_icon.png",
+ "use1Xscale": false,
+ "x": 204,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "image",
+ "data": {
+ "image": "right_arrow_sign.png",
+ "use1Xscale": false,
+ "x": 168,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "image",
+ "data": {
+ "image": "right_arrow_sign.png",
+ "use1Xscale": false,
+ "x": 222,
+ "y": 76,
+ "locked": false
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_copy",
+ "text": "Copy",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "LabelCopyMachineCopyButtonPressed"
+ },
+ "width": 46,
+ "height": 20,
+ "x": 191,
+ "y": 98,
+ "locked": false
+ }
+ },
+ {
+ "type": "tooltip",
+ "data": {
+ "name": "tooltip_shipping_label_slot",
+ "text": {
+ "fixedValue": "Shipping Label Slot"
+ },
+ "displayCondition": {
+ "name": "LabelCopyMachineGUISlot0TooltipCondition"
+ },
+ "width": 24,
+ "height": 24,
+ "x": 141,
+ "y": 71,
+ "locked": false
+ }
+ },
+ {
+ "type": "tooltip",
+ "data": {
+ "name": "tooltip_paper_slot",
+ "text": {
+ "fixedValue": "Paper Slot"
+ },
+ "displayCondition": {
+ "name": "LabelCopyMachineGUISlot1TooltipCondition"
+ },
+ "width": 24,
+ "height": 24,
+ "x": 177,
+ "y": 44,
+ "locked": false
+ }
+ },
+ {
+ "type": "tooltip",
+ "data": {
+ "name": "tooltip_ink_sac_slot",
+ "text": {
+ "fixedValue": "Ink Sac Slot"
+ },
+ "displayCondition": {
+ "name": "LabelCopyMachineGUISlot2TooltipCondition"
+ },
+ "width": 24,
+ "height": 24,
+ "x": 218,
+ "y": 44,
+ "locked": false
+ }
+ },
+ {
+ "type": "tooltip",
+ "data": {
+ "name": "tooltip_output_copy_of_shipping_label",
+ "text": {
+ "fixedValue": "Output (copy of shipping label)"
+ },
+ "displayCondition": {
+ "name": "LabelCopyMachineGUISlot3TooltipCondition"
+ },
+ "width": 24,
+ "height": 24,
+ "x": 254,
+ "y": 71,
+ "locked": false
+ }
+ }
+ ],
+ "gridSettings": {
+ "sx": 9,
+ "sy": 9,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/LabelCopyMachineGUISlot0TooltipCondition.mod.json b/elements/LabelCopyMachineGUISlot0TooltipCondition.mod.json
new file mode 100644
index 0000000..a6024d2
--- /dev/null
+++ b/elements/LabelCopyMachineGUISlot0TooltipCondition.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGT00FALSETRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/LabelCopyMachineGUISlot1TooltipCondition.mod.json b/elements/LabelCopyMachineGUISlot1TooltipCondition.mod.json
new file mode 100644
index 0000000..5f55348
--- /dev/null
+++ b/elements/LabelCopyMachineGUISlot1TooltipCondition.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGT10FALSETRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/LabelCopyMachineGUISlot2TooltipCondition.mod.json b/elements/LabelCopyMachineGUISlot2TooltipCondition.mod.json
new file mode 100644
index 0000000..0884acf
--- /dev/null
+++ b/elements/LabelCopyMachineGUISlot2TooltipCondition.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGT20FALSETRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/LabelCopyMachineGUISlot3TooltipCondition.mod.json b/elements/LabelCopyMachineGUISlot3TooltipCondition.mod.json
new file mode 100644
index 0000000..0e55520
--- /dev/null
+++ b/elements/LabelCopyMachineGUISlot3TooltipCondition.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 73,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGT30FALSETRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/LabelCopyMachineRecipe.mod.json b/elements/LabelCopyMachineRecipe.mod.json
new file mode 100644
index 0000000..e5ee9f9
--- /dev/null
+++ b/elements/LabelCopyMachineRecipe.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 73,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.DISPENSER"
+ },
+ {
+ "value": "Blocks.DISPENSER"
+ },
+ {
+ "value": "Blocks.IRON_BLOCK"
+ },
+ {
+ "value": "Blocks.IRON_BLOCK"
+ },
+ {
+ "value": "Blocks.IRON_BLOCK"
+ },
+ {
+ "value": "Blocks.IRON_BLOCK"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:LabelCopyMachine"
+ },
+ "name": "label_copy_machine_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Tux.mod.json b/elements/Tux.mod.json
new file mode 100644
index 0000000..20f0132
--- /dev/null
+++ b/elements/Tux.mod.json
@@ -0,0 +1,154 @@
+{
+ "_fv": 73,
+ "_type": "livingentity",
+ "definition": {
+ "mobName": "Tux",
+ "mobLabel": "Tux",
+ "mobModelName": "Modelpeguin",
+ "mobModelTexture": "tux.png",
+ "transparentModelCondition": {
+ "fixedValue": false
+ },
+ "isShakingCondition": {
+ "fixedValue": false
+ },
+ "solidBoundingBox": {
+ "fixedValue": false
+ },
+ "visualScale": {
+ "fixedValue": 1.25
+ },
+ "boundingBoxScale": {
+ "fixedValue": 1.25
+ },
+ "modelLayers": [],
+ "animations": [],
+ "modelWidth": 0.6,
+ "modelHeight": 1.8,
+ "modelShadowSize": 0.5,
+ "mountedYOffset": 0.0,
+ "hasSpawnEgg": true,
+ "spawnEggBaseColor": {
+ "value": -16777216,
+ "falpha": 0.0
+ },
+ "spawnEggDotColor": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "creativeTabs": [
+ {
+ "value": "MISC"
+ }
+ ],
+ "isBoss": true,
+ "bossBarColor": "BLUE",
+ "bossBarType": "PROGRESS",
+ "equipmentMainHand": {
+ "value": ""
+ },
+ "equipmentOffHand": {
+ "value": ""
+ },
+ "equipmentHelmet": {
+ "value": ""
+ },
+ "equipmentBody": {
+ "value": ""
+ },
+ "equipmentLeggings": {
+ "value": ""
+ },
+ "equipmentBoots": {
+ "value": ""
+ },
+ "mobBehaviourType": "Mob",
+ "mobCreatureType": "UNDEFINED",
+ "attackStrength": 12,
+ "attackKnockback": 1.6,
+ "knockbackResistance": 0.6,
+ "movementSpeed": 0.27,
+ "stepHeight": 0.6,
+ "armorBaseValue": 2.0,
+ "trackingRange": 64,
+ "followRange": 32,
+ "health": 300,
+ "xpAmount": 0,
+ "waterMob": false,
+ "breatheUnderwater": {
+ "fixedValue": false
+ },
+ "pushedByFluids": {
+ "fixedValue": true
+ },
+ "flyingMob": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "disableCollisions": false,
+ "ridable": false,
+ "canControlForward": false,
+ "canControlStrafe": false,
+ "immuneToFire": false,
+ "immuneToArrows": false,
+ "immuneToFallDamage": true,
+ "immuneToCactus": true,
+ "immuneToDrowning": true,
+ "immuneToLightning": false,
+ "immuneToPotions": true,
+ "immuneToPlayer": false,
+ "immuneToExplosion": false,
+ "immuneToTrident": false,
+ "immuneToAnvil": true,
+ "immuneToWither": false,
+ "immuneToDragonBreath": false,
+ "mobDrop": {
+ "value": ""
+ },
+ "livingSound": {
+ "value": ""
+ },
+ "hurtSound": {
+ "value": "entity.generic.hurt"
+ },
+ "deathSound": {
+ "value": "entity.generic.death"
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "raidCelebrationSound": {
+ "value": ""
+ },
+ "entityDataEntries": [],
+ "hasAI": true,
+ "aiBase": "(none)",
+ "aixml": "1.2FALSEnull,nullFALSEnull,null0.8null,nullnull,nullFALSEFALSEEntityPlayernull,null",
+ "breedable": false,
+ "tameable": false,
+ "breedTriggerItems": [],
+ "ranged": false,
+ "rangedAttackItem": {
+ "value": ""
+ },
+ "rangedItemType": "Default item",
+ "rangedAttackInterval": 20,
+ "rangedAttackRadius": 10.0,
+ "spawnThisMob": false,
+ "doesDespawnWhenIdle": false,
+ "spawningProbability": 20,
+ "mobSpawningType": "monster",
+ "minNumberOfMobsPerGroup": 4,
+ "maxNumberOfMobsPerGroup": 4,
+ "restrictionBiomes": [],
+ "spawnInDungeons": false,
+ "raidSpawnsCount": [
+ 4,
+ 3,
+ 3,
+ 4,
+ 4,
+ 4,
+ 2
+ ]
+ }
+}
\ No newline at end of file
diff --git a/models/label_copy_machine.json b/models/label_copy_machine.json
new file mode 100644
index 0000000..1ea4074
--- /dev/null
+++ b/models/label_copy_machine.json
@@ -0,0 +1,129 @@
+{
+ "format_version": "1.9.0",
+ "credit": "Made with Blockbench",
+ "textures": {
+ "0": "nims_random_bullshit:block/mailbox_base",
+ "1": "nims_random_bullshit:block/label_copy_machine_buttons",
+ "2": "nims_random_bullshit:block/label_copy_machine_line",
+ "particle": "nims_random_bullshit:block/mailbox_base"
+ },
+ "elements": [
+ {
+ "from": [1, 0, 1],
+ "to": [15, 2, 15],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]},
+ "faces": {
+ "north": {"uv": [2, 0, 16, 2], "texture": "#0"},
+ "east": {"uv": [0, 0, 14, 2], "texture": "#0"},
+ "south": {"uv": [0, 0, 14, 2], "texture": "#0"},
+ "west": {"uv": [1, 0, 15, 2], "texture": "#0"},
+ "up": {"uv": [0, 1, 14, 15], "texture": "#0"},
+ "down": {"uv": [0, 0, 14, 14], "texture": "#0"}
+ }
+ },
+ {
+ "from": [1, 3, 1],
+ "to": [15, 5, 15],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7, 3, 7]},
+ "faces": {
+ "north": {"uv": [2, 0, 16, 2], "texture": "#0"},
+ "east": {"uv": [0, 0, 14, 2], "texture": "#0"},
+ "south": {"uv": [0, 0, 14, 2], "texture": "#0"},
+ "west": {"uv": [1, 0, 15, 2], "texture": "#0"},
+ "up": {"uv": [0, 1, 14, 15], "texture": "#0"},
+ "down": {"uv": [0, 0, 14, 14], "texture": "#0"}
+ }
+ },
+ {
+ "from": [3, 5, 2],
+ "to": [4, 6, 3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7, 5, 7]},
+ "faces": {
+ "north": {"uv": [13, 1, 14, 2], "texture": "#1"},
+ "east": {"uv": [12, 1, 13, 2], "texture": "#1"},
+ "south": {"uv": [2, 1, 3, 2], "texture": "#1"},
+ "west": {"uv": [2, 1, 3, 2], "texture": "#1"},
+ "up": {"uv": [2, 2, 3, 3], "texture": "#1"},
+ "down": {"uv": [2, 12, 3, 13], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6, 5, 2],
+ "to": [7, 6, 3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [10, 5, 7]},
+ "faces": {
+ "north": {"uv": [13, 1, 14, 2], "texture": "#1"},
+ "east": {"uv": [12, 1, 13, 2], "texture": "#1"},
+ "south": {"uv": [2, 1, 3, 2], "texture": "#1"},
+ "west": {"uv": [2, 1, 3, 2], "texture": "#1"},
+ "up": {"uv": [2, 2, 3, 3], "texture": "#1"},
+ "down": {"uv": [2, 12, 3, 13], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9, 5, 2],
+ "to": [10, 6, 3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [13, 5, 7]},
+ "faces": {
+ "north": {"uv": [13, 1, 14, 2], "texture": "#1"},
+ "east": {"uv": [12, 1, 13, 2], "texture": "#1"},
+ "south": {"uv": [2, 1, 3, 2], "texture": "#1"},
+ "west": {"uv": [2, 1, 3, 2], "texture": "#1"},
+ "up": {"uv": [2, 2, 3, 3], "texture": "#1"},
+ "down": {"uv": [2, 12, 3, 13], "texture": "#1"}
+ }
+ },
+ {
+ "from": [3, 5, 5],
+ "to": [13, 7, 13],
+ "rotation": {"angle": 0, "axis": "y", "origin": [16, 5, 17]},
+ "faces": {
+ "north": {"uv": [5, 0, 15, 2], "texture": "#0"},
+ "east": {"uv": [6, 0, 14, 2], "texture": "#0"},
+ "south": {"uv": [1, 0, 11, 2], "texture": "#0"},
+ "west": {"uv": [2, 0, 10, 2], "texture": "#0"},
+ "up": {"uv": [1, 2, 11, 10], "texture": "#0"},
+ "down": {"uv": [1, 6, 11, 14], "texture": "#0"}
+ }
+ },
+ {
+ "from": [1, 2, 3],
+ "to": [15, 3, 15],
+ "rotation": {"angle": 0, "axis": "y", "origin": [11, 2, 2]},
+ "faces": {
+ "north": {"uv": [0, 1, 14, 2], "texture": "#2"},
+ "east": {"uv": [0, 1, 12, 2], "texture": "#0"},
+ "south": {"uv": [0, 1, 14, 2], "texture": "#0"},
+ "west": {"uv": [1, 1, 13, 2], "texture": "#0"},
+ "up": {"uv": [0, 1, 14, 13], "texture": "#2"},
+ "down": {"uv": [0, 0, 14, 12], "texture": "#2"}
+ }
+ },
+ {
+ "from": [1, 2, 1],
+ "to": [8, 3, 3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [11, 2, 1]},
+ "faces": {
+ "north": {"uv": [7, 1, 14, 2], "texture": "#2"},
+ "east": {"uv": [11, 1, 13, 2], "texture": "#2"},
+ "south": {"uv": [0, 1, 7, 2], "texture": "#2"},
+ "west": {"uv": [0, 1, 2, 2], "texture": "#2"},
+ "up": {"uv": [0, 0, 7, 2], "texture": "#2"},
+ "down": {"uv": [0, 11, 7, 13], "texture": "#2"}
+ }
+ },
+ {
+ "from": [14, 2, 1],
+ "to": [15, 3, 3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [18, 2, 1]},
+ "faces": {
+ "north": {"uv": [7, 1, 8, 2], "texture": "#2"},
+ "east": {"uv": [11, 1, 13, 2], "texture": "#2"},
+ "south": {"uv": [6, 1, 7, 2], "texture": "#2"},
+ "west": {"uv": [0, 1, 2, 2], "texture": "#2"},
+ "up": {"uv": [6, 0, 7, 2], "texture": "#2"},
+ "down": {"uv": [6, 11, 7, 13], "texture": "#2"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/label_copy_machine.json.textures b/models/label_copy_machine.json.textures
new file mode 100644
index 0000000..35e4075
--- /dev/null
+++ b/models/label_copy_machine.json.textures
@@ -0,0 +1,12 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "mailbox_base",
+ "1": "label_copy_machine_buttons",
+ "2": "label_copy_machine_line"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/mojmap-1.20.x/Modelpeguin.java b/models/mojmap-1.20.x/Modelpeguin.java
new file mode 100644
index 0000000..5099477
--- /dev/null
+++ b/models/mojmap-1.20.x/Modelpeguin.java
@@ -0,0 +1,84 @@
+// Made with Blockbench 5.0.7
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+
+public class Modelpeguin extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(
+ new ResourceLocation("modid", "peguin"), "main");
+ private final ModelPart root;
+ private final ModelPart Head;
+ private final ModelPart BodySegment;
+ private final ModelPart LeftLeg;
+ private final ModelPart RightLeg;
+ private final ModelPart Body;
+ private final ModelPart RightArm;
+ private final ModelPart LeftArm;
+
+ public Modelpeguin(ModelPart root) {
+ this.root = root.getChild("root");
+ this.Head = this.root.getChild("Head");
+ this.BodySegment = this.root.getChild("BodySegment");
+ this.LeftLeg = this.BodySegment.getChild("LeftLeg");
+ this.RightLeg = this.BodySegment.getChild("RightLeg");
+ this.Body = this.BodySegment.getChild("Body");
+ this.RightArm = this.BodySegment.getChild("RightArm");
+ this.LeftArm = this.BodySegment.getChild("LeftArm");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+
+ PartDefinition root = partdefinition.addOrReplaceChild("root", CubeListBuilder.create(),
+ PartPose.offsetAndRotation(-0.3125F, 24.0F, -0.0938F, 0.0F, 1.5708F, 0.0F));
+
+ PartDefinition Head = root.addOrReplaceChild("Head",
+ CubeListBuilder.create().texOffs(42, 46)
+ .addBox(0.5625F, -2.7188F, 1.0625F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(0, 30)
+ .addBox(-7.0F, -8.0F, -1.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)),
+ PartPose.offset(2.875F, -16.0625F, -2.8438F));
+
+ PartDefinition BodySegment = root.addOrReplaceChild("BodySegment", CubeListBuilder.create(),
+ PartPose.offset(-1.5625F, 0.0F, -2.0F));
+
+ PartDefinition LeftLeg = BodySegment.addOrReplaceChild("LeftLeg", CubeListBuilder.create().texOffs(30, 46)
+ .addBox(-1.8125F, -2.0F, -1.125F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)),
+ PartPose.offset(9.6875F, 0.0F, 5.2188F));
+
+ PartDefinition RightLeg = BodySegment.addOrReplaceChild("RightLeg", CubeListBuilder.create().texOffs(18, 46)
+ .addBox(-1.8125F, -2.0F, -1.3438F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)),
+ PartPose.offset(9.6875F, 0.0F, -2.5625F));
+
+ PartDefinition Body = BodySegment.addOrReplaceChild("Body", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-14.0F, -16.0F, 0.0F, 14.0F, 16.0F, 14.0F, new CubeDeformation(0.0F)),
+ PartPose.offset(8.5938F, 0.0F, -4.7813F));
+
+ PartDefinition RightArm = BodySegment.addOrReplaceChild("RightArm", CubeListBuilder.create().texOffs(32, 30)
+ .addBox(-4.25F, 0.0F, -0.0625F, 8.0F, 15.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offset(1.6875F, -16.0313F, -5.6875F));
+
+ PartDefinition LeftArm = BodySegment.addOrReplaceChild("LeftArm", CubeListBuilder.create().texOffs(0, 46)
+ .addBox(-4.0F, -0.0313F, -1.0F, 8.0F, 15.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offset(1.4375F, -16.0F, 10.125F));
+
+ return LayerDefinition.create(meshdefinition, 64, 64);
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay,
+ float red, float green, float blue, float alpha) {
+ root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
+ float headPitch) {
+ this.LeftLeg.xRot = Mth.cos(limbSwing * 1.0F) * -1.0F * limbSwingAmount;
+ this.RightArm.xRot = Mth.cos(limbSwing * 0.6662F + (float) Math.PI) * limbSwingAmount;
+ this.Head.yRot = netHeadYaw / (180F / (float) Math.PI);
+ this.Head.xRot = headPitch / (180F / (float) Math.PI);
+ this.RightLeg.xRot = Mth.cos(limbSwing * 1.0F) * 1.0F * limbSwingAmount;
+ this.LeftArm.xRot = Mth.cos(limbSwing * 0.6662F) * limbSwingAmount;
+ }
+}
\ No newline at end of file
diff --git a/nims_random_bullshit.mcreator b/nims_random_bullshit.mcreator
index bc23342..3ef4c36 100644
--- a/nims_random_bullshit.mcreator
+++ b/nims_random_bullshit.mcreator
@@ -239,15 +239,15 @@
"registry_name": "broken_glass",
"metadata": {
"files": [
- "src/main/resources/assets/nims_random_bullshit/blockstates/broken_glass.json",
- "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_side.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_noside.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_noside_alt.json",
"src/main/java/net/mcreator/nimsrandombullshit/block/BrokenGlassBlock.java",
"src/main/resources/data/nims_random_bullshit/loot_tables/blocks/broken_glass.json",
- "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_noside_alt.json",
"src/main/resources/assets/nims_random_bullshit/models/item/broken_glass.json",
- "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_noside.json",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/broken_glass.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_side_alt.json",
"src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_post.json",
- "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_side_alt.json"
+ "src/main/resources/assets/nims_random_bullshit/models/block/broken_glass_side.json"
]
},
"path": "~/Other"
@@ -491,8 +491,8 @@
"registry_name": "sand_dust",
"metadata": {
"files": [
- "src/main/resources/assets/nims_random_bullshit/models/item/sand_dust.json",
- "src/main/java/net/mcreator/nimsrandombullshit/item/SandDustItem.java"
+ "src/main/java/net/mcreator/nimsrandombullshit/item/SandDustItem.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/sand_dust.json"
]
},
"path": "~/Lapis"
@@ -656,8 +656,8 @@
"registry_name": "shit",
"metadata": {
"files": [
- "src/main/resources/assets/nims_random_bullshit/models/item/shit.json",
- "src/main/java/net/mcreator/nimsrandombullshit/item/ShitItem.java"
+ "src/main/java/net/mcreator/nimsrandombullshit/item/ShitItem.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/shit.json"
]
},
"path": "~/Shit"
@@ -735,8 +735,8 @@
"registry_name": "shit_gui",
"metadata": {
"files": [
- "src/main/java/net/mcreator/nimsrandombullshit/client/gui/ShitGUIScreen.java",
- "src/main/java/net/mcreator/nimsrandombullshit/world/inventory/ShitGUIMenu.java"
+ "src/main/java/net/mcreator/nimsrandombullshit/world/inventory/ShitGUIMenu.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/client/gui/ShitGUIScreen.java"
]
},
"path": "~/Shit"
@@ -952,12 +952,12 @@
"registry_name": "ore_miner",
"metadata": {
"files": [
- "src/main/resources/assets/nims_random_bullshit/models/item/ore_miner.json",
- "src/main/resources/assets/nims_random_bullshit/models/block/ore_miner.json",
- "src/main/java/net/mcreator/nimsrandombullshit/block/entity/OreMinerBlockEntity.java",
- "src/main/resources/assets/nims_random_bullshit/blockstates/ore_miner.json",
"src/main/java/net/mcreator/nimsrandombullshit/block/OreMinerBlock.java",
- "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/ore_miner.json"
+ "src/main/java/net/mcreator/nimsrandombullshit/block/entity/OreMinerBlockEntity.java",
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/ore_miner.json",
+ "src/main/resources/assets/nims_random_bullshit/models/block/ore_miner.json",
+ "src/main/resources/assets/nims_random_bullshit/models/item/ore_miner.json",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/ore_miner.json"
]
},
"path": "~/OreMiner"
@@ -1031,9 +1031,9 @@
"registry_name": "ghoul",
"metadata": {
"files": [
- "src/main/java/net/mcreator/nimsrandombullshit/entity/GhoulEntity.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/client/renderer/GhoulRenderer.java",
"src/main/resources/assets/nims_random_bullshit/models/item/ghoul_spawn_egg.json",
- "src/main/java/net/mcreator/nimsrandombullshit/client/renderer/GhoulRenderer.java"
+ "src/main/java/net/mcreator/nimsrandombullshit/entity/GhoulEntity.java"
]
},
"path": "~/Gravedigger"
@@ -1709,6 +1709,166 @@
]
},
"path": "~/Mailbox"
+ },
+ {
+ "name": "Tux",
+ "type": "livingentity",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "tux",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/entity/TuxEntity.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/tux_spawn_egg.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/client/renderer/TuxRenderer.java"
+ ]
+ },
+ "path": "~/Tux"
+ },
+ {
+ "name": "LabelCopyMachine",
+ "type": "block",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "label_copy_machine",
+ "metadata": {
+ "files": [
+ "src/main/resources/assets/nims_random_bullshit/models/block/label_copy_machine.json",
+ "src/main/resources/assets/nims_random_bullshit/blockstates/label_copy_machine.json",
+ "src/main/resources/data/nims_random_bullshit/loot_tables/blocks/label_copy_machine.json",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/LabelCopyMachineBlock.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/block/entity/LabelCopyMachineBlockEntity.java",
+ "src/main/resources/assets/nims_random_bullshit/models/item/label_copy_machine.json"
+ ]
+ },
+ "path": "~/Mailbox"
+ },
+ {
+ "name": "LabelCopyMachineRecipe",
+ "type": "recipe",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "label_copy_machine_recipe",
+ "metadata": {
+ "files": [
+ "src/main/resources/data/nims_random_bullshit/recipes/label_copy_machine_recipe.json"
+ ]
+ },
+ "path": "~/Mailbox"
+ },
+ {
+ "name": "LabelCopyMachineGUI",
+ "type": "gui",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "label_copy_machine_gui",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/world/inventory/LabelCopyMachineGUIMenu.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/client/gui/LabelCopyMachineGUIScreen.java",
+ "src/main/java/net/mcreator/nimsrandombullshit/network/LabelCopyMachineGUIButtonMessage.java"
+ ]
+ },
+ "path": "~/Mailbox"
+ },
+ {
+ "name": "LabelCopyMachineCopyButtonPressed",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "label_copy_machine_copy_button_pressed",
+ "metadata": {
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineCopyButtonPressedProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ }
+ ]
+ },
+ "path": "~/Mailbox"
+ },
+ {
+ "name": "LabelCopyMachineGUISlot0TooltipCondition",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "label_copy_machine_gui_slot_0_tooltip_condition",
+ "metadata": {
+ "return_type": "logic",
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot0TooltipConditionProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ }
+ ]
+ },
+ "path": "~/Mailbox"
+ },
+ {
+ "name": "LabelCopyMachineGUISlot1TooltipCondition",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "label_copy_machine_gui_slot_1_tooltip_condition",
+ "metadata": {
+ "return_type": "logic",
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot1TooltipConditionProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ }
+ ]
+ },
+ "path": "~/Mailbox"
+ },
+ {
+ "name": "LabelCopyMachineGUISlot2TooltipCondition",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "label_copy_machine_gui_slot_2_tooltip_condition",
+ "metadata": {
+ "return_type": "logic",
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot2TooltipConditionProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ }
+ ]
+ },
+ "path": "~/Mailbox"
+ },
+ {
+ "name": "LabelCopyMachineGUISlot3TooltipCondition",
+ "type": "procedure",
+ "compiles": true,
+ "locked_code": false,
+ "registry_name": "label_copy_machine_gui_slot_3_tooltip_condition",
+ "metadata": {
+ "return_type": "logic",
+ "files": [
+ "src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot3TooltipConditionProcedure.java"
+ ],
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ }
+ ]
+ },
+ "path": "~/Mailbox"
}
],
"variable_elements": [],
@@ -1744,53 +1904,62 @@
"tab_element_order": {},
"language_map": {
"en_us": {
- "block.nims_random_bullshit.condensed_condensed_netherrack": "Condensed Condensed Netherrack",
- "item.nims_random_bullshit.gravedigger": "Gravedigger",
- "fluid.nims_random_bullshit.netherrack_juice": "Netherrack Juice",
- "item.nims_random_bullshit.star_wand": "Star Wand",
"gui.nims_random_bullshit.mailbox_name_entry_gui.button_done": "Done",
- "block.nims_random_bullshit.quadra_condensed_netherrack": "Quadra-condensed Netherrack",
+ "item.nims_random_bullshit.star_wand": "Star Wand",
"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",
+ "gui.nims_random_bullshit.label_copy_machine_gui.button_copy": "Copy",
+ "gui.nims_random_bullshit.mailbox_gui.outbox_x_coord": "0",
+ "block.nims_random_bullshit.broken_glass": "Broken Glass",
+ "block.nims_random_bullshit.label_copy_machine": "Label Copy Machine",
+ "effect.nims_random_bullshit.summoned_entity_effect": "Summoned Entity",
+ "gui.nims_random_bullshit.mailbox_name_entry_gui.mailbox_name_field": "",
+ "item.nims_random_bullshit.ghoul_spawn_egg": "Ghoul Spawn Egg",
+ "item.nims_random_bullshit.shipping_label": "Shipping Label",
+ "gui.nims_random_bullshit.mailbox_gui.label_y": "Y:",
+ "gui.nims_random_bullshit.mailbox_gui.label_z": "Z:",
+ "item.nims_random_bullshit.tux_spawn_egg": "Tux Spawn Egg",
+ "gui.nims_random_bullshit.mailbox_gui.label_x": "X:",
+ "gui.nims_random_bullshit.label_copy_machine_gui.label_label_copy_machine": "Label Copy Machine",
+ "item.nims_random_bullshit.lapis_lazuli_nugget": "Lapis Lazuli Nugget",
+ "item.nims_random_bullshit.gravedigger.description_1": "We must dig!",
+ "item.nims_random_bullshit.gravedigger.description_0": "Right-Click on soul sand or soul soil to use them, summoning a ghoul that attacks hostile mobs.",
+ "gui.nims_random_bullshit.label_copy_machine_gui.tooltip_ink_sac_slot": "Ink Sac Slot",
+ "gui.nims_random_bullshit.label_copy_machine_gui.tooltip_paper_slot": "Paper Slot",
+ "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",
+ "block.nims_random_bullshit.condensed_condensed_netherrack": "Condensed Condensed Netherrack",
+ "item.nims_random_bullshit.gravedigger": "Gravedigger",
+ "fluid.nims_random_bullshit.netherrack_juice": "Netherrack Juice",
+ "block.nims_random_bullshit.quadra_condensed_netherrack": "Quadra-condensed Netherrack",
+ "gui.nims_random_bullshit.mailbox_gui.outbox_z_coord": "0",
+ "gui.nims_random_bullshit.label_copy_machine_gui.tooltip_output_copy_of_shipping_label": "Output (copy of shipping label)",
"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",
- "gui.nims_random_bullshit.mailbox_name_entry_gui.mailbox_name_field": "",
+ "entity.nims_random_bullshit.tux": "Tux",
"item.nims_random_bullshit.magic_flesh": "Magic Flesh",
- "item.nims_random_bullshit.ghoul_spawn_egg": "Ghoul Spawn Egg",
- "item.nims_random_bullshit.shipping_label": "Shipping Label",
"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!!! ",
- "item.nims_random_bullshit.lapis_lazuli_nugget": "Lapis Lazuli Nugget",
- "item.nims_random_bullshit.gravedigger.description_1": "We must dig!",
- "item.nims_random_bullshit.gravedigger.description_0": "Right-Click on soul sand or soul soil to use them, summoning a ghoul that attacks hostile mobs.",
"item.nims_random_bullshit.shit": "Shit",
"block.nims_random_bullshit.condensed_netherrack": "Condensed Netherrack",
- "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_name_entry_gui.label_mailbox_name": "Mailbox Name:",
- "gui.nims_random_bullshit.mailbox_gui.label_inbox": "Inbox",
- "item.nims_random_bullshit.netherrackite": "Netherrackite Ingot"
+ "gui.nims_random_bullshit.label_copy_machine_gui.tooltip_shipping_label_slot": "Shipping Label Slot",
+ "gui.nims_random_bullshit.mailbox_name_entry_gui.label_mailbox_name": "Mailbox Name:"
}
},
"foldersRoot": {
@@ -1827,6 +1996,10 @@
{
"name": "Mailbox",
"children": []
+ },
+ {
+ "name": "Tux",
+ "children": []
}
]
},
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/LabelCopyMachineBlock.java b/src/main/java/net/mcreator/nimsrandombullshit/block/LabelCopyMachineBlock.java
new file mode 100644
index 0000000..1b4a28f
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/LabelCopyMachineBlock.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.LabelCopyMachineGUIMenu;
+import net.mcreator.nimsrandombullshit.block.entity.LabelCopyMachineBlockEntity;
+
+import io.netty.buffer.Unpooled;
+
+public class LabelCopyMachineBlock extends Block implements EntityBlock {
+ public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
+
+ public LabelCopyMachineBlock() {
+ 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("Label Copy Machine");
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) {
+ return new LabelCopyMachineGUIMenu(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 LabelCopyMachineBlockEntity(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 LabelCopyMachineBlockEntity 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 LabelCopyMachineBlockEntity be)
+ return AbstractContainerMenu.getRedstoneSignalFromContainer(be);
+ else
+ return 0;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/block/entity/LabelCopyMachineBlockEntity.java b/src/main/java/net/mcreator/nimsrandombullshit/block/entity/LabelCopyMachineBlockEntity.java
new file mode 100644
index 0000000..4e8e9f4
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/block/entity/LabelCopyMachineBlockEntity.java
@@ -0,0 +1,143 @@
+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.LabelCopyMachineGUIMenu;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModBlockEntities;
+
+import javax.annotation.Nullable;
+
+import java.util.stream.IntStream;
+
+import io.netty.buffer.Unpooled;
+
+public class LabelCopyMachineBlockEntity extends RandomizableContainerBlockEntity implements WorldlyContainer {
+ private NonNullList stacks = NonNullList.withSize(4, ItemStack.EMPTY);
+ private final LazyOptional extends IItemHandler>[] handlers = SidedInvWrapper.create(this, Direction.values());
+
+ public LabelCopyMachineBlockEntity(BlockPos position, BlockState state) {
+ super(NimsRandomBullshitModBlockEntities.LABEL_COPY_MACHINE.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("label_copy_machine");
+ }
+
+ @Override
+ public int getMaxStackSize() {
+ return 64;
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory) {
+ return new LabelCopyMachineGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition));
+ }
+
+ @Override
+ public Component getDisplayName() {
+ return Component.literal("Label Copy Machine");
+ }
+
+ @Override
+ protected NonNullList getItems() {
+ return this.stacks;
+ }
+
+ @Override
+ protected void setItems(NonNullList stacks) {
+ this.stacks = stacks;
+ }
+
+ @Override
+ public boolean canPlaceItem(int index, ItemStack stack) {
+ return true;
+ }
+
+ @Override
+ public int[] getSlotsForFace(Direction side) {
+ return IntStream.range(0, this.getContainerSize()).toArray();
+ }
+
+ @Override
+ public boolean canPlaceItemThroughFace(int index, ItemStack stack, @Nullable Direction direction) {
+ return this.canPlaceItem(index, stack);
+ }
+
+ @Override
+ public boolean canTakeItemThroughFace(int index, ItemStack stack, Direction direction) {
+ return true;
+ }
+
+ @Override
+ public LazyOptional getCapability(Capability capability, @Nullable Direction facing) {
+ if (!this.remove && facing != null && capability == ForgeCapabilities.ITEM_HANDLER)
+ return handlers[facing.ordinal()].cast();
+ return super.getCapability(capability, facing);
+ }
+
+ @Override
+ public void setRemoved() {
+ super.setRemoved();
+ for (LazyOptional extends IItemHandler> handler : handlers)
+ handler.invalidate();
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/client/gui/LabelCopyMachineGUIScreen.java b/src/main/java/net/mcreator/nimsrandombullshit/client/gui/LabelCopyMachineGUIScreen.java
new file mode 100644
index 0000000..7d1f5c6
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/client/gui/LabelCopyMachineGUIScreen.java
@@ -0,0 +1,107 @@
+package net.mcreator.nimsrandombullshit.client.gui;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.chat.Component;
+import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
+import net.minecraft.client.gui.components.Button;
+import net.minecraft.client.gui.GuiGraphics;
+
+import net.mcreator.nimsrandombullshit.world.inventory.LabelCopyMachineGUIMenu;
+import net.mcreator.nimsrandombullshit.procedures.LabelCopyMachineGUISlot3TooltipConditionProcedure;
+import net.mcreator.nimsrandombullshit.procedures.LabelCopyMachineGUISlot2TooltipConditionProcedure;
+import net.mcreator.nimsrandombullshit.procedures.LabelCopyMachineGUISlot1TooltipConditionProcedure;
+import net.mcreator.nimsrandombullshit.procedures.LabelCopyMachineGUISlot0TooltipConditionProcedure;
+import net.mcreator.nimsrandombullshit.network.LabelCopyMachineGUIButtonMessage;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+import java.util.HashMap;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+
+public class LabelCopyMachineGUIScreen extends AbstractContainerScreen {
+ private final static HashMap guistate = LabelCopyMachineGUIMenu.guistate;
+ private final Level world;
+ private final int x, y, z;
+ private final Player entity;
+ Button button_copy;
+
+ public LabelCopyMachineGUIScreen(LabelCopyMachineGUIMenu container, Inventory inventory, Component text) {
+ super(container, inventory, text);
+ this.world = container.world;
+ this.x = container.x;
+ this.y = container.y;
+ this.z = container.z;
+ this.entity = container.entity;
+ this.imageWidth = 176;
+ this.imageHeight = 188;
+ }
+
+ private static final ResourceLocation texture = new ResourceLocation("nims_random_bullshit:textures/screens/label_copy_machine_gui.png");
+
+ @Override
+ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) {
+ this.renderBackground(guiGraphics);
+ super.render(guiGraphics, mouseX, mouseY, partialTicks);
+ this.renderTooltip(guiGraphics, mouseX, mouseY);
+ if (LabelCopyMachineGUISlot0TooltipConditionProcedure.execute(entity))
+ if (mouseX > leftPos + 15 && mouseX < leftPos + 39 && mouseY > topPos + 45 && mouseY < topPos + 69)
+ guiGraphics.renderTooltip(font, Component.translatable("gui.nims_random_bullshit.label_copy_machine_gui.tooltip_shipping_label_slot"), mouseX, mouseY);
+ if (LabelCopyMachineGUISlot1TooltipConditionProcedure.execute(entity))
+ if (mouseX > leftPos + 51 && mouseX < leftPos + 75 && mouseY > topPos + 18 && mouseY < topPos + 42)
+ guiGraphics.renderTooltip(font, Component.translatable("gui.nims_random_bullshit.label_copy_machine_gui.tooltip_paper_slot"), mouseX, mouseY);
+ if (LabelCopyMachineGUISlot2TooltipConditionProcedure.execute(entity))
+ if (mouseX > leftPos + 92 && mouseX < leftPos + 116 && mouseY > topPos + 18 && mouseY < topPos + 42)
+ guiGraphics.renderTooltip(font, Component.translatable("gui.nims_random_bullshit.label_copy_machine_gui.tooltip_ink_sac_slot"), mouseX, mouseY);
+ if (LabelCopyMachineGUISlot3TooltipConditionProcedure.execute(entity))
+ if (mouseX > leftPos + 128 && mouseX < leftPos + 152 && mouseY > topPos + 45 && mouseY < topPos + 69)
+ guiGraphics.renderTooltip(font, Component.translatable("gui.nims_random_bullshit.label_copy_machine_gui.tooltip_output_copy_of_shipping_label"), 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);
+
+ guiGraphics.blit(new ResourceLocation("nims_random_bullshit:textures/screens/plus_sign.png"), this.leftPos + 78, this.topPos + 23, 0, 0, 16, 16, 16, 16);
+
+ guiGraphics.blit(new ResourceLocation("nims_random_bullshit:textures/screens/copy_icon.png"), this.leftPos + 78, this.topPos + 50, 0, 0, 16, 16, 16, 16);
+
+ guiGraphics.blit(new ResourceLocation("nims_random_bullshit:textures/screens/right_arrow_sign.png"), this.leftPos + 42, this.topPos + 50, 0, 0, 32, 16, 32, 16);
+
+ guiGraphics.blit(new ResourceLocation("nims_random_bullshit:textures/screens/right_arrow_sign.png"), this.leftPos + 96, this.topPos + 50, 0, 0, 32, 16, 32, 16);
+
+ RenderSystem.disableBlend();
+ }
+
+ @Override
+ public boolean keyPressed(int key, int b, int c) {
+ if (key == 256) {
+ this.minecraft.player.closeContainer();
+ return true;
+ }
+ return super.keyPressed(key, b, c);
+ }
+
+ @Override
+ protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) {
+ guiGraphics.drawString(this.font, Component.translatable("gui.nims_random_bullshit.label_copy_machine_gui.label_label_copy_machine"), 6, 5, -12829636, false);
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ button_copy = Button.builder(Component.translatable("gui.nims_random_bullshit.label_copy_machine_gui.button_copy"), e -> {
+ if (true) {
+ NimsRandomBullshitMod.PACKET_HANDLER.sendToServer(new LabelCopyMachineGUIButtonMessage(0, x, y, z));
+ LabelCopyMachineGUIButtonMessage.handleButtonAction(entity, 0, x, y, z);
+ }
+ }).bounds(this.leftPos + 65, this.topPos + 72, 46, 20).build();
+ guistate.put("button:button_copy", button_copy);
+ this.addRenderableWidget(button_copy);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/client/model/Modelpeguin.java b/src/main/java/net/mcreator/nimsrandombullshit/client/model/Modelpeguin.java
new file mode 100644
index 0000000..88130b1
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/client/model/Modelpeguin.java
@@ -0,0 +1,75 @@
+package net.mcreator.nimsrandombullshit.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 5.0.7
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modelpeguin extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("nims_random_bullshit", "modelpeguin"), "main");
+ public final ModelPart root;
+ public final ModelPart Head;
+ public final ModelPart BodySegment;
+ public final ModelPart LeftLeg;
+ public final ModelPart RightLeg;
+ public final ModelPart Body;
+ public final ModelPart RightArm;
+ public final ModelPart LeftArm;
+
+ public Modelpeguin(ModelPart root) {
+ this.root = root.getChild("root");
+ this.Head = this.root.getChild("Head");
+ this.BodySegment = this.root.getChild("BodySegment");
+ this.LeftLeg = this.BodySegment.getChild("LeftLeg");
+ this.RightLeg = this.BodySegment.getChild("RightLeg");
+ this.Body = this.BodySegment.getChild("Body");
+ this.RightArm = this.BodySegment.getChild("RightArm");
+ this.LeftArm = this.BodySegment.getChild("LeftArm");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition root = partdefinition.addOrReplaceChild("root", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.3125F, 24.0F, -0.0938F, 0.0F, 1.5708F, 0.0F));
+ PartDefinition Head = root.addOrReplaceChild("Head",
+ CubeListBuilder.create().texOffs(42, 46).addBox(0.5625F, -2.7188F, 1.0625F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(0, 30).addBox(-7.0F, -8.0F, -1.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)),
+ PartPose.offset(2.875F, -16.0625F, -2.8438F));
+ PartDefinition BodySegment = root.addOrReplaceChild("BodySegment", CubeListBuilder.create(), PartPose.offset(-1.5625F, 0.0F, -2.0F));
+ PartDefinition LeftLeg = BodySegment.addOrReplaceChild("LeftLeg", CubeListBuilder.create().texOffs(30, 46).addBox(-1.8125F, -2.0F, -1.125F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(9.6875F, 0.0F, 5.2188F));
+ PartDefinition RightLeg = BodySegment.addOrReplaceChild("RightLeg", CubeListBuilder.create().texOffs(18, 46).addBox(-1.8125F, -2.0F, -1.3438F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(9.6875F, 0.0F, -2.5625F));
+ PartDefinition Body = BodySegment.addOrReplaceChild("Body", CubeListBuilder.create().texOffs(0, 0).addBox(-14.0F, -16.0F, 0.0F, 14.0F, 16.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offset(8.5938F, 0.0F, -4.7813F));
+ PartDefinition RightArm = BodySegment.addOrReplaceChild("RightArm", CubeListBuilder.create().texOffs(32, 30).addBox(-4.25F, 0.0F, -0.0625F, 8.0F, 15.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(1.6875F, -16.0313F, -5.6875F));
+ PartDefinition LeftArm = BodySegment.addOrReplaceChild("LeftArm", CubeListBuilder.create().texOffs(0, 46).addBox(-4.0F, -0.0313F, -1.0F, 8.0F, 15.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(1.4375F, -16.0F, 10.125F));
+ return LayerDefinition.create(meshdefinition, 64, 64);
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ this.LeftLeg.xRot = Mth.cos(limbSwing * 1.0F) * -1.0F * limbSwingAmount;
+ this.RightArm.xRot = Mth.cos(limbSwing * 0.6662F + (float) Math.PI) * limbSwingAmount;
+ this.Head.yRot = netHeadYaw / (180F / (float) Math.PI);
+ this.Head.xRot = headPitch / (180F / (float) Math.PI);
+ this.RightLeg.xRot = Mth.cos(limbSwing * 1.0F) * 1.0F * limbSwingAmount;
+ this.LeftArm.xRot = Mth.cos(limbSwing * 0.6662F) * limbSwingAmount;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/client/renderer/TuxRenderer.java b/src/main/java/net/mcreator/nimsrandombullshit/client/renderer/TuxRenderer.java
new file mode 100644
index 0000000..b1058e1
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/client/renderer/TuxRenderer.java
@@ -0,0 +1,27 @@
+
+package net.mcreator.nimsrandombullshit.client.renderer;
+
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.entity.MobRenderer;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+
+import net.mcreator.nimsrandombullshit.entity.TuxEntity;
+import net.mcreator.nimsrandombullshit.client.model.Modelpeguin;
+
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class TuxRenderer extends MobRenderer> {
+ public TuxRenderer(EntityRendererProvider.Context context) {
+ super(context, new Modelpeguin(context.bakeLayer(Modelpeguin.LAYER_LOCATION)), 0.5f);
+ }
+
+ @Override
+ protected void scale(TuxEntity entity, PoseStack poseStack, float f) {
+ poseStack.scale(1.25f, 1.25f, 1.25f);
+ }
+
+ @Override
+ public ResourceLocation getTextureLocation(TuxEntity entity) {
+ return new ResourceLocation("nims_random_bullshit:textures/entities/tux.png");
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/entity/TuxEntity.java b/src/main/java/net/mcreator/nimsrandombullshit/entity/TuxEntity.java
new file mode 100644
index 0000000..b35049d
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/entity/TuxEntity.java
@@ -0,0 +1,153 @@
+
+package net.mcreator.nimsrandombullshit.entity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.projectile.ThrownPotion;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.monster.Monster;
+import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal;
+import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal;
+import net.minecraft.world.entity.ai.goal.RandomStrollGoal;
+import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal;
+import net.minecraft.world.entity.ai.goal.MeleeAttackGoal;
+import net.minecraft.world.entity.ai.attributes.Attributes;
+import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
+import net.minecraft.world.entity.Pose;
+import net.minecraft.world.entity.MobType;
+import net.minecraft.world.entity.Mob;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.EntityDimensions;
+import net.minecraft.world.entity.AreaEffectCloud;
+import net.minecraft.world.damagesource.DamageTypes;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.sounds.SoundEvent;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.server.level.ServerBossEvent;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.network.chat.Component;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModEntities;
+
+public class TuxEntity extends Monster {
+ private final ServerBossEvent bossInfo = new ServerBossEvent(this.getDisplayName(), ServerBossEvent.BossBarColor.BLUE, ServerBossEvent.BossBarOverlay.PROGRESS);
+
+ public TuxEntity(PlayMessages.SpawnEntity packet, Level world) {
+ this(NimsRandomBullshitModEntities.TUX.get(), world);
+ }
+
+ public TuxEntity(EntityType type, Level world) {
+ super(type, world);
+ setMaxUpStep(0.6f);
+ xpReward = 0;
+ setNoAi(false);
+ setCustomName(Component.literal("Tux"));
+ setCustomNameVisible(true);
+ setPersistenceRequired();
+ refreshDimensions();
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ protected void registerGoals() {
+ super.registerGoals();
+ this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.2, false) {
+ @Override
+ protected double getAttackReachSqr(LivingEntity entity) {
+ return this.mob.getBbWidth() * this.mob.getBbWidth() + entity.getBbWidth();
+ }
+ });
+ this.targetSelector.addGoal(2, new HurtByTargetGoal(this));
+ this.goalSelector.addGoal(3, new RandomStrollGoal(this, 0.8));
+ this.goalSelector.addGoal(4, new RandomLookAroundGoal(this));
+ this.targetSelector.addGoal(5, new NearestAttackableTargetGoal(this, Player.class, false, false));
+ }
+
+ @Override
+ public MobType getMobType() {
+ return MobType.UNDEFINED;
+ }
+
+ @Override
+ public boolean removeWhenFarAway(double distanceToClosestPlayer) {
+ return false;
+ }
+
+ @Override
+ public SoundEvent getHurtSound(DamageSource ds) {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.hurt"));
+ }
+
+ @Override
+ public SoundEvent getDeathSound() {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.death"));
+ }
+
+ @Override
+ public boolean hurt(DamageSource damagesource, float amount) {
+ if (damagesource.getDirectEntity() instanceof ThrownPotion || damagesource.getDirectEntity() instanceof AreaEffectCloud)
+ return false;
+ if (damagesource.is(DamageTypes.FALL))
+ return false;
+ if (damagesource.is(DamageTypes.CACTUS))
+ return false;
+ if (damagesource.is(DamageTypes.DROWN))
+ return false;
+ if (damagesource.is(DamageTypes.FALLING_ANVIL))
+ return false;
+ return super.hurt(damagesource, amount);
+ }
+
+ @Override
+ public boolean canChangeDimensions() {
+ return false;
+ }
+
+ @Override
+ public void startSeenByPlayer(ServerPlayer player) {
+ super.startSeenByPlayer(player);
+ this.bossInfo.addPlayer(player);
+ }
+
+ @Override
+ public void stopSeenByPlayer(ServerPlayer player) {
+ super.stopSeenByPlayer(player);
+ this.bossInfo.removePlayer(player);
+ }
+
+ @Override
+ public void customServerAiStep() {
+ super.customServerAiStep();
+ this.bossInfo.setProgress(this.getHealth() / this.getMaxHealth());
+ }
+
+ @Override
+ public EntityDimensions getDimensions(Pose pose) {
+ return super.getDimensions(pose).scale(1.25f);
+ }
+
+ public static void init() {
+ }
+
+ public static AttributeSupplier.Builder createAttributes() {
+ AttributeSupplier.Builder builder = Mob.createMobAttributes();
+ builder = builder.add(Attributes.MOVEMENT_SPEED, 0.27);
+ builder = builder.add(Attributes.MAX_HEALTH, 300);
+ builder = builder.add(Attributes.ARMOR, 2);
+ builder = builder.add(Attributes.ATTACK_DAMAGE, 12);
+ builder = builder.add(Attributes.FOLLOW_RANGE, 32);
+ builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 0.6);
+ builder = builder.add(Attributes.ATTACK_KNOCKBACK, 1.6);
+ return builder;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java
index 0313723..0a968c8 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlockEntities.java
@@ -13,12 +13,14 @@ 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.block.entity.LabelCopyMachineBlockEntity;
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);
+ public static final RegistryObject> LABEL_COPY_MACHINE = register("label_copy_machine", NimsRandomBullshitModBlocks.LABEL_COPY_MACHINE, LabelCopyMachineBlockEntity::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 6668cb9..1428815 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlocks.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModBlocks.java
@@ -15,6 +15,7 @@ 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.LabelCopyMachineBlock;
import net.mcreator.nimsrandombullshit.block.HexaCondensedNetherrackBlock;
import net.mcreator.nimsrandombullshit.block.CondensedNetherrackBlock;
import net.mcreator.nimsrandombullshit.block.CondensedCondensedNetherrackBlock;
@@ -34,6 +35,7 @@ public class NimsRandomBullshitModBlocks {
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());
+ public static final RegistryObject LABEL_COPY_MACHINE = REGISTRY.register("label_copy_machine", () -> new LabelCopyMachineBlock());
// Start of user code block custom blocks
// End of user code block custom blocks
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntities.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntities.java
index 2b7b851..b32a4dc 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntities.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntities.java
@@ -16,6 +16,7 @@ import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.Entity;
+import net.mcreator.nimsrandombullshit.entity.TuxEntity;
import net.mcreator.nimsrandombullshit.entity.ShitProjectileEntity;
import net.mcreator.nimsrandombullshit.entity.GhoulEntity;
import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
@@ -27,6 +28,10 @@ public class NimsRandomBullshitModEntities {
EntityType.Builder.of(ShitProjectileEntity::new, MobCategory.MISC).setCustomClientFactory(ShitProjectileEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
public static final RegistryObject> GHOUL = register("ghoul",
EntityType.Builder.of(GhoulEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(GhoulEntity::new).fireImmune().sized(0.6f, 1.8f));
+ public static final RegistryObject> TUX = register("tux",
+ EntityType.Builder.of(TuxEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(TuxEntity::new)
+
+ .sized(0.6f, 1.8f));
// Start of user code block custom entities
// End of user code block custom entities
@@ -38,11 +43,13 @@ public class NimsRandomBullshitModEntities {
public static void init(FMLCommonSetupEvent event) {
event.enqueueWork(() -> {
GhoulEntity.init();
+ TuxEntity.init();
});
}
@SubscribeEvent
public static void registerAttributes(EntityAttributeCreationEvent event) {
event.put(GHOUL.get(), GhoulEntity.createAttributes().build());
+ event.put(TUX.get(), TuxEntity.createAttributes().build());
}
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntityRenderers.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntityRenderers.java
index cae8134..3ed0b39 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntityRenderers.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModEntityRenderers.java
@@ -11,6 +11,7 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraft.client.renderer.entity.ThrownItemRenderer;
+import net.mcreator.nimsrandombullshit.client.renderer.TuxRenderer;
import net.mcreator.nimsrandombullshit.client.renderer.GhoulRenderer;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
@@ -19,5 +20,6 @@ public class NimsRandomBullshitModEntityRenderers {
public static void registerEntityRenderers(EntityRenderersEvent.RegisterRenderers event) {
event.registerEntityRenderer(NimsRandomBullshitModEntities.SHIT_PROJECTILE.get(), ThrownItemRenderer::new);
event.registerEntityRenderer(NimsRandomBullshitModEntities.GHOUL.get(), GhoulRenderer::new);
+ event.registerEntityRenderer(NimsRandomBullshitModEntities.TUX.get(), TuxRenderer::new);
}
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java
index 848b3a1..66c0487 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModItems.java
@@ -55,6 +55,8 @@ public class NimsRandomBullshitModItems {
public static final RegistryObject- NETHERRACK_JUICE_BUCKET = REGISTRY.register("netherrack_juice_bucket", () -> new NetherrackJuiceItem());
public static final RegistryObject
- MAILBOX = block(NimsRandomBullshitModBlocks.MAILBOX);
public static final RegistryObject
- SHIPPING_LABEL = REGISTRY.register("shipping_label", () -> new ShippingLabelItem());
+ public static final RegistryObject
- TUX_SPAWN_EGG = REGISTRY.register("tux_spawn_egg", () -> new ForgeSpawnEggItem(NimsRandomBullshitModEntities.TUX, -16777216, -1, new Item.Properties()));
+ public static final RegistryObject
- LABEL_COPY_MACHINE = block(NimsRandomBullshitModBlocks.LABEL_COPY_MACHINE);
// 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 edbbc14..0be0eb8 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMenus.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModMenus.java
@@ -15,6 +15,7 @@ import net.mcreator.nimsrandombullshit.world.inventory.ShitGUIMenu;
import net.mcreator.nimsrandombullshit.world.inventory.OreMinerGUIMenu;
import net.mcreator.nimsrandombullshit.world.inventory.MailboxNameEntryGUIMenu;
import net.mcreator.nimsrandombullshit.world.inventory.MailboxGUIMenu;
+import net.mcreator.nimsrandombullshit.world.inventory.LabelCopyMachineGUIMenu;
import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
public class NimsRandomBullshitModMenus {
@@ -23,4 +24,5 @@ public class NimsRandomBullshitModMenus {
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));
public static final RegistryObject> MAILBOX_NAME_ENTRY_GUI = REGISTRY.register("mailbox_name_entry_gui", () -> IForgeMenuType.create(MailboxNameEntryGUIMenu::new));
+ public static final RegistryObject> LABEL_COPY_MACHINE_GUI = REGISTRY.register("label_copy_machine_gui", () -> IForgeMenuType.create(LabelCopyMachineGUIMenu::new));
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModModels.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModModels.java
new file mode 100644
index 0000000..6508275
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModModels.java
@@ -0,0 +1,20 @@
+
+/*
+ * MCreator note: This file will be REGENERATED on each build.
+ */
+package net.mcreator.nimsrandombullshit.init;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.client.event.EntityRenderersEvent;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.mcreator.nimsrandombullshit.client.model.Modelpeguin;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = {Dist.CLIENT})
+public class NimsRandomBullshitModModels {
+ @SubscribeEvent
+ public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) {
+ event.registerLayerDefinition(Modelpeguin.LAYER_LOCATION, Modelpeguin::createBodyLayer);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java
index 100ab7c..bd3c831 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModScreens.java
@@ -15,6 +15,7 @@ import net.mcreator.nimsrandombullshit.client.gui.ShitGUIScreen;
import net.mcreator.nimsrandombullshit.client.gui.OreMinerGUIScreen;
import net.mcreator.nimsrandombullshit.client.gui.MailboxNameEntryGUIScreen;
import net.mcreator.nimsrandombullshit.client.gui.MailboxGUIScreen;
+import net.mcreator.nimsrandombullshit.client.gui.LabelCopyMachineGUIScreen;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public class NimsRandomBullshitModScreens {
@@ -25,6 +26,7 @@ public class NimsRandomBullshitModScreens {
MenuScreens.register(NimsRandomBullshitModMenus.ORE_MINER_GUI.get(), OreMinerGUIScreen::new);
MenuScreens.register(NimsRandomBullshitModMenus.MAILBOX_GUI.get(), MailboxGUIScreen::new);
MenuScreens.register(NimsRandomBullshitModMenus.MAILBOX_NAME_ENTRY_GUI.get(), MailboxNameEntryGUIScreen::new);
+ MenuScreens.register(NimsRandomBullshitModMenus.LABEL_COPY_MACHINE_GUI.get(), LabelCopyMachineGUIScreen::new);
});
}
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java
index b900c9a..67de77f 100644
--- a/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java
+++ b/src/main/java/net/mcreator/nimsrandombullshit/init/NimsRandomBullshitModTabs.java
@@ -49,8 +49,10 @@ public class NimsRandomBullshitModTabs {
} else if (tabData.getTabKey() == CreativeModeTabs.FUNCTIONAL_BLOCKS) {
tabData.accept(NimsRandomBullshitModBlocks.ORE_MINER.get().asItem());
tabData.accept(NimsRandomBullshitModBlocks.MAILBOX.get().asItem());
+ tabData.accept(NimsRandomBullshitModBlocks.LABEL_COPY_MACHINE.get().asItem());
} else if (tabData.getTabKey() == CreativeModeTabs.SPAWN_EGGS) {
tabData.accept(NimsRandomBullshitModItems.GHOUL_SPAWN_EGG.get());
+ tabData.accept(NimsRandomBullshitModItems.TUX_SPAWN_EGG.get());
}
}
}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/network/LabelCopyMachineGUIButtonMessage.java b/src/main/java/net/mcreator/nimsrandombullshit/network/LabelCopyMachineGUIButtonMessage.java
new file mode 100644
index 0000000..eaf0f46
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/network/LabelCopyMachineGUIButtonMessage.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.LabelCopyMachineGUIMenu;
+import net.mcreator.nimsrandombullshit.procedures.LabelCopyMachineCopyButtonPressedProcedure;
+import net.mcreator.nimsrandombullshit.NimsRandomBullshitMod;
+
+import java.util.function.Supplier;
+import java.util.HashMap;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
+public class LabelCopyMachineGUIButtonMessage {
+ private final int buttonID, x, y, z;
+
+ public LabelCopyMachineGUIButtonMessage(FriendlyByteBuf buffer) {
+ this.buttonID = buffer.readInt();
+ this.x = buffer.readInt();
+ this.y = buffer.readInt();
+ this.z = buffer.readInt();
+ }
+
+ public LabelCopyMachineGUIButtonMessage(int buttonID, int x, int y, int z) {
+ this.buttonID = buttonID;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ public static void buffer(LabelCopyMachineGUIButtonMessage message, FriendlyByteBuf buffer) {
+ buffer.writeInt(message.buttonID);
+ buffer.writeInt(message.x);
+ buffer.writeInt(message.y);
+ buffer.writeInt(message.z);
+ }
+
+ public static void handler(LabelCopyMachineGUIButtonMessage 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 = LabelCopyMachineGUIMenu.guistate;
+ // security measure to prevent arbitrary chunk generation
+ if (!world.hasChunkAt(new BlockPos(x, y, z)))
+ return;
+ if (buttonID == 0) {
+
+ LabelCopyMachineCopyButtonPressedProcedure.execute(entity);
+ }
+ }
+
+ @SubscribeEvent
+ public static void registerMessage(FMLCommonSetupEvent event) {
+ NimsRandomBullshitMod.addNetworkMessage(LabelCopyMachineGUIButtonMessage.class, LabelCopyMachineGUIButtonMessage::buffer, LabelCopyMachineGUIButtonMessage::new, LabelCopyMachineGUIButtonMessage::handler);
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineCopyButtonPressedProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineCopyButtonPressedProcedure.java
new file mode 100644
index 0000000..7b61e28
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineCopyButtonPressedProcedure.java
@@ -0,0 +1,84 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.Entity;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModItems;
+
+import java.util.function.Supplier;
+import java.util.Map;
+
+public class LabelCopyMachineCopyButtonPressedProcedure {
+ public static void execute(Entity entity) {
+ if (entity == null)
+ return;
+ if ((entity instanceof Player _plrSlotItem && _plrSlotItem.containerMenu instanceof Supplier _splr && _splr.get() instanceof Map _slt ? ((Slot) _slt.get(0)).getItem() : ItemStack.EMPTY).getItem() == NimsRandomBullshitModItems.SHIPPING_LABEL
+ .get() && new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(1) > 0 && new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(2) > 0) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = (entity instanceof Player _plrSlotItem && _plrSlotItem.containerMenu instanceof Supplier _splr && _splr.get() instanceof Map _slt ? ((Slot) _slt.get(1)).getItem() : ItemStack.EMPTY).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(1) - 1));
+ ((Slot) _slots.get(1)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = (entity instanceof Player _plrSlotItem && _plrSlotItem.containerMenu instanceof Supplier _splr && _splr.get() instanceof Map _slt ? ((Slot) _slt.get(2)).getItem() : ItemStack.EMPTY).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(2) - 1));
+ ((Slot) _slots.get(2)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack _setstack = (entity instanceof Player _plrSlotItem && _plrSlotItem.containerMenu instanceof Supplier _splr && _splr.get() instanceof Map _slt ? ((Slot) _slt.get(0)).getItem() : ItemStack.EMPTY).copy();
+ _setstack.setCount((int) (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(3) + 1));
+ ((Slot) _slots.get(3)).set(_setstack);
+ _player.containerMenu.broadcastChanges();
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot0TooltipConditionProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot0TooltipConditionProcedure.java
new file mode 100644
index 0000000..8873a34
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot0TooltipConditionProcedure.java
@@ -0,0 +1,29 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.Entity;
+
+import java.util.function.Supplier;
+import java.util.Map;
+
+public class LabelCopyMachineGUISlot0TooltipConditionProcedure {
+ public static boolean execute(Entity entity) {
+ if (entity == null)
+ return false;
+ if (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(0) > 0) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot1TooltipConditionProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot1TooltipConditionProcedure.java
new file mode 100644
index 0000000..559f220
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot1TooltipConditionProcedure.java
@@ -0,0 +1,29 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.Entity;
+
+import java.util.function.Supplier;
+import java.util.Map;
+
+public class LabelCopyMachineGUISlot1TooltipConditionProcedure {
+ public static boolean execute(Entity entity) {
+ if (entity == null)
+ return false;
+ if (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(1) > 0) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot2TooltipConditionProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot2TooltipConditionProcedure.java
new file mode 100644
index 0000000..07228b9
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot2TooltipConditionProcedure.java
@@ -0,0 +1,29 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.Entity;
+
+import java.util.function.Supplier;
+import java.util.Map;
+
+public class LabelCopyMachineGUISlot2TooltipConditionProcedure {
+ public static boolean execute(Entity entity) {
+ if (entity == null)
+ return false;
+ if (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(2) > 0) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot3TooltipConditionProcedure.java b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot3TooltipConditionProcedure.java
new file mode 100644
index 0000000..e36fd86
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/procedures/LabelCopyMachineGUISlot3TooltipConditionProcedure.java
@@ -0,0 +1,29 @@
+package net.mcreator.nimsrandombullshit.procedures;
+
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.Entity;
+
+import java.util.function.Supplier;
+import java.util.Map;
+
+public class LabelCopyMachineGUISlot3TooltipConditionProcedure {
+ public static boolean execute(Entity entity) {
+ if (entity == null)
+ return false;
+ if (new Object() {
+ public int getAmount(int sltid) {
+ if (entity instanceof Player _player && _player.containerMenu instanceof Supplier _current && _current.get() instanceof Map _slots) {
+ ItemStack stack = ((Slot) _slots.get(sltid)).getItem();
+ if (stack != null)
+ return stack.getCount();
+ }
+ return 0;
+ }
+ }.getAmount(3) > 0) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/net/mcreator/nimsrandombullshit/world/inventory/LabelCopyMachineGUIMenu.java b/src/main/java/net/mcreator/nimsrandombullshit/world/inventory/LabelCopyMachineGUIMenu.java
new file mode 100644
index 0000000..091e033
--- /dev/null
+++ b/src/main/java/net/mcreator/nimsrandombullshit/world/inventory/LabelCopyMachineGUIMenu.java
@@ -0,0 +1,285 @@
+
+package net.mcreator.nimsrandombullshit.world.inventory;
+
+import net.minecraftforge.items.SlotItemHandler;
+import net.minecraftforge.items.ItemStackHandler;
+import net.minecraftforge.items.IItemHandler;
+import net.minecraftforge.common.capabilities.ForgeCapabilities;
+
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.Slot;
+import net.minecraft.world.inventory.ContainerLevelAccess;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModMenus;
+import net.mcreator.nimsrandombullshit.init.NimsRandomBullshitModItems;
+
+import java.util.function.Supplier;
+import java.util.Map;
+import java.util.HashMap;
+
+public class LabelCopyMachineGUIMenu extends AbstractContainerMenu implements Supplier