feat: Added flint and steel

This commit is contained in:
Jakub Žitník 2025-03-22 15:43:31 +01:00
parent 8b8c23dad4
commit da92b9e61a
Signed by: jzitnik
GPG Key ID: C577A802A6AF4EF3
11 changed files with 137 additions and 6 deletions

View File

@ -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"));

View File

@ -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 {}

View File

@ -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 {}

View File

@ -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
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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<Block>[][] world) {

View File

@ -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);
}
}
}
}

View File

@ -0,0 +1,25 @@
                                                  
                                                  
                                                  
                                           
                                         
                                       
                                  
                                  
                                 
                              
                               
                        
                      
                      
                  
                  
                     
                     
                     
                         
                             
                               
                                 
                                                  
                                                  

View File

@ -0,0 +1,25 @@