feat: Implemented grass bush
This commit is contained in:
parent
5e45851e04
commit
59f0a70ea9
@ -14,6 +14,9 @@ public class SpriteLoader {
|
|||||||
// Blocks
|
// Blocks
|
||||||
AIR, WATER, LAVA, DIRT, GRASS, STONE, BEDROCK, COBBLESTONE, WOOL, OAK_LOG, OAK_LEAF, OAK_PLANKS, OAK_DOOR, OBSIDIAN,
|
AIR, WATER, LAVA, DIRT, GRASS, STONE, BEDROCK, COBBLESTONE, WOOL, OAK_LOG, OAK_LEAF, OAK_PLANKS, OAK_DOOR, OBSIDIAN,
|
||||||
|
|
||||||
|
// Flowers etc
|
||||||
|
GRASS_BUSH,
|
||||||
|
|
||||||
// Ores
|
// Ores
|
||||||
COAL_ORE, IRON_ORE, GOLD_ORE, DIAMOND_ORE,
|
COAL_ORE, IRON_ORE, GOLD_ORE, DIAMOND_ORE,
|
||||||
|
|
||||||
@ -63,6 +66,9 @@ public class SpriteLoader {
|
|||||||
BUCKET, WATER_BUCKET, LAVA_BUCKET, MILK_BUCKET,
|
BUCKET, WATER_BUCKET, LAVA_BUCKET, MILK_BUCKET,
|
||||||
// Food
|
// Food
|
||||||
ITEM_PORKCHOP, ITEM_COOKED_PORKCHOP, ITEM_MUTTON, ITEM_COOKED_MUTTON, ITEM_BEEF, ITEM_STEAK, ITEM_APPLE,
|
ITEM_PORKCHOP, ITEM_COOKED_PORKCHOP, ITEM_MUTTON, ITEM_COOKED_MUTTON, ITEM_BEEF, ITEM_STEAK, ITEM_APPLE,
|
||||||
|
|
||||||
|
// Seeds
|
||||||
|
ITEM_WHEAT_SEEDS,
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final HashMap<SPRITES, Sprite> SPRITES_MAP = new HashMap<>();
|
public static final HashMap<SPRITES, Sprite> SPRITES_MAP = new HashMap<>();
|
||||||
@ -86,6 +92,9 @@ public class SpriteLoader {
|
|||||||
SPRITES_MAP.put(SPRITES.COBBLESTONE, new SimpleSprite("cobblestone.ans"));
|
SPRITES_MAP.put(SPRITES.COBBLESTONE, new SimpleSprite("cobblestone.ans"));
|
||||||
SPRITES_MAP.put(SPRITES.OBSIDIAN, new SimpleSprite("obsidian.ans"));
|
SPRITES_MAP.put(SPRITES.OBSIDIAN, new SimpleSprite("obsidian.ans"));
|
||||||
|
|
||||||
|
// Flowers etc.
|
||||||
|
SPRITES_MAP.put(SPRITES.GRASS_BUSH, new SimpleSprite("grass_bush.ans"));
|
||||||
|
|
||||||
// Ores
|
// Ores
|
||||||
SPRITES_MAP.put(SPRITES.COAL_ORE, new SimpleSprite("coal_ore.ans"));
|
SPRITES_MAP.put(SPRITES.COAL_ORE, new SimpleSprite("coal_ore.ans"));
|
||||||
SPRITES_MAP.put(SPRITES.IRON_ORE, new SimpleSprite("iron_ore.ans"));
|
SPRITES_MAP.put(SPRITES.IRON_ORE, new SimpleSprite("iron_ore.ans"));
|
||||||
@ -200,6 +209,9 @@ public class SpriteLoader {
|
|||||||
SPRITES_MAP.put(SPRITES.ITEM_BEEF, new SimpleSprite("items/beef.ans"));
|
SPRITES_MAP.put(SPRITES.ITEM_BEEF, new SimpleSprite("items/beef.ans"));
|
||||||
SPRITES_MAP.put(SPRITES.ITEM_STEAK, new SimpleSprite("items/steak.ans"));
|
SPRITES_MAP.put(SPRITES.ITEM_STEAK, new SimpleSprite("items/steak.ans"));
|
||||||
SPRITES_MAP.put(SPRITES.ITEM_APPLE, new SimpleSprite("items/apple.ans"));
|
SPRITES_MAP.put(SPRITES.ITEM_APPLE, new SimpleSprite("items/apple.ans"));
|
||||||
|
|
||||||
|
// Seeds
|
||||||
|
SPRITES_MAP.put(SPRITES.ITEM_WHEAT_SEEDS, new SimpleSprite("items/wheat_seeds.ans"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SpriteList<SPRITES> load() {
|
public static SpriteList<SPRITES> load() {
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package cz.jzitnik.game.annotations;
|
||||||
|
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.TYPE)
|
||||||
|
public @interface BlockDropPercentage {
|
||||||
|
int value();
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package cz.jzitnik.game.entities.items.registry.blocks;
|
||||||
|
|
||||||
|
import cz.jzitnik.game.SpriteLoader;
|
||||||
|
import cz.jzitnik.game.annotations.BlockDropPercentage;
|
||||||
|
import cz.jzitnik.game.annotations.BlockRegistry;
|
||||||
|
import cz.jzitnik.game.entities.Block;
|
||||||
|
|
||||||
|
@BlockDropPercentage(100)
|
||||||
|
@BlockRegistry(value = "grass_bush", drops = "wheat_seeds")
|
||||||
|
public class GrassBushBlock extends Block {
|
||||||
|
public GrassBushBlock() {
|
||||||
|
super("grass_bush", SpriteLoader.SPRITES.GRASS_BUSH, 0);
|
||||||
|
setGhost(true);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package cz.jzitnik.game.entities.items.registry.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(value = "wheat_seeds", block = "grass_bush")
|
||||||
|
public class WheatSeedsItem extends Item {
|
||||||
|
public WheatSeedsItem() {
|
||||||
|
super("wheat_seeds", "Wheat seeds", ItemType.USELESS_ITEM, SpriteLoader.SPRITES.ITEM_WHEAT_SEEDS);
|
||||||
|
}
|
||||||
|
}
|
@ -63,11 +63,17 @@ public class Generation {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void populateWorld(List<Block>[][] world, int[] terrainHeight) {
|
private static void populateWorld(List<Block>[][] world, int[] terrainHeight) {
|
||||||
|
Random random = new Random();
|
||||||
|
|
||||||
for (int i = 0; i < 512; i++) {
|
for (int i = 0; i < 512; i++) {
|
||||||
int hillHeight = terrainHeight[i];
|
int hillHeight = terrainHeight[i];
|
||||||
|
|
||||||
world[hillHeight][i].add(ItemBlockSupplier.getBlock("grass"));
|
world[hillHeight][i].add(ItemBlockSupplier.getBlock("grass"));
|
||||||
|
|
||||||
|
if (random.nextDouble() < 0.1 && !isTreeNearby(world, i, hillHeight)) {
|
||||||
|
world[hillHeight - 1][i].add(ItemBlockSupplier.getBlock("grass_bush"));
|
||||||
|
}
|
||||||
|
|
||||||
for (int j = 1; j <= 4; j++) {
|
for (int j = 1; j <= 4; j++) {
|
||||||
if (hillHeight + j < 256) {
|
if (hillHeight + j < 256) {
|
||||||
world[hillHeight + j][i].add(ItemBlockSupplier.getBlock("dirt"));
|
world[hillHeight + j][i].add(ItemBlockSupplier.getBlock("dirt"));
|
||||||
@ -81,6 +87,7 @@ public class Generation {
|
|||||||
world[255][i].add(new Block("bedrock", SpriteLoader.SPRITES.BEDROCK));
|
world[255][i].add(new Block("bedrock", SpriteLoader.SPRITES.BEDROCK));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fill air blocks
|
||||||
for (List<Block>[] lists : world) {
|
for (List<Block>[] lists : world) {
|
||||||
for (List<Block> list : lists) {
|
for (List<Block> list : lists) {
|
||||||
list.addFirst(new Block("air", SpriteLoader.SPRITES.AIR, true, false));
|
list.addFirst(new Block("air", SpriteLoader.SPRITES.AIR, true, false));
|
||||||
@ -88,6 +95,25 @@ public class Generation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isTreeNearby(List<Block>[][] world, int x, int y) {
|
||||||
|
int radius = 3; // Check within a 3-block radius for trees
|
||||||
|
for (int dx = -radius; dx <= radius; dx++) {
|
||||||
|
for (int dy = -radius; dy <= radius; dy++) {
|
||||||
|
int nx = x + dx;
|
||||||
|
int ny = y + dy;
|
||||||
|
if (nx >= 0 && nx < 512 && ny >= 0 && ny < 256) {
|
||||||
|
for (Block block : world[ny][nx]) {
|
||||||
|
if (block.getBlockId().equals("oak_log") || block.getBlockId().equals("oak_leaves")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void plantTrees(List<Block>[][] world, int[] terrainHeight) {
|
private static void plantTrees(List<Block>[][] world, int[] terrainHeight) {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
for (int i = 10; i < 502; i += random.nextInt(20) + 20) {
|
for (int i = 10; i < 502; i += random.nextInt(20) + 20) {
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
package cz.jzitnik.game.handlers.place;
|
package cz.jzitnik.game.handlers.place;
|
||||||
|
|
||||||
import cz.jzitnik.game.Game;
|
import cz.jzitnik.game.Game;
|
||||||
|
import cz.jzitnik.game.annotations.BlockDropPercentage;
|
||||||
import cz.jzitnik.game.annotations.PlaceOnSolid;
|
import cz.jzitnik.game.annotations.PlaceOnSolid;
|
||||||
import cz.jzitnik.game.annotations.ResetDataOnMine;
|
import cz.jzitnik.game.annotations.ResetDataOnMine;
|
||||||
import cz.jzitnik.game.entities.Block;
|
import cz.jzitnik.game.entities.Block;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public class CustomAnnotationHandler implements CustomPlaceHandler {
|
public class CustomAnnotationHandler implements CustomPlaceHandler {
|
||||||
private final Class<?> clazz;
|
private final Class<?> clazz;
|
||||||
@ -31,10 +33,24 @@ public class CustomAnnotationHandler implements CustomPlaceHandler {
|
|||||||
resetDataOnMine(game, x, y);
|
resetDataOnMine(game, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
return defaultPlaceHandler.mine(game, x, y);
|
boolean drop = true;
|
||||||
|
|
||||||
|
if (clazz.isAnnotationPresent(BlockDropPercentage.class)) {
|
||||||
|
drop = blockDropPercentage(game, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultPlaceHandler.mine(game, x, y);
|
||||||
|
|
||||||
|
return drop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean blockDropPercentage(Game game, int x, int y) {
|
||||||
|
var annotation = clazz.getAnnotation(BlockDropPercentage.class);
|
||||||
|
int percentage = annotation.value();
|
||||||
|
|
||||||
|
Random random = new Random();
|
||||||
|
return random.nextInt(100) < percentage;
|
||||||
|
}
|
||||||
|
|
||||||
private boolean placeOnSolid(Game game, int x, int y) {
|
private boolean placeOnSolid(Game game, int x, int y) {
|
||||||
var blocksBottom = game.getWorld()[y + 1][x];
|
var blocksBottom = game.getWorld()[y + 1][x];
|
||||||
|
@ -3,6 +3,7 @@ package cz.jzitnik.game.handlers.place;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import cz.jzitnik.game.annotations.BlockDropPercentage;
|
||||||
import cz.jzitnik.game.annotations.BlockRegistry;
|
import cz.jzitnik.game.annotations.BlockRegistry;
|
||||||
import cz.jzitnik.game.annotations.PlaceOnSolid;
|
import cz.jzitnik.game.annotations.PlaceOnSolid;
|
||||||
import cz.jzitnik.game.annotations.ResetDataOnMine;
|
import cz.jzitnik.game.annotations.ResetDataOnMine;
|
||||||
@ -52,7 +53,7 @@ public class PlaceHandler {
|
|||||||
.getTypesAnnotatedWith(BlockRegistry.class);
|
.getTypesAnnotatedWith(BlockRegistry.class);
|
||||||
|
|
||||||
for (Class<?> clazz : blocks) {
|
for (Class<?> clazz : blocks) {
|
||||||
if (clazz.isAnnotationPresent(PlaceOnSolid.class) || clazz.isAnnotationPresent(ResetDataOnMine.class)) {
|
if (clazz.isAnnotationPresent(PlaceOnSolid.class) || clazz.isAnnotationPresent(ResetDataOnMine.class) || clazz.isAnnotationPresent(BlockDropPercentage.class)) {
|
||||||
try {
|
try {
|
||||||
var annotation = clazz.getAnnotation(BlockRegistry.class);
|
var annotation = clazz.getAnnotation(BlockRegistry.class);
|
||||||
var id = annotation.value();
|
var id = annotation.value();
|
||||||
|
25
src/main/resources/textures/grass_bush.ans
Normal file
25
src/main/resources/textures/grass_bush.ans
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;77;119;66m [48;2;78;119;71m [49m [49m [49m [49m [49m [49m [48;2;78;118;68m [48;2;79;113;69m [49m [49m [49m [49m [49m [49m [48;2;87;138;76m [49m [49m [49m [49m [49m [49m [48;2;79;119;69m [48;2;78;118;68m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;81;118;69m [48;2;79;119;69m [49m [49m [49m [49m [49m [49m [48;2;78;118;68m [48;2;79;119;68m [49m [49m [49m [49m [49m [49m [48;2;88;137;77m [49m [49m [49m [49m [49m [49m [48;2;79;119;69m [48;2;78;118;68m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;79;119;69m [49m [49m [49m [49m [48;2;88;137;77m [49m [49m [49m [49m [49m [49m [48;2;88;137;77m [49m [49m [49m [49m [48;2;79;119;69m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;78;120;69m [49m [49m [49m [49m [48;2;88;137;77m [49m [49m [49m [49m [48;2;88;137;77m [49m [49m [48;2;64;95;55m [48;2;61;98;51m [48;2;77;119;67m [49m [49m [49m [49m [48;2;86;136;78m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;77;119;69m [49m [49m [49m [49m [48;2;88;137;77m [49m [49m [49m [49m [48;2;88;137;77m [48;2;86;137;79m [49m [49m [48;2;64;97;54m [48;2;61;97;51m [48;2;79;119;69m [49m [49m [49m [49m [48;2;88;136;77m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [48;2;91;127;72m [48;2;79;119;68m [49m [49m [49m [49m [49m [49m [48;2;79;119;69m [48;2;78;118;68m [48;2;88;137;77m [49m [49m [49m [49m [48;2;79;119;69m [48;2;81;119;69m [49m [49m [48;2;79;119;69m [48;2;79;119;68m [49m [49m [48;2;91;137;77m [48;2;87;136;77m [49m [49m [49m [49m [49m [49m [48;2;88;137;77m [48;2;92;162;81m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [48;2;87;136;76m [48;2;90;136;77m [49m [49m [48;2;54;87;46m [48;2;52;88;44m [48;2;77;117;65m [49m [49m [49m [49m [48;2;79;119;69m [48;2;71;109;62m [48;2;63;96;55m [48;2;90;135;78m [48;2;90;136;79m [49m [49m [48;2;75;119;67m [48;2;76;119;66m [49m [49m [48;2;88;136;79m [48;2;89;136;76m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [48;2;87;138;78m [48;2;88;137;77m [49m [49m [48;2;57;87;52m [48;2;57;89;48m [48;2;79;119;69m [49m [49m [49m [49m [48;2;79;119;69m [48;2;71;109;64m [48;2;64;98;56m [48;2;88;137;77m [48;2;89;136;77m [49m [49m [48;2;78;119;67m [48;2;80;119;69m [49m [49m [48;2;88;137;77m [48;2;87;136;76m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [48;2;87;136;76m [48;2;88;137;79m [49m [49m [49m [49m [49m [49m [48;2;79;118;69m [48;2;72;106;61m [49m [49m [48;2;72;104;62m [48;2;72;106;61m [48;2;88;137;76m [48;2;89;136;77m [49m [49m [48;2;66;95;55m [48;2;64;95;53m [49m [49m [48;2;88;137;77m [48;2;86;136;76m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [48;2;87;136;76m [48;2;90;135;79m [48;2;58;88;50m [49m [49m [49m [49m [48;2;75;111;65m [48;2;74;112;65m [48;2;73;112;64m [48;2;58;88;50m [48;2;64;94;54m [48;2;70;102;58m [48;2;78;121;69m [48;2;78;122;69m [48;2;90;140;78m [48;2;61;93;51m [48;2;61;92;55m [49m [49m [48;2;86;127;75m [48;2;83;128;73m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [48;2;87;136;76m [48;2;91;136;76m [48;2;57;88;50m [49m [49m [49m [49m [48;2;72;106;61m [48;2;81;118;69m [48;2;79;119;69m [48;2;57;89;48m [48;2;60;91;53m [48;2;64;96;55m [48;2;72;106;61m [48;2;68;103;57m [48;2;88;137;77m [48;2;56;87;49m [48;2;57;87;49m [49m [49m [48;2;77;120;69m [48;2;78;118;68m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[48;2;79;119;69m [48;2;78;119;69m [49m [49m [48;2;78;118;68m [48;2;72;106;61m [49m [49m [49m [49m [48;2;88;137;77m [49m [49m [49m [49m [48;2;57;88;50m [48;2;67;102;60m [48;2;79;119;69m [49m [49m [49m [49m [48;2;79;119;69m [48;2;57;88;50m [48;2;57;90;50m [48;2;88;137;77m [49m [49m [49m [49m [48;2;59;88;50m [48;2;57;92;57m [49m [49m [m
|
||||||
|
[48;2;79;119;69m [48;2;78;121;71m [49m [49m [48;2;78;118;69m [48;2;80;120;69m [48;2;72;106;61m [49m [49m [49m [49m [48;2;89;135;78m [49m [49m [49m [49m [48;2;59;88;50m [48;2;66;103;56m [48;2;79;119;68m [49m [49m [49m [49m [48;2;80;118;71m [48;2;57;88;50m [48;2;57;90;49m [48;2;89;135;78m [49m [49m [49m [49m [48;2;57;88;50m [48;2;81;92;46m [49m [49m [m
|
||||||
|
[48;2;79;119;69m [48;2;78;119;69m [49m [49m [48;2;71;105;60m [48;2;72;106;61m [48;2;81;118;69m [49m [49m [49m [49m [48;2;79;119;69m [48;2;53;87;46m [48;2;57;88;50m [49m [49m [48;2;79;117;68m [48;2;79;119;69m [48;2;63;94;54m [48;2;64;96;55m [48;2;73;106;61m [49m [49m [49m [49m [48;2;79;119;69m [49m [49m [49m [49m [48;2;59;88;50m [48;2;76;112;65m [48;2;79;119;69m [m
|
||||||
|
[48;2;79;119;69m [48;2;75;114;65m [48;2;64;95;55m [49m [49m [49m [49m [48;2;79;119;69m [48;2;79;119;71m [48;2;79;119;69m [48;2;71;106;61m [48;2;54;88;49m [48;2;57;90;50m [49m [49m [48;2;72;104;66m [48;2;71;106;61m [48;2;64;96;55m [48;2;62;97;53m [48;2;79;119;69m [49m [49m [49m [49m [48;2;72;106;61m [48;2;77;120;65m [48;2;78;119;68m [49m [49m [48;2;72;109;62m [48;2;72;106;61m [m
|
||||||
|
[48;2;79;119;69m [48;2;78;113;65m [48;2;64;95;53m [49m [49m [49m [49m [48;2;79;119;69m [48;2;77;119;65m [48;2;77;119;66m [48;2;72;104;61m [48;2;55;89;50m [48;2;57;88;50m [49m [49m [48;2;71;107;61m [48;2;72;106;59m [48;2;64;97;55m [48;2;62;97;53m [48;2;79;119;69m [49m [49m [49m [49m [48;2;72;104;61m [48;2;79;119;67m [48;2;78;116;68m [49m [49m [48;2;72;108;61m [48;2;72;107;61m [m
|
||||||
|
[48;2;72;106;61m [48;2;73;106;61m [49m [49m [48;2;63;95;54m [48;2;64;96;55m [48;2;72;106;61m [48;2;55;89;49m [48;2;56;85;48m [48;2;72;106;61m [48;2;55;89;50m [48;2;57;88;50m [48;2;72;106;61m [48;2;63;98;55m [48;2;56;90;50m [48;2;64;97;55m [48;2;62;97;53m [48;2;79;119;69m [48;2;72;106;61m [48;2;64;96;55m [48;2;72;106;61m [48;2;64;98;54m [48;2;64;96;55m [m
|
||||||
|
[48;2;72;106;61m [48;2;64;98;55m [48;2;64;96;55m [48;2;62;96;57m [48;2;57;88;50m [48;2;56;87;49m [48;2;72;106;61m [48;2;64;97;53m [48;2;64;96;55m [48;2;72;106;61m [48;2;69;103;61m [48;2;64;96;53m [48;2;56;88;47m [48;2;52;86;45m [48;2;79;119;69m [48;2;49;86;47m [48;2;52;86;47m [48;2;64;96;55m [48;2;64;96;54m [48;2;61;95;54m [48;2;72;106;61m [48;2;69;104;57m [49m [49m [m
|
||||||
|
[48;2;71;105;60m [48;2;72;106;61m [48;2;64;96;55m [48;2;57;88;48m [48;2;57;88;49m [48;2;72;106;61m [48;2;64;96;53m [48;2;64;96;54m [48;2;72;106;61m [48;2;67;102;59m [48;2;64;96;55m [48;2;57;88;50m [48;2;52;87;47m [48;2;79;119;68m [48;2;56;89;48m [48;2;57;88;51m [48;2;64;96;55m [48;2;66;96;55m [48;2;72;106;61m [48;2;69;104;57m [49m [49m [m
|
||||||
|
[49m [49m [48;2;54;91;54m [48;2;64;96;55m [48;2;57;88;50m [48;2;53;86;48m [48;2;79;119;69m [48;2;52;77;44m [48;2;52;80;44m [48;2;64;96;55m [48;2;56;87;49m [48;2;57;88;50m [48;2;79;119;69m [48;2;72;108;63m [48;2;64;96;55m [48;2;52;80;45m [48;2;48;78;43m [48;2;72;106;61m [48;2;56;87;49m [48;2;57;88;49m [48;2;79;119;69m [48;2;62;93;53m [48;2;64;96;55m [m
|
||||||
|
[48;2;72;106;61m [48;2;70;104;61m [48;2;64;96;55m [48;2;56;81;48m [48;2;50;79;42m [48;2;79;119;69m [48;2;54;78;46m [48;2;52;80;45m [48;2;64;96;55m [48;2;54;83;46m [48;2;54;82;48m [48;2;79;119;69m [48;2;72;108;63m [48;2;64;96;55m [48;2;52;80;45m [48;2;52;80;43m [48;2;64;96;53m [48;2;52;81;46m [48;2;54;80;46m [48;2;79;119;69m [48;2;53;81;44m [48;2;53;80;43m [48;2;64;96;55m [48;2;58;90;49m [48;2;57;89;48m [m
|
||||||
|
[48;2;72;106;61m [48;2;70;104;60m [48;2;64;96;55m [48;2;52;80;45m [48;2;51;79;42m [48;2;79;119;69m [48;2;54;78;46m [48;2;52;80;45m [48;2;64;96;55m [48;2;52;80;45m [48;2;79;119;69m [48;2;72;108;63m [48;2;64;96;55m [48;2;52;80;45m [48;2;52;80;43m [48;2;64;96;55m [48;2;52;80;43m [48;2;54;78;46m [48;2;79;119;69m [48;2;51;80;42m [48;2;52;80;45m [48;2;64;96;55m [48;2;57;89;48m [48;2;57;88;50m [m
|
25
src/main/resources/textures/items/wheat_seeds.ans
Normal file
25
src/main/resources/textures/items/wheat_seeds.ans
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;226;16m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;226;16m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;224;16m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;226;16m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;176;56m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;226;16m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;176;56m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;176;56m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;226;16m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;104;176;56m [48;2;105;176;56m [48;2;68;114;36m [49m [49m [49m [49m [49m [49m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;226;16m [49m [49m [48;2;172;176;56m [49m [49m [48;2;74;120;34m [48;2;75;120;34m [48;2;57;90;24m [49m [49m [49m [49m [49m [49m [48;2;42;66;12m [48;2;46;66;12m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;226;16m [49m [49m [48;2;172;176;56m [49m [49m [48;2;46;66;12m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;176;56m [48;2;68;114;36m [49m [49m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;176;56m [48;2;68;114;36m [49m [49m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;226;16m [49m [49m [49m [49m [49m [49m [48;2;172;176;56m [48;2;111;114;36m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;176;56m [48;2;86;145;46m [48;2;68;114;36m [49m [49m [49m [49m [49m [49m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;176;56m [48;2;86;145;46m [48;2;68;114;36m [49m [49m [49m [49m [49m [49m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;46;67;12m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
||||||
|
[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m
|
@ -1,5 +1,6 @@
|
|||||||
package cz.jzitnik.game.handlers.place;
|
package cz.jzitnik.game.handlers.place;
|
||||||
|
|
||||||
|
import cz.jzitnik.game.annotations.BlockDropPercentage;
|
||||||
import cz.jzitnik.game.annotations.BlockRegistry;
|
import cz.jzitnik.game.annotations.BlockRegistry;
|
||||||
import cz.jzitnik.game.annotations.PlaceOnSolid;
|
import cz.jzitnik.game.annotations.PlaceOnSolid;
|
||||||
import cz.jzitnik.game.annotations.ResetDataOnMine;
|
import cz.jzitnik.game.annotations.ResetDataOnMine;
|
||||||
@ -68,6 +69,19 @@ class PlaceHandlerTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("All blocks annotated with @BlockDropPercentage must be also annotated with @BlockRegistry")
|
||||||
|
void blockDropPercentageTest() {
|
||||||
|
Reflections reflections = new Reflections("cz.jzitnik.game.entities.items.registry.blocks");
|
||||||
|
Set<Class<?>> handlerClasses = reflections
|
||||||
|
.getTypesAnnotatedWith(BlockDropPercentage.class);
|
||||||
|
|
||||||
|
for (Class<?> clazz : handlerClasses) {
|
||||||
|
boolean hasAnnotation = clazz.isAnnotationPresent(BlockRegistry.class);
|
||||||
|
assertTrue(hasAnnotation, "Class " + clazz.getName() + " is annotated with @BlockDropPercentage but does not have annotation @BlockRegistry");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName("All blocks annotated with @ResetDataOnMine must have data class with default constructor")
|
@DisplayName("All blocks annotated with @ResetDataOnMine must have data class with default constructor")
|
||||||
void dataOnMineHasDataTest() {
|
void dataOnMineHasDataTest() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user