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[] 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 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> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public LabelCopyMachineGUIMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(NimsRandomBullshitModMenus.LABEL_COPY_MACHINE_GUI.get(), id); + this.entity = inv.player; + this.world = inv.player.level(); + this.internal = new ItemStackHandler(4); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 21, 51) { + private final int slot = 0; + private int x = LabelCopyMachineGUIMenu.this.x; + private int y = LabelCopyMachineGUIMenu.this.y; + + @Override + public boolean mayPlace(ItemStack stack) { + return NimsRandomBullshitModItems.SHIPPING_LABEL.get() == stack.getItem(); + } + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 57, 24) { + private final int slot = 1; + private int x = LabelCopyMachineGUIMenu.this.x; + private int y = LabelCopyMachineGUIMenu.this.y; + + @Override + public boolean mayPlace(ItemStack stack) { + return Items.PAPER == stack.getItem(); + } + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 97, 24) { + private final int slot = 2; + private int x = LabelCopyMachineGUIMenu.this.x; + private int y = LabelCopyMachineGUIMenu.this.y; + + @Override + public boolean mayPlace(ItemStack stack) { + return Items.INK_SAC == stack.getItem(); + } + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 133, 51) { + private final int slot = 3; + private int x = LabelCopyMachineGUIMenu.this.x; + private int y = LabelCopyMachineGUIMenu.this.y; + + @Override + public boolean mayPlace(ItemStack stack) { + return false; + } + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 11 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 11 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 4) { + if (!this.moveItemStackTo(itemstack1, 4, this.slots.size(), true)) + return ItemStack.EMPTY; + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 4, false)) { + if (index < 4 + 27) { + if (!this.moveItemStackTo(itemstack1, 4 + 27, this.slots.size(), true)) + return ItemStack.EMPTY; + } else { + if (!this.moveItemStackTo(itemstack1, 4, 4 + 27, false)) + return ItemStack.EMPTY; + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) + slot.set(ItemStack.EMPTY); + else + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) + return ItemStack.EMPTY; + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.setByPlayer(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.setByPlayer(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + if (j == 0) + continue; + if (j == 1) + continue; + if (j == 2) + continue; + if (j == 3) + continue; + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + if (i == 0) + continue; + if (i == 1) + continue; + if (i == 2) + continue; + if (i == 3) + continue; + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/resources/assets/nims_random_bullshit/blockstates/label_copy_machine.json b/src/main/resources/assets/nims_random_bullshit/blockstates/label_copy_machine.json new file mode 100644 index 0000000..31b46c3 --- /dev/null +++ b/src/main/resources/assets/nims_random_bullshit/blockstates/label_copy_machine.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "nims_random_bullshit:block/label_copy_machine" + }, + "facing=east": { + "model": "nims_random_bullshit:block/label_copy_machine", + "y": 90 + }, + "facing=south": { + "model": "nims_random_bullshit:block/label_copy_machine", + "y": 180 + }, + "facing=west": { + "model": "nims_random_bullshit:block/label_copy_machine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nims_random_bullshit/lang/en_us.json b/src/main/resources/assets/nims_random_bullshit/lang/en_us.json index 9363600..4f933d2 100644 --- a/src/main/resources/assets/nims_random_bullshit/lang/en_us.json +++ b/src/main/resources/assets/nims_random_bullshit/lang/en_us.json @@ -1,49 +1,58 @@ { - "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:" } \ No newline at end of file diff --git a/src/main/resources/assets/nims_random_bullshit/models/block/label_copy_machine.json b/src/main/resources/assets/nims_random_bullshit/models/block/label_copy_machine.json new file mode 100644 index 0000000..8400527 --- /dev/null +++ b/src/main/resources/assets/nims_random_bullshit/models/block/label_copy_machine.json @@ -0,0 +1,11 @@ +{ + "parent": "nims_random_bullshit:custom/label_copy_machine", + "textures": { + "all": "nims_random_bullshit:block/label_copy_machine_buttons", + "particle": "nims_random_bullshit:block/label_copy_machine_buttons", + "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" + }, + "render_type": "solid" +} \ No newline at end of file diff --git a/src/main/resources/assets/nims_random_bullshit/textures/block/label_copy_machine_buttons.png b/src/main/resources/assets/nims_random_bullshit/textures/block/label_copy_machine_buttons.png new file mode 100644 index 0000000..32f07fb Binary files /dev/null and b/src/main/resources/assets/nims_random_bullshit/textures/block/label_copy_machine_buttons.png differ diff --git a/src/main/resources/assets/nims_random_bullshit/textures/block/label_copy_machine_line.png b/src/main/resources/assets/nims_random_bullshit/textures/block/label_copy_machine_line.png new file mode 100644 index 0000000..332a571 Binary files /dev/null and b/src/main/resources/assets/nims_random_bullshit/textures/block/label_copy_machine_line.png differ diff --git a/src/main/resources/assets/nims_random_bullshit/textures/entities/tux.png b/src/main/resources/assets/nims_random_bullshit/textures/entities/tux.png new file mode 100644 index 0000000..ef1cc35 Binary files /dev/null and b/src/main/resources/assets/nims_random_bullshit/textures/entities/tux.png differ diff --git a/src/main/resources/assets/nims_random_bullshit/textures/screens/copy_icon.png b/src/main/resources/assets/nims_random_bullshit/textures/screens/copy_icon.png new file mode 100644 index 0000000..ee4c799 Binary files /dev/null and b/src/main/resources/assets/nims_random_bullshit/textures/screens/copy_icon.png differ diff --git a/src/main/resources/assets/nims_random_bullshit/textures/screens/label_copy_machine_gui.png b/src/main/resources/assets/nims_random_bullshit/textures/screens/label_copy_machine_gui.png new file mode 100644 index 0000000..192c71c Binary files /dev/null and b/src/main/resources/assets/nims_random_bullshit/textures/screens/label_copy_machine_gui.png differ diff --git a/src/main/resources/assets/nims_random_bullshit/textures/screens/plus_sign.png b/src/main/resources/assets/nims_random_bullshit/textures/screens/plus_sign.png new file mode 100644 index 0000000..0163349 Binary files /dev/null and b/src/main/resources/assets/nims_random_bullshit/textures/screens/plus_sign.png differ diff --git a/src/main/resources/assets/nims_random_bullshit/textures/screens/right_arrow_sign.png b/src/main/resources/assets/nims_random_bullshit/textures/screens/right_arrow_sign.png new file mode 100644 index 0000000..8a527be Binary files /dev/null and b/src/main/resources/assets/nims_random_bullshit/textures/screens/right_arrow_sign.png differ diff --git a/src/main/resources/data/nims_random_bullshit/loot_tables/blocks/label_copy_machine.json b/src/main/resources/data/nims_random_bullshit/loot_tables/blocks/label_copy_machine.json new file mode 100644 index 0000000..b48f63a --- /dev/null +++ b/src/main/resources/data/nims_random_bullshit/loot_tables/blocks/label_copy_machine.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "random_sequence": "nims_random_bullshit:blocks/label_copy_machine", + "pools": [ + { + "rolls": 1.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "nims_random_bullshit:label_copy_machine" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/nims_random_bullshit/recipes/label_copy_machine_recipe.json b/src/main/resources/data/nims_random_bullshit/recipes/label_copy_machine_recipe.json new file mode 100644 index 0000000..efa8335 --- /dev/null +++ b/src/main/resources/data/nims_random_bullshit/recipes/label_copy_machine_recipe.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aab", + "bbb" + ], + "key": { + "a": { + "item": "minecraft:dispenser" + }, + "b": { + "item": "minecraft:iron_block" + } + }, + "result": { + "item": "nims_random_bullshit:label_copy_machine", + "count": 1 + } +} \ No newline at end of file