diff --git a/game/client/src/main/java/net/minecraft/client/Minecraft.java b/game/client/src/main/java/net/minecraft/client/Minecraft.java
index 42c494a26..8c0e20f37 100644
--- a/game/client/src/main/java/net/minecraft/client/Minecraft.java
+++ b/game/client/src/main/java/net/minecraft/client/Minecraft.java
@@ -245,7 +245,7 @@ public class Minecraft
     public GuiElementToastsHud guiToasts;
     public HudIngame hudIngame;
     public boolean skipRenderWorld;
-    public HitResult objectMouseOver;
+    public @Nullable HitResult objectMouseOver;
     public final @NotNull GameSettings gameSettings;
     public SoundEngine sndManager;
     public final @NotNull SubtitleTracker subtitleTracker = new SubtitleTracker();
diff --git a/game/client/src/main/java/net/minecraft/client/gui/hud/component/HudComponentHealthBar.java b/game/client/src/main/java/net/minecraft/client/gui/hud/component/HudComponentHealthBar.java
index 20f798e1b..4551275df 100644
--- a/game/client/src/main/java/net/minecraft/client/gui/hud/component/HudComponentHealthBar.java
+++ b/game/client/src/main/java/net/minecraft/client/gui/hud/component/HudComponentHealthBar.java
@@ -5,9 +5,14 @@ import net.minecraft.client.gui.Gui;
 import net.minecraft.client.gui.hud.HudIngame;
 import net.minecraft.client.gui.hud.component.layout.Layout;
 import net.minecraft.client.render.texture.stitcher.TextureRegistry;
+import net.minecraft.core.block.Block;
+import net.minecraft.core.block.BlockLogicEdible;
+import net.minecraft.core.item.Item;
 import net.minecraft.core.item.ItemBucketIceCream;
 import net.minecraft.core.item.ItemFood;
+import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.player.gamemode.Gamemode;
+import net.minecraft.core.util.phys.HitResult;
 import org.lwjgl.opengl.GL11;
 
 import java.util.Random;
@@ -81,31 +86,31 @@ public class HudComponentHealthBar
                 // Half heart icon
                 hud.drawGuiIcon(xHeart, yHeart, 9, 9, TextureRegistry.getTexture("minecraft:gui/hud/heart/" + (isHardcore ? "hardcore_" : "") + "half"));
             }
