From bf5f837c4527ebf497fe0f9dad09ff5eaef60a44 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Fri, 14 Mar 2025 16:14:10 +0100 Subject: [PATCH] feat: Implemented milk --- src/main/java/cz/jzitnik/game/Game.java | 3 +-- .../java/cz/jzitnik/game/blocks/Furnace.java | 1 - .../jzitnik/game/generation/Generation.java | 3 +++ .../game/mobs/services/cow/CowData.java | 22 ++++++++++++++++++- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/cz/jzitnik/game/Game.java b/src/main/java/cz/jzitnik/game/Game.java index f83b90b..ca2232d 100644 --- a/src/main/java/cz/jzitnik/game/Game.java +++ b/src/main/java/cz/jzitnik/game/Game.java @@ -374,9 +374,8 @@ public class Game implements Serializable { if (gameStates.dependencies.pickupHandlerProvider.get(inventory.getItemInHand().get().getId()).handle(this, x, y)) { screenRenderer.render(this); + return; } - - return; } if (!blocks.stream().allMatch(block -> block.getBlockId().equals("air") || block.isFlowing() diff --git a/src/main/java/cz/jzitnik/game/blocks/Furnace.java b/src/main/java/cz/jzitnik/game/blocks/Furnace.java index 966dbb5..627673d 100644 --- a/src/main/java/cz/jzitnik/game/blocks/Furnace.java +++ b/src/main/java/cz/jzitnik/game/blocks/Furnace.java @@ -6,7 +6,6 @@ import cz.jzitnik.game.Game; import cz.jzitnik.game.entities.items.InventoryItem; import cz.jzitnik.game.entities.items.Item; import cz.jzitnik.game.handlers.rightclick.RightClickHandler; -import cz.jzitnik.game.smelting.Smelting; import cz.jzitnik.game.ui.InventoryClickHandler; import cz.jzitnik.game.ui.Window; import cz.jzitnik.tui.ScreenRenderer; diff --git a/src/main/java/cz/jzitnik/game/generation/Generation.java b/src/main/java/cz/jzitnik/game/generation/Generation.java index f9f48d6..38f399e 100644 --- a/src/main/java/cz/jzitnik/game/generation/Generation.java +++ b/src/main/java/cz/jzitnik/game/generation/Generation.java @@ -1,6 +1,7 @@ package cz.jzitnik.game.generation; import cz.jzitnik.game.entities.Block; +import cz.jzitnik.game.entities.items.ItemBlockSupplier; import cz.jzitnik.game.Game; import cz.jzitnik.game.SpriteLoader; import cz.jzitnik.game.sprites.Steve; @@ -32,6 +33,8 @@ public class Generation { // Spawn player at a valid starting point world[terrainHeight[256] - 1][256].add(steveBlock2); world[terrainHeight[256] - 2][256].add(steveBlock); + + game.getInventory().addItem(ItemBlockSupplier.getItem("bucket")); } private static void initializeWorld(List[][] world) { diff --git a/src/main/java/cz/jzitnik/game/mobs/services/cow/CowData.java b/src/main/java/cz/jzitnik/game/mobs/services/cow/CowData.java index 4a41d8b..0516381 100644 --- a/src/main/java/cz/jzitnik/game/mobs/services/cow/CowData.java +++ b/src/main/java/cz/jzitnik/game/mobs/services/cow/CowData.java @@ -5,10 +5,30 @@ import lombok.Setter; import java.io.Serializable; +import cz.jzitnik.game.Game; +import cz.jzitnik.game.annotations.RightClickLogic; +import cz.jzitnik.game.entities.items.ItemBlockSupplier; +import cz.jzitnik.game.handlers.rightclick.RightClickHandler; +import cz.jzitnik.tui.ScreenRenderer; + @Getter @Setter -public class CowData implements Serializable { +@RightClickLogic +public class CowData implements Serializable, RightClickHandler { private int lastDirection = 1; // 1 = right, -1 = left private int movementCooldown = 0; private int jumpAttempts = 0; + + @Override + public void onBlockRightClick(int x, int y, Game game, ScreenRenderer screenRenderer) { + var inv = game.getInventory(); + var inHand = inv.getItemInHand(); + + if (inHand.isEmpty() || !inHand.get().getId().equals("bucket")) { + return; + } + + inv.decreaseItemInHand(); + inv.addItem(ItemBlockSupplier.getItem("milk_bucket")); + } }