twodcraft/src/main/java/cz/jzitnik/game/items/ItemBlockSupplier.java

65 lines
2.5 KiB
Java

package cz.jzitnik.game.items;
import cz.jzitnik.game.SpriteLoader;
import cz.jzitnik.game.Block;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ItemBlockSupplier {
// This is necessary to not get infinite recursion
private static class Helper {
public static Item dirt(Block ref) {
return new Item("dirt", "Dirt block", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_DIRT, ref);
}
public static Item stone(Block ref) {
return new Item("stone", "Stone block", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_DIRT, ref);
}
public static Item oakLog(Block ref) {
return new Item("oak_log", "Oak log", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_OAK_LOG, ref);
}
public static Item oakPlanks(Block ref) {
return new Item("oak_log", "Oak planks", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_OAK_PLANKS, ref);
}
}
public static class Blocks {
public static Block dirt() {
var block = new Block("dirt", SpriteLoader.SPRITES.DIRT, 1, ItemType.SHOVEL, new ArrayList<>());
block.setDrops(List.of(Helper.dirt(block)));
return block;
}
public static Block grass() {
var block = new Block("grass", SpriteLoader.SPRITES.GRASS, 1, ItemType.SHOVEL, new ArrayList<>());
block.setDrops(List.of(Items.dirt()));
return block;
}
public static Block stone() {
var block = new Block("stone", SpriteLoader.SPRITES.STONE, 15, ItemType.PICKAXE, Arrays.stream(ToolVariant.values()).toList());
block.setDrops(List.of(Helper.stone(block)));
return block;
}
public static Block oakLog() {
var block = new Block("oak_log", SpriteLoader.SPRITES.OAK_LOG, 3, ItemType.AXE, new ArrayList<>());
block.setDrops(List.of(Helper.oakLog(block)));
return block;
}
public static Block oakPlanks() {
var block = new Block("oak_planks", SpriteLoader.SPRITES.OAK_PLANKS, 3, ItemType.AXE, new ArrayList<>());
block.setDrops(List.of(Helper.oakPlanks(block)));
return block;
}
}
// I hate this but whatever
public static class Items {
public static Item dirt() {
return Helper.dirt(Blocks.dirt());
}
public static Item oakPlanks() {
return Helper.oakPlanks(Blocks.oakPlanks());
}
}
}