-            if (mc.thePlayer.inventory.getCurrentItem() != null && (mc.thePlayer.inventory.getCurrentItem().getItem() instanceof ItemFood || mc.thePlayer.inventory.getCurrentItem().getItem() instanceof ItemBucketIceCream) && mc.gameSettings.foodHealthRegenOverlay.value)
-            {
-                int healing;
-                if (mc.thePlayer.inventory.getCurrentItem().getItem() instanceof ItemFood)
-                {
-                    healing = ((ItemFood) mc.thePlayer.inventory.getCurrentItem().getItem()).getHealAmount();
-                }
-                else
-                {
-                    healing = ((ItemBucketIceCream) mc.thePlayer.inventory.getCurrentItem().getItem()).getHealAmount();
-                }
 
-                if (i * 2 + 1 >= health)
-                {
-                    if (i * 2 + 1 == health)
-                    {
-                        hud.drawGuiIcon(xHeart, yHeart, 9, 9, TextureRegistry.getTexture("minecraft:gui/hud/heart/" + (isHardcore ? "hardcore_" : "") + "preview_half_right"));
+            if (mc.gameSettings.foodHealthRegenOverlay.value) {
+                int healing = 0;
+                ItemStack held = mc.thePlayer.getHeldItem();
+                if (held != null) {
+                    Item heldItem = held.getItem();
+                    if (heldItem instanceof ItemFood) {
+                        healing = ((ItemFood) heldItem).getHealAmount();
                     }
-                    else if (i * 2 + 1 < health + healing)
-                    {
-                        hud.drawGuiIcon(xHeart, yHeart, 9, 9, TextureRegistry.getTexture("minecraft:gui/hud/heart/" + (isHardcore ? "hardcore_" : "") + "preview_full"));
+                }
+                if (mc.objectMouseOver != null && mc.objectMouseOver.hitType == HitResult.HitType.TILE) {
+                    Block<?> b = mc.currentWorld.getBlock(mc.objectMouseOver.x, mc.objectMouseOver.y, mc.objectMouseOver.z);
+                    if (Block.hasLogicClass(b, BlockLogicEdible.class)) {
+                        healing = ((BlockLogicEdible)b.getLogic()).getHealAmount(mc.currentWorld, mc.objectMouseOver.x, mc.objectMouseOver.y, mc.objectMouseOver.z);
                     }
-                    else if (i * 2 + 1 == health + healing)
-                    {
-                        hud.drawGuiIcon(xHeart, yHeart, 9, 9, TextureRegistry.getTexture("minecraft:gui/hud/heart/" + (isHardcore ? "hardcore_" : "") + "preview_half"));
+                }
+                if (healing > 0) {
+                    if (i * 2 + 1 >= health) {
+                        if (i * 2 + 1 == health) {
+                            hud.drawGuiIcon(xHeart, yHeart, 9, 9, TextureRegistry.getTexture("minecraft:gui/hud/heart/" + (isHardcore ? "hardcore_" : "") + "preview_half_right"));
+                        } else if (i * 2 + 1 < health + healing) {
+                            hud.drawGuiIcon(xHeart, yHeart, 9, 9, TextureRegistry.getTexture("minecraft:gui/hud/heart/" + (isHardcore ? "hardcore_" : "") + "preview_full"));
+                        } else if (i * 2 + 1 == health + healing) {
+                            hud.drawGuiIcon(xHeart, yHeart, 9, 9, TextureRegistry.getTexture("minecraft:gui/hud/heart/" + (isHardcore ? "hardcore_" : "") + "preview_half"));
+                        }
                     }
                 }
             }
diff --git a/game/client/src/main/java/net/minecraft/client/render/entity/MobRendererHuman.java b/game/client/src/main/java/net/minecraft/client/render/entity/MobRendererHuman.java
index ed0757df0..a4abf18bf 100644
--- a/game/client/src/main/java/net/minecraft/client/render/entity/MobRendererHuman.java
+++ b/game/client/src/main/java/net/minecraft/client/render/entity/MobRendererHuman.java
@@ -42,7 +42,7 @@ public class MobRendererHuman extends MobRendererBiped<MobHuman>
     @Override
     protected @Nullable StaticEntityModel getActiveModel(@NotNull final MobHuman entity) {
         final MobRendererPlayer.Specials specials = MobRendererPlayer.Specials.getSpecialsForMob(entity);
-        if (specials != null) return getModel(specials.modelReference);
+        if (specials != null) return getModel(specials.mainModelReference);
         return entity.slimModel ? getModel("main.slim") : getModel("main");
     }
 
diff --git a/game/client/src/main/java/net/minecraft/client/render/entity/MobRendererPlayer.java b/game/client/src/main/java/net/minecraft/client/render/entity/MobRendererPlayer.java
index 882c08654..3a85d5ad7 100644
--- a/game/client/src/main/java/net/minecraft/client/render/entity/MobRendererPlayer.java
+++ b/game/client/src/main/java/net/minecraft/client/render/entity/MobRendererPlayer.java
@@ -34,6 +34,8 @@ import static org.lwjgl.opengl.GL11.GL_LIGHTING;
 
 public class MobRendererPlayer extends MobRendererBipedArmored<Player>
 {
+
+
     private BlocksContainer container = null;
 
     public MobRendererPlayer()
@@ -42,11 +44,12 @@ public class MobRendererPlayer extends MobRendererBipedArmored<Player>
     }
 
     protected @NotNull StaticEntityModel getActiveModel(final @NotNull Player player, final boolean onlyArms) {
+        final Specials specials = Specials.getSpecialsForPlayer(player);
         if (onlyArms) {
+            if (specials != null && specials.armsModelReference != null) return getModel(specials.armsModelReference);
             return player.slimModel ? getModel("arms.slim") : getModel("arms");
         } else {
-            final Specials specials = Specials.getSpecialsForPlayer(player);
-            if (specials != null) return getModel(specials.modelReference);
+            if (specials != null) return getModel(specials.mainModelReference);
             return player.slimModel ? getModel("main.slim") : getModel("main");
         }
     }
@@ -220,6 +223,10 @@ public class MobRendererPlayer extends MobRendererBipedArmored<Player>
             GL11.glScalef(0.6f, 0.5f, 0.6f);
         }
 
+        if (Specials.getSpecialsForPlayer(entity) == Specials.MELON || Specials.getSpecialsForPlayer(entity) == Specials.WATERMELON) {
+            GL11.glScalef(0.9f, 0.9f, 0.9f);
+        }
+
 
     }
 
@@ -280,7 +287,7 @@ public class MobRendererPlayer extends MobRendererBipedArmored<Player>
     @Override
     protected @Nullable StaticEntityModel getActiveModel(@NotNull final Player entity) {
         final Specials specials = Specials.getSpecialsForPlayer(entity);
-        if (specials != null) return getModel(specials.modelReference);
+        if (specials != null) return getModel(specials.mainModelReference);
         return entity.slimModel ? getModel("main.slim") : getModel("main");
     }
 
@@ -316,18 +323,23 @@ public class MobRendererPlayer extends MobRendererBipedArmored<Player>
     }
 
     public enum Specials {
-        SHIGN(UUID.fromString("49f6ea39-30b2-4441-b07c-7bfe0beeb61e"), "ShignBright", "main.shign"),
-        COOKIE(UUID.fromString("2c3bfa2c-95b0-48a8-baa2-9f3802190d86"), "DaCookieCakes", "main.cookie"),
-        THA_BOAR(UUID.fromString("f73086f5-d583-408b-a65c-d2dbdd9afaae"), "thaboar", "main.boar");
+        SHIGN(UUID.fromString("49f6ea39-30b2-4441-b07c-7bfe0beeb61e"), "ShignBright", "main.shign", null),
+        COOKIE(UUID.fromString("2c3bfa2c-95b0-48a8-baa2-9f3802190d86"), "DaCookieCakes", "main.cookie", null),
+        THA_BOAR(UUID.fromString("f73086f5-d583-408b-a65c-d2dbdd9afaae"), "thaboar", "main.boar", null),
+        MELON(UUID.fromString("9af822f9-ed7c-4afc-be28-2bd5b8c40b50"), "MelonMojito", "main.melon", "arms.melon"),
+        WATERMELON(UUID.fromString("f9b18145-2be6-4817-8afb-a36e91369d2a"), "WatermelonMojito", "main.melon", "arms.melon");
+
 
         public final @NotNull UUID uuid;
         public final @NotNull String username;
-        public final @NotNull String modelReference;
+        public final @NotNull String mainModelReference;
+        public final @Nullable String armsModelReference;
 
-        Specials(final @NotNull UUID uuid, final @NotNull String username, final @NotNull String modelReference) {
+        Specials(final @NotNull UUID uuid, final @NotNull String username, final @NotNull String mainModelReference, @Nullable String armsModelReference) {
             this.uuid = uuid;
             this.username = username;
-            this.modelReference = modelReference;
+            this.mainModelReference = mainModelReference;
+            this.armsModelReference = armsModelReference;
         }
 
         public static @Nullable Specials getSpecialsForPlayer(final @NotNull Player player) {
@@ -335,6 +347,8 @@ public class MobRendererPlayer extends MobRendererBipedArmored<Player>
             if (player.uuid.equals(SHIGN.uuid) || player.username.equals(SHIGN.username)) return SHIGN;
             if (player.uuid.equals(COOKIE.uuid) || player.username.equals(COOKIE.username)) return COOKIE;
             if (player.uuid.equals(THA_BOAR.uuid) || player.username.equals(THA_BOAR.username)) return THA_BOAR;
+            if (player.uuid.equals(MELON.uuid) || player.username.equals(MELON.username)) return MELON;
+            if (player.uuid.equals(WATERMELON.uuid) || player.username.equals(WATERMELON.username)) return WATERMELON;
             return null;
         }
 
@@ -343,6 +357,8 @@ public class MobRendererPlayer extends MobRendererBipedArmored<Player>
             if (mob.nickname.equals(SHIGN.username)) return SHIGN;
             if (mob.nickname.equals(COOKIE.username)) return COOKIE;
             if (mob.nickname.equals(THA_BOAR.username)) return THA_BOAR;
+            if (mob.nickname.equals(MELON.username)) return MELON;
+            if (mob.nickname.equals(WATERMELON.username)) return WATERMELON;
             return null;
         }
     }
diff --git a/game/client/src/main/resources/assets/minecraft/models/entity/models.json b/game/client/src/main/resources/assets/minecraft/models/entity/models.json
index 95688a92f..40fcbd4b1 100644
--- a/game/client/src/main/resources/assets/minecraft/models/entity/models.json
+++ b/game/client/src/main/resources/assets/minecraft/models/entity/models.json
@@ -96,6 +96,8 @@
             "main.shign":"geometry.player.base.shign",
             "main.cookie":"geometry.player.base.cookie",
             "main.boar":"geometry.player.base.boar",
+            "main.melon":"geometry.player.base.melon",
+            "arms.melon":"geometry.player.base.melon.arms",
             "arms":"geometry.player.base.steve.arms",
             "arms.slim":"geometry.player.base.alex.arms",
             "cape":"geometry.player.cape",
@@ -110,6 +112,7 @@
             "main.shign":"geometry.player.base.shign",
             "main.cookie":"geometry.player.base.cookie",
             "main.boar":"geometry.player.base.boar",
+            "main.melon":"geometry.player.base.melon",
             "arms":"geometry.player.base.steve.arms",
             "arms.slim":"geometry.player.base.alex.arms",
             "cape":"geometry.player.cape"
diff --git a/game/client/src/main/resources/assets/minecraft/models/entity/secret.geo.json b/game/client/src/main/resources/assets/minecraft/models/entity/secret.geo.json
index 1e0264592..77e0cde5c 100644
--- a/game/client/src/main/resources/assets/minecraft/models/entity/secret.geo.json
+++ b/game/client/src/main/resources/assets/minecraft/models/entity/secret.geo.json
@@ -1,5 +1,5 @@
 {
-	"format_version": "1.12.0",
+	"format_version": "1.21.0",
 	"minecraft:geometry": [
 		{
 			"description": {
@@ -94,34 +94,88 @@
 							"origin": [0, 26, -2],
 							"size": [9, 10, 4],
 							"uv": {
-								"north": {"uv": [64, 16], "uv_size": [-9, 10]},
-								"south": {"uv": [64, 30], "uv_size": [-9, 10]},
-								"west": {"uv": [54, 26], "uv_size": [10, 4], "uv_rotation": 270},
-								"up": {"uv": [55, 26], "uv_size": [9, 4], "uv_rotation": 180},
-								"down": {"uv": [55, 30], "uv_size": [9, -4], "uv_rotation": 180}
+								"north": {
+									"uv": [64, 16],
+									"uv_size": [-9, 10]
+								},
+								"south": {
+									"uv": [64, 30],
+									"uv_size": [-9, 10]
+								},
+								"west": {
+									"uv": [54, 26],
+									"uv_size": [10, 4],
+									"uv_rotation": 270
+								},
+								"up": {
+									"uv": [55, 26],
+									"uv_size": [9, 4],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [55, 30],
+									"uv_size": [9, -4],
+									"uv_rotation": 180
+								}
 							}
 						},
 						{
 							"origin": [-9, 26, -2],
 							"size": [9, 10, 4],
 							"uv": {
-								"north": {"uv": [55, 16], "uv_size": [9, 10]},
-								"east": {"uv": [54, 26], "uv_size": [10, 4], "uv_rotation": 90},
-								"south": {"uv": [55, 30], "uv_size": [9, 10]},
-								"up": {"uv": [55, 26], "uv_size": [9, 4], "uv_rotation": 180},
-								"down": {"uv": [55, 30], "uv_size": [9, -4], "uv_rotation": 180}
+								"north": {
+									"uv": [55, 16],
+									"uv_size": [9, 10]
+								},
+								"east": {
+									"uv": [54, 26],
+									"uv_size": [10, 4],
+									"uv_rotation": 90
+								},
+								"south": {
+									"uv": [55, 30],
+									"uv_size": [9, 10]
+								},
+								"up": {
+									"uv": [55, 26],
+									"uv_size": [9, 4],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [55, 30],
+									"uv_size": [9, -4],
+									"uv_rotation": 180
+								}
 							}
 						},
 						{
 							"origin": [-1, 23, -1],
 							"size": [2, 3, 2],
 							"uv": {
-								"north": {"uv": [62, 42], "uv_size": [2, 3]},
-								"east": {"uv": [62, 42], "uv_size": [2, 3]},
-								"south": {"uv": [62, 42], "uv_size": [2, 3]},
-								"west": {"uv": [62, 42], "uv_size": [2, 3]},
-								"up": {"uv": [62, 40], "uv_size": [2, 2]},
-								"down": {"uv": [62, 42], "uv_size": [2, -2]}
+								"north": {
+									"uv": [62, 42],
+									"uv_size": [2, 3]
+								},
+								"east": {
+									"uv": [62, 42],
+									"uv_size": [2, 3]
+								},
+								"south": {
+									"uv": [62, 42],
+									"uv_size": [2, 3]
+								},
+								"west": {
+									"uv": [62, 42],
+									"uv_size": [2, 3]
+								},
+								"up": {
+									"uv": [62, 40],
+									"uv_size": [2, 2]
+								},
+								"down": {
+									"uv": [62, 42],
+									"uv_size": [2, -2]
+								}
 							}
 						}
 					]
@@ -135,7 +189,10 @@
 							"origin": [-12, 33, 0],
 							"size": [8, 8, 0],
 							"uv": {
-								"north": {"uv": [56, 0], "uv_size": [8, 8]}
+								"north": {
+									"uv": [56, 0],
+									"uv_size": [8, 8]
+								}
 							}
 						}
 					]
@@ -205,12 +262,32 @@
 							"pivot": [0, 11.5, 3],
 							"rotation": [-45, 0, 0],
 							"uv": {
-								"north": {"uv": [48, 31], "uv_size": [8, 0]},
-								"east": {"uv": [33, 31], "uv_size": [15, 0]},
-								"south": {"uv": [71, 31], "uv_size": [8, 0]},
-								"west": {"uv": [56, 31], "uv_size": [15, 0]},
-								"up": {"uv": [56, 16], "uv_size": [8, 6], "uv_rotation": 180},
-								"down": {"uv": [56, 22], "uv_size": [8, -6], "uv_rotation": 180}
+								"north": {
+									"uv": [48, 31],
+									"uv_size": [8, 0]
+								},
+								"east": {
+									"uv": [33, 31],
+									"uv_size": [15, 0]
+								},
+								"south": {
+									"uv": [71, 31],
+									"uv_size": [8, 0]
+								},
+								"west": {
+									"uv": [56, 31],
+									"uv_size": [15, 0]
+								},
+								"up": {
+									"uv": [56, 16],
+									"uv_size": [8, 6],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [56, 22],
+									"uv_size": [8, -6],
+									"uv_rotation": 180
+								}
 							}
 						},
 						{
@@ -219,12 +296,32 @@
 							"pivot": [0, 11.5, 3],
 							"rotation": [-22.5, 0, 0],
 							"uv": {
-								"north": {"uv": [48, 31], "uv_size": [8, 0]},
-								"east": {"uv": [33, 31], "uv_size": [15, 0]},
-								"south": {"uv": [71, 31], "uv_size": [8, 0]},
-								"west": {"uv": [56, 31], "uv_size": [15, 0]},
-								"up": {"uv": [56, 22], "uv_size": [8, 6], "uv_rotation": 180},
-								"down": {"uv": [56, 28], "uv_size": [8, -6], "uv_rotation": 180}
+								"north": {
+									"uv": [48, 31],
+									"uv_size": [8, 0]
+								},
+								"east": {
+									"uv": [33, 31],
+									"uv_size": [15, 0]
+								},
+								"south": {
+									"uv": [71, 31],
+									"uv_size": [8, 0]
+								},
+								"west": {
+									"uv": [56, 31],
+									"uv_size": [15, 0]
+								},
+								"up": {
+									"uv": [56, 22],
+									"uv_size": [8, 6],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [56, 28],
+									"uv_size": [8, -6],
+									"uv_rotation": 180
+								}
 							}
 						}
 					]
