diff --git a/src/main/java/cz/jzitnik/game/SpriteLoader.java b/src/main/java/cz/jzitnik/game/SpriteLoader.java index 92cc201..de42cff 100644 --- a/src/main/java/cz/jzitnik/game/SpriteLoader.java +++ b/src/main/java/cz/jzitnik/game/SpriteLoader.java @@ -85,6 +85,7 @@ public class SpriteLoader { ITEM_STICK, ITEM_LEATHER, ITEM_DYE, + ITEM_FLINT, // Block Items ITEM_DIRT, @@ -157,6 +158,7 @@ public class SpriteLoader { DIAMOND_HOE, SHEARS, + FLINT_AND_STEEL, BUCKET, WATER_BUCKET, @@ -266,6 +268,7 @@ public class SpriteLoader { SPRITES_MAP.put(SPRITES.ITEM_STICK, new SimpleSprite("items/stick.ans")); SPRITES_MAP.put(SPRITES.ITEM_LEATHER, new SimpleSprite("items/leather.ans")); SPRITES_MAP.put(SPRITES.ITEM_DYE, new Dye()); + SPRITES_MAP.put(SPRITES.ITEM_FLINT, new SimpleSprite("items/flint.ans")); // Block Items SPRITES_MAP.put(SPRITES.ITEM_DIRT, new SimpleSprite("items/dirt.ans")); @@ -338,6 +341,7 @@ public class SpriteLoader { SPRITES_MAP.put(SPRITES.DIAMOND_HOE, new SimpleSprite("items/diamond_hoe.ans")); SPRITES_MAP.put(SPRITES.SHEARS, new SimpleSprite("items/shears.ans")); + SPRITES_MAP.put(SPRITES.FLINT_AND_STEEL, new SimpleSprite("items/flint_and_steel.ans")); SPRITES_MAP.put(SPRITES.BUCKET, new SimpleSprite("items/bucket.ans")); SPRITES_MAP.put(SPRITES.WATER_BUCKET, new SimpleSprite("items/water_bucket.ans")); diff --git a/src/main/java/cz/jzitnik/game/crafting/recipes/tools/BucketRecipe.java b/src/main/java/cz/jzitnik/game/crafting/recipes/tools/BucketRecipe.java index 396688a..e1ebaff 100644 --- a/src/main/java/cz/jzitnik/game/crafting/recipes/tools/BucketRecipe.java +++ b/src/main/java/cz/jzitnik/game/crafting/recipes/tools/BucketRecipe.java @@ -11,4 +11,4 @@ import cz.jzitnik.game.annotations.CraftingRecipeRegistry; result = "bucket", amount = 1 ) -public class BucketRecipe {} \ No newline at end of file +public class BucketRecipe {} diff --git a/src/main/java/cz/jzitnik/game/crafting/recipes/tools/FlintAndSteelRecipe.java b/src/main/java/cz/jzitnik/game/crafting/recipes/tools/FlintAndSteelRecipe.java new file mode 100644 index 0000000..4fa4791 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/crafting/recipes/tools/FlintAndSteelRecipe.java @@ -0,0 +1,14 @@ +package cz.jzitnik.game.crafting.recipes.tools; + +import cz.jzitnik.game.annotations.CraftingRecipeRegistry; + +@CraftingRecipeRegistry( + recipe = { + "iron_ingot", "_", "_", + "_", "flint", "_", + "_", "_", "_" + }, + result = "flint_and_steel", + amount = 1 +) +public class FlintAndSteelRecipe {} diff --git a/src/main/java/cz/jzitnik/game/crafting/recipes/tools/FlintAndSteelRecipe2.java b/src/main/java/cz/jzitnik/game/crafting/recipes/tools/FlintAndSteelRecipe2.java new file mode 100644 index 0000000..49c9ed8 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/crafting/recipes/tools/FlintAndSteelRecipe2.java @@ -0,0 +1,14 @@ +package cz.jzitnik.game.crafting.recipes.tools; + +import cz.jzitnik.game.annotations.CraftingRecipeRegistry; + +@CraftingRecipeRegistry( + recipe = { + "iron_ingot", "flint", "_", + "_", "_", "_", + "_", "_", "_" + }, + result = "flint_and_steel", + amount = 1 +) +public class FlintAndSteelRecipe2 {} diff --git a/src/main/java/cz/jzitnik/game/entities/items/ItemType.java b/src/main/java/cz/jzitnik/game/entities/items/ItemType.java index a666d9f..d29ffc5 100644 --- a/src/main/java/cz/jzitnik/game/entities/items/ItemType.java +++ b/src/main/java/cz/jzitnik/game/entities/items/ItemType.java @@ -1,5 +1,5 @@ package cz.jzitnik.game.entities.items; public enum ItemType { - PICKAXE, SHOVEL, AXE, SHEARS, BLOCK, FOOD, USELESS_ITEM, HOE, SWORD, PICKUPER + PICKAXE, SHOVEL, AXE, SHEARS, BLOCK, FOOD, USELESS_ITEM, HOE, SWORD, PICKUPER, FLINT_AND_STEEL } diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/items/items/FlintItem.java b/src/main/java/cz/jzitnik/game/entities/items/registry/items/items/FlintItem.java new file mode 100644 index 0000000..adf444e --- /dev/null +++ b/src/main/java/cz/jzitnik/game/entities/items/registry/items/items/FlintItem.java @@ -0,0 +1,13 @@ +package cz.jzitnik.game.entities.items.registry.items.items; + +import cz.jzitnik.game.SpriteLoader; +import cz.jzitnik.game.annotations.ItemRegistry; +import cz.jzitnik.game.entities.items.Item; +import cz.jzitnik.game.entities.items.ItemType; + +@ItemRegistry("flint") +public class FlintItem extends Item { + public FlintItem() { + super("flint", "Flint", ItemType.USELESS_ITEM, SpriteLoader.SPRITES.ITEM_FLINT); + } +} diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/items/tools/FlintAndSteelItem.java b/src/main/java/cz/jzitnik/game/entities/items/registry/items/tools/FlintAndSteelItem.java new file mode 100644 index 0000000..548feb5 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/entities/items/registry/items/tools/FlintAndSteelItem.java @@ -0,0 +1,15 @@ +package cz.jzitnik.game.entities.items.registry.items.tools; + +import cz.jzitnik.game.SpriteLoader; +import cz.jzitnik.game.annotations.ItemRegistry; +import cz.jzitnik.game.entities.items.Item; +import cz.jzitnik.game.entities.items.ItemType; + +@ItemRegistry("flint_and_steel") +public class FlintAndSteelItem extends Item { + public FlintAndSteelItem() { + super("flint_and_steel", "Flint and steel", ItemType.FLINT_AND_STEEL, SpriteLoader.SPRITES.FLINT_AND_STEEL); + setDurability(64); + setMaxDurability(64); + } +} diff --git a/src/main/java/cz/jzitnik/game/generation/Generation.java b/src/main/java/cz/jzitnik/game/generation/Generation.java index cb4408e..3e71350 100644 --- a/src/main/java/cz/jzitnik/game/generation/Generation.java +++ b/src/main/java/cz/jzitnik/game/generation/Generation.java @@ -1,7 +1,6 @@ package cz.jzitnik.game.generation; import cz.jzitnik.game.entities.Block; -import cz.jzitnik.game.entities.items.InventoryItem; import cz.jzitnik.game.entities.items.ItemBlockSupplier; import cz.jzitnik.game.Game; import cz.jzitnik.game.SpriteLoader; @@ -35,9 +34,8 @@ public class Generation { world[terrainHeight[256] - 1][256].add(steveBlock2); world[terrainHeight[256] - 2][256].add(steveBlock); - game.getInventory().addItem(new InventoryItem(9, ItemBlockSupplier.getItem("wheat"))); - game.getInventory().addItem(ItemBlockSupplier.getItem("crafting_table")); - game.getInventory().addItem(ItemBlockSupplier.getItem("haybale")); + game.getInventory().addItem(ItemBlockSupplier.getItem("flint")); + game.getInventory().addItem(ItemBlockSupplier.getItem("iron_ingot")); } private static void initializeWorld(List[][] world) { diff --git a/src/main/java/cz/jzitnik/game/handlers/tooluse/handlers/FlintAndSteelUse.java b/src/main/java/cz/jzitnik/game/handlers/tooluse/handlers/FlintAndSteelUse.java new file mode 100644 index 0000000..759917b --- /dev/null +++ b/src/main/java/cz/jzitnik/game/handlers/tooluse/handlers/FlintAndSteelUse.java @@ -0,0 +1,23 @@ +package cz.jzitnik.game.handlers.tooluse.handlers; + +import cz.jzitnik.game.Game; +import cz.jzitnik.game.annotations.Flamable; +import cz.jzitnik.game.annotations.ToolUse; +import cz.jzitnik.game.entities.Block; +import cz.jzitnik.game.entities.items.ItemType; +import cz.jzitnik.game.handlers.tooluse.ToolUseHandler; + +@ToolUse(ItemType.FLINT_AND_STEEL) +public class FlintAndSteelUse implements ToolUseHandler{ + + @Override + public void handle(Game game, int x, int y) { + var blocks = game.getWorld()[y][x]; + + for (Block block : blocks) { + if (block.getClass().isAnnotationPresent(Flamable.class)) { + block.setOnFire(true); + } + } + } +} diff --git a/src/main/resources/textures/items/flint.ans b/src/main/resources/textures/items/flint.ans new file mode 100644 index 0000000..2be6cce --- /dev/null +++ b/src/main/resources/textures/items/flint.ans @@ -0,0 +1,25 @@ +                                                   +                                                   +                                                   +                                            +                                          +                                        +                                   +                                   +                                  +                               +                                +                         +                       +                       +                   +                   +                      +                      +                      +                          +                              +                                +                                  +                                                   +                                                   diff --git a/src/main/resources/textures/items/flint_and_steel.ans b/src/main/resources/textures/items/flint_and_steel.ans new file mode 100644 index 0000000..dd2ca2c --- /dev/null +++ b/src/main/resources/textures/items/flint_and_steel.ans @@ -0,0 +1,25 @@ +                                                   +                                                   +                                              +                                          +                                          +                                       +                                       +                                       +                                            +                                            +                                            +                                     +                                  +                                  +                                   +                                    +                                +                                    +                                    +                                  +                                   +                                   +                                   +                                              +