@@ -296,12 +393,31 @@
 							"origin": [-5, 32, 0],
 							"size": [10, 8, 0],
 							"uv": {
-								"north": {"uv": [27, 0], "uv_size": [10, 8]},
-								"east": {"uv": [27, 0], "uv_size": [0, 8]},
-								"south": {"uv": [56, 31], "uv_size": [8, 10], "uv_rotation": 270},
-								"west": {"uv": [37, 0], "uv_size": [0, 8]},
-								"up": {"uv": [27, 0], "uv_size": [10, 0]},
-								"down": {"uv": [37, 0], "uv_size": [10, 0]}
+								"north": {
+									"uv": [27, 0],
+									"uv_size": [10, 8]
+								},
+								"east": {
+									"uv": [27, 0],
+									"uv_size": [0, 8]
+								},
+								"south": {
+									"uv": [56, 31],
+									"uv_size": [8, 10],
+									"uv_rotation": 270
+								},
+								"west": {
+									"uv": [37, 0],
+									"uv_size": [0, 8]
+								},
+								"up": {
+									"uv": [27, 0],
+									"uv_size": [10, 0]
+								},
+								"down": {
+									"uv": [37, 0],
+									"uv_size": [10, 0]
+								}
 							}
 						}
 					]
@@ -460,12 +576,30 @@
 							"pivot": [11, 30, -7],
 							"rotation": [0, 0, 22.5],
 							"uv": {
-								"north": {"uv": [55, 40], "uv_size": [9, 2]},
-								"east": {"uv": [55, 34], "uv_size": [9, 2]},
-								"south": {"uv": [55, 36], "uv_size": [9, 2]},
-								"west": {"uv": [55, 38], "uv_size": [9, 2]},
-								"up": {"uv": [55, 18], "uv_size": [9, 14]},
-								"down": {"uv": [55, 47], "uv_size": [9, -15]}
+								"north": {
+									"uv": [55, 40],
+									"uv_size": [9, 2]
+								},
+								"east": {
+									"uv": [55, 34],
+									"uv_size": [9, 2]
+								},
+								"south": {
+									"uv": [55, 36],
+									"uv_size": [9, 2]
+								},
+								"west": {
+									"uv": [55, 38],
+									"uv_size": [9, 2]
+								},
+								"up": {
+									"uv": [55, 18],
+									"uv_size": [9, 14]
+								},
+								"down": {
+									"uv": [55, 47],
+									"uv_size": [9, -15]
+								}
 							}
 						},
 						{
@@ -474,12 +608,30 @@
 							"pivot": [6, 30, -7],
 							"rotation": [0, 0, -22.5],
 							"uv": {
-								"north": {"uv": [55, 40], "uv_size": [9, 2]},
-								"east": {"uv": [55, 42], "uv_size": [9, 2]},
-								"south": {"uv": [55, 38], "uv_size": [9, 2]},
-								"west": {"uv": [55, 36], "uv_size": [9, 2]},
-								"up": {"uv": [55, 18], "uv_size": [9, 14]},
-								"down": {"uv": [55, 47], "uv_size": [9, -15]}
+								"north": {
+									"uv": [55, 40],
+									"uv_size": [9, 2]
+								},
+								"east": {
+									"uv": [55, 42],
+									"uv_size": [9, 2]
+								},
+								"south": {
+									"uv": [55, 38],
+									"uv_size": [9, 2]
+								},
+								"west": {
+									"uv": [55, 36],
+									"uv_size": [9, 2]
+								},
+								"up": {
+									"uv": [55, 18],
+									"uv_size": [9, 14]
+								},
+								"down": {
+									"uv": [55, 47],
+									"uv_size": [9, -15]
+								}
 							}
 						},
 						{
@@ -488,24 +640,60 @@
 							"pivot": [9, 30, -7],
 							"rotation": [-22.5, 0, 0],
 							"uv": {
-								"north": {"uv": [55, 18], "uv_size": [9, 11]},
-								"east": {"uv": [55, 18], "uv_size": [9, 11]},
-								"south": {"uv": [55, 18], "uv_size": [9, 11]},
-								"west": {"uv": [55, 18], "uv_size": [9, 11]},
-								"up": {"uv": [55, 18], "uv_size": [9, 14]},
-								"down": {"uv": [55, 47], "uv_size": [9, -15]}
+								"north": {
+									"uv": [55, 18],
+									"uv_size": [9, 11]
+								},
+								"east": {
+									"uv": [55, 18],
+									"uv_size": [9, 11]
+								},
+								"south": {
+									"uv": [55, 18],
+									"uv_size": [9, 11]
+								},
+								"west": {
+									"uv": [55, 18],
+									"uv_size": [9, 11]
+								},
+								"up": {
+									"uv": [55, 18],
+									"uv_size": [9, 14]
+								},
+								"down": {
+									"uv": [55, 47],
+									"uv_size": [9, -15]
+								}
 							}
 						},
 						{
 							"origin": [-4.75, 32.5, -5],
 							"size": [9.25, 5.5, 11],
 							"uv": {
-								"north": {"uv": [55, 18], "uv_size": [9, 5]},
-								"east": {"uv": [55, 18], "uv_size": [9, 5]},
-								"south": {"uv": [55, 18], "uv_size": [9, 5]},
-								"west": {"uv": [55, 18], "uv_size": [9, 5]},
-								"up": {"uv": [55, 18], "uv_size": [9, 14]},
-								"down": {"uv": [55, 43], "uv_size": [9, -11]}
+								"north": {
+									"uv": [55, 18],
+									"uv_size": [9, 5]
+								},
+								"east": {
+									"uv": [55, 18],
+									"uv_size": [9, 5]
+								},
+								"south": {
+									"uv": [55, 18],
+									"uv_size": [9, 5]
+								},
+								"west": {
+									"uv": [55, 18],
+									"uv_size": [9, 5]
+								},
+								"up": {
+									"uv": [55, 18],
+									"uv_size": [9, 14]
+								},
+								"down": {
+									"uv": [55, 43],
+									"uv_size": [9, -11]
+								}
 							}
 						}
 					]
@@ -567,6 +755,1033 @@
 					"scale_pivot": [0, 0, 0]
 				}
 			}
+		},
+		{
+			"description": {
+				"identifier": "geometry.player.base.melon",
+				"texture_width": 64,
+				"texture_height": 64,
+				"visible_bounds_width": 6,
+				"visible_bounds_height": 4,
+				"visible_bounds_offset": [0, 1, 0]
+			},
+			"bones": [
+				{
+					"name": "waist",
+					"pivot": [0, 12, 0]
+				},
+				{
+					"name": "body",
+					"parent": "waist",
+					"pivot": [0, 24, 0]
+				},
+				{
+					"name": "torso",
+					"parent": "body",
+					"pivot": [0, 24, 0],
+					"cubes": [
+						{
+							"origin": [2, 12, -2],
+							"size": [2, 2, 4],
+							"uv": {
+								"north": {
+									"uv": [26, 30],
+									"uv_size": [2, 2]
+								},
+								"south": {
+									"uv": [32, 30],
+									"uv_size": [2, 2]
+								},
+								"west": {
+									"uv": [28, 30],
+									"uv_size": [4, 2]
+								},
+								"up": {
+									"uv": [26, 21],
+									"uv_size": [2, 4]
+								},
+								"down": {
+									"uv": [34, 20],
+									"uv_size": [2, -4]
+								}
+							}
+						},
+						{
+							"origin": [0, 12, -2],
+							"size": [2, 3, 4],
+							"uv": {
+								"north": {
+									"uv": [24, 29],
+									"uv_size": [2, 3]
+								},
+								"south": {
+									"uv": [34, 29],
+									"uv_size": [2, 3]
+								},
+								"west": {
+									"uv": [28, 29],
+									"uv_size": [4, 3]
+								},
+								"up": {
+									"uv": [24, 21],
+									"uv_size": [2, 4]
+								},
+								"down": {
+									"uv": [32, 20],
+									"uv_size": [2, -4]
+								}
+							}
+						},
+						{
+							"origin": [0, 15, -2],
+							"size": [1, 1, 4],
+							"uv": {
+								"north": {
+									"uv": [24, 28],
+									"uv_size": [1, 1]
+								},
+								"east": {
+									"uv": [16, 28],
+									"uv_size": [4, 1]
+								},
+								"south": {
+									"uv": [35, 28],
+									"uv_size": [1, 1]
+								},
+								"west": {
+									"uv": [28, 28],
+									"uv_size": [4, 1]
+								},
+								"up": {
+									"uv": [24, 21],
+									"uv_size": [1, 4]
+								},
+								"down": {
+									"uv": [32, 20],
+									"uv_size": [1, -4]
+								}
+							}
+						},
+						{
+							"origin": [0, 20, -2],
+							"size": [1, 1, 4],
+							"uv": {
+								"north": {
+									"uv": [24, 23],
+									"uv_size": [1, 1]
+								},
+								"east": {
+									"uv": [16, 23],
+									"uv_size": [4, 1]
+								},
+								"south": {
+									"uv": [35, 23],
+									"uv_size": [1, 1]
+								},
+								"west": {
+									"uv": [28, 23],
+									"uv_size": [4, 1]
+								},
+								"up": {
+									"uv": [24, 16],
+									"uv_size": [1, 4]
+								},
+								"down": {
+									"uv": [32, 25],
+									"uv_size": [1, -4]
+								}
+							}
+						},
+						{
+							"origin": [-4, 12, -2],
+							"size": [4, 12, 4],
+							"uv": {
+								"north": {
+									"uv": [20, 20],
+									"uv_size": [4, 12]
+								},
+								"east": {
+									"uv": [16, 20],
+									"uv_size": [4, 12]
+								},
+								"south": {
+									"uv": [36, 20],
+									"uv_size": [4, 12]
+								},
+								"west": {
+									"uv": [28, 20],
+									"uv_size": [4, 12]
+								},
+								"up": {
+									"uv": [20, 16],
+									"uv_size": [4, 4]
+								},
+								"down": {
+									"uv": [28, 20],
+									"uv_size": [4, -4]
+								}
+							}
+						},
+						{
+							"origin": [0, 21, -2],
+							"size": [2, 1, 4],
+							"uv": {
+								"north": {
+									"uv": [24, 22],
+									"uv_size": [2, 1]
+								},
+								"east": {
+									"uv": [16, 22],
+									"uv_size": [4, 2]
+								},
+								"south": {
+									"uv": [34, 22],
+									"uv_size": [2, 1]
+								},
+								"west": {
+									"uv": [28, 23],
+									"uv_size": [4, 1]
+								},
+								"down": {
+									"uv": [30, 28],
+									"uv_size": [2, -4]
+								}
+							}
+						},
+						{
+							"origin": [0, 22, -2],
+							"size": [4, 2, 4],
+							"uv": {
+								"north": {
+									"uv": [24, 20],
+									"uv_size": [4, 2]
+								},
+								"east": {
+									"uv": [16, 20],
+									"uv_size": [4, 2]
+								},
+								"south": {
+									"uv": [32, 20],
+									"uv_size": [4, 2]
+								},
+								"west": {
+									"uv": [28, 20],
+									"uv_size": [4, 2]
+								},
+								"up": {
+									"uv": [24, 16],
+									"uv_size": [4, 4]
+								},
+								"down": {
+									"uv": [28, 26],
+									"uv_size": [4, -4]
+								}
+							}
+						}
+					]
+				},
+				{
+					"name": "jacket",
+					"parent": "torso",
+					"pivot": [0, 18, 0],
+					"cubes": [
+						{"origin": [-4, 12, -2], "size": [8, 12, 4], "inflate": 0.25, "uv": [16, 32]}
+					]
+				},
+				{
+					"name": "rightArm",
+					"parent": "torso",
+					"pivot": [-5, 22, 0],
+					"cubes": [
+						{"origin": [-8, 12, -2], "size": [4, 12, 4], "uv": [40, 16]}
+					]
+				},
+				{
+					"name": "rightSleeve",
+					"parent": "rightArm",
+					"pivot": [-6, 18, 0],
+					"cubes": [
+						{"origin": [-8, 12, -2], "size": [4, 12, 4], "inflate": 0.25, "uv": [40, 32]}
+					]
+				},
+				{
+					"name": "rightItem",
+					"parent": "rightArm",
+					"pivot": [-6, 12, -2],
+					"rotation": [90, 0, 0]
+				},
+				{
+					"name": "leftArm",
+					"parent": "torso",
+					"pivot": [5, 22, 0]
+				},
+				{
+					"name": "leftSleeve",
+					"parent": "leftArm",
+					"pivot": [6, 18, 0],
+					"cubes": [
+						{"origin": [4, 12, -2], "size": [4, 12, 4], "inflate": 0.25, "uv": [48, 48]}
+					]
+				},
+				{
+					"name": "leftItem",
+					"parent": "leftArm",
+					"pivot": [6, 12, -1],
+					"rotation": [-90, 180, 0]
+				},
+				{
+					"name": "leftArm2",
+					"parent": "leftArm",
+					"pivot": [0, 0, 0],
+					"cubes": [
+						{
+							"origin": [5, 11.43467, -5.02093],
+							"size": [2, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"west": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"down": {
+									"uv": [62, 30],
+									"uv_size": [2, -2]
+								}
+							}
+						},
+						{
+							"origin": [5, 12.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {
+									"uv": [60, 31],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [59, 32],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"up": {
+									"uv": [61, 28],
+									"uv_size": [3, 2],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [62, 31],
+									"uv_size": [2, -3]
+								}
+							}
+						},
+						{
+							"origin": [6, 13.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {
+									"uv": [56, 35],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [56, 36],
+									"uv_size": [3, -1]
+								},
+								"west": {
+									"uv": [62, 28],
+									"uv_size": [2, 1],
+									"uv_rotation": 180
+								},
+								"up": {
+									"uv": [61, 28],
+									"uv_size": [3, 2],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [60, 30],
+									"uv_size": [3, -2]
+								}
+							}
+						},
+						{
+							"origin": [7, 14.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {
+									"uv": [57, 34],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [57, 34],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"up": {
+									"uv": [62, 28],
+									"uv_size": [2, 3],
+									"uv_rotation": 270
+								},
+								"down": {
+									"uv": [60, 30],
+									"uv_size": [3, -2]
+								}
+							}
+						},
+						{
+							"origin": [8, 15.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {
+									"uv": [58, 33],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [58, 33],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 28],
+									"uv_size": [2, 1],
+									"uv_rotation": 180
+								},
+								"up": {
+									"uv": [61, 28],
+									"uv_size": [3, 2],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [60, 30],
+									"uv_size": [3, -2]
+								}
+							}
+						},
+						{
+							"origin": [9, 16.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {
+									"uv": [59, 32],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [59, 32],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 29],
+									"uv_size": [2, 1],
+									"uv_rotation": 180
+								},
+								"up": {
+									"uv": [62, 27],
+									"uv_size": [2, 3],
+									"uv_rotation": 90
+								},
+								"down": {
+									"uv": [64, 26],
+									"uv_size": [-2, 3],
+									"uv_rotation": 270
+								}
+							}
+						},
+						{
+							"origin": [10, 17.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {
+									"uv": [60, 31],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [60, 31],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"up": {
+									"uv": [62, 28],
+									"uv_size": [2, 3],
+									"uv_rotation": 270
+								},
+								"down": {
+									"uv": [64, 27],
+									"uv_size": [-2, 3],
+									"uv_rotation": 270
+								}
+							}
+						},
+						{
+							"origin": [11, 18.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {
+									"uv": [61, 30],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [61, 30],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"up": {
+									"uv": [61, 28],
+									"uv_size": [3, 2],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [60, 30],
+									"uv_size": [3, -2]
+								}
+							}
+						},
+						{
+							"origin": [12, 19.43467, -5.02093],
+							"size": [2, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"west": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"up": {
+									"uv": [62, 28],
+									"uv_size": [2, 2]
+								}
+							}
+						}
+					]
+				},
+				{
+					"name": "cape",
+					"parent": "torso",
+					"pivot": [0, 24, 2.5]
+				},
+				{
+					"name": "torso2",
+					"parent": "torso",
+					"pivot": [0, 0, 0],
+					"rotation": [0, 0, -2.5],
+					"cubes": [
+						{
+							"origin": [-8.31668, 7.50251, 18.66017],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [53.5768, -37.0256, 24.351],
+							"uv": {
+								"north": {
+									"uv": [57, 34],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [57, 34],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"up": {
+									"uv": [62, 28],
+									"uv_size": [2, 3],
+									"uv_rotation": 270
+								},
+								"down": {
+									"uv": [60, 30],
+									"uv_size": [3, -2]
+								}
+							}
+						},
+						{
+							"origin": [-6.31668, 9.50251, 18.66017],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [53.5768, -37.0256, 24.351],
+							"uv": {
+								"north": {
+									"uv": [59, 32],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [59, 32],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 29],
+									"uv_size": [2, 1],
+									"uv_rotation": 180
+								},
+								"up": {
+									"uv": [62, 27],
+									"uv_size": [2, 3],
+									"uv_rotation": 90
+								},
+								"down": {
+									"uv": [64, 26],
+									"uv_size": [-2, 3],
+									"uv_rotation": 270
+								}
+							}
+						},
+						{
+							"origin": [-7.31668, 8.50251, 18.66017],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [53.5768, -37.0256, 24.351],
+							"uv": {
+								"north": {
+									"uv": [58, 33],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [58, 33],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 28],
+									"uv_size": [2, 1],
+									"uv_rotation": 180
+								},
+								"up": {
+									"uv": [61, 28],
+									"uv_size": [3, 2],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [60, 30],
+									"uv_size": [3, -2]
+								}
+							}
+						},
+						{
+							"origin": [-5.31668, 10.50251, 18.66017],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [53.5768, -37.0256, 24.351],
+							"uv": {
+								"north": {
+									"uv": [60, 31],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [60, 31],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"up": {
+									"uv": [62, 28],
+									"uv_size": [2, 3],
+									"uv_rotation": 270
+								},
+								"down": {
+									"uv": [64, 27],
+									"uv_size": [-2, 3],
+									"uv_rotation": 270
+								}
+							}
+						},
+						{
+							"origin": [-4.31668, 11.50251, 18.66017],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [53.5768, -37.0256, 24.351],
+							"uv": {
+								"north": {
+									"uv": [61, 30],
+									"uv_size": [3, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [61, 30],
+									"uv_size": [3, 1]
+								},
+								"west": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"up": {
+									"uv": [61, 28],
+									"uv_size": [3, 2],
+									"uv_rotation": 180
+								},
+								"down": {
+									"uv": [60, 30],
+									"uv_size": [3, -2]
+								}
+							}
+						},
+						{
+							"origin": [-3.31668, 12.50251, 18.66017],
+							"size": [2, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [53.5768, -37.0256, 24.351],
+							"uv": {
+								"north": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"east": {
+									"uv": [62, 28],
+									"uv_size": [2, 1]
+								},
+								"south": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"west": {
+									"uv": [62, 29],
+									"uv_size": [2, 1]
+								},
+								"up": {
+									"uv": [62, 28],
+									"uv_size": [2, 2]
+								}
+							}
+						}
+					]
+				},
+				{
+					"name": "head",
+					"parent": "body",
+					"pivot": [0, 24, 0],
+					"cubes": [
+						{"origin": [-4, 24, -4], "size": [8, 8, 8], "uv": [0, 0]}
+					]
+				},
+				{
+					"name": "hat",
+					"parent": "head",
+					"pivot": [0, 28, 0],
+					"cubes": [
+						{
+							"origin": [-7, 33, 10],
+							"size": [8, 8, 7],
+							"inflate": 0.5,
+							"pivot": [-4, 6, 24],
+							"rotation": [125.25863, 5.51101, -174.92614],
+							"uv": {
+								"up": {
+									"uv": [40, 8],
+									"uv_size": [8, -8]
+								}
+							}
+						}
+					]
+				},
+				{
+					"name": "rightLeg",
+					"parent": "body",
+					"pivot": [-1.9, 12, 0],
+					"cubes": [
+						{"origin": [-4, 0, -2], "size": [4, 12, 4], "uv": [0, 16]}
+					]
+				},
+				{
+					"name": "rightPant",
+					"parent": "rightLeg",
+					"pivot": [-2, 6, 0],
+					"cubes": [
+						{"origin": [-4, 0, -2], "size": [4, 12, 4], "inflate": 0.25, "uv": [0, 32]}
+					]
+				},
+				{
+					"name": "leftLeg",
+					"parent": "body",
+					"pivot": [1.9, 12, 0],
+					"cubes": [
+						{"origin": [0, 0, -2], "size": [4, 12, 4], "uv": [16, 48]}
+					]
+				},
+				{
+					"name": "leftPant",
+					"parent": "leftLeg",
+					"pivot": [2, 6, 0],
+					"cubes": [
+						{"origin": [0, 0, -2], "size": [4, 12, 4], "inflate": 0.25, "uv": [0, 48]}
+					]
+				}
+			]
+		},
+		{
+			"description": {
+				"identifier": "geometry.player.base.melon.arms",
+				"texture_width": 64,
+				"texture_height": 64,
+				"visible_bounds_width": 3,
+				"visible_bounds_height": 3,
+				"visible_bounds_offset": [0, 1.5, 0]
+			},
+			"bones": [
+				{
+					"name": "leftArm",
+					"pivot": [5, 22, 0]
+				},
+				{
+					"name": "leftSleeve",
+					"parent": "leftArm",
+					"pivot": [6, 18, 0],
+					"cubes": [
+						{"origin": [4, 12, -2], "size": [4, 12, 4], "inflate": 0.25, "uv": [48, 48]}
+					]
+				},
+				{
+					"name": "leftItem",
+					"parent": "leftArm",
+					"pivot": [6, 12, -1],
+					"rotation": [-90, 180, 0]
+				},
+				{
+					"name": "leftArm2",
+					"parent": "leftArm",
+					"pivot": [6.45405, 17.85029, 0.20994],
+					"rotation": [-176.11419, 49.93505, -177.02424],
+					"cubes": [
+						{
+							"origin": [5, 11.43467, -5.02093],
+							"size": [2, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {"uv": [62, 28], "uv_size": [2, 1]},
+								"east": {"uv": [62, 28], "uv_size": [2, 1]},
+								"south": {"uv": [62, 28], "uv_size": [2, 1]},
+								"west": {"uv": [62, 28], "uv_size": [2, 1]},
+								"down": {"uv": [62, 30], "uv_size": [2, -2]}
+							}
+						},
+						{
+							"origin": [5, 12.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {"uv": [60, 31], "uv_size": [3, 1]},
+								"east": {"uv": [62, 28], "uv_size": [2, 1]},
+								"south": {"uv": [59, 32], "uv_size": [3, 1]},
+								"west": {"uv": [62, 28], "uv_size": [2, 1]},
+								"up": {"uv": [61, 28], "uv_size": [3, 2], "uv_rotation": 180},
+								"down": {"uv": [62, 31], "uv_size": [2, -3]}
+							}
+						},
+						{
+							"origin": [6, 13.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {"uv": [56, 35], "uv_size": [3, 1]},
+								"east": {"uv": [62, 29], "uv_size": [2, 1]},
+								"south": {"uv": [56, 36], "uv_size": [3, -1]},
+								"west": {"uv": [62, 28], "uv_size": [2, 1], "uv_rotation": 180},
+								"up": {"uv": [61, 28], "uv_size": [3, 2], "uv_rotation": 180},
+								"down": {"uv": [60, 30], "uv_size": [3, -2]}
+							}
+						},
+						{
+							"origin": [7, 14.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {"uv": [57, 34], "uv_size": [3, 1]},
+								"east": {"uv": [62, 29], "uv_size": [2, 1]},
+								"south": {"uv": [57, 34], "uv_size": [3, 1]},
+								"west": {"uv": [62, 28], "uv_size": [2, 1]},
+								"up": {"uv": [62, 28], "uv_size": [2, 3], "uv_rotation": 270},
+								"down": {"uv": [60, 30], "uv_size": [3, -2]}
+							}
+						},
+						{
+							"origin": [8, 15.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {"uv": [58, 33], "uv_size": [3, 1]},
+								"east": {"uv": [62, 28], "uv_size": [2, 1]},
+								"south": {"uv": [58, 33], "uv_size": [3, 1]},
+								"west": {"uv": [62, 28], "uv_size": [2, 1], "uv_rotation": 180},
+								"up": {"uv": [61, 28], "uv_size": [3, 2], "uv_rotation": 180},
+								"down": {"uv": [60, 30], "uv_size": [3, -2]}
+							}
+						},
+						{
+							"origin": [9, 16.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {"uv": [59, 32], "uv_size": [3, 1]},
+								"east": {"uv": [62, 29], "uv_size": [2, 1]},
+								"south": {"uv": [59, 32], "uv_size": [3, 1]},
+								"west": {"uv": [62, 29], "uv_size": [2, 1], "uv_rotation": 180},
+								"up": {"uv": [62, 27], "uv_size": [2, 3], "uv_rotation": 90},
+								"down": {"uv": [64, 26], "uv_size": [-2, 3], "uv_rotation": 270}
+							}
+						},
+						{
+							"origin": [10, 17.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {"uv": [60, 31], "uv_size": [3, 1]},
+								"east": {"uv": [62, 28], "uv_size": [2, 1]},
+								"south": {"uv": [60, 31], "uv_size": [3, 1]},
+								"west": {"uv": [62, 29], "uv_size": [2, 1]},
+								"up": {"uv": [62, 28], "uv_size": [2, 3], "uv_rotation": 270},
+								"down": {"uv": [64, 27], "uv_size": [-2, 3], "uv_rotation": 270}
+							}
+						},
+						{
+							"origin": [11, 18.43467, -5.02093],
+							"size": [3, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {"uv": [61, 30], "uv_size": [3, 1]},
+								"east": {"uv": [62, 28], "uv_size": [2, 1]},
+								"south": {"uv": [61, 30], "uv_size": [3, 1]},
+								"west": {"uv": [62, 28], "uv_size": [2, 1]},
+								"up": {"uv": [61, 28], "uv_size": [3, 2], "uv_rotation": 180},
+								"down": {"uv": [60, 30], "uv_size": [3, -2]}
+							}
+						},
+						{
+							"origin": [12, 19.43467, -5.02093],
+							"size": [2, 1, 2],
+							"pivot": [0, 0, 0],
+							"rotation": [147.2356, -30, -125.2644],
+							"uv": {
+								"north": {"uv": [62, 29], "uv_size": [2, 1]},
+								"east": {"uv": [62, 28], "uv_size": [2, 1]},
+								"south": {"uv": [62, 29], "uv_size": [2, 1]},
+								"west": {"uv": [62, 29], "uv_size": [2, 1]},
+								"up": {"uv": [62, 28], "uv_size": [2, 2]}
+							}
+						}
+					]
+				},
+				{
+					"name": "rightArm",
+					"pivot": [-5, 22, 0],
+					"cubes": [
+						{"origin": [-8, 12, -2], "size": [4, 12, 4], "uv": [40, 16]}
+					]
+				},
+				{
+					"name": "rightSleeve",
+					"parent": "rightArm",
+					"pivot": [-6, 18, 0],
+					"cubes": [
+						{"origin": [-8, 12, -2], "size": [4, 12, 4], "inflate": 0.25, "uv": [40, 32]}
+					]
+				},
+				{
+					"name": "rightItem",
+					"parent": "rightArm",
+					"pivot": [-6, 12, -2],
+					"rotation": [90, 0, 0]
+				}
+			]
 		}
 	]
 }
\ No newline at end of file
diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicCake.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicCake.java
index 190a3da83..35b817425 100644
--- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicCake.java
+++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicCake.java
@@ -2,14 +2,16 @@ package net.minecraft.core.block;
 
 import net.minecraft.core.item.Items;
 import net.minecraft.core.util.phys.AABB;
+import net.minecraft.core.world.World;
 import net.minecraft.core.world.WorldSource;
+import org.jetbrains.annotations.NotNull;
 
 public class BlockLogicCake extends BlockLogicEdible
 {
 
 	public BlockLogicCake(Block<?> block)
     {
-        super(block, 6, 3, () -> Items.FOOD_CAKE);
+        super(block, 6, () -> Items.FOOD_CAKE);
     }
 
     @Override
@@ -21,4 +23,9 @@ public class BlockLogicCake extends BlockLogicEdible
         float f2 = 0.5F;
         return AABB.getTemporaryBB(f1, 0.0F, f, 1.0F - f, f2, 1.0F - f);
     }
+
+    @Override
+    public int getHealAmount(@NotNull World world, int x, int y, int z) {
+        return 3;
+    }
 }
diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicEdible.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicEdible.java
index bbea38fa9..7c58044e1 100644
--- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicEdible.java
+++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicEdible.java
@@ -16,13 +16,11 @@ public abstract class BlockLogicEdible extends BlockLogic {
     @NotNull
     private final Supplier<Item> itemSupplier;
     public int maxBites;
-    public int healAmount;
 
-    public BlockLogicEdible(Block<?> block, int maxBites, int healAmount, @NotNull Supplier<Item> dropItemSupplier)
+    public BlockLogicEdible(Block<?> block, int maxBites, @NotNull Supplier<Item> dropItemSupplier)
     {
         super(block, Material.cake);
         this.maxBites = maxBites;
-        this.healAmount = healAmount;
         this.itemSupplier = dropItemSupplier;
     }
 
@@ -53,7 +51,7 @@ public abstract class BlockLogicEdible extends BlockLogic {
     {
         if(entityplayer.getHealth() < entityplayer.getMaxHealth())
         {
-            entityplayer.heal(healAmount);
+            entityplayer.heal(getHealAmount(world, x, y, z));
             int data = world.getBlockMetadata(x, y, z) + 1;
             if(data >= maxBites)
             {
@@ -66,6 +64,8 @@ public abstract class BlockLogicEdible extends BlockLogic {
         }
     }
 
+    public abstract int getHealAmount(@NotNull World world, int x, int y, int z);
+
     @Override
     public boolean onBlockRightClicked(World world, int x, int y, int z, Player player, Side side, double xPlaced, double yPlaced)
     {
diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicFlower.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicFlower.java
index b50711c11..0473c0cf3 100644
--- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicFlower.java
+++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicFlower.java
@@ -106,30 +106,44 @@ public class BlockLogicFlower extends BlockLogic implements IBonemealable {
     @Override
     public boolean onBonemealUsed(ItemStack itemstack, @Nullable Player player, World world, int blockX, int blockY, int blockZ, Side side, double xPlaced, double yPlaced) {
         Random rand = world.rand;
-        if (!world.isClientSide && canBeBonemealed) {
-            if (player == null || player.getGamemode().consumeBlocks()) {
-                itemstack.stackSize--;
+        if (!world.isClientSide && canBeBonemealed && itemstack.consumeItem(player)) {
+            {
+                if (Block.hasLogicClass(world.getBlock(blockX, blockY, blockZ), BlockLogicFlowerStackable.class)) {
+                    int meta = world.getBlockMetadata(blockX, blockY, blockZ);
+                    if (BlockLogicFlowerStackable.getStackCount(meta) < BlockLogicFlowerStackable.MAX_STACK_COUNT) {
+                        world.setBlockMetadataWithNotify(blockX, blockY, blockZ, BlockLogicFlowerStackable.setStackCount(meta, BlockLogicFlowerStackable.getStackCount(meta) + 1));
+                    }
+                }
+                System.out.printf("%s, %s, %s\n", blockX, blockY, blockZ);
             }
+
             label0:
-            for (int j1 = 0; j1 < 128; j1++) {
-                int k1 = blockX;
-                int l1 = blockY;
-                int i2 = blockZ;
-                for (int j2 = 0; j2 < j1 / 16; j2++) {
-                    k1 += rand.nextInt(3) - 1;
-                    l1 += ((rand.nextInt(3) - 1) * rand.nextInt(3)) / 2;
-                    i2 += rand.nextInt(3) - 1;
-                    int id1 = world.getBlockId(k1, l1 - 1, i2);
-                    if (Blocks.blocksList[id1] == null || !Blocks.blocksList[id1].hasTag(BlockTags.GROWS_FLOWERS)) {
+            for (int i = 0; i < 32; i++) {
+                int x = blockX;
+                int y = blockY;
+                int z = blockZ;
+                for (int j = 0; j < i / 16; j++) {
+                    x += rand.nextInt(5) - 2;
+                    y += ((rand.nextInt(5) - 2) * rand.nextInt(3)) / 2;
+                    z += rand.nextInt(5) - 2;
+                    Block<?> b = world.getBlock(x, y - 1, z);
+                    if (b == null || !b.hasTag(BlockTags.GROWS_FLOWERS)) {
                         continue label0;
                     }
                 }
 
-                if (world.getBlockId(k1, l1, i2) != 0) {
+                Block<?> b = world.getBlock(x, y, z);
+                if (Block.hasLogicClass(b, BlockLogicFlowerStackable.class)) {
+                    int meta = world.getBlockMetadata(x, y, z);
+                    if (BlockLogicFlowerStackable.getStackCount(meta) < BlockLogicFlowerStackable.MAX_STACK_COUNT) {
+                        world.setBlockMetadataWithNotify(x, y, z, BlockLogicFlowerStackable.setStackCount(meta, BlockLogicFlowerStackable.getStackCount(meta) + 1));
+                    }
+                } else if (b != null) {
                     continue;
-                }
-                if (rand.nextFloat() > 0.75) {
-                    world.setBlockWithNotify(k1, l1, i2, block.id());
+                } else {
+                    if (rand.nextFloat() > 0.75) {
+                        world.setBlockWithNotify(x, y, z, block.id());
+                    }
                 }
             }
             return true;
diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicPiePumpkin.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicPiePumpkin.java
index d3907fdbf..23709a9e8 100644
--- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicPiePumpkin.java
+++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicPiePumpkin.java
@@ -2,14 +2,21 @@ package net.minecraft.core.block;
 
 import net.minecraft.core.item.Items;
 import net.minecraft.core.util.phys.AABB;
+import net.minecraft.core.world.World;
 import net.minecraft.core.world.WorldSource;
+import org.jetbrains.annotations.NotNull;
 
 public class BlockLogicPiePumpkin extends BlockLogicEdible
 {
 
     public BlockLogicPiePumpkin(Block<?> block)
     {
-        super(block, 4, 5, () -> Items.FOOD_PUMPKIN_PIE);
+        super(block, 4, () -> Items.FOOD_PUMPKIN_PIE);
+    }
+
+    @Override
+    public int getHealAmount(@NotNull World world, int x, int y, int z) {
+        return 5;
     }
 
     @Override
diff --git a/game/core/src/main/java/net/minecraft/core/entity/player/Player.java b/game/core/src/main/java/net/minecraft/core/entity/player/Player.java
index 8c58eb7e1..5640934cb 100644
--- a/game/core/src/main/java/net/minecraft/core/entity/player/Player.java
+++ b/game/core/src/main/java/net/minecraft/core/entity/player/Player.java
@@ -65,15 +65,16 @@ import net.minecraft.core.world.weather.Weathers;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 public abstract class Player
     extends Mob
     implements IArmorWearing<HumanArmorShape>, IItemHolding
 {
+
+    public static final @NotNull UUID UUID_MELON = UUID.fromString("9af822f9-ed7c-4afc-be28-2bd5b8c40b50");
+    public static final @NotNull UUID UUID_WATERMELON = UUID.fromString("f9b18145-2be6-4817-8afb-a36e91369d2a");
+
     public static final int MOTION_STATE_DEFAULT = 0;
     public static final int MOTION_STATE_CROUCHED = 1;
 
@@ -488,6 +489,13 @@ public abstract class Player
         {
             dropPlayerItemWithRandomChoice(new ItemStack(Items.SIGN, 1), true);
         }
+        else if((UUID_MELON.equals(uuid) || username.equals("MelonMojito")) || (UUID_WATERMELON.equals(uuid) || username.equals("WatermelonMojito")))
+        {
+            ItemStack melon = new ItemStack(Blocks.PUMPKIN, 1, random.nextInt(Short.MAX_VALUE / 2) + 1);
+            melon.setCustomName("Melon");
+            melon.setCustomColor((byte) TextFormatting.LIME.id);
+            dropPlayerItemWithRandomChoice(melon, true);
+        }
 
         if (!world.getGameRuleValue(GameRules.KEEP_INVENTORY))
         {
