From 277cf15059973f84858afc4dc4827186a77b5086 Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Sun, 25 Jun 2023 00:59:06 +0800 Subject: [PATCH 01/10] Create SpriteLinkBuilder --- src/client/java/minicraft/core/Renderer.java | 55 ++-- src/client/java/minicraft/entity/Arrow.java | 31 +- .../java/minicraft/entity/FireSpark.java | 3 +- src/client/java/minicraft/entity/Spark.java | 5 +- .../java/minicraft/entity/furniture/Bed.java | 3 +- .../minicraft/entity/furniture/Chest.java | 4 +- .../minicraft/entity/furniture/Crafter.java | 18 +- .../entity/furniture/DeathChest.java | 6 +- .../entity/furniture/DungeonChest.java | 4 +- .../entity/furniture/KnightStatue.java | 3 +- .../minicraft/entity/furniture/Lantern.java | 6 +- .../minicraft/entity/furniture/Spawner.java | 21 +- .../java/minicraft/entity/furniture/Tnt.java | 3 +- src/client/java/minicraft/entity/mob/Mob.java | 4 +- .../java/minicraft/entity/mob/Player.java | 47 +-- .../entity/particle/BurnParticle.java | 7 +- .../entity/particle/FireParticle.java | 3 +- .../entity/particle/SandParticle.java | 5 +- .../entity/particle/SmashParticle.java | 2 +- .../java/minicraft/gfx/SpriteAnimation.java | 50 +-- .../java/minicraft/gfx/SpriteLinker.java | 303 ++++++++++-------- src/client/java/minicraft/item/ArmorItem.java | 15 +- src/client/java/minicraft/item/BookItem.java | 5 +- .../java/minicraft/item/BucketItem.java | 4 +- .../java/minicraft/item/ClothingItem.java | 18 +- .../java/minicraft/item/FishingRodItem.java | 4 +- src/client/java/minicraft/item/FoodItem.java | 20 +- src/client/java/minicraft/item/HeartItem.java | 3 +- .../java/minicraft/item/PotionItem.java | 3 +- .../java/minicraft/item/StackableItem.java | 44 +-- .../java/minicraft/item/SummonItem.java | 5 +- src/client/java/minicraft/item/TileItem.java | 68 ++-- src/client/java/minicraft/item/ToolItem.java | 5 +- src/client/java/minicraft/item/TorchItem.java | 3 +- .../java/minicraft/level/tile/TreeTile.java | 4 +- .../level/tile/farming/PotatoTile.java | 12 +- .../level/tile/farming/WheatTile.java | 12 +- .../screen/LevelTransitionDisplay.java | 10 +- src/client/java/minicraft/screen/Menu.java | 12 +- 39 files changed, 434 insertions(+), 396 deletions(-) diff --git a/src/client/java/minicraft/core/Renderer.java b/src/client/java/minicraft/core/Renderer.java index 4b846f0d2..b38977cbe 100644 --- a/src/client/java/minicraft/core/Renderer.java +++ b/src/client/java/minicraft/core/Renderer.java @@ -52,6 +52,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.function.Supplier; public class Renderer extends Game { private Renderer() { @@ -76,7 +77,7 @@ private Renderer() { private static int potionRenderOffset = 0; - private static LinkedSprite hudSheet; + private static Supplier hudSheet; public static MinicraftImage loadDefaultSkinSheet() { MinicraftImage skinsSheet; @@ -102,7 +103,7 @@ public static void initScreen() { image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); screen.pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData(); - hudSheet = new LinkedSprite(SpriteType.Gui, "hud"); + hudSheet = () -> Renderer.spriteLinker.getSheet(SpriteType.Gui, "hud"); Initializer.startCanvasRendering(); canvas.createBufferStrategy(3); @@ -227,7 +228,7 @@ private static void renderGui() { // This draws the black square where the selected item would be if you were holding it if (!isMode("minicraft.settings.mode.creative") || player.activeItem != null) { for (int x = 10; x < 26; x++) { - screen.render(x * 8, Screen.h - 8, 5, 2, 0, hudSheet.getSheet()); + screen.render(x * 8, Screen.h - 8, 5, 2, 0, hudSheet.get()); } } @@ -247,7 +248,7 @@ private static void renderGui() { else Font.drawBackground(" x" + ac, screen, 84, Screen.h - 16); // Displays the arrow icon - screen.render(10 * 8 + 4, Screen.h - 16, 4, 1, 0, hudSheet.getSheet()); + screen.render(10 * 8 + 4, Screen.h - 16, 4, 1, 0, hudSheet.get()); } } @@ -356,16 +357,16 @@ private static void renderGui() { for (int i = 1; i <= 30; i++) { // Renders your current red default hearts, golden hearts for 20 HP, obsidian hearts for 30 HP, or black hearts for damaged health. if (i < 11) { - screen.render((i - 1) * 8, Screen.h - 16, 0, 1, 0, hudSheet.getSheet()); // Empty Hearts + screen.render((i - 1) * 8, Screen.h - 16, 0, 1, 0, hudSheet.get()); // Empty Hearts } if (i < player.health + 1 && i < 11) { - screen.render((i - 1) * 8, Screen.h - 16, 0, 0, 0, hudSheet.getSheet()); // Red Hearts + screen.render((i - 1) * 8, Screen.h - 16, 0, 0, 0, hudSheet.get()); // Red Hearts } if (i < player.health + 1 && i < 21 && i >= 11) { - screen.render((i - 11) * 8, Screen.h - 16, 0, 2, 0, hudSheet.getSheet()); // Yellow Hearts + screen.render((i - 11) * 8, Screen.h - 16, 0, 2, 0, hudSheet.get()); // Yellow Hearts } if (i < player.health + 1 && i >= 21) { - screen.render((i - 21) * 8, Screen.h - 16, 0, 3, 0, hudSheet.getSheet()); // Obsidian Hearts + screen.render((i - 21) * 8, Screen.h - 16, 0, 3, 0, hudSheet.get()); // Obsidian Hearts } } for (int i = 0; i < Player.maxStat; i++) { @@ -379,24 +380,24 @@ private static void renderGui() { if (player.staminaRechargeDelay > 0) { // Creates the white/gray blinking effect when you run out of stamina. if (player.staminaRechargeDelay / 4 % 2 == 0) { - screen.render(i * 8, Screen.h - 8, 1, 2, 0, hudSheet.getSheet()); + screen.render(i * 8, Screen.h - 8, 1, 2, 0, hudSheet.get()); } else { - screen.render(i * 8, Screen.h - 8, 1, 1, 0, hudSheet.getSheet()); + screen.render(i * 8, Screen.h - 8, 1, 1, 0, hudSheet.get()); } } else { // Renders your current stamina, and uncharged gray stamina. if (i < player.stamina) { - screen.render(i * 8, Screen.h - 8, 1, 0, 0, hudSheet.getSheet()); + screen.render(i * 8, Screen.h - 8, 1, 0, 0, hudSheet.get()); } else { - screen.render(i * 8, Screen.h - 8, 1, 1, 0, hudSheet.getSheet()); + screen.render(i * 8, Screen.h - 8, 1, 1, 0, hudSheet.get()); } } // Renders hunger if (i < player.hunger) { - screen.render(i * 8 + (Screen.w - 80), Screen.h - 16, 2, 0, 0, hudSheet.getSheet()); + screen.render(i * 8 + (Screen.w - 80), Screen.h - 16, 2, 0, 0, hudSheet.get()); } else { - screen.render(i * 8 + (Screen.w - 80), Screen.h - 16, 2, 1, 0, hudSheet.getSheet()); + screen.render(i * 8 + (Screen.w - 80), Screen.h - 16, 2, 1, 0, hudSheet.get()); } } } @@ -429,20 +430,20 @@ public static void renderBossbar(int length, String title) { int ACTIVE_BOSSBAR = 5; // sprite x position - screen.render(x + (max_bar_length * 2), y, 0, INACTIVE_BOSSBAR, 1, hudSheet.getSheet()); // left corner + screen.render(x + (max_bar_length * 2), y, 0, INACTIVE_BOSSBAR, 1, hudSheet.get()); // left corner // The middle for (int bx = 0; bx < max_bar_length; bx++) { for (int by = 0; by < 1; by++) { - screen.render(x + bx * 2, y + by * 8, 3, INACTIVE_BOSSBAR, 0, hudSheet.getSheet()); + screen.render(x + bx * 2, y + by * 8, 3, INACTIVE_BOSSBAR, 0, hudSheet.get()); } } - screen.render(x - 5 , y , 0, ACTIVE_BOSSBAR, 0, hudSheet.getSheet()); // right corner + screen.render(x - 5 , y , 0, ACTIVE_BOSSBAR, 0, hudSheet.get()); // right corner for (int bx = 0; bx < bar_length; bx++) { for (int by = 0; by < 1; by++) { - screen.render(x + bx * 2, y + by * 8, 3, ACTIVE_BOSSBAR, 0, hudSheet.getSheet()); + screen.render(x + bx * 2, y + by * 8, 3, ACTIVE_BOSSBAR, 0, hudSheet.get()); } } @@ -544,24 +545,24 @@ private static void renderFocusNagger() { int h = 1; // Renders the four corners of the box - screen.render(xx - 8, yy - 8, 0, 6, 0, hudSheet.getSheet()); - screen.render(xx + w * 8, yy - 8, 0, 6, 1, hudSheet.getSheet()); - screen.render(xx - 8, yy + 8, 0, 6, 2, hudSheet.getSheet()); - screen.render(xx + w * 8, yy + 8, 0, 6, 3, hudSheet.getSheet()); + screen.render(xx - 8, yy - 8, 0, 6, 0, hudSheet.get()); + screen.render(xx + w * 8, yy - 8, 0, 6, 1, hudSheet.get()); + screen.render(xx - 8, yy + 8, 0, 6, 2, hudSheet.get()); + screen.render(xx + w * 8, yy + 8, 0, 6, 3, hudSheet.get()); // Renders each part of the box... for (int x = 0; x < w; x++) { - screen.render(xx + x * 8, yy - 8, 1, 6, 0, hudSheet.getSheet()); // ...Top part - screen.render(xx + x * 8, yy + 8, 1, 6, 2, hudSheet.getSheet()); // ...Bottom part + screen.render(xx + x * 8, yy - 8, 1, 6, 0, hudSheet.get()); // ...Top part + screen.render(xx + x * 8, yy + 8, 1, 6, 2, hudSheet.get()); // ...Bottom part } for (int y = 0; y < h; y++) { - screen.render(xx - 8, yy + y * 8, 2, 6, 0, hudSheet.getSheet()); // ...Left part - screen.render(xx + w * 8, yy + y * 8, 2, 6, 1, hudSheet.getSheet()); // ...Right part + screen.render(xx - 8, yy + y * 8, 2, 6, 0, hudSheet.get()); // ...Left part + screen.render(xx + w * 8, yy + y * 8, 2, 6, 1, hudSheet.get()); // ...Right part } // The middle for (int x = 0; x < w; x++) { - screen.render(xx + x * 8, yy, 3, 6, 0, hudSheet.getSheet()); + screen.render(xx + x * 8, yy, 3, 6, 0, hudSheet.get()); } // Renders the focus nagger text with a flash effect... diff --git a/src/client/java/minicraft/entity/Arrow.java b/src/client/java/minicraft/entity/Arrow.java index c5220d4a9..5f2f432f9 100644 --- a/src/client/java/minicraft/entity/Arrow.java +++ b/src/client/java/minicraft/entity/Arrow.java @@ -14,11 +14,24 @@ import java.util.List; public class Arrow extends Entity implements ClientTickable { + private static final LinkedSprite spriteRight; + private static final LinkedSprite spriteLeft; + private static final LinkedSprite spriteUp; + private static final LinkedSprite spriteDown; + + static { + LinkedSprite.SpriteLinkBuilder builder = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "arrow").setSpriteSize(1, 1); + spriteRight = builder.setSpritePos(0, 0).createSpriteLink(); + spriteLeft = builder.setSpritePos(1, 0).createSpriteLink(); + spriteUp = builder.setSpritePos(2, 0).createSpriteLink(); + spriteDown = builder.setSpritePos(3, 0).createSpriteLink(); + } + private Direction dir; private int damage; public Mob owner; private int speed; - private LinkedSprite sprite = new LinkedSprite(SpriteType.Entity, "arrow").setSpriteSize(1, 1); + private final LinkedSprite sprite; public Arrow(Mob owner, Direction dir, int dmg) { this(owner, owner.x, owner.y, dir, dmg); @@ -33,11 +46,12 @@ public Arrow(Mob owner, int x, int y, Direction dir, int dmg) { damage = dmg; col = Color.get(-1, 111, 222, 430); - int xt = 0; - if(dir == Direction.LEFT) xt = 1; - if(dir == Direction.UP) xt = 2; - if(dir == Direction.DOWN) xt = 3; - sprite.setSpritePos(xt, 0); + switch (dir) { + case UP: sprite = spriteUp; break; + case DOWN: sprite = spriteDown; break; + case LEFT: sprite = spriteLeft; break; + case RIGHT: default: sprite = spriteRight; break; + } if (damage > 3) speed = 8; else if (damage >= 0) speed = 7; @@ -78,11 +92,6 @@ public void tick() { && !level.getTile(x / 16, y / 16).connectsToFluid && level.getTile(x / 16, y / 16).id != 16) { this.remove(); - try { - sprite.destroy(); - } catch (DestroyFailedException e) { - Logging.SPRITE.trace(e); - } } } } diff --git a/src/client/java/minicraft/entity/FireSpark.java b/src/client/java/minicraft/entity/FireSpark.java index 06dd9daf3..23571769a 100644 --- a/src/client/java/minicraft/entity/FireSpark.java +++ b/src/client/java/minicraft/entity/FireSpark.java @@ -8,7 +8,8 @@ import minicraft.gfx.SpriteLinker; public class FireSpark extends Entity { - private static final SpriteLinker.LinkedSprite sprite = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "spark"); + private static final SpriteLinker.LinkedSprite sprite = + new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Entity, "spark").createSpriteLink(); private final int lifeTime; // How much time until the spark disappears private final double xa, ya; // The x and y acceleration diff --git a/src/client/java/minicraft/entity/Spark.java b/src/client/java/minicraft/entity/Spark.java index 4ce29a876..f5d28d80c 100644 --- a/src/client/java/minicraft/entity/Spark.java +++ b/src/client/java/minicraft/entity/Spark.java @@ -15,7 +15,7 @@ public class Spark extends Entity { private double xx, yy; // The x and y positions private int time; // The amount of time that has passed private final AirWizard owner; // The AirWizard that created this spark - private LinkedSprite sprite = new LinkedSprite(SpriteType.Entity, "spark"); + private final LinkedSprite sprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "spark").createSpriteLink(); /** * Creates a new spark. Owner is the AirWizard which is spawning this spark. @@ -76,9 +76,8 @@ public void render(Screen screen) { randmirror = random.nextInt(4); } - sprite.setMirror(randmirror); screen.render(x - 4, y - 4 + 2, sprite.getSprite(), 0, false, Color.BLACK); // renders the shadow on the ground - screen.render(x - 4, y - 4 - 2, sprite); // Renders the spark + screen.render(x - 4, y - 4 - 2, sprite.getSprite(), randmirror, false); // Renders the spark } /** diff --git a/src/client/java/minicraft/entity/furniture/Bed.java b/src/client/java/minicraft/entity/furniture/Bed.java index 41f57fd99..c50e4addb 100644 --- a/src/client/java/minicraft/entity/furniture/Bed.java +++ b/src/client/java/minicraft/entity/furniture/Bed.java @@ -19,7 +19,8 @@ public class Bed extends Furniture { * Creates a new furniture with the name Bed and the bed sprite and color. */ public Bed() { - super("Bed", new LinkedSprite(SpriteType.Entity, "bed"), new LinkedSprite(SpriteType.Item, "bed"), 3, 2); + super("Bed", new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "bed").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "bed").createSpriteLink(), 3, 2); } /** Called when the player attempts to get in bed. */ diff --git a/src/client/java/minicraft/entity/furniture/Chest.java b/src/client/java/minicraft/entity/furniture/Chest.java index b2f186cc6..04b39ca64 100644 --- a/src/client/java/minicraft/entity/furniture/Chest.java +++ b/src/client/java/minicraft/entity/furniture/Chest.java @@ -22,13 +22,13 @@ public class Chest extends Furniture implements ItemHolder { public Chest() { this("Chest"); } - public Chest(String name) { this(name, new LinkedSprite(SpriteType.Item, "chest")); } + public Chest(String name) { this(name, new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "chest").createSpriteLink()); } /** * Creates a chest with a custom name. * @param name Name of chest. */ public Chest(String name, LinkedSprite itemSprite) { - super(name, new LinkedSprite(SpriteType.Entity, "chest"), itemSprite, 3, 3); // Name of the chest + super(name, new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "chest").createSpriteLink(), itemSprite, 3, 3); // Name of the chest inventory = new Inventory(); // Initialize the inventory. } diff --git a/src/client/java/minicraft/entity/furniture/Crafter.java b/src/client/java/minicraft/entity/furniture/Crafter.java index 27f40ee23..40a9b8aee 100644 --- a/src/client/java/minicraft/entity/furniture/Crafter.java +++ b/src/client/java/minicraft/entity/furniture/Crafter.java @@ -14,12 +14,18 @@ public class Crafter extends Furniture { public enum Type { - Workbench (new LinkedSprite(SpriteType.Entity, "workbench"), new LinkedSprite(SpriteType.Item, "workbench"), 3, 2, Recipes.workbenchRecipes), - Oven (new LinkedSprite(SpriteType.Entity, "oven"), new LinkedSprite(SpriteType.Item, "oven"), 3, 2, Recipes.ovenRecipes), - Furnace (new LinkedSprite(SpriteType.Entity, "furnace"), new LinkedSprite(SpriteType.Item, "furnace"), 3, 2, Recipes.furnaceRecipes), - Anvil (new LinkedSprite(SpriteType.Entity, "anvil"), new LinkedSprite(SpriteType.Item, "anvil"), 3, 2, Recipes.anvilRecipes), - Enchanter (new LinkedSprite(SpriteType.Entity, "enchanter"), new LinkedSprite(SpriteType.Item, "enchanter"), 7, 2, Recipes.enchantRecipes), - Loom (new LinkedSprite(SpriteType.Entity, "loom"), new LinkedSprite(SpriteType.Item, "loom"), 7, 2, Recipes.loomRecipes); + Workbench (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "workbench").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "workbench").createSpriteLink(), 3, 2, Recipes.workbenchRecipes), + Oven (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "oven").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "oven").createSpriteLink(), 3, 2, Recipes.ovenRecipes), + Furnace (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "furnace").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "furnace").createSpriteLink(), 3, 2, Recipes.furnaceRecipes), + Anvil (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "anvil").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "anvil").createSpriteLink(), 3, 2, Recipes.anvilRecipes), + Enchanter (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "enchanter").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "enchanter").createSpriteLink(), 7, 2, Recipes.enchantRecipes), + Loom (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "loom").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "loom").createSpriteLink(), 7, 2, Recipes.loomRecipes); public ArrayList recipes; protected LinkedSprite sprite; diff --git a/src/client/java/minicraft/entity/furniture/DeathChest.java b/src/client/java/minicraft/entity/furniture/DeathChest.java index 3e7741dd4..dbcff28f3 100644 --- a/src/client/java/minicraft/entity/furniture/DeathChest.java +++ b/src/client/java/minicraft/entity/furniture/DeathChest.java @@ -16,8 +16,8 @@ import minicraft.item.StackableItem; public class DeathChest extends Chest { - private static LinkedSprite normalSprite = new LinkedSprite(SpriteType.Entity, "chest"); - private static LinkedSprite redSprite = new LinkedSprite(SpriteType.Entity, "red_chest"); + private static LinkedSprite normalSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "chest").createSpriteLink(); + private static LinkedSprite redSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "red_chest").createSpriteLink(); public int time; // Time passed (used for death chest despawn) private int redtick = 0; //This is used to determine the shade of red when the chest is about to expire. @@ -28,7 +28,7 @@ public class DeathChest extends Chest { * Creates a custom chest with the name Death Chest */ public DeathChest() { - super("Death Chest", new LinkedSprite(SpriteType.Item, "dungeon_chest")); + super("Death Chest", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "dungeon_chest").createSpriteLink()); this.sprite = normalSprite; /// Set the expiration time based on the world difficulty. diff --git a/src/client/java/minicraft/entity/furniture/DungeonChest.java b/src/client/java/minicraft/entity/furniture/DungeonChest.java index a7aaf9ddf..2f66692e4 100644 --- a/src/client/java/minicraft/entity/furniture/DungeonChest.java +++ b/src/client/java/minicraft/entity/furniture/DungeonChest.java @@ -19,8 +19,8 @@ import java.util.Random; public class DungeonChest extends Chest { - private static final LinkedSprite openSprite = new LinkedSprite(SpriteType.Entity, "dungeon_chest"); - private static final LinkedSprite lockSprite = new LinkedSprite(SpriteType.Entity, "white_chest"); + private static final LinkedSprite openSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "dungeon_chest").createSpriteLink(); + private static final LinkedSprite lockSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "white_chest").createSpriteLink(); public Random random = new Random(); private boolean isLocked; diff --git a/src/client/java/minicraft/entity/furniture/KnightStatue.java b/src/client/java/minicraft/entity/furniture/KnightStatue.java index 566b0ed13..ae135b8e9 100644 --- a/src/client/java/minicraft/entity/furniture/KnightStatue.java +++ b/src/client/java/minicraft/entity/furniture/KnightStatue.java @@ -14,7 +14,8 @@ public class KnightStatue extends Furniture { private final int bossHealth; public KnightStatue(int health) { - super("KnightStatue", new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "knight_statue"), new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Item, "knight_statue"), 3, 2); + super("KnightStatue", new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Entity, "knight_statue").createSpriteLink(), + new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Item, "knight_statue").createSpriteLink(), 3, 2); bossHealth = health; } diff --git a/src/client/java/minicraft/entity/furniture/Lantern.java b/src/client/java/minicraft/entity/furniture/Lantern.java index 857108724..d5a6a95fb 100644 --- a/src/client/java/minicraft/entity/furniture/Lantern.java +++ b/src/client/java/minicraft/entity/furniture/Lantern.java @@ -27,9 +27,9 @@ public enum Type { * @param type Type of lantern. */ public Lantern(Lantern.Type type) { - super(type.title, new LinkedSprite(SpriteType.Entity, type == Type.NORM ? "lantern" : - type == Type.IRON ? "iron_lantern" : "gold_lantern"), new LinkedSprite(SpriteType.Item, type == Type.NORM ? "lantern" : - type == Type.IRON ? "iron_lantern" : "gold_lantern"), 3, 2); + super(type.title, new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, type == Type.NORM ? "lantern" : + type == Type.IRON ? "iron_lantern" : "gold_lantern").createSpriteLink(), new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, type == Type.NORM ? "lantern" : + type == Type.IRON ? "iron_lantern" : "gold_lantern").createSpriteLink(), 3, 2); this.type = type; } diff --git a/src/client/java/minicraft/entity/furniture/Spawner.java b/src/client/java/minicraft/entity/furniture/Spawner.java index 58c7b859d..cd730b6a9 100644 --- a/src/client/java/minicraft/entity/furniture/Spawner.java +++ b/src/client/java/minicraft/entity/furniture/Spawner.java @@ -71,16 +71,17 @@ private void initMob(MobAi m) { * @param m Mob which will be spawned. */ public Spawner(MobAi m) { - super(getClassName(m.getClass()) + " Spawner", new LinkedSprite(SpriteType.Entity, "spawner"), m instanceof Cow ? new LinkedSprite(SpriteType.Item, "cow_spawner"): - m instanceof Pig ? new LinkedSprite(SpriteType.Item, "pig_spawner"): - m instanceof Sheep ? new LinkedSprite(SpriteType.Item, "sheep_spawner"): - m instanceof Slime ? new LinkedSprite(SpriteType.Item, "slime_spawner"): - m instanceof Zombie ? new LinkedSprite(SpriteType.Item, "zombie_spawner"): - m instanceof Creeper ? new LinkedSprite(SpriteType.Item, "creeper_spawner"): - m instanceof Skeleton ? new LinkedSprite(SpriteType.Item, "skeleton_spawner"): - m instanceof Snake ? new LinkedSprite(SpriteType.Item, "snake_spawner"): - m instanceof Knight ? new LinkedSprite(SpriteType.Item, "knight_spawner"): - new LinkedSprite(SpriteType.Item, "air_wizard_spawner"), 7, 2); + super(getClassName(m.getClass()) + " Spawner", new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "spawner").createSpriteLink(), + m instanceof Cow ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cow_spawner").createSpriteLink(): + m instanceof Pig ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "pig_spawner").createSpriteLink(): + m instanceof Sheep ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "sheep_spawner").createSpriteLink(): + m instanceof Slime ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "slime_spawner").createSpriteLink(): + m instanceof Zombie ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "zombie_spawner").createSpriteLink(): + m instanceof Creeper ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "creeper_spawner").createSpriteLink(): + m instanceof Skeleton ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "skeleton_spawner").createSpriteLink(): + m instanceof Snake ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "snake_spawner").createSpriteLink(): + m instanceof Knight ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "knight_spawner").createSpriteLink(): + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "air_wizard_spawner").createSpriteLink(), 7, 2); health = 100; initMob(m); resetSpawnInterval(); diff --git a/src/client/java/minicraft/entity/furniture/Tnt.java b/src/client/java/minicraft/entity/furniture/Tnt.java index 9b659d2c0..f9778aca6 100644 --- a/src/client/java/minicraft/entity/furniture/Tnt.java +++ b/src/client/java/minicraft/entity/furniture/Tnt.java @@ -38,7 +38,8 @@ public class Tnt extends Furniture implements ActionListener { * Creates a new tnt furniture. */ public Tnt() { - super("Tnt", new LinkedSprite(SpriteType.Entity, "tnt"), new LinkedSprite(SpriteType.Item, "tnt"), 3, 2); + super("Tnt", new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "tnt").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "tnt").createSpriteLink(), 3, 2); fuseLit = false; ftik = 0; diff --git a/src/client/java/minicraft/entity/mob/Mob.java b/src/client/java/minicraft/entity/mob/Mob.java index f0bc64aeb..d17b36b76 100644 --- a/src/client/java/minicraft/entity/mob/Mob.java +++ b/src/client/java/minicraft/entity/mob/Mob.java @@ -146,8 +146,8 @@ protected boolean removeWhenFarAway(@SuppressWarnings("unused") double distance) public static LinkedSprite[] compileSpriteList(int sheetX, int sheetY, int width, int height, int mirror, int number, String key) { LinkedSprite[] sprites = new LinkedSprite[number]; for (int i = 0; i < sprites.length; i++) - sprites[i] = new LinkedSprite(SpriteType.Entity, key).setSpriteDim(sheetX + width * i, sheetY, width, height) - .setMirror(mirror).setFlip(mirror); + sprites[i] = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, key).setSpriteDim(sheetX + width * i, sheetY, width, height) + .setMirror(mirror).setFlip(mirror).createSpriteLink(); return sprites; } diff --git a/src/client/java/minicraft/entity/mob/Player.java b/src/client/java/minicraft/entity/mob/Player.java index a669d05ce..4af006f05 100644 --- a/src/client/java/minicraft/entity/mob/Player.java +++ b/src/client/java/minicraft/entity/mob/Player.java @@ -1,6 +1,7 @@ package minicraft.entity.mob; import minicraft.core.Game; +import minicraft.core.Renderer; import minicraft.core.Updater; import minicraft.core.World; import minicraft.core.io.InputHandler; @@ -19,6 +20,7 @@ import minicraft.entity.particle.Particle; import minicraft.entity.particle.TextParticle; import minicraft.gfx.Color; +import minicraft.gfx.MinicraftImage; import minicraft.gfx.Point; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; @@ -60,6 +62,7 @@ import java.util.HashMap; import java.util.List; +import java.util.function.Supplier; public class Player extends Mob implements ItemHolder, ClientTickable { protected InputHandler input; @@ -134,7 +137,7 @@ public class Player extends Mob implements ItemHolder, ClientTickable { public int fishingTicks = maxFishingTicks; public int fishingLevel; - private LinkedSprite hudSheet; + private Supplier hudSheet; // Note: the player's health & max health are inherited from Mob.java @@ -209,7 +212,7 @@ public void updateInv(String items) { spawny = previousInstance.spawny; } - hudSheet = new LinkedSprite(SpriteType.Gui, "hud"); + hudSheet = () -> Renderer.spriteLinker.getSheet(SpriteType.Gui, "hud"); updateSprites(); } @@ -840,21 +843,21 @@ public void render(Screen screen) { // animation effect if (tickTime / 8 % 2 == 0) { - screen.render(xo + 0, yo + 3, 5, 0, 0, hudSheet.getSheet()); // Render the water graphic - screen.render(xo + 8, yo + 3, 5, 0, 1, hudSheet.getSheet()); // Render the mirrored water graphic to the right. + screen.render(xo + 0, yo + 3, 5, 0, 0, hudSheet.get()); // Render the water graphic + screen.render(xo + 8, yo + 3, 5, 0, 1, hudSheet.get()); // Render the mirrored water graphic to the right. } else { - screen.render(xo + 0, yo + 3, 5, 1, 0, hudSheet.getSheet()); - screen.render(xo + 8, yo + 3, 5, 1, 1, hudSheet.getSheet()); + screen.render(xo + 0, yo + 3, 5, 1, 0, hudSheet.get()); + screen.render(xo + 8, yo + 3, 5, 1, 1, hudSheet.get()); } } else if (level.getTile(x / 16, y / 16) == Tiles.get("lava")) { if (tickTime / 8 % 2 == 0) { - screen.render(xo + 0, yo + 3, 6, 0, 1, hudSheet.getSheet()); // Render the lava graphic - screen.render(xo + 8, yo + 3, 6, 0, 0, hudSheet.getSheet()); // Render the mirrored lava graphic to the right. + screen.render(xo + 0, yo + 3, 6, 0, 1, hudSheet.get()); // Render the lava graphic + screen.render(xo + 8, yo + 3, 6, 0, 0, hudSheet.get()); // Render the mirrored lava graphic to the right. } else { - screen.render(xo + 0, yo + 3, 6, 1, 1, hudSheet.getSheet()); - screen.render(xo + 8, yo + 3, 6, 1, 0, hudSheet.getSheet()); + screen.render(xo + 0, yo + 3, 6, 1, 1, hudSheet.get()); + screen.render(xo + 8, yo + 3, 6, 1, 0, hudSheet.get()); } } } @@ -862,10 +865,10 @@ public void render(Screen screen) { // Renders indicator for what tile the item will be placed on if (activeItem instanceof TileItem && !isSwimming()) { Point t = getInteractionTile(); - screen.render(t.x * 16, t.y * 16, 3, 2, 0, hudSheet.getSheet()); - screen.render(t.x * 16 + 8, t.y * 16, 3, 2, 1, hudSheet.getSheet()); - screen.render(t.x * 16, t.y * 16 + 8, 3, 2, 2, hudSheet.getSheet()); - screen.render(t.x * 16 + 8, t.y * 16 + 8, 3, 2, 3, hudSheet.getSheet()); + screen.render(t.x * 16, t.y * 16, 3, 2, 0, hudSheet.get()); + screen.render(t.x * 16 + 8, t.y * 16, 3, 2, 1, hudSheet.get()); + screen.render(t.x * 16, t.y * 16 + 8, 3, 2, 2, hudSheet.get()); + screen.render(t.x * 16 + 8, t.y * 16 + 8, 3, 2, 3, hudSheet.get()); } // Makes the player white if they have just gotten hurt @@ -898,29 +901,29 @@ public void render(Screen screen) { if (attackTime > 0) { switch (attackDir) { case UP: // If currently attacking upwards... - screen.render(xo + 0, yo - 4, 3, 0, 0, hudSheet.getSheet()); // Render left half-slash - screen.render(xo + 8, yo - 4, 3, 0, 1, hudSheet.getSheet()); // Render right half-slash (mirror of left). + screen.render(xo + 0, yo - 4, 3, 0, 0, hudSheet.get()); // Render left half-slash + screen.render(xo + 8, yo - 4, 3, 0, 1, hudSheet.get()); // Render right half-slash (mirror of left). if (attackItem != null && !(attackItem instanceof PowerGloveItem)) { // If the player had an item when they last attacked... screen.render(xo + 4, yo - 4, attackItem.sprite.getSprite(), 1, false); // Then render the icon of the item, mirrored } break; case LEFT: // Attacking to the left... (Same as above) - screen.render(xo - 4, yo, 4, 0, 1, hudSheet.getSheet()); - screen.render(xo - 4, yo + 8, 4, 0, 3, hudSheet.getSheet()); + screen.render(xo - 4, yo, 4, 0, 1, hudSheet.get()); + screen.render(xo - 4, yo + 8, 4, 0, 3, hudSheet.get()); if (attackItem != null && !(attackItem instanceof PowerGloveItem)) { screen.render(xo - 4, yo + 4, attackItem.sprite.getSprite(), 1, false); } break; case RIGHT: // Attacking to the right (Same as above) - screen.render(xo + 8 + 4, yo, 4, 0, 0, hudSheet.getSheet()); - screen.render(xo + 8 + 4, yo + 8, 4, 0, 2, hudSheet.getSheet()); + screen.render(xo + 8 + 4, yo, 4, 0, 0, hudSheet.get()); + screen.render(xo + 8 + 4, yo + 8, 4, 0, 2, hudSheet.get()); if (attackItem != null && !(attackItem instanceof PowerGloveItem)) { screen.render(xo + 8 + 4, yo + 4, attackItem.sprite.getSprite()); } break; case DOWN: // Attacking downwards (Same as above) - screen.render(xo + 0, yo + 8 + 4, 3, 0, 2, hudSheet.getSheet()); - screen.render(xo + 8, yo + 8 + 4, 3, 0, 3, hudSheet.getSheet()); + screen.render(xo + 0, yo + 8 + 4, 3, 0, 2, hudSheet.get()); + screen.render(xo + 8, yo + 8 + 4, 3, 0, 3, hudSheet.get()); if (attackItem != null && !(attackItem instanceof PowerGloveItem)) { screen.render(xo + 4, yo + 8 + 4, attackItem.sprite.getSprite()); } diff --git a/src/client/java/minicraft/entity/particle/BurnParticle.java b/src/client/java/minicraft/entity/particle/BurnParticle.java index 53f0db4b1..3d10d5e9c 100644 --- a/src/client/java/minicraft/entity/particle/BurnParticle.java +++ b/src/client/java/minicraft/entity/particle/BurnParticle.java @@ -4,9 +4,10 @@ public class BurnParticle extends Particle { /// This is used for Spawners, when they spawn an entity. - private static final SpriteLinker.LinkedSprite sprite = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Gui, "hud") - .setSpriteDim(6, 2, 1, 1) - .setMirror(3); + private static final SpriteLinker.LinkedSprite sprite = + new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Gui, "hud") + .setSpriteDim(6, 2, 1, 1) + .setMirror(3).createSpriteLink(); /** * Creates a new particle at the given position. It has a lifetime of 30 ticks diff --git a/src/client/java/minicraft/entity/particle/FireParticle.java b/src/client/java/minicraft/entity/particle/FireParticle.java index cfb3aadb2..ce4aec130 100644 --- a/src/client/java/minicraft/entity/particle/FireParticle.java +++ b/src/client/java/minicraft/entity/particle/FireParticle.java @@ -14,6 +14,7 @@ public class FireParticle extends Particle { * @param y Y map position */ public FireParticle(int x, int y) { - super(x, y, 30, new LinkedSprite(SpriteType.Gui, "hud").setSpriteDim(4, 2, 1, 1)); + super(x, y, 30, new LinkedSprite.SpriteLinkBuilder(SpriteType.Gui, "hud") + .setSpriteDim(4, 2, 1, 1).createSpriteLink()); } } diff --git a/src/client/java/minicraft/entity/particle/SandParticle.java b/src/client/java/minicraft/entity/particle/SandParticle.java index ea268e113..6803fa8c2 100644 --- a/src/client/java/minicraft/entity/particle/SandParticle.java +++ b/src/client/java/minicraft/entity/particle/SandParticle.java @@ -12,7 +12,8 @@ public class SandParticle extends Particle { * @param y Y map position */ public SandParticle(int x, int y) { - super(x, y, 180 + new Random().nextInt(71) - 35, new LinkedSprite(SpriteType.Entity, "sand_dust")); - this.sprite.setMirror(random.nextInt(4)); + super(x, y, 180 + new Random().nextInt(71) - 35, null); + sprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "sand_dust").setMirror(random.nextInt(4)) + .createSpriteLink(); } } diff --git a/src/client/java/minicraft/entity/particle/SmashParticle.java b/src/client/java/minicraft/entity/particle/SmashParticle.java index 3873604c2..a62b13b59 100644 --- a/src/client/java/minicraft/entity/particle/SmashParticle.java +++ b/src/client/java/minicraft/entity/particle/SmashParticle.java @@ -12,6 +12,6 @@ public class SmashParticle extends Particle { * @param y Y map position */ public SmashParticle(int x, int y) { - super(x, y, 10, new LinkedSprite(SpriteType.Entity, "smash")); + super(x, y, 10, new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "smash").createSpriteLink()); } } diff --git a/src/client/java/minicraft/gfx/SpriteAnimation.java b/src/client/java/minicraft/gfx/SpriteAnimation.java index 3b5782676..d611f0e2b 100644 --- a/src/client/java/minicraft/gfx/SpriteAnimation.java +++ b/src/client/java/minicraft/gfx/SpriteAnimation.java @@ -54,8 +54,8 @@ public static void refreshAnimations() { private boolean singletonWithConnective = false; // Refreshing only data. - private SpriteType type; - private String key; + private final SpriteType type; + private final String key; /** * Constructing animations with the provided key. The meta is given by default. @@ -124,43 +124,6 @@ public SpriteAnimation setColor(int frame, int color) { return this; } - /** - * Setting the mirror of all animation frames. - * @param mirror The mirror of sprite/ - * @return The instance itself. - */ - public SpriteAnimation setMirror(int mirror) { - for (LinkedSprite sprite : animations) { - sprite.setMirror(mirror); - } - - return this; - } - - /** - * Setting the mirror of the specific animation frame. - * @param frame The specific frame. - * @param mirror The mirror of sprite. - * @return The instance itself. - */ - public SpriteAnimation setMirror(int frame, int mirror) { - if (frame < 0) frame = 0; - if (frame >= animations.length) frame = animations.length - 1; - animations[frame].setMirror(mirror); - - return this; - } - - /** - * Setting the sprite sheet mirror of all frames. - * @param mirror The mirror of sprite sheet. - * @return The instance itself. - */ - public SpriteAnimation setSpriteMirror(int mirror) { - for (LinkedSprite sprite : animations) sprite.setFlip(mirror); - return this; - } - /** * Getting the current frame of animation. * @return The current frame sprite. @@ -294,14 +257,15 @@ public void refreshAnimation(SpriteMeta metadata) { if (metadata.frames < 1) metadata.frames = 1; animations = new LinkedSprite[metadata.frames]; for (int f = 0; f < animations.length; f++) { - animations[f] = new LinkedSprite(type, key).setSpriteDim(0, f * width, width, width); + animations[f] = new LinkedSprite.SpriteLinkBuilder(type, key).setSpriteDim(0, f * width, width, width) + .createSpriteLink(false); } // Tile sprite only. - if (metadata.border != null) border = new LinkedSprite(type, metadata.border); - if (metadata.corner != null) corner = new LinkedSprite(type, metadata.corner); + if (metadata.border != null) border = new LinkedSprite.SpriteLinkBuilder(type, metadata.border).createSpriteLink(false); + if (metadata.corner != null) corner = new LinkedSprite.SpriteLinkBuilder(type, metadata.corner).createSpriteLink(false); } else { - animations = new LinkedSprite[] {new LinkedSprite(type, key).setSpriteSize(width, width)}; + animations = new LinkedSprite[] {new LinkedSprite.SpriteLinkBuilder(type, key).setSpriteSize(width, width).createSpriteLink(false)}; border = null; corner = null; } diff --git a/src/client/java/minicraft/gfx/SpriteLinker.java b/src/client/java/minicraft/gfx/SpriteLinker.java index cd987ac6f..7049e9743 100644 --- a/src/client/java/minicraft/gfx/SpriteLinker.java +++ b/src/client/java/minicraft/gfx/SpriteLinker.java @@ -43,12 +43,12 @@ public void setSprite(SpriteType t, String key, MinicraftImage spriteSheet) { /** * Getting the sprite sheet with the category and key. - * @param t The sprite category + * @param spriteType The sprite category * @param key The resource key. * @return The sprite sheet. null if not found. */ - public MinicraftImage getSheet(SpriteType t, String key) { - switch (t) { + public MinicraftImage getSheet(SpriteType spriteType, String key) { + switch (spriteType) { case Entity: return entitySheets.get(key); case Gui: return guiSheets.get(key); case Item: return itemSheets.get(key); @@ -58,11 +58,9 @@ public MinicraftImage getSheet(SpriteType t, String key) { return null; } - /** Cleaing all skin sheets in entity sheets. */ + /** Clearing all skin sheets in entity sheets. */ public void clearSkins() { - for (String k : new ArrayList<>(entitySheets.keySet())) { - if (k.startsWith("skin.")) entitySheets.remove(k); - } + entitySheets.keySet().removeIf(k -> k.startsWith("skin.")); } /** @@ -74,16 +72,24 @@ public void setSkin(String key, MinicraftImage spriteSheet) { setSprite(SpriteType.Entity, key, spriteSheet); } + private static final String MISSING_ENTITY_KEY = "missing_entity", MISSING_ITEM_KEY = "missing_item", MISSING_TILE_KEY = "missing_tile"; + + /** Textures for missing textures for entity, item or tile */ + public static final LinkedSprite + MISSING_ENTITY_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, MISSING_ENTITY_KEY).createSpriteLink(true), + MISSING_ITEM_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, MISSING_ITEM_KEY).createSpriteLink(true), + MISSING_TILE_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, MISSING_TILE_KEY).createSpriteLink(true); + /** - * Getting the missing texture texture with the specific sprite type. + * Getting the missing texture with the specific sprite category. * @param type The sprite category. - * @return The missing texture or null if invalid sprite type. + * @return The missing texture or null if invalid sprite category. */ public static LinkedSprite missingTexture(SpriteType type) { switch (type) { - case Entity: return new LinkedSprite(SpriteType.Entity, "missing_entity"); - case Item: return new LinkedSprite(SpriteType.Item, "missing_item"); - case Tile: return new LinkedSprite(SpriteType.Tile, "missing_tile"); + case Entity: return MISSING_ENTITY_TEXTURE; + case Item: return MISSING_ITEM_TEXTURE; + case Tile: return MISSING_TILE_TEXTURE; default: return null; } } @@ -95,9 +101,9 @@ public static LinkedSprite missingTexture(SpriteType type) { */ public MinicraftImage missingSheet(SpriteType type) { switch (type) { // The sheets should be found. - case Entity: return entitySheets.get("missing_entity"); - case Item: return itemSheets.get("missing_item"); - case Tile: return tileSheets.get("missing_tile"); + case Entity: return entitySheets.get(MISSING_ENTITY_KEY); + case Item: return itemSheets.get(MISSING_ITEM_KEY); + case Tile: return tileSheets.get(MISSING_TILE_KEY); default: return null; } } @@ -105,7 +111,7 @@ public MinicraftImage missingSheet(SpriteType type) { /** Updating all existing LinkedSheet for resource pack application. */ public void updateLinkedSheets() { Logging.SPRITE.debug("Updating all LinkedSprite."); - linkedSheets.forEach(s -> s.reload()); + linkedSheets.forEach(LinkedSprite::reloadSprite); } /** The metadata of the sprite sheet. */ @@ -118,49 +124,38 @@ public static class SpriteMeta { } /** The sprite categories in the image resources. TODO Removed for the new save system */ - public static enum SpriteType { - Item, Gui, Tile, Entity; // Only for resource packs; Skin is not applied. - } - - /** - * Linking the LinkedSprite into specific sheet map. This should only be used by {@link LinkedSprite}. - * @param sheet The sprite to be linked. - * @param type The sprite type to be linked. - */ - public void linkSpriteSheet(LinkedSprite sheet, SpriteType type) { - // Because of the private access. - switch (type) { - case Entity: sheet.linkedMap = Renderer.spriteLinker.entitySheets; break; - case Gui: sheet.linkedMap = Renderer.spriteLinker.guiSheets; break; - case Item: sheet.linkedMap = Renderer.spriteLinker.itemSheets; break; - case Tile: sheet.linkedMap = Renderer.spriteLinker.tileSheets; break; - } + public enum SpriteType { + Item, Gui, Tile, Entity // Only for resource packs; Skin is not applied. } /** A sprite collector with resource collector. */ public static class LinkedSprite implements Destroyable { private final String key; // The resource key. + private final SpriteType spriteType; + private final HashMap linkedMap; - /** The sprite configuration. */ - private int x, y, w, h, color = -1, mirror = 0, flip = 0; + /** Sprite configurations. */ + private final int x, y, w, h, mirror, flip; + private int color; // Modifiable due to the property of Sprite#color + private final boolean immutable; // Whether the color field is immutable. // Sprite data. - private HashMap linkedMap; - private SpriteType spriteType; - private Sprite sprite; - private boolean destoryed; // It is not linked when destoryed. - private boolean reloaded = false; // Whether the sprite is reloaded. + private Sprite sprite = null; + private boolean destroyed = false; // It is not linked when destroyed. - /** - * Create new LinkedSprite for the specific category and resource key. - * @param t The category of the sprite. - * @param key The resource key of the sprite. - */ - public LinkedSprite(SpriteType t, String key) { + private LinkedSprite(SpriteType spriteType, String key, HashMap linkedMap, + int x, int y, int w, int h, int color, int mirror, int flip, boolean immutable) { this.key = key; - this.spriteType = t; - Renderer.spriteLinker.linkSpriteSheet(this, t); - Renderer.spriteLinker.linkedSheets.add(this); + this.spriteType = spriteType; + this.linkedMap = linkedMap; + this.x = x; + this.y = y; + this.w = w; + this.h = h; + this.color = color; + this.mirror = mirror; + this.flip = flip; + this.immutable = immutable; } /** @@ -172,71 +167,15 @@ public MinicraftImage getSheet() { } /** - * Setting the sprite size. - * @param w The sprite width. - * @param h The sprite height - * @return The instance itself. - */ - public LinkedSprite setSpriteSize(int w, int h) { - this.w = w; - this.h = h; - reloaded = false; // Reload this. - return this; - } - /** - * Setting the sprite position. - * @param x The x position of the sprite. - * @param y The y position of the sprite. - * @return The instance itself. - */ - public LinkedSprite setSpritePos(int x, int y) { - this.x = x; - this.y = y; - reloaded = false; // Reload this. - return this; - } - /** - * Setting the sprite position and size. - * @param x The x position of the sprite. - * @param y The y position of the sprite. - * @param w The sprite width. - * @param h The sprite height - * @return The instance itself. - */ - public LinkedSprite setSpriteDim(int x, int y, int w, int h) { - setSpriteSize(w, h); - setSpritePos(x, y); - reloaded = false; // Reload this. - return this; - } - /** - * Setting the white tint. + * Setting the white tint. The value is unchanged if the object is set as immutable. * @param color The color of the white tint. * @return The instance itself. */ public LinkedSprite setColor(int color) { - this.color = color; - reloaded = false; // Reload this. - return this; - } - /** - * Setting the mirror of the sprite. - * @param mirror The mirror of the sprite. - * @return The instance itself. - */ - public LinkedSprite setMirror(int mirror) { - this.mirror = mirror; - reloaded = false; // Reload this. - return this; - } - /** - * Setting the flip of the sprite sheet. - * @param flip The mirror of the sprite sheet. - * @return The instance itself. - */ - public LinkedSprite setFlip(int flip) { - this.flip = flip; - reloaded = false; + if (immutable) { + this.color = color; + if (sprite != null) sprite.color = color; + } return this; } @@ -245,54 +184,146 @@ public LinkedSprite setFlip(int flip) { * @return The generated sprite. */ public Sprite getSprite() { - if (!reloaded) { // Reload if it requires to be reloaded. - reloadSprite(); - } - return sprite; } - /** Requiring the sprite to be reloaded when the next time generated. */ - public void reload() { reloaded = false; } /** Reloading the sprite with the configuration. */ private void reloadSprite() { MinicraftImage sheet = linkedMap.get(key); if (sheet != null) { - if (w <= 0) w = sheet.width / 8; // Set the size as the maximum size of the sheet. - if (h <= 0) h = sheet.height / 8; // Set the size as the maximum size of the sheet. - - boolean flipX = (0x01 & flip) > 0, flipY = (0x02 & flip) > 0; - - Sprite.Px[][] pixels = new Sprite.Px[h][w]; - for (int r = 0; r < h; r++) { - for (int c = 0; c < w; c++) { - // The offsets are there to determine the pixel that will be there: the one in order, or on the opposite side. - int xOffset = flipX ? w-1 - c : c; - int yOffset = flipY ? h-1 - r : r; - pixels[r][c] = new Sprite.Px(x + xOffset, y + yOffset, mirror, sheet); + if ((x + w) * 8 <= sheet.width && (y + h) * 8 <= sheet.height) { + boolean flipX = (0x01 & flip) > 0, flipY = (0x02 & flip) > 0; + Sprite.Px[][] pixels = new Sprite.Px[h][w]; + for (int r = 0; r < h; r++) { + for (int c = 0; c < w; c++) { + // The offsets are there to determine the pixel that will be there: the one in order, or on the opposite side. + int xOffset = flipX ? w-1 - c : c; + int yOffset = flipY ? h-1 - r : r; + pixels[r][c] = new Sprite.Px(x + xOffset, y + yOffset, mirror, sheet); + } } - } - sprite = new Sprite(pixels); - sprite.color = color; + sprite = new Sprite(pixels); + sprite.color = color; + } else { + Logging.SPRITE.warn("SpriteSheet or required sprite with resource ID is invalid: {}", key); + sprite = missingTexture(spriteType).getSprite(); + } } else { Logging.SPRITE.warn("SpriteSheet with resource ID not found: {}", key); sprite = missingTexture(spriteType).getSprite(); } - - reloaded = true; } /** Unlink this LinkedSprite from SpriteLinker. */ @Override public void destroy() throws DestroyFailedException { Renderer.spriteLinker.linkedSheets.remove(this); // Unlink this instance. - destoryed = true; + destroyed = true; } - /** If this LinkedSprite is unlinked from SpriteLinker. */ + /** If this {@link LinkedSprite} is unlinked from {@link SpriteLinker}. */ @Override public boolean isDestroyed() { - return destoryed; + return destroyed; + } + + public static class SpriteLinkBuilder { + private final String key; // The resource key. + private final SpriteType spriteType; + + private int x, y, w, h, color = -1, mirror = 0, flip = 0; + + /** + * Create new {@link SpriteLinkBuilder} for the creation of {@link LinkedSprite} with the specific category and resource key. + * @param spriteType The category of the sprite. + * @param key The resource key of the sprite. + */ + public SpriteLinkBuilder(SpriteType spriteType, String key) { + this.key = key; + this.spriteType = spriteType; + } + + /** + * Setting the sprite size. + * @param w The sprite width. + * @param h The sprite height + * @return The instance itself. + */ + public SpriteLinkBuilder setSpriteSize(int w, int h) { + this.w = w; + this.h = h; + return this; + } + + /** + * Setting the sprite position. + * @param x The x position of the sprite. + * @param y The y position of the sprite. + * @return The instance itself. + */ + public SpriteLinkBuilder setSpritePos(int x, int y) { + this.x = x; + this.y = y; + return this; + } + + /** + * Setting the sprite position and size. + * @param x The x position of the sprite. + * @param y The y position of the sprite. + * @param w The sprite width. + * @param h The sprite height + * @return The instance itself. + */ + public SpriteLinkBuilder setSpriteDim(int x, int y, int w, int h) { + setSpriteSize(w, h); + setSpritePos(x, y); + return this; + } + + /** + * Setting the white tint. + * @param color The color of the white tint. + * @return The instance itself. + */ + public SpriteLinkBuilder setColor(int color) { + this.color = color; + return this; + } + + /** + * Setting the mirror of the sprite. + * @param mirror The mirror of the sprite. + * @return The instance itself. + */ + public SpriteLinkBuilder setMirror(int mirror) { + this.mirror = mirror; + return this; + } + + /** + * Setting the flip of the sprite sheet. + * @param flip The mirror of the sprite sheet. + * @return The instance itself. + */ + public SpriteLinkBuilder setFlip(int flip) { + this.flip = flip; + return this; + } + + public LinkedSprite createSpriteLink() { return createSpriteLink(true); } + public LinkedSprite createSpriteLink(boolean immutable) { + HashMap linkedMap; + switch (spriteType) { + case Entity: linkedMap = Renderer.spriteLinker.entitySheets; break; + default: case Gui: linkedMap = Renderer.spriteLinker.guiSheets; break; + case Item: linkedMap = Renderer.spriteLinker.itemSheets; break; + case Tile: linkedMap = Renderer.spriteLinker.tileSheets; break; + } + LinkedSprite sprite = new LinkedSprite(spriteType, key, linkedMap, x, y, w, h, color, mirror, flip, immutable); + Renderer.spriteLinker.linkedSheets.add(sprite); + return sprite; + } } } } diff --git a/src/client/java/minicraft/item/ArmorItem.java b/src/client/java/minicraft/item/ArmorItem.java index 430fc3b85..b555d406b 100644 --- a/src/client/java/minicraft/item/ArmorItem.java +++ b/src/client/java/minicraft/item/ArmorItem.java @@ -15,11 +15,16 @@ public class ArmorItem extends StackableItem { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new ArmorItem("Leather Armor", new LinkedSprite(SpriteType.Item, "leather_armor"), .3f, 1)); - items.add(new ArmorItem("Snake Armor", new LinkedSprite(SpriteType.Item, "snake_armor"), .4f, 2)); - items.add(new ArmorItem("Iron Armor", new LinkedSprite(SpriteType.Item, "iron_armor"), .5f, 3)); - items.add(new ArmorItem("Gold Armor", new LinkedSprite(SpriteType.Item, "gold_armor"), .7f, 4)); - items.add(new ArmorItem("Gem Armor", new LinkedSprite(SpriteType.Item, "gem_armor"), 1f, 5)); + items.add(new ArmorItem("Leather Armor", + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "leather_armor").createSpriteLink(), .3f, 1)); + items.add(new ArmorItem("Snake Armor", + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "snake_armor").createSpriteLink(), .4f, 2)); + items.add(new ArmorItem("Iron Armor", + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "iron_armor").createSpriteLink(), .5f, 3)); + items.add(new ArmorItem("Gold Armor", + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gold_armor").createSpriteLink(), .7f, 4)); + items.add(new ArmorItem("Gem Armor", + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gem_armor").createSpriteLink(), 1f, 5)); return items; } diff --git a/src/client/java/minicraft/item/BookItem.java b/src/client/java/minicraft/item/BookItem.java index f5f1c911c..622367cc4 100644 --- a/src/client/java/minicraft/item/BookItem.java +++ b/src/client/java/minicraft/item/BookItem.java @@ -17,8 +17,9 @@ public class BookItem extends Item { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList(); - items.add(new BookItem("Book", new LinkedSprite(SpriteType.Item, "book"), null)); - items.add(new BookItem("Antidious", new LinkedSprite(SpriteType.Item, "antidious_book"), () -> BookData.antVenomBook.collect(), true)); + items.add(new BookItem("Book", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "book").createSpriteLink(), null)); + items.add(new BookItem("Antidious", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "antidious_book") + .createSpriteLink(), () -> BookData.antVenomBook.collect(), true)); return items; } diff --git a/src/client/java/minicraft/item/BucketItem.java b/src/client/java/minicraft/item/BucketItem.java index 81e8ad6f1..55637f61f 100644 --- a/src/client/java/minicraft/item/BucketItem.java +++ b/src/client/java/minicraft/item/BucketItem.java @@ -49,8 +49,8 @@ private static Fill getFilling(Tile tile) { private BucketItem(Fill fill) { this(fill, 1); } private BucketItem(Fill fill, int count) { - super(fill.toString() + " Bucket", new LinkedSprite(SpriteType.Item, fill == Fill.Empty ? "bucket" : - fill == Fill.Lava ? "lava_bucket" : "water_bucket"), count); + super(fill.toString() + " Bucket", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, fill == Fill.Empty ? "bucket" : + fill == Fill.Lava ? "lava_bucket" : "water_bucket").createSpriteLink(), count); this.filling = fill; } diff --git a/src/client/java/minicraft/item/ClothingItem.java b/src/client/java/minicraft/item/ClothingItem.java index b453ffacf..976fd4d4b 100644 --- a/src/client/java/minicraft/item/ClothingItem.java +++ b/src/client/java/minicraft/item/ClothingItem.java @@ -16,15 +16,15 @@ public class ClothingItem extends StackableItem { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new ClothingItem("Red Clothes", new LinkedSprite(SpriteType.Item, "red_clothes"), Color.get(1, 204, 0, 0))); - items.add(new ClothingItem("Blue Clothes", new LinkedSprite(SpriteType.Item, "blue_clothes"), Color.get(1, 0, 0, 204))); - items.add(new ClothingItem("Green Clothes", new LinkedSprite(SpriteType.Item, "green_clothes"), Color.get(1, 0, 204, 0))); - items.add(new ClothingItem("Yellow Clothes", new LinkedSprite(SpriteType.Item, "yellow_clothes"), Color.get(1, 204, 204, 0))); - items.add(new ClothingItem("Black Clothes", new LinkedSprite(SpriteType.Item, "black_clothes"), Color.get(1, 51))); - items.add(new ClothingItem("Orange Clothes", new LinkedSprite(SpriteType.Item, "orange_clothes"), Color.get(1, 255, 102, 0))); - items.add(new ClothingItem("Purple Clothes", new LinkedSprite(SpriteType.Item, "purple_clothes"), Color.get(1, 102, 0, 153))); - items.add(new ClothingItem("Cyan Clothes", new LinkedSprite(SpriteType.Item, "cyan_clothes"), Color.get(1, 0, 102, 153))); - items.add(new ClothingItem("Reg Clothes", new LinkedSprite(SpriteType.Item, "reg_clothes"), Color.get(1, 51, 51, 0))); + items.add(new ClothingItem("Red Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "red_clothes").createSpriteLink(), Color.get(1, 204, 0, 0))); + items.add(new ClothingItem("Blue Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "blue_clothes").createSpriteLink(), Color.get(1, 0, 0, 204))); + items.add(new ClothingItem("Green Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "green_clothes").createSpriteLink(), Color.get(1, 0, 204, 0))); + items.add(new ClothingItem("Yellow Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "yellow_clothes").createSpriteLink(), Color.get(1, 204, 204, 0))); + items.add(new ClothingItem("Black Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "black_clothes").createSpriteLink(), Color.get(1, 51))); + items.add(new ClothingItem("Orange Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "orange_clothes").createSpriteLink(), Color.get(1, 255, 102, 0))); + items.add(new ClothingItem("Purple Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "purple_clothes").createSpriteLink(), Color.get(1, 102, 0, 153))); + items.add(new ClothingItem("Cyan Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cyan_clothes").createSpriteLink(), Color.get(1, 0, 102, 153))); + items.add(new ClothingItem("Reg Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "reg_clothes").createSpriteLink(), Color.get(1, 51, 51, 0))); return items; } diff --git a/src/client/java/minicraft/item/FishingRodItem.java b/src/client/java/minicraft/item/FishingRodItem.java index 5a8fade64..7f5b49702 100644 --- a/src/client/java/minicraft/item/FishingRodItem.java +++ b/src/client/java/minicraft/item/FishingRodItem.java @@ -47,8 +47,8 @@ protected static ArrayList getAllInstances() { }; public FishingRodItem(int level) { - super(LEVEL_NAMES[level] + " Fishing Rod", new LinkedSprite(SpriteType.Item, - LEVEL_NAMES[level].toLowerCase().replace("wood", "wooden") + "_fishing_rod")); + super(LEVEL_NAMES[level] + " Fishing Rod", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, + LEVEL_NAMES[level].toLowerCase().replace("wood", "wooden") + "_fishing_rod").createSpriteLink()); this.level = level; } diff --git a/src/client/java/minicraft/item/FoodItem.java b/src/client/java/minicraft/item/FoodItem.java index 424096d2a..f891f2ea4 100644 --- a/src/client/java/minicraft/item/FoodItem.java +++ b/src/client/java/minicraft/item/FoodItem.java @@ -15,16 +15,16 @@ public class FoodItem extends StackableItem { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new FoodItem("Baked Potato", new LinkedSprite(SpriteType.Item, "baked_potato"), 1)); - items.add(new FoodItem("Apple", new LinkedSprite(SpriteType.Item, "apple"), 1)); - items.add(new FoodItem("Raw Pork", new LinkedSprite(SpriteType.Item, "pork"), 1)); - items.add(new FoodItem("Raw Fish", new LinkedSprite(SpriteType.Item, "fish"), 1)); - items.add(new FoodItem("Raw Beef", new LinkedSprite(SpriteType.Item, "beef"), 1)); - items.add(new FoodItem("Bread", new LinkedSprite(SpriteType.Item, "bread"), 2)); - items.add(new FoodItem("Cooked Fish", new LinkedSprite(SpriteType.Item, "cooked_fish"), 3)); - items.add(new FoodItem("Cooked Pork", new LinkedSprite(SpriteType.Item, "cooked_pork"), 3)); - items.add(new FoodItem("Steak", new LinkedSprite(SpriteType.Item, "cooked_beef"), 3)); - items.add(new FoodItem("Gold Apple", new LinkedSprite(SpriteType.Item, "golden_apple"), 10)); + items.add(new FoodItem("Baked Potato", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "baked_potato").createSpriteLink(), 1)); + items.add(new FoodItem("Apple", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "apple").createSpriteLink(), 1)); + items.add(new FoodItem("Raw Pork", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "pork").createSpriteLink(), 1)); + items.add(new FoodItem("Raw Fish", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "fish").createSpriteLink(), 1)); + items.add(new FoodItem("Raw Beef", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "beef").createSpriteLink(), 1)); + items.add(new FoodItem("Bread", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "bread").createSpriteLink(), 2)); + items.add(new FoodItem("Cooked Fish", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cooked_fish").createSpriteLink(), 3)); + items.add(new FoodItem("Cooked Pork", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cooked_pork").createSpriteLink(), 3)); + items.add(new FoodItem("Steak", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cooked_beef").createSpriteLink(), 3)); + items.add(new FoodItem("Gold Apple", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "golden_apple").createSpriteLink(), 10)); return items; } diff --git a/src/client/java/minicraft/item/HeartItem.java b/src/client/java/minicraft/item/HeartItem.java index 320fec1ed..f5bbaf737 100644 --- a/src/client/java/minicraft/item/HeartItem.java +++ b/src/client/java/minicraft/item/HeartItem.java @@ -14,7 +14,8 @@ public class HeartItem extends StackableItem { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new HeartItem("Obsidian Heart", new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Item, "obsidian_heart"), 5)); + items.add(new HeartItem("Obsidian Heart", + new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Item, "obsidian_heart").createSpriteLink(), 5)); return items; } diff --git a/src/client/java/minicraft/item/PotionItem.java b/src/client/java/minicraft/item/PotionItem.java index 7146ec279..85a372b7f 100644 --- a/src/client/java/minicraft/item/PotionItem.java +++ b/src/client/java/minicraft/item/PotionItem.java @@ -26,7 +26,8 @@ protected static ArrayList getAllInstances() { private PotionItem(PotionType type) { this(type, 1); } private PotionItem(PotionType type, int count) { - super(type.name, new LinkedSprite(SpriteType.Item, "potion").setColor(type.dispColor), count); + super(type.name, new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "potion") + .setColor(type.dispColor).createSpriteLink(), count); this.type = type; } diff --git a/src/client/java/minicraft/item/StackableItem.java b/src/client/java/minicraft/item/StackableItem.java index 66479a80d..c93fe1ddb 100644 --- a/src/client/java/minicraft/item/StackableItem.java +++ b/src/client/java/minicraft/item/StackableItem.java @@ -15,28 +15,28 @@ public class StackableItem extends Item { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new StackableItem("Wood", new LinkedSprite(SpriteType.Item, "wood"))); - items.add(new StackableItem("Leather", new LinkedSprite(SpriteType.Item, "leather"))); - items.add(new StackableItem("Wheat", new LinkedSprite(SpriteType.Item, "wheat"))); - items.add(new StackableItem("Key", new LinkedSprite(SpriteType.Item, "key"))); - items.add(new StackableItem("arrow", new LinkedSprite(SpriteType.Item, "arrow"))); - items.add(new StackableItem("string", new LinkedSprite(SpriteType.Item, "string"))); - items.add(new StackableItem("Coal", new LinkedSprite(SpriteType.Item, "coal"))); - items.add(new StackableItem("Iron Ore", new LinkedSprite(SpriteType.Item, "iron_ore"))); - items.add(new StackableItem("Lapis", new LinkedSprite(SpriteType.Item, "lapis"))); - items.add(new StackableItem("Gold Ore", new LinkedSprite(SpriteType.Item, "gold_ore"))); - items.add(new StackableItem("Iron", new LinkedSprite(SpriteType.Item, "iron_ingot"))); - items.add(new StackableItem("Gold", new LinkedSprite(SpriteType.Item, "gold_ingot"))); - items.add(new StackableItem("Rose", new LinkedSprite(SpriteType.Item, "red_flower"))); - items.add(new StackableItem("Gunpowder", new LinkedSprite(SpriteType.Item, "gunpowder"))); - items.add(new StackableItem("Slime", new LinkedSprite(SpriteType.Item, "slime"))); - items.add(new StackableItem("glass", new LinkedSprite(SpriteType.Item, "glass"))); - items.add(new StackableItem("cloth", new LinkedSprite(SpriteType.Item, "cloth"))); - items.add(new StackableItem("gem", new LinkedSprite(SpriteType.Item, "gem"))); - items.add(new StackableItem("Scale", new LinkedSprite(SpriteType.Item, "scale"))); - items.add(new StackableItem("Shard", new LinkedSprite(SpriteType.Item, "shard"))); - items.add(new StackableItem("Cloud Ore", new LinkedSprite(SpriteType.Item, "cloud_ore"))); - items.add(new StackableItem("Glass Bottle", new LinkedSprite(SpriteType.Item, "glass_bottle"))); + items.add(new StackableItem("Wood", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "wood").createSpriteLink())); + items.add(new StackableItem("Leather", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "leather").createSpriteLink())); + items.add(new StackableItem("Wheat", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "wheat").createSpriteLink())); + items.add(new StackableItem("Key", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "key").createSpriteLink())); + items.add(new StackableItem("arrow", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "arrow").createSpriteLink())); + items.add(new StackableItem("string", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "string").createSpriteLink())); + items.add(new StackableItem("Coal", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "coal").createSpriteLink())); + items.add(new StackableItem("Iron Ore", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "iron_ore").createSpriteLink())); + items.add(new StackableItem("Lapis", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "lapis").createSpriteLink())); + items.add(new StackableItem("Gold Ore", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gold_ore").createSpriteLink())); + items.add(new StackableItem("Iron", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "iron_ingot").createSpriteLink())); + items.add(new StackableItem("Gold", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gold_ingot").createSpriteLink())); + items.add(new StackableItem("Rose", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "red_flower").createSpriteLink())); + items.add(new StackableItem("Gunpowder", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gunpowder").createSpriteLink())); + items.add(new StackableItem("Slime", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "slime").createSpriteLink())); + items.add(new StackableItem("glass", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "glass").createSpriteLink())); + items.add(new StackableItem("cloth", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cloth").createSpriteLink())); + items.add(new StackableItem("gem", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gem").createSpriteLink())); + items.add(new StackableItem("Scale", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "scale").createSpriteLink())); + items.add(new StackableItem("Shard", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "shard").createSpriteLink())); + items.add(new StackableItem("Cloud Ore", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cloud_ore").createSpriteLink())); + items.add(new StackableItem("Glass Bottle", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "glass_bottle").createSpriteLink())); return items; } diff --git a/src/client/java/minicraft/item/SummonItem.java b/src/client/java/minicraft/item/SummonItem.java index de4508c5d..4813dd114 100644 --- a/src/client/java/minicraft/item/SummonItem.java +++ b/src/client/java/minicraft/item/SummonItem.java @@ -22,8 +22,9 @@ public class SummonItem extends StackableItem { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new SummonItem("Totem of Air", new LinkedSprite(SpriteType.Item, "air_totem"), "Air Wizard")); - items.add(new SummonItem("Obsidian Poppet", new LinkedSprite(SpriteType.Item, "knight_statue"), "Obsidian Knight")); //TODO: Obsidian Poppet Textures + items.add(new SummonItem("Totem of Air", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "air_totem").createSpriteLink(), "Air Wizard")); + items.add(new SummonItem("Obsidian Poppet", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "knight_statue") + .createSpriteLink(), "Obsidian Knight")); //TODO: Obsidian Poppet Textures return items; } diff --git a/src/client/java/minicraft/item/TileItem.java b/src/client/java/minicraft/item/TileItem.java index 0212fbdcd..7cb2ca311 100644 --- a/src/client/java/minicraft/item/TileItem.java +++ b/src/client/java/minicraft/item/TileItem.java @@ -25,40 +25,40 @@ protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); /// TileItem sprites all have 1x1 sprites. - items.add(new TileItem("Flower", new LinkedSprite(SpriteType.Item, "white_flower"), "flower", "grass")); - items.add(new TileItem("Acorn", new LinkedSprite(SpriteType.Item, "acorn"), "tree Sapling", "grass")); - items.add(new TileItem("Dirt", new LinkedSprite(SpriteType.Item, "dirt"), "dirt", "hole", "water", "lava")); - items.add(new TileItem("Natural Rock", new LinkedSprite(SpriteType.Item, "stone"), "rock", "hole", "dirt", "sand", "grass", "path", "water", "lava")); - - items.add(new TileItem("Plank", new LinkedSprite(SpriteType.Item, "plank"), "Wood Planks", "hole", "water", "cloud")); - items.add(new TileItem("Plank Wall", new LinkedSprite(SpriteType.Item, "plank_wall"), "Wood Wall", "Wood Planks")); - items.add(new TileItem("Wood Door", new LinkedSprite(SpriteType.Item, "wood_door"), "Wood Door", "Wood Planks")); - items.add(new TileItem("Stone", new LinkedSprite(SpriteType.Item, "stone"), "Stone", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Stone Brick", new LinkedSprite(SpriteType.Item, "stone_brick"), "Stone Bricks", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Ornate Stone", new LinkedSprite(SpriteType.Item, "stone_brick"), "Ornate Stone", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Stone Wall", new LinkedSprite(SpriteType.Item, "stone_wall"), "Stone Wall", "Stone Bricks")); - items.add(new TileItem("Stone Door", new LinkedSprite(SpriteType.Item, "stone_wall"), "Stone Door", "Stone Bricks")); - items.add(new TileItem("Raw Obsidian", new LinkedSprite(SpriteType.Item, "obsidian"), "Raw Obsidian", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Obsidian Brick", new LinkedSprite(SpriteType.Item, "obsidian_brick"), "Obsidian", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Ornate Obsidian", new LinkedSprite(SpriteType.Item, "obsidian_brick"), "Ornate Obsidian","hole", "water", "cloud", "lava")); - items.add(new TileItem("Obsidian Wall", new LinkedSprite(SpriteType.Item, "obsidian_wall"), "Obsidian Wall", "Obsidian")); - items.add(new TileItem("Obsidian Door", new LinkedSprite(SpriteType.Item, "obsidian_door"), "Obsidian Door", "Obsidian")); - - items.add(new TileItem("Wool", new LinkedSprite(SpriteType.Item, "wool"), "Wool", "hole", "water")); - items.add(new TileItem("Red Wool", new LinkedSprite(SpriteType.Item, "red_wool"), "Red Wool", "hole", "water")); - items.add(new TileItem("Blue Wool", new LinkedSprite(SpriteType.Item, "blue_wool"), "Blue Wool", "hole", "water")); - items.add(new TileItem("Green Wool", new LinkedSprite(SpriteType.Item, "green_wool"), "Green Wool", "hole", "water")); - items.add(new TileItem("Yellow Wool", new LinkedSprite(SpriteType.Item, "yellow_wool"), "Yellow Wool", "hole", "water")); - items.add(new TileItem("Black Wool", new LinkedSprite(SpriteType.Item, "black_wool"), "Black Wool", "hole", "water")); - - items.add(new TileItem("Sand", new LinkedSprite(SpriteType.Item, "sand"), "sand", "hole", "water", "lava")); - items.add(new TileItem("Cactus", new LinkedSprite(SpriteType.Item, "cactus"), "cactus Sapling", "sand")); - items.add(new TileItem("Bone", new LinkedSprite(SpriteType.Item, "bone"), "tree", "tree Sapling")); - items.add(new TileItem("Cloud", new LinkedSprite(SpriteType.Item, "cloud"), "cloud", "Infinite Fall")); - - items.add(new TileItem("Wheat Seeds", new LinkedSprite(SpriteType.Item, "seed"), "wheat", "farmland")); - items.add(new TileItem("Potato", new LinkedSprite(SpriteType.Item, "potato"), "potato", "farmland")); - items.add(new TileItem("Grass Seeds", new LinkedSprite(SpriteType.Item, "seed"), "grass", "dirt")); + items.add(new TileItem("Flower", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "white_flower").createSpriteLink(), "flower", "grass")); + items.add(new TileItem("Acorn", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "acorn").createSpriteLink(), "tree Sapling", "grass")); + items.add(new TileItem("Dirt", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "dirt").createSpriteLink(), "dirt", "hole", "water", "lava")); + items.add(new TileItem("Natural Rock", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone").createSpriteLink(), "rock", "hole", "dirt", "sand", "grass", "path", "water", "lava")); + + items.add(new TileItem("Plank", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "plank").createSpriteLink(), "Wood Planks", "hole", "water", "cloud")); + items.add(new TileItem("Plank Wall", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "plank_wall").createSpriteLink(), "Wood Wall", "Wood Planks")); + items.add(new TileItem("Wood Door", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "wood_door").createSpriteLink(), "Wood Door", "Wood Planks")); + items.add(new TileItem("Stone", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone").createSpriteLink(), "Stone", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Stone Brick", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone_brick").createSpriteLink(), "Stone Bricks", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Ornate Stone", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone_brick").createSpriteLink(), "Ornate Stone", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Stone Wall", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone_wall").createSpriteLink(), "Stone Wall", "Stone Bricks")); + items.add(new TileItem("Stone Door", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone_wall").createSpriteLink(), "Stone Door", "Stone Bricks")); + items.add(new TileItem("Raw Obsidian", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian").createSpriteLink(), "Raw Obsidian", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Obsidian Brick", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian_brick").createSpriteLink(), "Obsidian", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Ornate Obsidian", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian_brick").createSpriteLink(), "Ornate Obsidian","hole", "water", "cloud", "lava")); + items.add(new TileItem("Obsidian Wall", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian_wall").createSpriteLink(), "Obsidian Wall", "Obsidian")); + items.add(new TileItem("Obsidian Door", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian_door").createSpriteLink(), "Obsidian Door", "Obsidian")); + + items.add(new TileItem("Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "wool").createSpriteLink(), "Wool", "hole", "water")); + items.add(new TileItem("Red Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "red_wool").createSpriteLink(), "Red Wool", "hole", "water")); + items.add(new TileItem("Blue Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "blue_wool").createSpriteLink(), "Blue Wool", "hole", "water")); + items.add(new TileItem("Green Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "green_wool").createSpriteLink(), "Green Wool", "hole", "water")); + items.add(new TileItem("Yellow Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "yellow_wool").createSpriteLink(), "Yellow Wool", "hole", "water")); + items.add(new TileItem("Black Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "black_wool").createSpriteLink(), "Black Wool", "hole", "water")); + + items.add(new TileItem("Sand", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "sand").createSpriteLink(), "sand", "hole", "water", "lava")); + items.add(new TileItem("Cactus", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cactus").createSpriteLink(), "cactus Sapling", "sand")); + items.add(new TileItem("Bone", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "bone").createSpriteLink(), "tree", "tree Sapling")); + items.add(new TileItem("Cloud", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cloud").createSpriteLink(), "cloud", "Infinite Fall")); + + items.add(new TileItem("Wheat Seeds", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), "wheat", "farmland")); + items.add(new TileItem("Potato", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "potato").createSpriteLink(), "potato", "farmland")); + items.add(new TileItem("Grass Seeds", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), "grass", "dirt")); // Creative mode available tiles: items.add(new TileItem("Farmland", SpriteLinker.missingTexture(SpriteType.Item), "farmland", "dirt", "grass", "hole")); diff --git a/src/client/java/minicraft/item/ToolItem.java b/src/client/java/minicraft/item/ToolItem.java index 297760fd1..010d75fa5 100644 --- a/src/client/java/minicraft/item/ToolItem.java +++ b/src/client/java/minicraft/item/ToolItem.java @@ -44,7 +44,8 @@ private static String getSpriteName(String typeName, String level) { /** Tool Item, requires a tool type (ToolType.Sword, ToolType.Axe, ToolType.Hoe, etc) and a level (0 = wood, 2 = iron, 4 = gem, etc) */ public ToolItem(ToolType type, int level) { - super(LEVEL_NAMES[level] + " " + type.name(), new LinkedSprite(SpriteType.Item, getSpriteName(type.toString(), LEVEL_NAMES[level] + "_"))); + super(LEVEL_NAMES[level] + " " + type.name(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, getSpriteName(type.toString(), LEVEL_NAMES[level] + "_")).createSpriteLink()); this.type = type; this.level = level; @@ -54,7 +55,7 @@ public ToolItem(ToolType type, int level) { } public ToolItem(ToolType type) { - super(type.name(), new LinkedSprite(SpriteType.Item, getSpriteName(type.toString(), ""))); + super(type.name(), new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, getSpriteName(type.toString(), "")).createSpriteLink()); this.type = type; dur = type.durability; diff --git a/src/client/java/minicraft/item/TorchItem.java b/src/client/java/minicraft/item/TorchItem.java index 6df20168b..dc6754aad 100644 --- a/src/client/java/minicraft/item/TorchItem.java +++ b/src/client/java/minicraft/item/TorchItem.java @@ -21,7 +21,8 @@ public static ArrayList getAllInstances() { private TorchItem() { this(1); } private TorchItem(int count) { - super("Torch", new LinkedSprite(SpriteType.Item, "torch"), count, "", "dirt", "Wood Planks", "Stone Bricks", "Obsidian", "Wool", "Red Wool", "Blue Wool", "Green Wool", "Yellow Wool", "Black Wool", "grass", "sand","path","ornate stone","ornate obsidian"); + super("Torch", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "torch").createSpriteLink(), + count, "", "dirt", "Wood Planks", "Stone Bricks", "Obsidian", "Wool", "Red Wool", "Blue Wool", "Green Wool", "Yellow Wool", "Black Wool", "grass", "sand","path","ornate stone","ornate obsidian"); } public boolean interactOn(Tile tile, Level level, int xt, int yt, Player player, Direction attackDir) { diff --git a/src/client/java/minicraft/level/tile/TreeTile.java b/src/client/java/minicraft/level/tile/TreeTile.java index 895ad1fd4..86b9cd923 100644 --- a/src/client/java/minicraft/level/tile/TreeTile.java +++ b/src/client/java/minicraft/level/tile/TreeTile.java @@ -22,8 +22,8 @@ import minicraft.util.AdvancementElement; public class TreeTile extends Tile { - private static LinkedSprite treeSprite = new LinkedSprite(SpriteType.Tile, "tree"); - private static LinkedSprite treeSpriteFull = new LinkedSprite(SpriteType.Tile, "tree_full"); + private static LinkedSprite treeSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "tree").createSpriteLink(); + private static LinkedSprite treeSpriteFull = new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "tree_full").createSpriteLink(); protected TreeTile(String name) { super(name, null); diff --git a/src/client/java/minicraft/level/tile/farming/PotatoTile.java b/src/client/java/minicraft/level/tile/farming/PotatoTile.java index a4c96fd49..ce19ff3e5 100644 --- a/src/client/java/minicraft/level/tile/farming/PotatoTile.java +++ b/src/client/java/minicraft/level/tile/farming/PotatoTile.java @@ -12,12 +12,12 @@ public class PotatoTile extends PlantTile { private LinkedSprite[] spritStages = new LinkedSprite[] { - new LinkedSprite(SpriteType.Tile, "potato_stage0"), - new LinkedSprite(SpriteType.Tile, "potato_stage1"), - new LinkedSprite(SpriteType.Tile, "potato_stage2"), - new LinkedSprite(SpriteType.Tile, "potato_stage3"), - new LinkedSprite(SpriteType.Tile, "potato_stage4"), - new LinkedSprite(SpriteType.Tile, "potato_stage5") + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage0").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage1").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage2").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage3").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage4").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage5").createSpriteLink() }; public PotatoTile(String name) { diff --git a/src/client/java/minicraft/level/tile/farming/WheatTile.java b/src/client/java/minicraft/level/tile/farming/WheatTile.java index f5f3c6cfb..118fcacad 100644 --- a/src/client/java/minicraft/level/tile/farming/WheatTile.java +++ b/src/client/java/minicraft/level/tile/farming/WheatTile.java @@ -8,12 +8,12 @@ public class WheatTile extends PlantTile { private LinkedSprite[] spritStages = new LinkedSprite[] { - new LinkedSprite(SpriteType.Tile, "wheat_stage0"), - new LinkedSprite(SpriteType.Tile, "wheat_stage1"), - new LinkedSprite(SpriteType.Tile, "wheat_stage2"), - new LinkedSprite(SpriteType.Tile, "wheat_stage3"), - new LinkedSprite(SpriteType.Tile, "wheat_stage4"), - new LinkedSprite(SpriteType.Tile, "wheat_stage5") + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage0").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage1").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage2").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage3").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage4").createSpriteLink(), + new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage5").createSpriteLink() }; public WheatTile(String name) { diff --git a/src/client/java/minicraft/screen/LevelTransitionDisplay.java b/src/client/java/minicraft/screen/LevelTransitionDisplay.java index 7681c5141..086edef5d 100644 --- a/src/client/java/minicraft/screen/LevelTransitionDisplay.java +++ b/src/client/java/minicraft/screen/LevelTransitionDisplay.java @@ -1,12 +1,16 @@ package minicraft.screen; import minicraft.core.Game; +import minicraft.core.Renderer; import minicraft.core.World; import minicraft.core.io.InputHandler; +import minicraft.gfx.MinicraftImage; import minicraft.gfx.Screen; import minicraft.gfx.SpriteLinker.LinkedSprite; import minicraft.gfx.SpriteLinker.SpriteType; +import java.util.function.Supplier; + public class LevelTransitionDisplay extends Display { private static final int DURATION = 30; @@ -14,7 +18,7 @@ public class LevelTransitionDisplay extends Display { private int dir; // Direction that you are changing levels. (going up or down stairs) private int time = 0; // Time it spends on this menu - private LinkedSprite hudSheet = new LinkedSprite(SpriteType.Gui, "hud"); + private final Supplier hudSheet = () -> Renderer.spriteLinker.getSheet(SpriteType.Gui, "hud"); public LevelTransitionDisplay(int dir) { super(false,false); @@ -33,8 +37,8 @@ public void render(Screen screen) { for (int y = 0; y < 150; y++) { // Loop however many times depending on the height (It's divided by 3 because the pixels are scaled up by 3) int dd = (y + x % 2 * 2 + x / 3) - time*2; // Used as part of the positioning. if (dd < 0 && dd > -30) { - if (dir > 0) screen.render(x * 8, y * 8, 5, 2, 0, hudSheet.getSheet()); // If the direction is upwards then render the squares going up - else screen.render(x * 8, Screen.h - y * 8 - 8, 5, 2, 0, hudSheet.getSheet()); // If the direction is negative, then the squares will go down. + if (dir > 0) screen.render(x * 8, y * 8, 5, 2, 0, hudSheet.get()); // If the direction is upwards then render the squares going up + else screen.render(x * 8, Screen.h - y * 8 - 8, 5, 2, 0, hudSheet.get()); // If the direction is negative, then the squares will go down. } } } diff --git a/src/client/java/minicraft/screen/Menu.java b/src/client/java/minicraft/screen/Menu.java index 21738dbad..863d374b7 100644 --- a/src/client/java/minicraft/screen/Menu.java +++ b/src/client/java/minicraft/screen/Menu.java @@ -1,5 +1,6 @@ package minicraft.screen; +import minicraft.core.Renderer; import minicraft.core.io.InputHandler; import minicraft.core.io.Localization; import minicraft.core.io.Sound; @@ -23,6 +24,7 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; +import java.util.function.Supplier; public class Menu { @@ -68,7 +70,7 @@ public class Menu { */ private String typingSearcher; - private LinkedSprite hudSheet = new LinkedSprite(SpriteType.Gui, "hud"); + private final Supplier hudSheet = () -> Renderer.spriteLinker.getSheet(SpriteType.Gui, "hud"); private Menu() {} protected Menu(Menu m) { @@ -297,12 +299,12 @@ public void render(Screen screen) { if(title.length() > 0) { if (drawVertically) { for (int i = 0; i < title.length(); i++) { - if (hasFrame) screen.render(titleLoc.x, titleLoc.y + i * Font.textHeight(), 3, 6, 0, hudSheet.getSheet()); + if (hasFrame) screen.render(titleLoc.x, titleLoc.y + i * Font.textHeight(), 3, 6, 0, hudSheet.get()); Font.draw(title.substring(i, i + 1), screen, titleLoc.x, titleLoc.y + i * Font.textHeight(), titleColor); } } else { for (int i = 0; i < title.length(); i++) { - if (hasFrame) screen.render(titleLoc.x + i * Font.textWidth(" "), titleLoc.y, 3, 6, 0, hudSheet.getSheet()); + if (hasFrame) screen.render(titleLoc.x + i * Font.textWidth(" "), titleLoc.y, 3, 6, 0, hudSheet.get()); Font.draw(title.substring(i, i + 1), screen, titleLoc.x + i * Font.textWidth(" "), titleLoc.y, titleColor); } } @@ -321,7 +323,7 @@ public void render(Screen screen) { for (int i = 0; i < typingSearcher.length() + 4; i++) { if (hasFrame) { - screen.render(xSearcherBar + spaceWidth * i - leading, titleLoc.y - 8, 3, 6, 0, hudSheet.getSheet()); + screen.render(xSearcherBar + spaceWidth * i - leading, titleLoc.y - 8, 3, 6, 0, hudSheet.get()); } Font.draw("> " + typingSearcher + " <", screen, xSearcherBar - leading, titleLoc.y - 8, typingSearcher.length() < Menu.LIMIT_TYPING_SEARCHER ? Color.YELLOW : Color.RED); @@ -396,7 +398,7 @@ private void renderFrame(Screen screen) { int spriteoffset = (xend && yend ? 0 : (yend ? 1 : (xend ? 2 : 3))); // determines which sprite to use int mirrors = ( x == right ? 1 : 0 ) + ( y == bottom ? 2 : 0 ); // gets mirroring - screen.render(x, y, spriteoffset, 6, mirrors, hudSheet.getSheet()); + screen.render(x, y, spriteoffset, 6, mirrors, hudSheet.get()); if(x < right && x + MinicraftImage.boxWidth > right) x = right - MinicraftImage.boxWidth; From 0537f4952a1171db2a34f012dc799facb2a2d9dc Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Sun, 25 Jun 2023 01:40:49 +0800 Subject: [PATCH 02/10] Resolve startup error --- src/client/java/minicraft/core/Game.java | 2 ++ src/client/java/minicraft/core/Renderer.java | 2 +- .../java/minicraft/gfx/SpriteLinker.java | 35 ++++++++++--------- .../minicraft/screen/ResourcePackDisplay.java | 8 ++--- .../java/minicraft/screen/SkinDisplay.java | 2 ++ 5 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/client/java/minicraft/core/Game.java b/src/client/java/minicraft/core/Game.java index 7debc6b41..b9dd47675 100644 --- a/src/client/java/minicraft/core/Game.java +++ b/src/client/java/minicraft/core/Game.java @@ -4,6 +4,7 @@ import minicraft.core.io.Settings; import minicraft.core.io.Sound; import minicraft.entity.mob.Player; +import minicraft.gfx.SpriteLinker; import minicraft.level.Level; import minicraft.level.tile.Tiles; import minicraft.network.Analytics; @@ -87,6 +88,7 @@ public static void main(String[] args) { Analytics.GameStartup.ping(); input = new InputHandler(Renderer.canvas); + Renderer.spriteLinker = new SpriteLinker(); ResourcePackDisplay.initPacks(); ResourcePackDisplay.reloadResources(); diff --git a/src/client/java/minicraft/core/Renderer.java b/src/client/java/minicraft/core/Renderer.java index b38977cbe..83bb7dd53 100644 --- a/src/client/java/minicraft/core/Renderer.java +++ b/src/client/java/minicraft/core/Renderer.java @@ -63,7 +63,7 @@ private Renderer() { static float SCALE = 3; public static Screen screen; // Creates the main screen - public static SpriteLinker spriteLinker = new SpriteLinker(); // The sprite linker for sprites + public static SpriteLinker spriteLinker; // The sprite linker for sprites static Canvas canvas = new Canvas(); private static BufferedImage image; // Creates an image to be displayed on the screen. diff --git a/src/client/java/minicraft/gfx/SpriteLinker.java b/src/client/java/minicraft/gfx/SpriteLinker.java index 7049e9743..2ea57749a 100644 --- a/src/client/java/minicraft/gfx/SpriteLinker.java +++ b/src/client/java/minicraft/gfx/SpriteLinker.java @@ -74,12 +74,6 @@ public void setSkin(String key, MinicraftImage spriteSheet) { private static final String MISSING_ENTITY_KEY = "missing_entity", MISSING_ITEM_KEY = "missing_item", MISSING_TILE_KEY = "missing_tile"; - /** Textures for missing textures for entity, item or tile */ - public static final LinkedSprite - MISSING_ENTITY_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, MISSING_ENTITY_KEY).createSpriteLink(true), - MISSING_ITEM_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, MISSING_ITEM_KEY).createSpriteLink(true), - MISSING_TILE_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, MISSING_TILE_KEY).createSpriteLink(true); - /** * Getting the missing texture with the specific sprite category. * @param type The sprite category. @@ -87,9 +81,9 @@ public void setSkin(String key, MinicraftImage spriteSheet) { */ public static LinkedSprite missingTexture(SpriteType type) { switch (type) { - case Entity: return MISSING_ENTITY_TEXTURE; - case Item: return MISSING_ITEM_TEXTURE; - case Tile: return MISSING_TILE_TEXTURE; + case Entity: return LinkedSprite.MISSING_ENTITY_TEXTURE; + case Item: return LinkedSprite.MISSING_ITEM_TEXTURE; + case Tile: return LinkedSprite.MISSING_TILE_TEXTURE; default: return null; } } @@ -128,8 +122,23 @@ public enum SpriteType { Item, Gui, Tile, Entity // Only for resource packs; Skin is not applied. } + public HashMap getMappingByType(SpriteType type) { + switch (type) { + case Entity: return entitySheets; + default: case Gui: return guiSheets; + case Item: return itemSheets; + case Tile: return tileSheets; + } + } + /** A sprite collector with resource collector. */ public static class LinkedSprite implements Destroyable { + /** Textures for missing textures for entity, item or tile */ + public static final LinkedSprite + MISSING_ENTITY_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, MISSING_ENTITY_KEY).createSpriteLink(true), + MISSING_ITEM_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, MISSING_ITEM_KEY).createSpriteLink(true), + MISSING_TILE_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, MISSING_TILE_KEY).createSpriteLink(true); + private final String key; // The resource key. private final SpriteType spriteType; private final HashMap linkedMap; @@ -313,13 +322,7 @@ public SpriteLinkBuilder setFlip(int flip) { public LinkedSprite createSpriteLink() { return createSpriteLink(true); } public LinkedSprite createSpriteLink(boolean immutable) { - HashMap linkedMap; - switch (spriteType) { - case Entity: linkedMap = Renderer.spriteLinker.entitySheets; break; - default: case Gui: linkedMap = Renderer.spriteLinker.guiSheets; break; - case Item: linkedMap = Renderer.spriteLinker.itemSheets; break; - case Tile: linkedMap = Renderer.spriteLinker.tileSheets; break; - } + HashMap linkedMap = Renderer.spriteLinker.getMappingByType(spriteType); LinkedSprite sprite = new LinkedSprite(spriteType, key, linkedMap, x, y, w, h, color, mirror, flip, immutable); Renderer.spriteLinker.linkedSheets.add(sprite); return sprite; diff --git a/src/client/java/minicraft/screen/ResourcePackDisplay.java b/src/client/java/minicraft/screen/ResourcePackDisplay.java index e7fd1822a..71dcf6153 100644 --- a/src/client/java/minicraft/screen/ResourcePackDisplay.java +++ b/src/client/java/minicraft/screen/ResourcePackDisplay.java @@ -721,13 +721,13 @@ public static void reloadResources() { } } - SpriteAnimation.refreshAnimations(); - Renderer.spriteLinker.updateLinkedSheets(); - Localization.loadLanguage(); - // Refreshing skins SkinDisplay.refreshSkins(); SkinDisplay.releaseSkins(); + + SpriteAnimation.refreshAnimations(); + Renderer.spriteLinker.updateLinkedSheets(); + Localization.loadLanguage(); } /** diff --git a/src/client/java/minicraft/screen/SkinDisplay.java b/src/client/java/minicraft/screen/SkinDisplay.java index eba854b42..e6b359c1b 100644 --- a/src/client/java/minicraft/screen/SkinDisplay.java +++ b/src/client/java/minicraft/screen/SkinDisplay.java @@ -31,6 +31,7 @@ import java.nio.file.WatchEvent; import java.nio.file.WatchService; import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; import java.util.Objects; @@ -197,6 +198,7 @@ private synchronized static void refreshSkinFiles(List files) { if (file.exists()) try { MinicraftImage sheet = new MinicraftImage(ImageIO.read(new FileInputStream(file)), 64, 16); Renderer.spriteLinker.setSkin("skin." + name, sheet); + System.out.println("skin." + name); skins.put(name, Mob.compileMobSpriteAnimations(0, 0, "skin." + name)); } catch (IOException e) { Logging.RESOURCEHANDLER_SKIN.error("Could not read image at path {}. The file is probably missing or formatted wrong.", skinPath); From 9bc33bcb421976ffa10d5ae17c2afb216291e76a Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Sun, 25 Jun 2023 02:06:45 +0800 Subject: [PATCH 03/10] Fix skin reloading problem --- .../java/minicraft/gfx/SpriteLinker.java | 7 ++++ .../java/minicraft/screen/SkinDisplay.java | 37 ++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/client/java/minicraft/gfx/SpriteLinker.java b/src/client/java/minicraft/gfx/SpriteLinker.java index 2ea57749a..4ba5ae4bd 100644 --- a/src/client/java/minicraft/gfx/SpriteLinker.java +++ b/src/client/java/minicraft/gfx/SpriteLinker.java @@ -72,6 +72,13 @@ public void setSkin(String key, MinicraftImage spriteSheet) { setSprite(SpriteType.Entity, key, spriteSheet); } + public void refreshSkins() { + linkedSheets.forEach(s -> { + if (s.key.startsWith("skin.")) + s.reloadSprite(); + }); + } + private static final String MISSING_ENTITY_KEY = "missing_entity", MISSING_ITEM_KEY = "missing_item", MISSING_TILE_KEY = "missing_tile"; /** diff --git a/src/client/java/minicraft/screen/SkinDisplay.java b/src/client/java/minicraft/screen/SkinDisplay.java index e6b359c1b..614104e1f 100644 --- a/src/client/java/minicraft/screen/SkinDisplay.java +++ b/src/client/java/minicraft/screen/SkinDisplay.java @@ -31,7 +31,6 @@ import java.nio.file.WatchEvent; import java.nio.file.WatchService; import java.util.ArrayList; -import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; import java.util.Objects; @@ -62,7 +61,6 @@ public class SkinDisplay extends Display { selectedSkin = defaultSkins.get(0); Logging.RESOURCEHANDLER_SKIN.debug("Refreshing skins."); - refreshSkins(); } public SkinDisplay() { @@ -78,6 +76,7 @@ public SkinDisplay() { refreshSkins(); refreshEntries(); menus[0].setSelection(new ArrayList<>(skins.keySet()).indexOf(selectedSkin)); + Renderer.spriteLinker.refreshSkins(); } public static void refreshSkins() { @@ -124,16 +123,7 @@ private void refreshEntries() { public static void releaseSkins() { for (String skin : new ArrayList<>(skins.keySet())) { if (!defaultSkins.contains(skin) && !skin.equals(selectedSkin)) { - Renderer.spriteLinker.setSkin("skin." + skin, null); - if (skins.containsKey(skin)) for (LinkedSprite[] a : skins.remove(skin)) { - for (LinkedSprite b : a) { - try { - b.destroy(); - } catch (DestroyFailedException e) { - Logging.RESOURCEHANDLER_SKIN.trace(e); - } - } - } + deregisterSkin(skin); } } } @@ -198,22 +188,25 @@ private synchronized static void refreshSkinFiles(List files) { if (file.exists()) try { MinicraftImage sheet = new MinicraftImage(ImageIO.read(new FileInputStream(file)), 64, 16); Renderer.spriteLinker.setSkin("skin." + name, sheet); - System.out.println("skin." + name); skins.put(name, Mob.compileMobSpriteAnimations(0, 0, "skin." + name)); } catch (IOException e) { Logging.RESOURCEHANDLER_SKIN.error("Could not read image at path {}. The file is probably missing or formatted wrong.", skinPath); } catch (SecurityException e) { Logging.RESOURCEHANDLER_SKIN.error("Access to file located at {} was denied. Check if game is given permission.", skinPath); } else { - Renderer.spriteLinker.setSkin("skin." + name, null); - if (skins.containsKey(name)) for (LinkedSprite[] a : skins.remove(name)) { - for (LinkedSprite b : a) { - try { - b.destroy(); - } catch (DestroyFailedException e) { - Logging.RESOURCEHANDLER_SKIN.trace(e); - } - } + deregisterSkin(name); + } + } + } + + private static void deregisterSkin(String name) { + Renderer.spriteLinker.setSkin("skin." + name, null); + if (skins.containsKey(name)) for (LinkedSprite[] a : skins.remove(name)) { + for (LinkedSprite b : a) { + try { + b.destroy(); + } catch (DestroyFailedException e) { + Logging.RESOURCEHANDLER_SKIN.trace(e); } } } From 071ba7c5fd5c213f2a3f36a983b90771d04a073e Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Fri, 7 Jul 2023 15:30:14 +0800 Subject: [PATCH 04/10] Resolve errors --- .../java/minicraft/entity/mob/ObsidianKnight.java | 10 ++-------- src/client/java/minicraft/gfx/SpriteLinker.java | 9 +++++++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/client/java/minicraft/entity/mob/ObsidianKnight.java b/src/client/java/minicraft/entity/mob/ObsidianKnight.java index 84f833338..b0749b333 100644 --- a/src/client/java/minicraft/entity/mob/ObsidianKnight.java +++ b/src/client/java/minicraft/entity/mob/ObsidianKnight.java @@ -19,16 +19,10 @@ public class ObsidianKnight extends EnemyMob { private static final SpriteLinker.LinkedSprite[][][] armored = new SpriteLinker.LinkedSprite[][][] { - Mob.compileMobSpriteAnimations(0, 0, "obsidian_knight_armored"), - Mob.compileMobSpriteAnimations(0, 2, "obsidian_knight_armored"), - Mob.compileMobSpriteAnimations(0, 4, "obsidian_knight_armored"), - Mob.compileMobSpriteAnimations(0, 6, "obsidian_knight_armored") + Mob.compileMobSpriteAnimations(0, 0, "obsidian_knight_armored") }; private static final SpriteLinker.LinkedSprite[][][] broken = new SpriteLinker.LinkedSprite[][][] { - Mob.compileMobSpriteAnimations(0, 0, "obsidian_knight_broken"), - Mob.compileMobSpriteAnimations(0, 2, "obsidian_knight_broken"), - Mob.compileMobSpriteAnimations(0, 4, "obsidian_knight_broken"), - Mob.compileMobSpriteAnimations(0, 6, "obsidian_knight_broken") + Mob.compileMobSpriteAnimations(0, 0, "obsidian_knight_broken") }; public static ObsidianKnight entity = null; diff --git a/src/client/java/minicraft/gfx/SpriteLinker.java b/src/client/java/minicraft/gfx/SpriteLinker.java index 4ba5ae4bd..d481ef134 100644 --- a/src/client/java/minicraft/gfx/SpriteLinker.java +++ b/src/client/java/minicraft/gfx/SpriteLinker.java @@ -172,6 +172,7 @@ private LinkedSprite(SpriteType spriteType, String key, HashMap 0, flipY = (0x02 & flip) > 0; Sprite.Px[][] pixels = new Sprite.Px[h][w]; @@ -223,9 +227,10 @@ private void reloadSprite() { sprite.color = color; } else { Logging.SPRITE.warn("SpriteSheet or required sprite with resource ID is invalid: {}", key); + Logging.SPRITE.debug("Invalid sprite: x: {}; y: {}; w: {}, h: {}", x, y, w, h); sprite = missingTexture(spriteType).getSprite(); } - } else { + } else if (!onInitialize) { Logging.SPRITE.warn("SpriteSheet with resource ID not found: {}", key); sprite = missingTexture(spriteType).getSprite(); } From 24d60d16b6ddd60823012dcc5686d8c689edeefb Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Sun, 9 Jul 2023 21:54:59 +0800 Subject: [PATCH 05/10] Move sprite linker instance creation --- src/client/java/minicraft/core/Game.java | 1 - src/client/java/minicraft/core/Renderer.java | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/client/java/minicraft/core/Game.java b/src/client/java/minicraft/core/Game.java index b9dd47675..ff23b3452 100644 --- a/src/client/java/minicraft/core/Game.java +++ b/src/client/java/minicraft/core/Game.java @@ -88,7 +88,6 @@ public static void main(String[] args) { Analytics.GameStartup.ping(); input = new InputHandler(Renderer.canvas); - Renderer.spriteLinker = new SpriteLinker(); ResourcePackDisplay.initPacks(); ResourcePackDisplay.reloadResources(); diff --git a/src/client/java/minicraft/core/Renderer.java b/src/client/java/minicraft/core/Renderer.java index 83bb7dd53..8d058b733 100644 --- a/src/client/java/minicraft/core/Renderer.java +++ b/src/client/java/minicraft/core/Renderer.java @@ -63,7 +63,10 @@ private Renderer() { static float SCALE = 3; public static Screen screen; // Creates the main screen - public static SpriteLinker spriteLinker; // The sprite linker for sprites + public static final SpriteLinker spriteLinker; // The sprite linker for sprites + static { + spriteLinker = new SpriteLinker(); + } static Canvas canvas = new Canvas(); private static BufferedImage image; // Creates an image to be displayed on the screen. From be5862d7fef77d2c887b8ca9ecdb94546a6670f7 Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Mon, 10 Jul 2023 15:07:46 +0800 Subject: [PATCH 06/10] Inline sprite linker initialization --- src/client/java/minicraft/core/Renderer.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/client/java/minicraft/core/Renderer.java b/src/client/java/minicraft/core/Renderer.java index 8d058b733..aecb908f8 100644 --- a/src/client/java/minicraft/core/Renderer.java +++ b/src/client/java/minicraft/core/Renderer.java @@ -63,10 +63,7 @@ private Renderer() { static float SCALE = 3; public static Screen screen; // Creates the main screen - public static final SpriteLinker spriteLinker; // The sprite linker for sprites - static { - spriteLinker = new SpriteLinker(); - } + public static final SpriteLinker spriteLinker = new SpriteLinker(); // The sprite linker for sprites static Canvas canvas = new Canvas(); private static BufferedImage image; // Creates an image to be displayed on the screen. From 096be8a741d05a75a7354185cc664436a67b433a Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Sat, 6 Jan 2024 20:26:35 +0800 Subject: [PATCH 07/10] Cleanup Renderer#hudSheet and rename sprite link classes LinkedSprite -> SpriteLink SpriteLinker -> SpriteManager Reduced and localized Renderer#hudSheet usages --- src/client/java/minicraft/core/Game.java | 1 - src/client/java/minicraft/core/Renderer.java | 69 +++++++------- src/client/java/minicraft/entity/Arrow.java | 19 ++-- .../java/minicraft/entity/FireSpark.java | 6 +- src/client/java/minicraft/entity/Spark.java | 6 +- .../java/minicraft/entity/furniture/Bed.java | 8 +- .../minicraft/entity/furniture/Chest.java | 10 +- .../minicraft/entity/furniture/Crafter.java | 34 +++---- .../entity/furniture/DeathChest.java | 10 +- .../entity/furniture/DungeonChest.java | 8 +- .../minicraft/entity/furniture/Furniture.java | 10 +- .../entity/furniture/KnightStatue.java | 6 +- .../minicraft/entity/furniture/Lantern.java | 8 +- .../minicraft/entity/furniture/Spawner.java | 26 +++--- .../java/minicraft/entity/furniture/Tnt.java | 8 +- .../java/minicraft/entity/mob/AirWizard.java | 4 +- src/client/java/minicraft/entity/mob/Cow.java | 4 +- .../java/minicraft/entity/mob/Creeper.java | 12 +-- .../java/minicraft/entity/mob/EnemyMob.java | 10 +- .../java/minicraft/entity/mob/Knight.java | 4 +- src/client/java/minicraft/entity/mob/Mob.java | 22 ++--- .../java/minicraft/entity/mob/MobAi.java | 6 +- .../minicraft/entity/mob/ObsidianKnight.java | 6 +- .../java/minicraft/entity/mob/PassiveMob.java | 6 +- src/client/java/minicraft/entity/mob/Pig.java | 4 +- .../java/minicraft/entity/mob/Player.java | 16 ++-- .../java/minicraft/entity/mob/Sheep.java | 10 +- .../java/minicraft/entity/mob/Skeleton.java | 4 +- .../java/minicraft/entity/mob/Slime.java | 12 +-- .../java/minicraft/entity/mob/Snake.java | 4 +- .../java/minicraft/entity/mob/Zombie.java | 4 +- .../entity/particle/BurnParticle.java | 6 +- .../entity/particle/FireParticle.java | 6 +- .../minicraft/entity/particle/Particle.java | 8 +- .../entity/particle/SandParticle.java | 6 +- .../entity/particle/SmashParticle.java | 6 +- src/client/java/minicraft/gfx/Font.java | 6 +- .../java/minicraft/gfx/MinicraftImage.java | 6 +- src/client/java/minicraft/gfx/Screen.java | 8 +- .../java/minicraft/gfx/SpriteAnimation.java | 36 ++++---- .../{SpriteLinker.java => SpriteManager.java} | 46 +++++----- src/client/java/minicraft/item/ArmorItem.java | 18 ++-- src/client/java/minicraft/item/BookItem.java | 12 +-- .../java/minicraft/item/BucketItem.java | 6 +- .../java/minicraft/item/ClothingItem.java | 26 +++--- .../java/minicraft/item/FishingRodItem.java | 6 +- src/client/java/minicraft/item/FoodItem.java | 28 +++--- src/client/java/minicraft/item/HeartItem.java | 8 +- src/client/java/minicraft/item/Item.java | 12 +-- .../java/minicraft/item/PotionItem.java | 6 +- .../java/minicraft/item/StackableItem.java | 52 +++++------ .../java/minicraft/item/SummonItem.java | 12 +-- src/client/java/minicraft/item/TileItem.java | 92 +++++++++---------- src/client/java/minicraft/item/ToolItem.java | 8 +- src/client/java/minicraft/item/TorchItem.java | 6 +- .../java/minicraft/item/UnknownItem.java | 6 +- .../minicraft/level/tile/BossWallTile.java | 4 +- .../java/minicraft/level/tile/CactusTile.java | 2 +- .../java/minicraft/level/tile/CloudTile.java | 2 +- .../minicraft/level/tile/ConnectTile.java | 2 +- .../java/minicraft/level/tile/DecorTile.java | 2 +- .../java/minicraft/level/tile/DirtTile.java | 2 +- .../java/minicraft/level/tile/DoorTile.java | 2 +- .../minicraft/level/tile/ExplodedTile.java | 2 +- .../java/minicraft/level/tile/FloorTile.java | 2 +- .../java/minicraft/level/tile/FlowerTile.java | 2 +- .../java/minicraft/level/tile/GrassTile.java | 2 +- .../minicraft/level/tile/HardRockTile.java | 2 +- .../java/minicraft/level/tile/HoleTile.java | 2 +- .../minicraft/level/tile/LavaBrickTile.java | 2 +- .../java/minicraft/level/tile/LavaTile.java | 2 +- .../minicraft/level/tile/MaterialTile.java | 2 +- .../java/minicraft/level/tile/OreTile.java | 2 +- .../java/minicraft/level/tile/PathTile.java | 2 +- .../java/minicraft/level/tile/RockTile.java | 2 +- .../java/minicraft/level/tile/SandTile.java | 2 +- .../minicraft/level/tile/SaplingTile.java | 2 +- .../java/minicraft/level/tile/StairsTile.java | 2 +- .../java/minicraft/level/tile/TorchTile.java | 2 +- .../java/minicraft/level/tile/TreeTile.java | 8 +- .../java/minicraft/level/tile/WallTile.java | 2 +- .../java/minicraft/level/tile/WaterTile.java | 2 +- .../java/minicraft/level/tile/WoolTile.java | 2 +- .../level/tile/farming/FarmTile.java | 2 +- .../level/tile/farming/PotatoTile.java | 18 ++-- .../level/tile/farming/WheatTile.java | 18 ++-- .../screen/LevelTransitionDisplay.java | 5 +- src/client/java/minicraft/screen/Menu.java | 5 +- .../java/minicraft/screen/QuestsDisplay.java | 4 +- .../minicraft/screen/ResourcePackDisplay.java | 18 ++-- .../java/minicraft/screen/SkinDisplay.java | 30 +++--- .../java/minicraft/screen/TitleDisplay.java | 4 +- 92 files changed, 476 insertions(+), 479 deletions(-) rename src/client/java/minicraft/gfx/{SpriteLinker.java => SpriteManager.java} (84%) diff --git a/src/client/java/minicraft/core/Game.java b/src/client/java/minicraft/core/Game.java index 6374a13a7..551aa2608 100644 --- a/src/client/java/minicraft/core/Game.java +++ b/src/client/java/minicraft/core/Game.java @@ -4,7 +4,6 @@ import minicraft.core.io.Settings; import minicraft.core.io.Sound; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker; import minicraft.level.Level; import minicraft.level.tile.Tiles; import minicraft.network.Analytics; diff --git a/src/client/java/minicraft/core/Renderer.java b/src/client/java/minicraft/core/Renderer.java index 9d374fe31..b71511c00 100644 --- a/src/client/java/minicraft/core/Renderer.java +++ b/src/client/java/minicraft/core/Renderer.java @@ -16,9 +16,8 @@ import minicraft.gfx.MinicraftImage; import minicraft.gfx.Point; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Items; import minicraft.item.PotionType; import minicraft.item.ToolItem; @@ -63,7 +62,7 @@ private Renderer() { static float SCALE = 3; public static Screen screen; // Creates the main screen - public static final SpriteLinker spriteLinker = new SpriteLinker(); // The sprite linker for sprites + public static final SpriteManager spriteManager = new SpriteManager(); // The sprite linker for sprites static Canvas canvas = new Canvas(); private static BufferedImage image; // Creates an image to be displayed on the screen. @@ -77,8 +76,6 @@ private Renderer() { private static int potionRenderOffset = 0; - private static Supplier hudSheet; - public static MinicraftImage loadDefaultSkinSheet() { MinicraftImage skinsSheet; try { @@ -103,11 +100,14 @@ public static void initScreen() { image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); screen.pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData(); - hudSheet = () -> Renderer.spriteLinker.getSheet(SpriteType.Gui, "hud"); canvas.createBufferStrategy(3); } + private static MinicraftImage getHudSheet() { + return Renderer.spriteManager.getSheet(SpriteType.Gui, "hud"); + } + /** * Renders the current screen. Called in game loop, a bit after tick(). @@ -197,7 +197,7 @@ private static void renderLevel() { if (xScroll > level.w * 16 - Screen.w) xScroll = level.w * 16 - Screen.w; // ...Right border. if (yScroll > level.h * 16 - Screen.h) yScroll = level.h * 16 - Screen.h; // ...Bottom border. if (currentLevel > 3) { // If the current level is higher than 3 (which only the sky level (and dungeon) is) - MinicraftImage cloud = spriteLinker.getSheet(SpriteType.Tile, "cloud_background"); + MinicraftImage cloud = spriteManager.getSheet(SpriteType.Tile, "cloud_background"); for (int y = 0; y < 28; y++) for (int x = 0; x < 48; x++) { // Creates the background for the sky (and dungeon) level: @@ -222,10 +222,11 @@ private static void renderLevel() { * Renders the main game GUI (hearts, Stamina bolts, name of the current item, etc.) */ private static void renderGui() { + MinicraftImage hudSheet = getHudSheet(); // This draws the black square where the selected item would be if you were holding it if (!isMode("minicraft.settings.mode.creative") || player.activeItem != null) { for (int x = 10; x < 26; x++) { - screen.render(x * 8, Screen.h - 8, 5, 2, 0, hudSheet.get()); + screen.render(x * 8, Screen.h - 8, 5, 2, 0, hudSheet); } } @@ -245,7 +246,7 @@ private static void renderGui() { else Font.drawBackground(" x" + ac, screen, 84, Screen.h - 16); // Displays the arrow icon - screen.render(10 * 8 + 4, Screen.h - 16, 4, 1, 0, hudSheet.get()); + screen.render(10 * 8 + 4, Screen.h - 16, 4, 1, 0, hudSheet); } } @@ -354,16 +355,16 @@ private static void renderGui() { for (int i = 1; i <= 30; i++) { // Renders your current red default hearts, golden hearts for 20 HP, obsidian hearts for 30 HP, or black hearts for damaged health. if (i < 11) { - screen.render((i - 1) * 8, Screen.h - 16, 0, 1, 0, hudSheet.get()); // Empty Hearts + screen.render((i - 1) * 8, Screen.h - 16, 0, 1, 0, hudSheet); // Empty Hearts } if (i < player.health + 1 && i < 11) { - screen.render((i - 1) * 8, Screen.h - 16, 0, 0, 0, hudSheet.get()); // Red Hearts + screen.render((i - 1) * 8, Screen.h - 16, 0, 0, 0, hudSheet); // Red Hearts } if (i < player.health + 1 && i < 21 && i >= 11) { - screen.render((i - 11) * 8, Screen.h - 16, 0, 2, 0, hudSheet.get()); // Yellow Hearts + screen.render((i - 11) * 8, Screen.h - 16, 0, 2, 0, hudSheet); // Yellow Hearts } if (i < player.health + 1 && i >= 21) { - screen.render((i - 21) * 8, Screen.h - 16, 0, 3, 0, hudSheet.get()); // Obsidian Hearts + screen.render((i - 21) * 8, Screen.h - 16, 0, 3, 0, hudSheet); // Obsidian Hearts } } for (int i = 0; i < Player.maxStat; i++) { @@ -377,24 +378,24 @@ private static void renderGui() { if (player.staminaRechargeDelay > 0) { // Creates the white/gray blinking effect when you run out of stamina. if (player.staminaRechargeDelay / 4 % 2 == 0) { - screen.render(i * 8, Screen.h - 8, 1, 2, 0, hudSheet.get()); + screen.render(i * 8, Screen.h - 8, 1, 2, 0, hudSheet); } else { - screen.render(i * 8, Screen.h - 8, 1, 1, 0, hudSheet.get()); + screen.render(i * 8, Screen.h - 8, 1, 1, 0, hudSheet); } } else { // Renders your current stamina, and uncharged gray stamina. if (i < player.stamina) { - screen.render(i * 8, Screen.h - 8, 1, 0, 0, hudSheet.get()); + screen.render(i * 8, Screen.h - 8, 1, 0, 0, hudSheet); } else { - screen.render(i * 8, Screen.h - 8, 1, 1, 0, hudSheet.get()); + screen.render(i * 8, Screen.h - 8, 1, 1, 0, hudSheet); } } // Renders hunger if (i < player.hunger) { - screen.render(i * 8 + (Screen.w - 80), Screen.h - 16, 2, 0, 0, hudSheet.get()); + screen.render(i * 8 + (Screen.w - 80), Screen.h - 16, 2, 0, 0, hudSheet); } else { - screen.render(i * 8 + (Screen.w - 80), Screen.h - 16, 2, 1, 0, hudSheet.get()); + screen.render(i * 8 + (Screen.w - 80), Screen.h - 16, 2, 1, 0, hudSheet); } } } @@ -426,21 +427,22 @@ public static void renderBossbar(int length, String title) { int INACTIVE_BOSSBAR = 4; // sprite x position int ACTIVE_BOSSBAR = 5; // sprite x position + MinicraftImage hudSheet = getHudSheet(); - screen.render(x + (max_bar_length * 2), y, 0, INACTIVE_BOSSBAR, 1, hudSheet.get()); // left corner + screen.render(x + (max_bar_length * 2), y, 0, INACTIVE_BOSSBAR, 1, hudSheet); // left corner // The middle for (int bx = 0; bx < max_bar_length; bx++) { for (int by = 0; by < 1; by++) { - screen.render(x + bx * 2, y + by * 8, 3, INACTIVE_BOSSBAR, 0, hudSheet.get()); + screen.render(x + bx * 2, y + by * 8, 3, INACTIVE_BOSSBAR, 0, hudSheet); } } - screen.render(x - 5 , y , 0, ACTIVE_BOSSBAR, 0, hudSheet.get()); // right corner + screen.render(x - 5 , y , 0, ACTIVE_BOSSBAR, 0, hudSheet); // right corner for (int bx = 0; bx < bar_length; bx++) { for (int by = 0; by < 1; by++) { - screen.render(x + bx * 2, y + by * 8, 3, ACTIVE_BOSSBAR, 0, hudSheet.get()); + screen.render(x + bx * 2, y + by * 8, 3, ACTIVE_BOSSBAR, 0, hudSheet); } } @@ -540,26 +542,27 @@ private static void renderFocusNagger() { int yy = (HEIGHT - 8) / 2; // The height of the box int w = msg.length(); // Length of message in characters. int h = 1; + MinicraftImage hudSheet = getHudSheet(); // Renders the four corners of the box - screen.render(xx - 8, yy - 8, 0, 6, 0, hudSheet.get()); - screen.render(xx + w * 8, yy - 8, 0, 6, 1, hudSheet.get()); - screen.render(xx - 8, yy + 8, 0, 6, 2, hudSheet.get()); - screen.render(xx + w * 8, yy + 8, 0, 6, 3, hudSheet.get()); + screen.render(xx - 8, yy - 8, 0, 6, 0, hudSheet); + screen.render(xx + w * 8, yy - 8, 0, 6, 1, hudSheet); + screen.render(xx - 8, yy + 8, 0, 6, 2, hudSheet); + screen.render(xx + w * 8, yy + 8, 0, 6, 3, hudSheet); // Renders each part of the box... for (int x = 0; x < w; x++) { - screen.render(xx + x * 8, yy - 8, 1, 6, 0, hudSheet.get()); // ...Top part - screen.render(xx + x * 8, yy + 8, 1, 6, 2, hudSheet.get()); // ...Bottom part + screen.render(xx + x * 8, yy - 8, 1, 6, 0, hudSheet); // ...Top part + screen.render(xx + x * 8, yy + 8, 1, 6, 2, hudSheet); // ...Bottom part } for (int y = 0; y < h; y++) { - screen.render(xx - 8, yy + y * 8, 2, 6, 0, hudSheet.get()); // ...Left part - screen.render(xx + w * 8, yy + y * 8, 2, 6, 1, hudSheet.get()); // ...Right part + screen.render(xx - 8, yy + y * 8, 2, 6, 0, hudSheet); // ...Left part + screen.render(xx + w * 8, yy + y * 8, 2, 6, 1, hudSheet); // ...Right part } // The middle for (int x = 0; x < w; x++) { - screen.render(xx + x * 8, yy, 3, 6, 0, hudSheet.get()); + screen.render(xx + x * 8, yy, 3, 6, 0, hudSheet); } // Renders the focus nagger text with a flash effect... diff --git a/src/client/java/minicraft/entity/Arrow.java b/src/client/java/minicraft/entity/Arrow.java index 5f2f432f9..ff127aedd 100644 --- a/src/client/java/minicraft/entity/Arrow.java +++ b/src/client/java/minicraft/entity/Arrow.java @@ -5,22 +5,19 @@ import minicraft.gfx.Color; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; -import minicraft.util.Logging; - -import javax.security.auth.DestroyFailedException; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import java.util.List; public class Arrow extends Entity implements ClientTickable { - private static final LinkedSprite spriteRight; - private static final LinkedSprite spriteLeft; - private static final LinkedSprite spriteUp; - private static final LinkedSprite spriteDown; + private static final SpriteLink spriteRight; + private static final SpriteLink spriteLeft; + private static final SpriteLink spriteUp; + private static final SpriteLink spriteDown; static { - LinkedSprite.SpriteLinkBuilder builder = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "arrow").setSpriteSize(1, 1); + SpriteLink.SpriteLinkBuilder builder = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "arrow").setSpriteSize(1, 1); spriteRight = builder.setSpritePos(0, 0).createSpriteLink(); spriteLeft = builder.setSpritePos(1, 0).createSpriteLink(); spriteUp = builder.setSpritePos(2, 0).createSpriteLink(); @@ -31,7 +28,7 @@ public class Arrow extends Entity implements ClientTickable { private int damage; public Mob owner; private int speed; - private final LinkedSprite sprite; + private final SpriteLink sprite; public Arrow(Mob owner, Direction dir, int dmg) { this(owner, owner.x, owner.y, dir, dmg); diff --git a/src/client/java/minicraft/entity/FireSpark.java b/src/client/java/minicraft/entity/FireSpark.java index 23571769a..58f82da52 100644 --- a/src/client/java/minicraft/entity/FireSpark.java +++ b/src/client/java/minicraft/entity/FireSpark.java @@ -5,11 +5,11 @@ import minicraft.entity.mob.Player; import minicraft.gfx.Color; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; public class FireSpark extends Entity { - private static final SpriteLinker.LinkedSprite sprite = - new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Entity, "spark").createSpriteLink(); + private static final SpriteManager.SpriteLink sprite = + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "spark").createSpriteLink(); private final int lifeTime; // How much time until the spark disappears private final double xa, ya; // The x and y acceleration diff --git a/src/client/java/minicraft/entity/Spark.java b/src/client/java/minicraft/entity/Spark.java index f5d28d80c..409607945 100644 --- a/src/client/java/minicraft/entity/Spark.java +++ b/src/client/java/minicraft/entity/Spark.java @@ -5,8 +5,8 @@ import minicraft.entity.mob.Player; import minicraft.gfx.Color; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; public class Spark extends Entity { private final int lifeTime; // How much time until the spark disappears @@ -15,7 +15,7 @@ public class Spark extends Entity { private double xx, yy; // The x and y positions private int time; // The amount of time that has passed private final AirWizard owner; // The AirWizard that created this spark - private final LinkedSprite sprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "spark").createSpriteLink(); + private final SpriteLink sprite = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "spark").createSpriteLink(); /** * Creates a new spark. Owner is the AirWizard which is spawning this spark. diff --git a/src/client/java/minicraft/entity/furniture/Bed.java b/src/client/java/minicraft/entity/furniture/Bed.java index c50e4addb..578a01fa4 100644 --- a/src/client/java/minicraft/entity/furniture/Bed.java +++ b/src/client/java/minicraft/entity/furniture/Bed.java @@ -4,8 +4,8 @@ import minicraft.core.Updater; import minicraft.core.io.Localization; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import java.util.HashMap; @@ -19,8 +19,8 @@ public class Bed extends Furniture { * Creates a new furniture with the name Bed and the bed sprite and color. */ public Bed() { - super("Bed", new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "bed").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "bed").createSpriteLink(), 3, 2); + super("Bed", new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "bed").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "bed").createSpriteLink(), 3, 2); } /** Called when the player attempts to get in bed. */ diff --git a/src/client/java/minicraft/entity/furniture/Chest.java b/src/client/java/minicraft/entity/furniture/Chest.java index 04b39ca64..221d17252 100644 --- a/src/client/java/minicraft/entity/furniture/Chest.java +++ b/src/client/java/minicraft/entity/furniture/Chest.java @@ -5,8 +5,8 @@ import minicraft.entity.Direction; import minicraft.entity.ItemHolder; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Inventory; import minicraft.item.Item; import minicraft.item.Items; @@ -22,13 +22,13 @@ public class Chest extends Furniture implements ItemHolder { public Chest() { this("Chest"); } - public Chest(String name) { this(name, new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "chest").createSpriteLink()); } + public Chest(String name) { this(name, new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "chest").createSpriteLink()); } /** * Creates a chest with a custom name. * @param name Name of chest. */ - public Chest(String name, LinkedSprite itemSprite) { - super(name, new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "chest").createSpriteLink(), itemSprite, 3, 3); // Name of the chest + public Chest(String name, SpriteLink itemSprite) { + super(name, new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "chest").createSpriteLink(), itemSprite, 3, 3); // Name of the chest inventory = new Inventory(); // Initialize the inventory. } diff --git a/src/client/java/minicraft/entity/furniture/Crafter.java b/src/client/java/minicraft/entity/furniture/Crafter.java index 40a9b8aee..35d330cdf 100644 --- a/src/client/java/minicraft/entity/furniture/Crafter.java +++ b/src/client/java/minicraft/entity/furniture/Crafter.java @@ -2,8 +2,8 @@ import minicraft.core.Game; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Recipe; import minicraft.item.Recipes; import minicraft.screen.CraftingDisplay; @@ -14,25 +14,25 @@ public class Crafter extends Furniture { public enum Type { - Workbench (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "workbench").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "workbench").createSpriteLink(), 3, 2, Recipes.workbenchRecipes), - Oven (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "oven").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "oven").createSpriteLink(), 3, 2, Recipes.ovenRecipes), - Furnace (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "furnace").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "furnace").createSpriteLink(), 3, 2, Recipes.furnaceRecipes), - Anvil (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "anvil").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "anvil").createSpriteLink(), 3, 2, Recipes.anvilRecipes), - Enchanter (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "enchanter").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "enchanter").createSpriteLink(), 7, 2, Recipes.enchantRecipes), - Loom (new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "loom").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "loom").createSpriteLink(), 7, 2, Recipes.loomRecipes); + Workbench (new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "workbench").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "workbench").createSpriteLink(), 3, 2, Recipes.workbenchRecipes), + Oven (new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "oven").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "oven").createSpriteLink(), 3, 2, Recipes.ovenRecipes), + Furnace (new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "furnace").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "furnace").createSpriteLink(), 3, 2, Recipes.furnaceRecipes), + Anvil (new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "anvil").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "anvil").createSpriteLink(), 3, 2, Recipes.anvilRecipes), + Enchanter (new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "enchanter").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "enchanter").createSpriteLink(), 7, 2, Recipes.enchantRecipes), + Loom (new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "loom").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "loom").createSpriteLink(), 7, 2, Recipes.loomRecipes); public ArrayList recipes; - protected LinkedSprite sprite; - protected LinkedSprite itemSprite; + protected SpriteLink sprite; + protected SpriteLink itemSprite; protected int xr, yr; - Type(LinkedSprite sprite, LinkedSprite itemSprite, int xr, int yr, ArrayList list) { + Type(SpriteLink sprite, SpriteLink itemSprite, int xr, int yr, ArrayList list) { this.sprite = sprite; this.itemSprite = itemSprite; this.xr = xr; diff --git a/src/client/java/minicraft/entity/furniture/DeathChest.java b/src/client/java/minicraft/entity/furniture/DeathChest.java index dbcff28f3..9b30d8fcd 100644 --- a/src/client/java/minicraft/entity/furniture/DeathChest.java +++ b/src/client/java/minicraft/entity/furniture/DeathChest.java @@ -9,15 +9,15 @@ import minicraft.gfx.Color; import minicraft.gfx.Font; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Inventory; import minicraft.item.Item; import minicraft.item.StackableItem; public class DeathChest extends Chest { - private static LinkedSprite normalSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "chest").createSpriteLink(); - private static LinkedSprite redSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "red_chest").createSpriteLink(); + private static SpriteLink normalSprite = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "chest").createSpriteLink(); + private static SpriteLink redSprite = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "red_chest").createSpriteLink(); public int time; // Time passed (used for death chest despawn) private int redtick = 0; //This is used to determine the shade of red when the chest is about to expire. @@ -28,7 +28,7 @@ public class DeathChest extends Chest { * Creates a custom chest with the name Death Chest */ public DeathChest() { - super("Death Chest", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "dungeon_chest").createSpriteLink()); + super("Death Chest", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "dungeon_chest").createSpriteLink()); this.sprite = normalSprite; /// Set the expiration time based on the world difficulty. diff --git a/src/client/java/minicraft/entity/furniture/DungeonChest.java b/src/client/java/minicraft/entity/furniture/DungeonChest.java index 2f66692e4..5d3b47a35 100644 --- a/src/client/java/minicraft/entity/furniture/DungeonChest.java +++ b/src/client/java/minicraft/entity/furniture/DungeonChest.java @@ -7,8 +7,8 @@ import minicraft.entity.particle.SmashParticle; import minicraft.entity.particle.TextParticle; import minicraft.gfx.Color; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Inventory; import minicraft.item.Item; import minicraft.item.Items; @@ -19,8 +19,8 @@ import java.util.Random; public class DungeonChest extends Chest { - private static final LinkedSprite openSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "dungeon_chest").createSpriteLink(); - private static final LinkedSprite lockSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "white_chest").createSpriteLink(); + private static final SpriteLink openSprite = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "dungeon_chest").createSpriteLink(); + private static final SpriteLink lockSprite = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "white_chest").createSpriteLink(); public Random random = new Random(); private boolean isLocked; diff --git a/src/client/java/minicraft/entity/furniture/Furniture.java b/src/client/java/minicraft/entity/furniture/Furniture.java index 148a8098a..76dd14379 100644 --- a/src/client/java/minicraft/entity/furniture/Furniture.java +++ b/src/client/java/minicraft/entity/furniture/Furniture.java @@ -5,7 +5,7 @@ import minicraft.entity.Entity; import minicraft.entity.mob.Player; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.FurnitureItem; import minicraft.item.Item; import minicraft.item.PowerGloveItem; @@ -18,8 +18,8 @@ public class Furniture extends Entity { protected int pushTime = 0, multiPushTime = 0; // Time for each push; multi is for multiplayer, to make it so not so many updates are sent. private Direction pushDir = Direction.NONE; // The direction to push the furniture - public LinkedSprite sprite; - public LinkedSprite itemSprite; + public SpriteLink sprite; + public SpriteLink itemSprite; public String name; /** @@ -28,7 +28,7 @@ public class Furniture extends Entity { * @param name Name of the furniture. * @param sprite Furniture sprite. */ - public Furniture(String name, LinkedSprite sprite, LinkedSprite itemSprite) { + public Furniture(String name, SpriteLink sprite, SpriteLink itemSprite) { this(name, sprite, itemSprite, 3, 3); } @@ -40,7 +40,7 @@ public Furniture(String name, LinkedSprite sprite, LinkedSprite itemSprite) { * @param xr Horizontal radius. * @param yr Vertical radius. */ - public Furniture(String name, LinkedSprite sprite, LinkedSprite itemSprite, int xr, int yr) { + public Furniture(String name, SpriteLink sprite, SpriteLink itemSprite, int xr, int yr) { // All of these are 2x2 on the spritesheet; radius is for collisions only. super(xr, yr); this.name = name; diff --git a/src/client/java/minicraft/entity/furniture/KnightStatue.java b/src/client/java/minicraft/entity/furniture/KnightStatue.java index ae135b8e9..b9eb88cdf 100644 --- a/src/client/java/minicraft/entity/furniture/KnightStatue.java +++ b/src/client/java/minicraft/entity/furniture/KnightStatue.java @@ -5,7 +5,7 @@ import minicraft.entity.Direction; import minicraft.entity.mob.ObsidianKnight; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.item.Item; import org.jetbrains.annotations.NotNull; @@ -14,8 +14,8 @@ public class KnightStatue extends Furniture { private final int bossHealth; public KnightStatue(int health) { - super("KnightStatue", new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Entity, "knight_statue").createSpriteLink(), - new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Item, "knight_statue").createSpriteLink(), 3, 2); + super("KnightStatue", new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "knight_statue").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Item, "knight_statue").createSpriteLink(), 3, 2); bossHealth = health; } diff --git a/src/client/java/minicraft/entity/furniture/Lantern.java b/src/client/java/minicraft/entity/furniture/Lantern.java index d5a6a95fb..afbb83517 100644 --- a/src/client/java/minicraft/entity/furniture/Lantern.java +++ b/src/client/java/minicraft/entity/furniture/Lantern.java @@ -1,7 +1,7 @@ package minicraft.entity.furniture; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import org.jetbrains.annotations.NotNull; public class Lantern extends Furniture { @@ -27,8 +27,8 @@ public enum Type { * @param type Type of lantern. */ public Lantern(Lantern.Type type) { - super(type.title, new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, type == Type.NORM ? "lantern" : - type == Type.IRON ? "iron_lantern" : "gold_lantern").createSpriteLink(), new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, type == Type.NORM ? "lantern" : + super(type.title, new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, type == Type.NORM ? "lantern" : + type == Type.IRON ? "iron_lantern" : "gold_lantern").createSpriteLink(), new SpriteLink.SpriteLinkBuilder(SpriteType.Item, type == Type.NORM ? "lantern" : type == Type.IRON ? "iron_lantern" : "gold_lantern").createSpriteLink(), 3, 2); this.type = type; } diff --git a/src/client/java/minicraft/entity/furniture/Spawner.java b/src/client/java/minicraft/entity/furniture/Spawner.java index 6140be592..414d26311 100644 --- a/src/client/java/minicraft/entity/furniture/Spawner.java +++ b/src/client/java/minicraft/entity/furniture/Spawner.java @@ -20,8 +20,8 @@ import minicraft.entity.particle.TextParticle; import minicraft.gfx.Color; import minicraft.gfx.Point; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.FurnitureItem; import minicraft.item.Item; import minicraft.item.PotionType; @@ -72,17 +72,17 @@ private void initMob(MobAi m) { * @param m Mob which will be spawned. */ public Spawner(MobAi m) { - super(getClassName(m.getClass()) + " Spawner", new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "spawner").createSpriteLink(), - m instanceof Cow ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cow_spawner").createSpriteLink(): - m instanceof Pig ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "pig_spawner").createSpriteLink(): - m instanceof Sheep ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "sheep_spawner").createSpriteLink(): - m instanceof Slime ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "slime_spawner").createSpriteLink(): - m instanceof Zombie ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "zombie_spawner").createSpriteLink(): - m instanceof Creeper ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "creeper_spawner").createSpriteLink(): - m instanceof Skeleton ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "skeleton_spawner").createSpriteLink(): - m instanceof Snake ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "snake_spawner").createSpriteLink(): - m instanceof Knight ? new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "knight_spawner").createSpriteLink(): - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "air_wizard_spawner").createSpriteLink(), 7, 2); + super(getClassName(m.getClass()) + " Spawner", new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "spawner").createSpriteLink(), + m instanceof Cow ? new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cow_spawner").createSpriteLink(): + m instanceof Pig ? new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "pig_spawner").createSpriteLink(): + m instanceof Sheep ? new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "sheep_spawner").createSpriteLink(): + m instanceof Slime ? new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "slime_spawner").createSpriteLink(): + m instanceof Zombie ? new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "zombie_spawner").createSpriteLink(): + m instanceof Creeper ? new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "creeper_spawner").createSpriteLink(): + m instanceof Skeleton ? new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "skeleton_spawner").createSpriteLink(): + m instanceof Snake ? new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "snake_spawner").createSpriteLink(): + m instanceof Knight ? new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "knight_spawner").createSpriteLink(): + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "air_wizard_spawner").createSpriteLink(), 7, 2); health = 100; initMob(m); resetSpawnInterval(); diff --git a/src/client/java/minicraft/entity/furniture/Tnt.java b/src/client/java/minicraft/entity/furniture/Tnt.java index f9778aca6..786f1033e 100644 --- a/src/client/java/minicraft/entity/furniture/Tnt.java +++ b/src/client/java/minicraft/entity/furniture/Tnt.java @@ -8,8 +8,8 @@ import minicraft.gfx.Color; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.level.Level; import minicraft.level.tile.Tile; @@ -38,8 +38,8 @@ public class Tnt extends Furniture implements ActionListener { * Creates a new tnt furniture. */ public Tnt() { - super("Tnt", new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "tnt").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "tnt").createSpriteLink(), 3, 2); + super("Tnt", new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "tnt").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "tnt").createSpriteLink(), 3, 2); fuseLit = false; ftik = 0; diff --git a/src/client/java/minicraft/entity/mob/AirWizard.java b/src/client/java/minicraft/entity/mob/AirWizard.java index 42920abe7..06f8f791f 100644 --- a/src/client/java/minicraft/entity/mob/AirWizard.java +++ b/src/client/java/minicraft/entity/mob/AirWizard.java @@ -10,13 +10,13 @@ import minicraft.gfx.Color; import minicraft.gfx.Font; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Items; import minicraft.network.Analytics; import minicraft.screen.AchievementsDisplay; public class AirWizard extends EnemyMob { - private static final LinkedSprite[][][] sprites = new LinkedSprite[][][] { + private static final SpriteLink[][][] sprites = new SpriteLink[][][] { Mob.compileMobSpriteAnimations(0, 0, "air_wizard"), Mob.compileMobSpriteAnimations(0, 2, "air_wizard") }; diff --git a/src/client/java/minicraft/entity/mob/Cow.java b/src/client/java/minicraft/entity/mob/Cow.java index f7acb4078..7a16cb062 100644 --- a/src/client/java/minicraft/entity/mob/Cow.java +++ b/src/client/java/minicraft/entity/mob/Cow.java @@ -1,14 +1,14 @@ package minicraft.entity.mob; import minicraft.core.io.Settings; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Items; import minicraft.level.tile.GrassTile; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; public class Cow extends PassiveMob { - private static LinkedSprite[][] sprites = Mob.compileMobSpriteAnimations(0, 0, "cow"); + private static SpriteLink[][] sprites = Mob.compileMobSpriteAnimations(0, 0, "cow"); /** * Creates the cow with the right sprites and color. diff --git a/src/client/java/minicraft/entity/mob/Creeper.java b/src/client/java/minicraft/entity/mob/Creeper.java index acaa6810d..4dc1ee168 100644 --- a/src/client/java/minicraft/entity/mob/Creeper.java +++ b/src/client/java/minicraft/entity/mob/Creeper.java @@ -8,7 +8,7 @@ import minicraft.entity.furniture.Spawner; import minicraft.gfx.Point; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Items; import minicraft.level.tile.Tiles; @@ -16,11 +16,11 @@ import java.util.List; public class Creeper extends EnemyMob { - private static LinkedSprite[][][] sprites = new LinkedSprite[][][] { - new LinkedSprite[][] {Mob.compileSpriteList(0, 0, 2, 2, 0, 2, "creeper")}, - new LinkedSprite[][] {Mob.compileSpriteList(0, 2, 2, 2, 0, 2, "creeper")}, - new LinkedSprite[][] {Mob.compileSpriteList(0, 4, 2, 2, 0, 2, "creeper")}, - new LinkedSprite[][] {Mob.compileSpriteList(0, 6, 2, 2, 0, 2, "creeper")} + private static SpriteLink[][][] sprites = new SpriteLink[][][] { + new SpriteLink[][] {Mob.compileSpriteList(0, 0, 2, 2, 0, 2, "creeper")}, + new SpriteLink[][] {Mob.compileSpriteList(0, 2, 2, 2, 0, 2, "creeper")}, + new SpriteLink[][] {Mob.compileSpriteList(0, 4, 2, 2, 0, 2, "creeper")}, + new SpriteLink[][] {Mob.compileSpriteList(0, 6, 2, 2, 0, 2, "creeper")} }; private static final int MAX_FUSE_TIME = 60; diff --git a/src/client/java/minicraft/entity/mob/EnemyMob.java b/src/client/java/minicraft/entity/mob/EnemyMob.java index 9a950b533..aee128b6a 100644 --- a/src/client/java/minicraft/entity/mob/EnemyMob.java +++ b/src/client/java/minicraft/entity/mob/EnemyMob.java @@ -6,7 +6,7 @@ import minicraft.entity.Entity; import minicraft.entity.furniture.Bed; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.level.Level; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; @@ -14,7 +14,7 @@ public class EnemyMob extends MobAi { public int lvl; - protected LinkedSprite[][][] lvlSprites; + protected SpriteLink[][][] lvlSprites; public int detectDist; @Override @@ -39,7 +39,7 @@ else if (!isWithinLight()) // Otherwise, it despawns when it is not within light * @param rwTime How long the mob will walk in a random direction. (random walk duration) * @param rwChance The chance of this mob will walk in a random direction (random walk chance) */ - public EnemyMob(int lvl, LinkedSprite[][][] lvlSprites, int health, boolean isFactor, int detectDist, int lifetime, int rwTime, int rwChance) { + public EnemyMob(int lvl, SpriteLink[][][] lvlSprites, int health, boolean isFactor, int detectDist, int lifetime, int rwTime, int rwChance) { super(lvlSprites[0], isFactor ? (lvl == 0 ? 1 : lvl * lvl) * health * ((Double)(Math.pow(2, Settings.getIdx("diff")))).intValue() : health, lifetime, rwTime, rwChance); this.lvl = lvl == 0 ? 1 : lvl; this.lvlSprites = java.util.Arrays.copyOf(lvlSprites, lvlSprites.length); @@ -57,7 +57,7 @@ public EnemyMob(int lvl, LinkedSprite[][][] lvlSprites, int health, boolean isFa * @param rwTime How long the mob will walk in a random direction. (random walk duration) * @param rwChance The chance of this mob will walk in a random direction (random walk chance) */ - public EnemyMob(int lvl, LinkedSprite[][][] lvlSprites, int health, boolean isFactor, int detectDist, int rwTime, int rwChance) { + public EnemyMob(int lvl, SpriteLink[][][] lvlSprites, int health, boolean isFactor, int detectDist, int rwTime, int rwChance) { this(lvl, lvlSprites, health, isFactor, detectDist, 60 * Updater.normSpeed, rwTime, rwChance); } @@ -72,7 +72,7 @@ public EnemyMob(int lvl, LinkedSprite[][][] lvlSprites, int health, boolean isFa * @param health How much health the mob has. * @param detectDist The distance where the mob will detect the player and start moving towards him/her. */ - public EnemyMob(int lvl, LinkedSprite[][][] lvlSprites, int health, int detectDist) { + public EnemyMob(int lvl, SpriteLink[][][] lvlSprites, int health, int detectDist) { this(lvl, lvlSprites, health, true, detectDist, 60, 200); } diff --git a/src/client/java/minicraft/entity/mob/Knight.java b/src/client/java/minicraft/entity/mob/Knight.java index 91b74df0f..5ee6f6e0d 100644 --- a/src/client/java/minicraft/entity/mob/Knight.java +++ b/src/client/java/minicraft/entity/mob/Knight.java @@ -1,11 +1,11 @@ package minicraft.entity.mob; import minicraft.core.io.Settings; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Items; public class Knight extends EnemyMob { - private static LinkedSprite[][][] sprites = new LinkedSprite[][][] { + private static SpriteLink[][][] sprites = new SpriteLink[][][] { Mob.compileMobSpriteAnimations(0, 0, "knight"), Mob.compileMobSpriteAnimations(0, 2, "knight"), Mob.compileMobSpriteAnimations(0, 4, "knight"), diff --git a/src/client/java/minicraft/entity/mob/Mob.java b/src/client/java/minicraft/entity/mob/Mob.java index d17b36b76..85a1fa732 100644 --- a/src/client/java/minicraft/entity/mob/Mob.java +++ b/src/client/java/minicraft/entity/mob/Mob.java @@ -8,15 +8,15 @@ import minicraft.entity.particle.BurnParticle; import minicraft.entity.particle.TextParticle; import minicraft.gfx.Color; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.PotionType; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; public abstract class Mob extends Entity { - protected LinkedSprite[][] sprites; // This contains all the mob's sprites, sorted first by direction (index corresponding to the dir variable), and then by walk animation state. + protected SpriteLink[][] sprites; // This contains all the mob's sprites, sorted first by direction (index corresponding to the dir variable), and then by walk animation state. public int walkDist = 0; // How far we've walked currently, incremented after each movement. This is used to change the sprite; "(walkDist >> 3) & 1" switches between a value of 0 and 1 every 8 increments of walkDist. public Direction dir = Direction.DOWN; // The direction the mob is facing, used in attacking and rendering. 0 is down, 1 is up, 2 is left, 3 is right @@ -35,7 +35,7 @@ public abstract class Mob extends Entity { * @param sprites All of this mob's sprites. * @param health The mob's max health. */ - public Mob(LinkedSprite[][] sprites, int health) { + public Mob(SpriteLink[][] sprites, int health) { super(4, 3); this.sprites = sprites; this.health = this.maxHealth = health; @@ -143,25 +143,25 @@ protected boolean removeWhenFarAway(@SuppressWarnings("unused") double distance) } /** This is an easy way to make a list of sprites that are all part of the same "Sprite", so they have similar parameters, but they're just at different locations on the spreadsheet. */ - public static LinkedSprite[] compileSpriteList(int sheetX, int sheetY, int width, int height, int mirror, int number, String key) { - LinkedSprite[] sprites = new LinkedSprite[number]; + public static SpriteLink[] compileSpriteList(int sheetX, int sheetY, int width, int height, int mirror, int number, String key) { + SpriteLink[] sprites = new SpriteLink[number]; for (int i = 0; i < sprites.length; i++) - sprites[i] = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, key).setSpriteDim(sheetX + width * i, sheetY, width, height) + sprites[i] = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, key).setSpriteDim(sheetX + width * i, sheetY, width, height) .setMirror(mirror).setFlip(mirror).createSpriteLink(); return sprites; } - public static LinkedSprite[][] compileMobSpriteAnimations(int sheetX, int sheetY, String key) { - LinkedSprite[][] sprites = new LinkedSprite[4][2]; + public static SpriteLink[][] compileMobSpriteAnimations(int sheetX, int sheetY, String key) { + SpriteLink[][] sprites = new SpriteLink[4][2]; // dir numbers: 0=down, 1=up, 2=left, 3=right. /// On the spritesheet, most mobs have 4 sprites there, first facing down, then up, then right 1, then right 2. The first two get flipped to animate them, but the last two get flipped to change direction. // Contents: down 1, up 1, right 1, right 2 - LinkedSprite[] set1 = compileSpriteList(sheetX, sheetY, 2, 2, 0, 4, key); + SpriteLink[] set1 = compileSpriteList(sheetX, sheetY, 2, 2, 0, 4, key); // Contents: down 2, up 2, left 1, left 2 - LinkedSprite[] set2 = compileSpriteList(sheetX, sheetY, 2, 2, 1, 4, key); + SpriteLink[] set2 = compileSpriteList(sheetX, sheetY, 2, 2, 1, 4, key); // Down sprites[0][0] = set1[0]; diff --git a/src/client/java/minicraft/entity/mob/MobAi.java b/src/client/java/minicraft/entity/mob/MobAi.java index 8195e9171..c5187d3b7 100644 --- a/src/client/java/minicraft/entity/mob/MobAi.java +++ b/src/client/java/minicraft/entity/mob/MobAi.java @@ -8,7 +8,7 @@ import minicraft.gfx.Color; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Item; import minicraft.item.PotionType; import minicraft.level.Level; @@ -32,7 +32,7 @@ public abstract class MobAi extends Mob { * @param rwTime How long the mob will walk in a random direction. (random walk duration) * @param rwChance The chance of this mob will walk in a random direction (random walk chance) */ - protected MobAi(LinkedSprite[][] sprites, int maxHealth, int lifetime, int rwTime, int rwChance) { + protected MobAi(SpriteLink[][] sprites, int maxHealth, int lifetime, int rwTime, int rwChance) { super(sprites, maxHealth); this.lifetime = lifetime; randomWalkTime = 0; @@ -124,7 +124,7 @@ public void render(Screen screen) { int xo = x - 8; int yo = y - 11; - LinkedSprite curSprite = sprites[dir.getDir()][(walkDist >> 3) % sprites[dir.getDir()].length]; + SpriteLink curSprite = sprites[dir.getDir()][(walkDist >> 3) % sprites[dir.getDir()].length]; if (hurtTime > 0) { screen.render(xo, yo, curSprite.getSprite(), true); } else { diff --git a/src/client/java/minicraft/entity/mob/ObsidianKnight.java b/src/client/java/minicraft/entity/mob/ObsidianKnight.java index b0749b333..0e89d48d0 100644 --- a/src/client/java/minicraft/entity/mob/ObsidianKnight.java +++ b/src/client/java/minicraft/entity/mob/ObsidianKnight.java @@ -13,15 +13,15 @@ import minicraft.gfx.Color; import minicraft.gfx.Font; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.item.Items; import minicraft.screen.AchievementsDisplay; public class ObsidianKnight extends EnemyMob { - private static final SpriteLinker.LinkedSprite[][][] armored = new SpriteLinker.LinkedSprite[][][] { + private static final SpriteManager.SpriteLink[][][] armored = new SpriteManager.SpriteLink[][][] { Mob.compileMobSpriteAnimations(0, 0, "obsidian_knight_armored") }; - private static final SpriteLinker.LinkedSprite[][][] broken = new SpriteLinker.LinkedSprite[][][] { + private static final SpriteManager.SpriteLink[][][] broken = new SpriteManager.SpriteLink[][][] { Mob.compileMobSpriteAnimations(0, 0, "obsidian_knight_broken") }; public static ObsidianKnight entity = null; diff --git a/src/client/java/minicraft/entity/mob/PassiveMob.java b/src/client/java/minicraft/entity/mob/PassiveMob.java index 0a563787d..3f2af7436 100644 --- a/src/client/java/minicraft/entity/mob/PassiveMob.java +++ b/src/client/java/minicraft/entity/mob/PassiveMob.java @@ -4,7 +4,7 @@ import minicraft.core.Updater; import minicraft.core.io.Settings; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.level.Level; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; @@ -17,7 +17,7 @@ public class PassiveMob extends MobAi { * healthFactor = 3. * @param sprites The mob's sprites. */ - public PassiveMob(LinkedSprite[][] sprites) { + public PassiveMob(SpriteLink[][] sprites) { this(sprites, 3); } @@ -27,7 +27,7 @@ public PassiveMob(LinkedSprite[][] sprites) { * @param healthFactor Determines the mobs health. Will be multiplied by the difficulty * and then added with 5. */ - public PassiveMob(LinkedSprite[][] sprites, int healthFactor) { + public PassiveMob(SpriteLink[][] sprites, int healthFactor) { super(sprites, 5 + healthFactor * Settings.getIdx("diff"), 5*60*Updater.normSpeed, 45, 40); } diff --git a/src/client/java/minicraft/entity/mob/Pig.java b/src/client/java/minicraft/entity/mob/Pig.java index 1cc2ee567..9150e1ab6 100644 --- a/src/client/java/minicraft/entity/mob/Pig.java +++ b/src/client/java/minicraft/entity/mob/Pig.java @@ -1,11 +1,11 @@ package minicraft.entity.mob; import minicraft.core.io.Settings; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Items; public class Pig extends PassiveMob { - private static LinkedSprite[][] sprites = Mob.compileMobSpriteAnimations(0, 0, "pig"); + private static SpriteLink[][] sprites = Mob.compileMobSpriteAnimations(0, 0, "pig"); /** * Creates a pig. diff --git a/src/client/java/minicraft/entity/mob/Player.java b/src/client/java/minicraft/entity/mob/Player.java index 4af006f05..997fc5543 100644 --- a/src/client/java/minicraft/entity/mob/Player.java +++ b/src/client/java/minicraft/entity/mob/Player.java @@ -25,8 +25,8 @@ import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; import minicraft.gfx.Sprite; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.ArmorItem; import minicraft.item.FishingData; import minicraft.item.FishingRodItem; @@ -89,8 +89,8 @@ public class Player extends Mob implements ItemHolder, ClientTickable { public static int baseHealth = 10; public static final int maxArmor = 100; - public static LinkedSprite[][] sprites; - public static LinkedSprite[][] carrySprites; + public static SpriteLink[][] sprites; + public static SpriteLink[][] carrySprites; private final Inventory inventory; @@ -212,7 +212,7 @@ public void updateInv(String items) { spawny = previousInstance.spawny; } - hudSheet = () -> Renderer.spriteLinker.getSheet(SpriteType.Gui, "hud"); + hudSheet = () -> Renderer.spriteManager.getSheet(SpriteType.Gui, "hud"); updateSprites(); } @@ -823,7 +823,7 @@ private int getAttackDamage(Entity e) { */ public void updateSprites() { // Get the current skin we are using as a MobSprite array. - LinkedSprite[][][] selectedSkin = SkinDisplay.getSkinAsMobSprite(); + SpriteLink[][][] selectedSkin = SkinDisplay.getSkinAsMobSprite(); // Assign the skin to the states. sprites = selectedSkin[0]; @@ -876,10 +876,10 @@ public void render(Screen screen) { col = Color.WHITE; // Make the sprite white. } - LinkedSprite[][] spriteSet = activeItem instanceof FurnitureItem ? carrySprites : sprites; + SpriteLink[][] spriteSet = activeItem instanceof FurnitureItem ? carrySprites : sprites; // Renders falling - LinkedSprite curSprite; + SpriteLink curSprite; if (onFallDelay > 0) { // This makes falling look really cool. int spriteToUse = Math.round(onFallDelay / 2f) % carrySprites.length; diff --git a/src/client/java/minicraft/entity/mob/Sheep.java b/src/client/java/minicraft/entity/mob/Sheep.java index 90a594d49..471b283a1 100644 --- a/src/client/java/minicraft/entity/mob/Sheep.java +++ b/src/client/java/minicraft/entity/mob/Sheep.java @@ -3,7 +3,7 @@ import minicraft.core.io.Settings; import minicraft.entity.Direction; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; @@ -14,8 +14,8 @@ import org.jetbrains.annotations.Nullable; public class Sheep extends PassiveMob { - private static final LinkedSprite[][] sprites = Mob.compileMobSpriteAnimations(0, 0, "sheep"); - private static final LinkedSprite[][] cutSprites = Mob.compileMobSpriteAnimations(0, 2, "sheep"); + private static final SpriteLink[][] sprites = Mob.compileMobSpriteAnimations(0, 0, "sheep"); + private static final SpriteLink[][] cutSprites = Mob.compileMobSpriteAnimations(0, 2, "sheep"); public boolean cut = false; @@ -31,9 +31,9 @@ public void render(Screen screen) { int xo = x - 8; int yo = y - 11; - LinkedSprite[][] curAnim = cut ? cutSprites : sprites; + SpriteLink[][] curAnim = cut ? cutSprites : sprites; - LinkedSprite curSprite = curAnim[dir.getDir()][(walkDist >> 3) % curAnim[dir.getDir()].length]; + SpriteLink curSprite = curAnim[dir.getDir()][(walkDist >> 3) % curAnim[dir.getDir()].length]; if (hurtTime > 0) { screen.render(xo, yo, curSprite.getSprite(), true); } else { diff --git a/src/client/java/minicraft/entity/mob/Skeleton.java b/src/client/java/minicraft/entity/mob/Skeleton.java index 09fc27c56..b88d0d546 100644 --- a/src/client/java/minicraft/entity/mob/Skeleton.java +++ b/src/client/java/minicraft/entity/mob/Skeleton.java @@ -3,11 +3,11 @@ import minicraft.core.Game; import minicraft.core.io.Settings; import minicraft.entity.Arrow; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Items; public class Skeleton extends EnemyMob { - private static LinkedSprite[][][] sprites = new LinkedSprite[][][] { + private static SpriteLink[][][] sprites = new SpriteLink[][][] { Mob.compileMobSpriteAnimations(0, 0, "skeleton"), Mob.compileMobSpriteAnimations(0, 2, "skeleton"), Mob.compileMobSpriteAnimations(0, 4, "skeleton"), diff --git a/src/client/java/minicraft/entity/mob/Slime.java b/src/client/java/minicraft/entity/mob/Slime.java index e6a416ba2..094709d49 100644 --- a/src/client/java/minicraft/entity/mob/Slime.java +++ b/src/client/java/minicraft/entity/mob/Slime.java @@ -4,15 +4,15 @@ import minicraft.core.io.Settings; import minicraft.entity.Direction; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Items; public class Slime extends EnemyMob { - private static LinkedSprite[][][] sprites = new LinkedSprite[][][] { - new LinkedSprite[][] {Mob.compileSpriteList(0, 0, 2, 2, 0, 2, "slime")}, - new LinkedSprite[][] {Mob.compileSpriteList(0, 2, 2, 2, 0, 2, "slime")}, - new LinkedSprite[][] {Mob.compileSpriteList(0, 4, 2, 2, 0, 2, "slime")}, - new LinkedSprite[][] {Mob.compileSpriteList(0, 6, 2, 2, 0, 2, "slime")} + private static SpriteLink[][][] sprites = new SpriteLink[][][] { + new SpriteLink[][] {Mob.compileSpriteList(0, 0, 2, 2, 0, 2, "slime")}, + new SpriteLink[][] {Mob.compileSpriteList(0, 2, 2, 2, 0, 2, "slime")}, + new SpriteLink[][] {Mob.compileSpriteList(0, 4, 2, 2, 0, 2, "slime")}, + new SpriteLink[][] {Mob.compileSpriteList(0, 6, 2, 2, 0, 2, "slime")} }; private int jumpTime = 0; // jumpTimer, also acts as a rest timer before the next jump diff --git a/src/client/java/minicraft/entity/mob/Snake.java b/src/client/java/minicraft/entity/mob/Snake.java index fdcc43eaa..6b2f26073 100644 --- a/src/client/java/minicraft/entity/mob/Snake.java +++ b/src/client/java/minicraft/entity/mob/Snake.java @@ -2,11 +2,11 @@ import minicraft.core.io.Settings; import minicraft.entity.Entity; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Items; public class Snake extends EnemyMob { - private static LinkedSprite[][][] sprites = new LinkedSprite[][][] { + private static SpriteLink[][][] sprites = new SpriteLink[][][] { Mob.compileMobSpriteAnimations(0, 0, "snake"), Mob.compileMobSpriteAnimations(0, 2, "snake"), Mob.compileMobSpriteAnimations(0, 4, "snake"), diff --git a/src/client/java/minicraft/entity/mob/Zombie.java b/src/client/java/minicraft/entity/mob/Zombie.java index 987b26072..fad75f064 100644 --- a/src/client/java/minicraft/entity/mob/Zombie.java +++ b/src/client/java/minicraft/entity/mob/Zombie.java @@ -1,11 +1,11 @@ package minicraft.entity.mob; import minicraft.core.io.Settings; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.item.Items; public class Zombie extends EnemyMob { - private static LinkedSprite[][][] sprites = new LinkedSprite[][][] { + private static SpriteLink[][][] sprites = new SpriteLink[][][] { Mob.compileMobSpriteAnimations(0, 0, "zombie"), Mob.compileMobSpriteAnimations(0, 2, "zombie"), Mob.compileMobSpriteAnimations(0, 4, "zombie"), diff --git a/src/client/java/minicraft/entity/particle/BurnParticle.java b/src/client/java/minicraft/entity/particle/BurnParticle.java index 3d10d5e9c..8c5e48ee6 100644 --- a/src/client/java/minicraft/entity/particle/BurnParticle.java +++ b/src/client/java/minicraft/entity/particle/BurnParticle.java @@ -1,11 +1,11 @@ package minicraft.entity.particle; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; public class BurnParticle extends Particle { /// This is used for Spawners, when they spawn an entity. - private static final SpriteLinker.LinkedSprite sprite = - new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Gui, "hud") + private static final SpriteManager.SpriteLink sprite = + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Gui, "hud") .setSpriteDim(6, 2, 1, 1) .setMirror(3).createSpriteLink(); diff --git a/src/client/java/minicraft/entity/particle/FireParticle.java b/src/client/java/minicraft/entity/particle/FireParticle.java index ce4aec130..8af47f944 100644 --- a/src/client/java/minicraft/entity/particle/FireParticle.java +++ b/src/client/java/minicraft/entity/particle/FireParticle.java @@ -1,7 +1,7 @@ package minicraft.entity.particle; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; public class FireParticle extends Particle { /// This is used for Spawners, when they spawn an entity. @@ -14,7 +14,7 @@ public class FireParticle extends Particle { * @param y Y map position */ public FireParticle(int x, int y) { - super(x, y, 30, new LinkedSprite.SpriteLinkBuilder(SpriteType.Gui, "hud") + super(x, y, 30, new SpriteLink.SpriteLinkBuilder(SpriteType.Gui, "hud") .setSpriteDim(4, 2, 1, 1).createSpriteLink()); } } diff --git a/src/client/java/minicraft/entity/particle/Particle.java b/src/client/java/minicraft/entity/particle/Particle.java index 5480f4876..e035f7e35 100644 --- a/src/client/java/minicraft/entity/particle/Particle.java +++ b/src/client/java/minicraft/entity/particle/Particle.java @@ -3,7 +3,7 @@ import minicraft.entity.ClientTickable; import minicraft.entity.Entity; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.util.Logging; import javax.security.auth.DestroyFailedException; @@ -12,7 +12,7 @@ public class Particle extends Entity implements ClientTickable { private int time; // lifetime elapsed. private int lifetime; - protected LinkedSprite sprite; + protected SpriteLink sprite; /** * Creates an particle entity at the given position. The particle has a x and y radius = 1. @@ -22,7 +22,7 @@ public class Particle extends Entity implements ClientTickable { * @param lifetime How many game ticks the particle lives before its removed * @param sprite The particle's sprite */ - public Particle(int x, int y, int xr, int lifetime, LinkedSprite sprite) { + public Particle(int x, int y, int xr, int lifetime, SpriteLink sprite) { // Make a particle at the given coordinates super(xr, 1); this.x = x; @@ -31,7 +31,7 @@ public Particle(int x, int y, int xr, int lifetime, LinkedSprite sprite) { this.sprite = sprite; time = 0; } - public Particle(int x, int y, int lifetime, LinkedSprite sprite) { + public Particle(int x, int y, int lifetime, SpriteLink sprite) { this(x, y, 1, lifetime, sprite); } diff --git a/src/client/java/minicraft/entity/particle/SandParticle.java b/src/client/java/minicraft/entity/particle/SandParticle.java index 6803fa8c2..63fb0fb1c 100644 --- a/src/client/java/minicraft/entity/particle/SandParticle.java +++ b/src/client/java/minicraft/entity/particle/SandParticle.java @@ -1,7 +1,7 @@ package minicraft.entity.particle; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import java.util.Random; @@ -13,7 +13,7 @@ public class SandParticle extends Particle { */ public SandParticle(int x, int y) { super(x, y, 180 + new Random().nextInt(71) - 35, null); - sprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "sand_dust").setMirror(random.nextInt(4)) + sprite = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "sand_dust").setMirror(random.nextInt(4)) .createSpriteLink(); } } diff --git a/src/client/java/minicraft/entity/particle/SmashParticle.java b/src/client/java/minicraft/entity/particle/SmashParticle.java index a62b13b59..e90bc2d90 100644 --- a/src/client/java/minicraft/entity/particle/SmashParticle.java +++ b/src/client/java/minicraft/entity/particle/SmashParticle.java @@ -1,7 +1,7 @@ package minicraft.entity.particle; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; public class SmashParticle extends Particle { /** @@ -12,6 +12,6 @@ public class SmashParticle extends Particle { * @param y Y map position */ public SmashParticle(int x, int y) { - super(x, y, 10, new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, "smash").createSpriteLink()); + super(x, y, 10, new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "smash").createSpriteLink()); } } diff --git a/src/client/java/minicraft/gfx/Font.java b/src/client/java/minicraft/gfx/Font.java index ff141eea8..47ff42b41 100644 --- a/src/client/java/minicraft/gfx/Font.java +++ b/src/client/java/minicraft/gfx/Font.java @@ -2,7 +2,7 @@ import minicraft.core.Renderer; import minicraft.core.io.Localization; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import java.util.ArrayList; import java.util.Arrays; @@ -29,7 +29,7 @@ public class Font { int ix = chars.indexOf(msg.charAt(i)); // The current letter in the message loop if (ix >= 0) { // If that character's position is larger than or equal to 0, then render the character on the screen. - screen.render(x + i * textWidth(msg.substring(i, i+1)), y, ix % 32, ix / 32, 0, Renderer.spriteLinker.getSheet(SpriteType.Gui, "font"), whiteTint); + screen.render(x + i * textWidth(msg.substring(i, i+1)), y, ix % 32, ix / 32, 0, Renderer.spriteManager.getSheet(SpriteType.Gui, "font"), whiteTint); } } } @@ -68,7 +68,7 @@ public static void drawColor(String message, Screen screen, int x, int y) { public static void drawBackground(String msg, Screen screen, int x, int y, int whiteTint) { String newMsg = msg.toUpperCase(Localization.getSelectedLocale()); for (int i = 0; i < newMsg.length(); i++) { // Renders the black boxes under the text - screen.render(x + i * textWidth(newMsg.substring(i, i+1)), y, 5, 2, 0, Renderer.spriteLinker.getSheet(SpriteType.Gui, "hud")); + screen.render(x + i * textWidth(newMsg.substring(i, i+1)), y, 5, 2, 0, Renderer.spriteManager.getSheet(SpriteType.Gui, "hud")); } // Renders the text diff --git a/src/client/java/minicraft/gfx/MinicraftImage.java b/src/client/java/minicraft/gfx/MinicraftImage.java index 9ef850960..0c12a01b2 100644 --- a/src/client/java/minicraft/gfx/MinicraftImage.java +++ b/src/client/java/minicraft/gfx/MinicraftImage.java @@ -1,7 +1,7 @@ package minicraft.gfx; import minicraft.core.CrashHandler; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import java.awt.image.BufferedImage; import java.io.IOException; @@ -28,8 +28,8 @@ public MinicraftImage(BufferedImage image) throws IOException { /** * Custom size. * @param image The image to be added. - * @param width The width of the {@link MinicraftImage} to be applied to the {@link LinkedSprite}. - * @param height The height of the {@link MinicraftImage} to be applied to the {@link LinkedSprite}. + * @param width The width of the {@link MinicraftImage} to be applied to the {@link SpriteLink}. + * @param height The height of the {@link MinicraftImage} to be applied to the {@link SpriteLink}. * @throws IOException */ public MinicraftImage(BufferedImage image, int width, int height) throws IOException { diff --git a/src/client/java/minicraft/gfx/Screen.java b/src/client/java/minicraft/gfx/Screen.java index 8491cd62b..d31c40a3a 100644 --- a/src/client/java/minicraft/gfx/Screen.java +++ b/src/client/java/minicraft/gfx/Screen.java @@ -2,8 +2,8 @@ import minicraft.core.Renderer; import minicraft.core.Updater; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import java.util.Arrays; @@ -48,7 +48,7 @@ public void render(int xp, int yp, int xt, int yt, int bits, MinicraftImage shee render(xp, yp, xt, yt, bits, sheet, whiteTint, fullbright, 0); } - public void render(int xp, int yp, LinkedSprite sprite) { render(xp, yp, sprite.getSprite()); } + public void render(int xp, int yp, SpriteLink sprite) { render(xp, yp, sprite.getSprite()); } public void render(int xp, int yp, Sprite sprite) { render(xp, yp, sprite, false); } public void render(int xp, int yp, Sprite sprite, boolean fullbright) { render(xp, yp, sprite, 0, fullbright, 0); } public void render(int xp, int yp, Sprite sprite, int mirror, boolean fullbright) { render(xp, yp, sprite, mirror, fullbright, 0); } @@ -83,7 +83,7 @@ public void render(int xp, int yp, int xt, int yt, int bits, MinicraftImage shee // Validation check if (sheet == null || xt * 8 + yt * 8 * sheet.width + 7 + 7 * sheet.width >= sheet.pixels.length) { - sheet = Renderer.spriteLinker.missingSheet(SpriteType.Item); + sheet = Renderer.spriteManager.missingSheet(SpriteType.Item); xt = 0; yt = 0; } diff --git a/src/client/java/minicraft/gfx/SpriteAnimation.java b/src/client/java/minicraft/gfx/SpriteAnimation.java index d611f0e2b..51eded3c7 100644 --- a/src/client/java/minicraft/gfx/SpriteAnimation.java +++ b/src/client/java/minicraft/gfx/SpriteAnimation.java @@ -3,9 +3,9 @@ import minicraft.core.Renderer; import minicraft.core.Updater; import minicraft.core.World; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteMeta; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteMeta; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import minicraft.util.Logging; @@ -39,7 +39,7 @@ public static void refreshAnimations() { spriteAnimations.forEach(a -> a.refreshAnimation(metas.get(a.key))); } - private LinkedSprite[] animations; + private SpriteLink[] animations; private SpriteMeta metadata; // The metadata of the sprite sheet. private int frame = 0; // The current frame of the animation. private int frametick = 0; // The current tick of the current frame. It would be always 0 if no animation. @@ -48,8 +48,8 @@ public static void refreshAnimations() { private boolean destoryed = false; // Whether this instance is still registered. // Border settings. - private LinkedSprite border = null; - private LinkedSprite corner = null; + private SpriteLink border = null; + private SpriteLink corner = null; private BiFunction connectChecker; private boolean singletonWithConnective = false; @@ -103,7 +103,7 @@ public SpriteAnimation setSingletonWithConnective(boolean connective) { * @return The instance itself. */ public SpriteAnimation setColor(int color) { - for (LinkedSprite sprite : animations) { + for (SpriteLink sprite : animations) { sprite.setColor(color); } @@ -128,7 +128,7 @@ public SpriteAnimation setColor(int frame, int color) { * Getting the current frame of animation. * @return The current frame sprite. */ - public LinkedSprite getCurrentFrame() { + public SpriteLink getCurrentFrame() { return animations[frame]; } @@ -137,7 +137,7 @@ public LinkedSprite getCurrentFrame() { * @param frame The specific frame. * @return The frame sprite. */ - public LinkedSprite getFrame(int frame) { + public SpriteLink getFrame(int frame) { return animations[frame]; } @@ -234,9 +234,9 @@ public void refreshAnimation(SpriteMeta metadata) { frame = 0; frametick = 0; this.metadata = metadata; - MinicraftImage sheet = Renderer.spriteLinker.getSheet(type, key); + MinicraftImage sheet = Renderer.spriteManager.getSheet(type, key); if (sheet == null) { - animations = new LinkedSprite[] {SpriteLinker.missingTexture(type)}; + animations = new SpriteLink[] {SpriteManager.missingTexture(type)}; border = null; corner = null; return; @@ -246,7 +246,7 @@ public void refreshAnimation(SpriteMeta metadata) { // Destroying all previous LinkedSprite. try { - if (animations != null) for (LinkedSprite sprite : animations) sprite.destroy(); + if (animations != null) for (SpriteLink sprite : animations) sprite.destroy(); if (border != null) border.destroy(); if (corner != null) corner.destroy(); } catch (DestroyFailedException e) { @@ -255,17 +255,17 @@ public void refreshAnimation(SpriteMeta metadata) { if (metadata != null) { if (metadata.frames < 1) metadata.frames = 1; - animations = new LinkedSprite[metadata.frames]; + animations = new SpriteLink[metadata.frames]; for (int f = 0; f < animations.length; f++) { - animations[f] = new LinkedSprite.SpriteLinkBuilder(type, key).setSpriteDim(0, f * width, width, width) + animations[f] = new SpriteLink.SpriteLinkBuilder(type, key).setSpriteDim(0, f * width, width, width) .createSpriteLink(false); } // Tile sprite only. - if (metadata.border != null) border = new LinkedSprite.SpriteLinkBuilder(type, metadata.border).createSpriteLink(false); - if (metadata.corner != null) corner = new LinkedSprite.SpriteLinkBuilder(type, metadata.corner).createSpriteLink(false); + if (metadata.border != null) border = new SpriteLink.SpriteLinkBuilder(type, metadata.border).createSpriteLink(false); + if (metadata.corner != null) corner = new SpriteLink.SpriteLinkBuilder(type, metadata.corner).createSpriteLink(false); } else { - animations = new LinkedSprite[] {new LinkedSprite.SpriteLinkBuilder(type, key).setSpriteSize(width, width).createSpriteLink(false)}; + animations = new SpriteLink[] {new SpriteLink.SpriteLinkBuilder(type, key).setSpriteSize(width, width).createSpriteLink(false)}; border = null; corner = null; } @@ -274,7 +274,7 @@ public void refreshAnimation(SpriteMeta metadata) { @Override public void destroy() throws DestroyFailedException { spriteAnimations.remove(this); - if (animations != null) for (LinkedSprite sprite : animations) sprite.destroy(); + if (animations != null) for (SpriteLink sprite : animations) sprite.destroy(); if (border != null) border.destroy(); if (corner != null) corner.destroy(); destoryed = true; diff --git a/src/client/java/minicraft/gfx/SpriteLinker.java b/src/client/java/minicraft/gfx/SpriteManager.java similarity index 84% rename from src/client/java/minicraft/gfx/SpriteLinker.java rename to src/client/java/minicraft/gfx/SpriteManager.java index d481ef134..71aa0c190 100644 --- a/src/client/java/minicraft/gfx/SpriteLinker.java +++ b/src/client/java/minicraft/gfx/SpriteManager.java @@ -9,13 +9,13 @@ import java.util.ArrayList; import java.util.HashMap; -public class SpriteLinker { +public class SpriteManager { /** Buffering SpriteSheet for caching. */ private final HashMap entitySheets = new HashMap<>(), guiSheets = new HashMap<>(), itemSheets = new HashMap<>(), tileSheets = new HashMap<>(); /** Storing all exist in-used LinkedSprite. */ - private final ArrayList linkedSheets = new ArrayList<>(); + private final ArrayList linkedSheets = new ArrayList<>(); /** Clearing all Sprite buffers for the upcoming resource pack application. */ public void resetSprites() { @@ -86,11 +86,11 @@ public void refreshSkins() { * @param type The sprite category. * @return The missing texture or null if invalid sprite category. */ - public static LinkedSprite missingTexture(SpriteType type) { + public static SpriteLink missingTexture(SpriteType type) { switch (type) { - case Entity: return LinkedSprite.MISSING_ENTITY_TEXTURE; - case Item: return LinkedSprite.MISSING_ITEM_TEXTURE; - case Tile: return LinkedSprite.MISSING_TILE_TEXTURE; + case Entity: return SpriteLink.MISSING_ENTITY_TEXTURE; + case Item: return SpriteLink.MISSING_ITEM_TEXTURE; + case Tile: return SpriteLink.MISSING_TILE_TEXTURE; default: return null; } } @@ -112,7 +112,7 @@ public MinicraftImage missingSheet(SpriteType type) { /** Updating all existing LinkedSheet for resource pack application. */ public void updateLinkedSheets() { Logging.SPRITE.debug("Updating all LinkedSprite."); - linkedSheets.forEach(LinkedSprite::reloadSprite); + linkedSheets.forEach(SpriteLink::reloadSprite); } /** The metadata of the sprite sheet. */ @@ -139,12 +139,12 @@ public HashMap getMappingByType(SpriteType type) { } /** A sprite collector with resource collector. */ - public static class LinkedSprite implements Destroyable { + public static class SpriteLink implements Destroyable { /** Textures for missing textures for entity, item or tile */ - public static final LinkedSprite - MISSING_ENTITY_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Entity, MISSING_ENTITY_KEY).createSpriteLink(true), - MISSING_ITEM_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, MISSING_ITEM_KEY).createSpriteLink(true), - MISSING_TILE_TEXTURE = new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, MISSING_TILE_KEY).createSpriteLink(true); + public static final SpriteLink + MISSING_ENTITY_TEXTURE = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, MISSING_ENTITY_KEY).createSpriteLink(true), + MISSING_ITEM_TEXTURE = new SpriteLink.SpriteLinkBuilder(SpriteType.Item, MISSING_ITEM_KEY).createSpriteLink(true), + MISSING_TILE_TEXTURE = new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, MISSING_TILE_KEY).createSpriteLink(true); private final String key; // The resource key. private final SpriteType spriteType; @@ -159,8 +159,8 @@ public static class LinkedSprite implements Destroyable { private Sprite sprite = null; private boolean destroyed = false; // It is not linked when destroyed. - private LinkedSprite(SpriteType spriteType, String key, HashMap linkedMap, - int x, int y, int w, int h, int color, int mirror, int flip, boolean immutable) { + private SpriteLink(SpriteType spriteType, String key, HashMap linkedMap, + int x, int y, int w, int h, int color, int mirror, int flip, boolean immutable) { this.key = key; this.spriteType = spriteType; this.linkedMap = linkedMap; @@ -188,7 +188,7 @@ public MinicraftImage getSheet() { * @param color The color of the white tint. * @return The instance itself. */ - public LinkedSprite setColor(int color) { + public SpriteLink setColor(int color) { if (immutable) { this.color = color; if (sprite != null) sprite.color = color; @@ -239,10 +239,10 @@ private void reloadSprite(boolean onInitialize) { /** Unlink this LinkedSprite from SpriteLinker. */ @Override public void destroy() throws DestroyFailedException { - Renderer.spriteLinker.linkedSheets.remove(this); // Unlink this instance. + Renderer.spriteManager.linkedSheets.remove(this); // Unlink this instance. destroyed = true; } - /** If this {@link LinkedSprite} is unlinked from {@link SpriteLinker}. */ + /** If this {@link SpriteLink} is unlinked from {@link SpriteManager}. */ @Override public boolean isDestroyed() { return destroyed; @@ -255,7 +255,7 @@ public static class SpriteLinkBuilder { private int x, y, w, h, color = -1, mirror = 0, flip = 0; /** - * Create new {@link SpriteLinkBuilder} for the creation of {@link LinkedSprite} with the specific category and resource key. + * Create new {@link SpriteLinkBuilder} for the creation of {@link SpriteLink} with the specific category and resource key. * @param spriteType The category of the sprite. * @param key The resource key of the sprite. */ @@ -332,11 +332,11 @@ public SpriteLinkBuilder setFlip(int flip) { return this; } - public LinkedSprite createSpriteLink() { return createSpriteLink(true); } - public LinkedSprite createSpriteLink(boolean immutable) { - HashMap linkedMap = Renderer.spriteLinker.getMappingByType(spriteType); - LinkedSprite sprite = new LinkedSprite(spriteType, key, linkedMap, x, y, w, h, color, mirror, flip, immutable); - Renderer.spriteLinker.linkedSheets.add(sprite); + public SpriteLink createSpriteLink() { return createSpriteLink(true); } + public SpriteLink createSpriteLink(boolean immutable) { + HashMap linkedMap = Renderer.spriteManager.getMappingByType(spriteType); + SpriteLink sprite = new SpriteLink(spriteType, key, linkedMap, x, y, w, h, color, mirror, flip, immutable); + Renderer.spriteManager.linkedSheets.add(sprite); return sprite; } } diff --git a/src/client/java/minicraft/item/ArmorItem.java b/src/client/java/minicraft/item/ArmorItem.java index b555d406b..778a49404 100644 --- a/src/client/java/minicraft/item/ArmorItem.java +++ b/src/client/java/minicraft/item/ArmorItem.java @@ -2,8 +2,8 @@ import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import org.jetbrains.annotations.NotNull; @@ -16,15 +16,15 @@ protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); items.add(new ArmorItem("Leather Armor", - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "leather_armor").createSpriteLink(), .3f, 1)); + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "leather_armor").createSpriteLink(), .3f, 1)); items.add(new ArmorItem("Snake Armor", - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "snake_armor").createSpriteLink(), .4f, 2)); + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "snake_armor").createSpriteLink(), .4f, 2)); items.add(new ArmorItem("Iron Armor", - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "iron_armor").createSpriteLink(), .5f, 3)); + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "iron_armor").createSpriteLink(), .5f, 3)); items.add(new ArmorItem("Gold Armor", - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gold_armor").createSpriteLink(), .7f, 4)); + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "gold_armor").createSpriteLink(), .7f, 4)); items.add(new ArmorItem("Gem Armor", - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gem_armor").createSpriteLink(), 1f, 5)); + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "gem_armor").createSpriteLink(), 1f, 5)); return items; } @@ -33,8 +33,8 @@ protected static ArrayList getAllInstances() { private final int staminaCost; public final int level; - private ArmorItem(String name, LinkedSprite sprite, float health, int level) { this(name, sprite, 1, health, level); } - private ArmorItem(String name, LinkedSprite sprite, int count, float health, int level) { + private ArmorItem(String name, SpriteLink sprite, float health, int level) { this(name, sprite, 1, health, level); } + private ArmorItem(String name, SpriteLink sprite, int count, float health, int level) { super(name, sprite, count); this.armor = health; this.level = level; diff --git a/src/client/java/minicraft/item/BookItem.java b/src/client/java/minicraft/item/BookItem.java index 622367cc4..034c2e65b 100644 --- a/src/client/java/minicraft/item/BookItem.java +++ b/src/client/java/minicraft/item/BookItem.java @@ -3,8 +3,8 @@ import minicraft.core.Game; import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import minicraft.screen.BookDisplay; @@ -17,8 +17,8 @@ public class BookItem extends Item { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList(); - items.add(new BookItem("Book", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "book").createSpriteLink(), null)); - items.add(new BookItem("Antidious", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "antidious_book") + items.add(new BookItem("Book", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "book").createSpriteLink(), null)); + items.add(new BookItem("Antidious", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "antidious_book") .createSpriteLink(), () -> BookData.antVenomBook.collect(), true)); return items; } @@ -31,8 +31,8 @@ public static interface BookContent { protected BookContent book; // TODO this is not saved yet; it could be, for editable books. private final boolean hasTitlePage; - private BookItem(String title, LinkedSprite sprite, BookContent book) { this(title, sprite, book, false); } - private BookItem(String title, LinkedSprite sprite, BookContent book, boolean hasTitlePage) { + private BookItem(String title, SpriteLink sprite, BookContent book) { this(title, sprite, book, false); } + private BookItem(String title, SpriteLink sprite, BookContent book, boolean hasTitlePage) { super(title, sprite); this.book = book; this.hasTitlePage = hasTitlePage; diff --git a/src/client/java/minicraft/item/BucketItem.java b/src/client/java/minicraft/item/BucketItem.java index 55637f61f..82c90687d 100644 --- a/src/client/java/minicraft/item/BucketItem.java +++ b/src/client/java/minicraft/item/BucketItem.java @@ -3,8 +3,8 @@ import minicraft.core.Game; import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; @@ -49,7 +49,7 @@ private static Fill getFilling(Tile tile) { private BucketItem(Fill fill) { this(fill, 1); } private BucketItem(Fill fill, int count) { - super(fill.toString() + " Bucket", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, fill == Fill.Empty ? "bucket" : + super(fill.toString() + " Bucket", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, fill == Fill.Empty ? "bucket" : fill == Fill.Lava ? "lava_bucket" : "water_bucket").createSpriteLink(), count); this.filling = fill; } diff --git a/src/client/java/minicraft/item/ClothingItem.java b/src/client/java/minicraft/item/ClothingItem.java index 976fd4d4b..0b910df5b 100644 --- a/src/client/java/minicraft/item/ClothingItem.java +++ b/src/client/java/minicraft/item/ClothingItem.java @@ -3,8 +3,8 @@ import minicraft.entity.Direction; import minicraft.entity.mob.Player; import minicraft.gfx.Color; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import org.jetbrains.annotations.NotNull; @@ -16,23 +16,23 @@ public class ClothingItem extends StackableItem { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new ClothingItem("Red Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "red_clothes").createSpriteLink(), Color.get(1, 204, 0, 0))); - items.add(new ClothingItem("Blue Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "blue_clothes").createSpriteLink(), Color.get(1, 0, 0, 204))); - items.add(new ClothingItem("Green Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "green_clothes").createSpriteLink(), Color.get(1, 0, 204, 0))); - items.add(new ClothingItem("Yellow Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "yellow_clothes").createSpriteLink(), Color.get(1, 204, 204, 0))); - items.add(new ClothingItem("Black Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "black_clothes").createSpriteLink(), Color.get(1, 51))); - items.add(new ClothingItem("Orange Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "orange_clothes").createSpriteLink(), Color.get(1, 255, 102, 0))); - items.add(new ClothingItem("Purple Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "purple_clothes").createSpriteLink(), Color.get(1, 102, 0, 153))); - items.add(new ClothingItem("Cyan Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cyan_clothes").createSpriteLink(), Color.get(1, 0, 102, 153))); - items.add(new ClothingItem("Reg Clothes", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "reg_clothes").createSpriteLink(), Color.get(1, 51, 51, 0))); + items.add(new ClothingItem("Red Clothes", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "red_clothes").createSpriteLink(), Color.get(1, 204, 0, 0))); + items.add(new ClothingItem("Blue Clothes", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "blue_clothes").createSpriteLink(), Color.get(1, 0, 0, 204))); + items.add(new ClothingItem("Green Clothes", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "green_clothes").createSpriteLink(), Color.get(1, 0, 204, 0))); + items.add(new ClothingItem("Yellow Clothes", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "yellow_clothes").createSpriteLink(), Color.get(1, 204, 204, 0))); + items.add(new ClothingItem("Black Clothes", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "black_clothes").createSpriteLink(), Color.get(1, 51))); + items.add(new ClothingItem("Orange Clothes", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "orange_clothes").createSpriteLink(), Color.get(1, 255, 102, 0))); + items.add(new ClothingItem("Purple Clothes", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "purple_clothes").createSpriteLink(), Color.get(1, 102, 0, 153))); + items.add(new ClothingItem("Cyan Clothes", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cyan_clothes").createSpriteLink(), Color.get(1, 0, 102, 153))); + items.add(new ClothingItem("Reg Clothes", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "reg_clothes").createSpriteLink(), Color.get(1, 51, 51, 0))); return items; } private int playerCol; - private ClothingItem(String name, LinkedSprite sprite, int pcol) { this(name, 1, sprite, pcol); } - private ClothingItem(String name, int count, LinkedSprite sprite, int pcol) { + private ClothingItem(String name, SpriteLink sprite, int pcol) { this(name, 1, sprite, pcol); } + private ClothingItem(String name, int count, SpriteLink sprite, int pcol) { super(name, sprite, count); playerCol = pcol; } diff --git a/src/client/java/minicraft/item/FishingRodItem.java b/src/client/java/minicraft/item/FishingRodItem.java index 7f5b49702..912d96247 100644 --- a/src/client/java/minicraft/item/FishingRodItem.java +++ b/src/client/java/minicraft/item/FishingRodItem.java @@ -3,8 +3,8 @@ import minicraft.core.Game; import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; @@ -47,7 +47,7 @@ protected static ArrayList getAllInstances() { }; public FishingRodItem(int level) { - super(LEVEL_NAMES[level] + " Fishing Rod", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, + super(LEVEL_NAMES[level] + " Fishing Rod", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, LEVEL_NAMES[level].toLowerCase().replace("wood", "wooden") + "_fishing_rod").createSpriteLink()); this.level = level; } diff --git a/src/client/java/minicraft/item/FoodItem.java b/src/client/java/minicraft/item/FoodItem.java index 9de2099da..16b003eed 100644 --- a/src/client/java/minicraft/item/FoodItem.java +++ b/src/client/java/minicraft/item/FoodItem.java @@ -2,8 +2,8 @@ import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import org.jetbrains.annotations.NotNull; @@ -15,16 +15,16 @@ public class FoodItem extends StackableItem { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new FoodItem("Baked Potato", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "baked_potato").createSpriteLink(), 1)); - items.add(new FoodItem("Apple", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "apple").createSpriteLink(), 1)); - items.add(new FoodItem("Raw Pork", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "pork").createSpriteLink(), 1)); - items.add(new FoodItem("Raw Fish", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "fish").createSpriteLink(), 1)); - items.add(new FoodItem("Raw Beef", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "beef").createSpriteLink(), 1)); - items.add(new FoodItem("Bread", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "bread").createSpriteLink(), 2)); - items.add(new FoodItem("Cooked Fish", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cooked_fish").createSpriteLink(), 3)); - items.add(new FoodItem("Cooked Pork", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cooked_pork").createSpriteLink(), 3)); - items.add(new FoodItem("Steak", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cooked_beef").createSpriteLink(), 3)); - items.add(new FoodItem("Gold Apple", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "golden_apple").createSpriteLink(), 10)); + items.add(new FoodItem("Baked Potato", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "baked_potato").createSpriteLink(), 1)); + items.add(new FoodItem("Apple", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "apple").createSpriteLink(), 1)); + items.add(new FoodItem("Raw Pork", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "pork").createSpriteLink(), 1)); + items.add(new FoodItem("Raw Fish", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "fish").createSpriteLink(), 1)); + items.add(new FoodItem("Raw Beef", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "beef").createSpriteLink(), 1)); + items.add(new FoodItem("Bread", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "bread").createSpriteLink(), 2)); + items.add(new FoodItem("Cooked Fish", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cooked_fish").createSpriteLink(), 3)); + items.add(new FoodItem("Cooked Pork", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cooked_pork").createSpriteLink(), 3)); + items.add(new FoodItem("Steak", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cooked_beef").createSpriteLink(), 3)); + items.add(new FoodItem("Gold Apple", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "golden_apple").createSpriteLink(), 10)); return items; } @@ -32,8 +32,8 @@ protected static ArrayList getAllInstances() { private final int feed; // The amount of hunger the food "satisfies" you by. private static final int staminaCost = 2; // The amount of stamina it costs to consume the food. - private FoodItem(String name, LinkedSprite sprite, int feed) { this(name, sprite, 1, feed); } - private FoodItem(String name, LinkedSprite sprite, int count, int feed) { + private FoodItem(String name, SpriteLink sprite, int feed) { this(name, sprite, 1, feed); } + private FoodItem(String name, SpriteLink sprite, int count, int feed) { super(name, sprite, count); this.feed = feed; } diff --git a/src/client/java/minicraft/item/HeartItem.java b/src/client/java/minicraft/item/HeartItem.java index f5bbaf737..b055da828 100644 --- a/src/client/java/minicraft/item/HeartItem.java +++ b/src/client/java/minicraft/item/HeartItem.java @@ -3,7 +3,7 @@ import minicraft.core.Updater; import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.level.Level; import minicraft.level.tile.Tile; @@ -15,7 +15,7 @@ protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); items.add(new HeartItem("Obsidian Heart", - new SpriteLinker.LinkedSprite.SpriteLinkBuilder(SpriteLinker.SpriteType.Item, "obsidian_heart").createSpriteLink(), 5)); + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Item, "obsidian_heart").createSpriteLink(), 5)); return items; } @@ -23,8 +23,8 @@ protected static ArrayList getAllInstances() { private int health; // The amount of health to increase by. private int staminaCost; // The amount of stamina it costs to consume. - private HeartItem(String name, SpriteLinker.LinkedSprite sprite, int health) { this(name, sprite, 1, health); } - private HeartItem(String name, SpriteLinker.LinkedSprite sprite, int count, int health) { + private HeartItem(String name, SpriteManager.SpriteLink sprite, int health) { this(name, sprite, 1, health); } + private HeartItem(String name, SpriteManager.SpriteLink sprite, int count, int health) { super(name, sprite, count); this.health = health; staminaCost = 7; diff --git a/src/client/java/minicraft/item/Item.java b/src/client/java/minicraft/item/Item.java index a7fed6f38..8931effe9 100644 --- a/src/client/java/minicraft/item/Item.java +++ b/src/client/java/minicraft/item/Item.java @@ -5,9 +5,9 @@ import minicraft.entity.mob.Player; import minicraft.gfx.Font; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import org.jetbrains.annotations.NotNull; @@ -17,15 +17,15 @@ public abstract class Item { /* Note: Most of the stuff in the class is expanded upon in StackableItem/PowerGloveItem/FurnitureItem/etc */ private final String name; - public LinkedSprite sprite; + public SpriteLink sprite; public boolean used_pending = false; // This is for multiplayer, when an item has been used, and is pending server response as to the outcome, this is set to true so it cannot be used again unless the server responds that the item wasn't used. Which should basically replace the item anyway, soo... yeah. this never gets set back. protected Item(String name) { - sprite = SpriteLinker.missingTexture(SpriteType.Item); + sprite = SpriteManager.missingTexture(SpriteType.Item); this.name = name; } - protected Item(String name, LinkedSprite sprite) { + protected Item(String name, SpriteLink sprite) { this.name = name; this.sprite = sprite; } diff --git a/src/client/java/minicraft/item/PotionItem.java b/src/client/java/minicraft/item/PotionItem.java index 85a372b7f..2fd98cf4f 100644 --- a/src/client/java/minicraft/item/PotionItem.java +++ b/src/client/java/minicraft/item/PotionItem.java @@ -2,8 +2,8 @@ import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import minicraft.screen.AchievementsDisplay; @@ -26,7 +26,7 @@ protected static ArrayList getAllInstances() { private PotionItem(PotionType type) { this(type, 1); } private PotionItem(PotionType type, int count) { - super(type.name, new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "potion") + super(type.name, new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "potion") .setColor(type.dispColor).createSpriteLink(), count); this.type = type; } diff --git a/src/client/java/minicraft/item/StackableItem.java b/src/client/java/minicraft/item/StackableItem.java index c93fe1ddb..4121145f6 100644 --- a/src/client/java/minicraft/item/StackableItem.java +++ b/src/client/java/minicraft/item/StackableItem.java @@ -2,8 +2,8 @@ import minicraft.core.Game; import minicraft.core.io.Localization; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -15,28 +15,28 @@ public class StackableItem extends Item { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new StackableItem("Wood", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "wood").createSpriteLink())); - items.add(new StackableItem("Leather", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "leather").createSpriteLink())); - items.add(new StackableItem("Wheat", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "wheat").createSpriteLink())); - items.add(new StackableItem("Key", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "key").createSpriteLink())); - items.add(new StackableItem("arrow", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "arrow").createSpriteLink())); - items.add(new StackableItem("string", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "string").createSpriteLink())); - items.add(new StackableItem("Coal", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "coal").createSpriteLink())); - items.add(new StackableItem("Iron Ore", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "iron_ore").createSpriteLink())); - items.add(new StackableItem("Lapis", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "lapis").createSpriteLink())); - items.add(new StackableItem("Gold Ore", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gold_ore").createSpriteLink())); - items.add(new StackableItem("Iron", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "iron_ingot").createSpriteLink())); - items.add(new StackableItem("Gold", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gold_ingot").createSpriteLink())); - items.add(new StackableItem("Rose", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "red_flower").createSpriteLink())); - items.add(new StackableItem("Gunpowder", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gunpowder").createSpriteLink())); - items.add(new StackableItem("Slime", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "slime").createSpriteLink())); - items.add(new StackableItem("glass", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "glass").createSpriteLink())); - items.add(new StackableItem("cloth", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cloth").createSpriteLink())); - items.add(new StackableItem("gem", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "gem").createSpriteLink())); - items.add(new StackableItem("Scale", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "scale").createSpriteLink())); - items.add(new StackableItem("Shard", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "shard").createSpriteLink())); - items.add(new StackableItem("Cloud Ore", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cloud_ore").createSpriteLink())); - items.add(new StackableItem("Glass Bottle", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "glass_bottle").createSpriteLink())); + items.add(new StackableItem("Wood", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "wood").createSpriteLink())); + items.add(new StackableItem("Leather", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "leather").createSpriteLink())); + items.add(new StackableItem("Wheat", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "wheat").createSpriteLink())); + items.add(new StackableItem("Key", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "key").createSpriteLink())); + items.add(new StackableItem("arrow", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "arrow").createSpriteLink())); + items.add(new StackableItem("string", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "string").createSpriteLink())); + items.add(new StackableItem("Coal", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "coal").createSpriteLink())); + items.add(new StackableItem("Iron Ore", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "iron_ore").createSpriteLink())); + items.add(new StackableItem("Lapis", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "lapis").createSpriteLink())); + items.add(new StackableItem("Gold Ore", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "gold_ore").createSpriteLink())); + items.add(new StackableItem("Iron", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "iron_ingot").createSpriteLink())); + items.add(new StackableItem("Gold", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "gold_ingot").createSpriteLink())); + items.add(new StackableItem("Rose", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "red_flower").createSpriteLink())); + items.add(new StackableItem("Gunpowder", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "gunpowder").createSpriteLink())); + items.add(new StackableItem("Slime", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "slime").createSpriteLink())); + items.add(new StackableItem("glass", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "glass").createSpriteLink())); + items.add(new StackableItem("cloth", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cloth").createSpriteLink())); + items.add(new StackableItem("gem", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "gem").createSpriteLink())); + items.add(new StackableItem("Scale", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "scale").createSpriteLink())); + items.add(new StackableItem("Shard", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "shard").createSpriteLink())); + items.add(new StackableItem("Cloud Ore", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cloud_ore").createSpriteLink())); + items.add(new StackableItem("Glass Bottle", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "glass_bottle").createSpriteLink())); return items; } @@ -44,11 +44,11 @@ protected static ArrayList getAllInstances() { public int count; public int maxCount = 100; - protected StackableItem(String name, LinkedSprite sprite) { + protected StackableItem(String name, SpriteLink sprite) { super(name, sprite); count = 1; } - protected StackableItem(String name, LinkedSprite sprite, int count) { + protected StackableItem(String name, SpriteLink sprite, int count) { this(name, sprite); this.count = count; } diff --git a/src/client/java/minicraft/item/SummonItem.java b/src/client/java/minicraft/item/SummonItem.java index 4813dd114..1c07c54cd 100644 --- a/src/client/java/minicraft/item/SummonItem.java +++ b/src/client/java/minicraft/item/SummonItem.java @@ -7,8 +7,8 @@ import minicraft.entity.mob.AirWizard; import minicraft.entity.mob.ObsidianKnight; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import org.jetbrains.annotations.NotNull; @@ -22,8 +22,8 @@ public class SummonItem extends StackableItem { protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); - items.add(new SummonItem("Totem of Air", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "air_totem").createSpriteLink(), "Air Wizard")); - items.add(new SummonItem("Obsidian Poppet", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "knight_statue") + items.add(new SummonItem("Totem of Air", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "air_totem").createSpriteLink(), "Air Wizard")); + items.add(new SummonItem("Obsidian Poppet", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "knight_statue") .createSpriteLink(), "Obsidian Knight")); //TODO: Obsidian Poppet Textures return items; @@ -31,8 +31,8 @@ protected static ArrayList getAllInstances() { private final String mob; - private SummonItem(String name, LinkedSprite sprite, String mob) { this(name, sprite, 1, mob); } - private SummonItem(String name, LinkedSprite sprite, int count, String mob) { + private SummonItem(String name, SpriteLink sprite, String mob) { this(name, sprite, 1, mob); } + private SummonItem(String name, SpriteLink sprite, int count, String mob) { super(name, sprite, count); this.mob = mob; } diff --git a/src/client/java/minicraft/item/TileItem.java b/src/client/java/minicraft/item/TileItem.java index 7cb2ca311..6168194e0 100644 --- a/src/client/java/minicraft/item/TileItem.java +++ b/src/client/java/minicraft/item/TileItem.java @@ -5,9 +5,9 @@ import minicraft.core.io.Sound; import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import minicraft.level.tile.Tiles; @@ -25,48 +25,48 @@ protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); /// TileItem sprites all have 1x1 sprites. - items.add(new TileItem("Flower", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "white_flower").createSpriteLink(), "flower", "grass")); - items.add(new TileItem("Acorn", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "acorn").createSpriteLink(), "tree Sapling", "grass")); - items.add(new TileItem("Dirt", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "dirt").createSpriteLink(), "dirt", "hole", "water", "lava")); - items.add(new TileItem("Natural Rock", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone").createSpriteLink(), "rock", "hole", "dirt", "sand", "grass", "path", "water", "lava")); - - items.add(new TileItem("Plank", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "plank").createSpriteLink(), "Wood Planks", "hole", "water", "cloud")); - items.add(new TileItem("Plank Wall", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "plank_wall").createSpriteLink(), "Wood Wall", "Wood Planks")); - items.add(new TileItem("Wood Door", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "wood_door").createSpriteLink(), "Wood Door", "Wood Planks")); - items.add(new TileItem("Stone", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone").createSpriteLink(), "Stone", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Stone Brick", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone_brick").createSpriteLink(), "Stone Bricks", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Ornate Stone", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone_brick").createSpriteLink(), "Ornate Stone", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Stone Wall", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone_wall").createSpriteLink(), "Stone Wall", "Stone Bricks")); - items.add(new TileItem("Stone Door", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "stone_wall").createSpriteLink(), "Stone Door", "Stone Bricks")); - items.add(new TileItem("Raw Obsidian", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian").createSpriteLink(), "Raw Obsidian", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Obsidian Brick", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian_brick").createSpriteLink(), "Obsidian", "hole", "water", "cloud", "lava")); - items.add(new TileItem("Ornate Obsidian", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian_brick").createSpriteLink(), "Ornate Obsidian","hole", "water", "cloud", "lava")); - items.add(new TileItem("Obsidian Wall", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian_wall").createSpriteLink(), "Obsidian Wall", "Obsidian")); - items.add(new TileItem("Obsidian Door", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "obsidian_door").createSpriteLink(), "Obsidian Door", "Obsidian")); - - items.add(new TileItem("Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "wool").createSpriteLink(), "Wool", "hole", "water")); - items.add(new TileItem("Red Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "red_wool").createSpriteLink(), "Red Wool", "hole", "water")); - items.add(new TileItem("Blue Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "blue_wool").createSpriteLink(), "Blue Wool", "hole", "water")); - items.add(new TileItem("Green Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "green_wool").createSpriteLink(), "Green Wool", "hole", "water")); - items.add(new TileItem("Yellow Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "yellow_wool").createSpriteLink(), "Yellow Wool", "hole", "water")); - items.add(new TileItem("Black Wool", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "black_wool").createSpriteLink(), "Black Wool", "hole", "water")); - - items.add(new TileItem("Sand", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "sand").createSpriteLink(), "sand", "hole", "water", "lava")); - items.add(new TileItem("Cactus", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cactus").createSpriteLink(), "cactus Sapling", "sand")); - items.add(new TileItem("Bone", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "bone").createSpriteLink(), "tree", "tree Sapling")); - items.add(new TileItem("Cloud", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "cloud").createSpriteLink(), "cloud", "Infinite Fall")); - - items.add(new TileItem("Wheat Seeds", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), "wheat", "farmland")); - items.add(new TileItem("Potato", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "potato").createSpriteLink(), "potato", "farmland")); - items.add(new TileItem("Grass Seeds", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), "grass", "dirt")); + items.add(new TileItem("Flower", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "white_flower").createSpriteLink(), "flower", "grass")); + items.add(new TileItem("Acorn", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "acorn").createSpriteLink(), "tree Sapling", "grass")); + items.add(new TileItem("Dirt", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "dirt").createSpriteLink(), "dirt", "hole", "water", "lava")); + items.add(new TileItem("Natural Rock", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone").createSpriteLink(), "rock", "hole", "dirt", "sand", "grass", "path", "water", "lava")); + + items.add(new TileItem("Plank", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "plank").createSpriteLink(), "Wood Planks", "hole", "water", "cloud")); + items.add(new TileItem("Plank Wall", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "plank_wall").createSpriteLink(), "Wood Wall", "Wood Planks")); + items.add(new TileItem("Wood Door", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "wood_door").createSpriteLink(), "Wood Door", "Wood Planks")); + items.add(new TileItem("Stone", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone").createSpriteLink(), "Stone", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Stone Brick", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone_brick").createSpriteLink(), "Stone Bricks", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Ornate Stone", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone_brick").createSpriteLink(), "Ornate Stone", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Stone Wall", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone_wall").createSpriteLink(), "Stone Wall", "Stone Bricks")); + items.add(new TileItem("Stone Door", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone_wall").createSpriteLink(), "Stone Door", "Stone Bricks")); + items.add(new TileItem("Raw Obsidian", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian").createSpriteLink(), "Raw Obsidian", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Obsidian Brick", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian_brick").createSpriteLink(), "Obsidian", "hole", "water", "cloud", "lava")); + items.add(new TileItem("Ornate Obsidian", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian_brick").createSpriteLink(), "Ornate Obsidian","hole", "water", "cloud", "lava")); + items.add(new TileItem("Obsidian Wall", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian_wall").createSpriteLink(), "Obsidian Wall", "Obsidian")); + items.add(new TileItem("Obsidian Door", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian_door").createSpriteLink(), "Obsidian Door", "Obsidian")); + + items.add(new TileItem("Wool", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "wool").createSpriteLink(), "Wool", "hole", "water")); + items.add(new TileItem("Red Wool", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "red_wool").createSpriteLink(), "Red Wool", "hole", "water")); + items.add(new TileItem("Blue Wool", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "blue_wool").createSpriteLink(), "Blue Wool", "hole", "water")); + items.add(new TileItem("Green Wool", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "green_wool").createSpriteLink(), "Green Wool", "hole", "water")); + items.add(new TileItem("Yellow Wool", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "yellow_wool").createSpriteLink(), "Yellow Wool", "hole", "water")); + items.add(new TileItem("Black Wool", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "black_wool").createSpriteLink(), "Black Wool", "hole", "water")); + + items.add(new TileItem("Sand", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "sand").createSpriteLink(), "sand", "hole", "water", "lava")); + items.add(new TileItem("Cactus", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cactus").createSpriteLink(), "cactus Sapling", "sand")); + items.add(new TileItem("Bone", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "bone").createSpriteLink(), "tree", "tree Sapling")); + items.add(new TileItem("Cloud", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cloud").createSpriteLink(), "cloud", "Infinite Fall")); + + items.add(new TileItem("Wheat Seeds", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), "wheat", "farmland")); + items.add(new TileItem("Potato", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "potato").createSpriteLink(), "potato", "farmland")); + items.add(new TileItem("Grass Seeds", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), "grass", "dirt")); // Creative mode available tiles: - items.add(new TileItem("Farmland", SpriteLinker.missingTexture(SpriteType.Item), "farmland", "dirt", "grass", "hole")); - items.add(new TileItem("Exploded", SpriteLinker.missingTexture(SpriteType.Item), "explode", "dirt", "grass")); - items.add(new TileItem("hole", SpriteLinker.missingTexture(SpriteType.Item), "hole", "dirt", "grass")); - items.add(new TileItem("lava", SpriteLinker.missingTexture(SpriteType.Item), "lava", "dirt", "grass", "hole")); - items.add(new TileItem("path", SpriteLinker.missingTexture(SpriteType.Item), "path", "dirt", "grass", "hole")); - items.add(new TileItem("water", SpriteLinker.missingTexture(SpriteType.Item), "water", "dirt", "grass", "hole")); + items.add(new TileItem("Farmland", SpriteManager.missingTexture(SpriteType.Item), "farmland", "dirt", "grass", "hole")); + items.add(new TileItem("Exploded", SpriteManager.missingTexture(SpriteType.Item), "explode", "dirt", "grass")); + items.add(new TileItem("hole", SpriteManager.missingTexture(SpriteType.Item), "hole", "dirt", "grass")); + items.add(new TileItem("lava", SpriteManager.missingTexture(SpriteType.Item), "lava", "dirt", "grass", "hole")); + items.add(new TileItem("path", SpriteManager.missingTexture(SpriteType.Item), "path", "dirt", "grass", "hole")); + items.add(new TileItem("water", SpriteManager.missingTexture(SpriteType.Item), "water", "dirt", "grass", "hole")); return items; } @@ -74,13 +74,13 @@ protected static ArrayList getAllInstances() { public final String model; public final List validTiles; - protected TileItem(String name, LinkedSprite sprite, String model, String... validTiles) { + protected TileItem(String name, SpriteLink sprite, String model, String... validTiles) { this(name, sprite, 1, model, Arrays.asList(validTiles)); } - protected TileItem(String name, LinkedSprite sprite, int count, String model, String... validTiles) { + protected TileItem(String name, SpriteLink sprite, int count, String model, String... validTiles) { this(name, sprite, count, model, Arrays.asList(validTiles)); } - protected TileItem(String name, LinkedSprite sprite, int count, String model, List validTiles) { + protected TileItem(String name, SpriteLink sprite, int count, String model, List validTiles) { super(name, sprite, count); this.model = model.toUpperCase(); this.validTiles = new ArrayList<>(); diff --git a/src/client/java/minicraft/item/ToolItem.java b/src/client/java/minicraft/item/ToolItem.java index 010d75fa5..eff75a651 100644 --- a/src/client/java/minicraft/item/ToolItem.java +++ b/src/client/java/minicraft/item/ToolItem.java @@ -4,8 +4,8 @@ import minicraft.core.io.Localization; import minicraft.entity.Entity; import minicraft.entity.mob.Mob; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -45,7 +45,7 @@ private static String getSpriteName(String typeName, String level) { /** Tool Item, requires a tool type (ToolType.Sword, ToolType.Axe, ToolType.Hoe, etc) and a level (0 = wood, 2 = iron, 4 = gem, etc) */ public ToolItem(ToolType type, int level) { super(LEVEL_NAMES[level] + " " + type.name(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, getSpriteName(type.toString(), LEVEL_NAMES[level] + "_")).createSpriteLink()); + new SpriteLink.SpriteLinkBuilder(SpriteType.Item, getSpriteName(type.toString(), LEVEL_NAMES[level] + "_")).createSpriteLink()); this.type = type; this.level = level; @@ -55,7 +55,7 @@ public ToolItem(ToolType type, int level) { } public ToolItem(ToolType type) { - super(type.name(), new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, getSpriteName(type.toString(), "")).createSpriteLink()); + super(type.name(), new SpriteLink.SpriteLinkBuilder(SpriteType.Item, getSpriteName(type.toString(), "")).createSpriteLink()); this.type = type; dur = type.durability; diff --git a/src/client/java/minicraft/item/TorchItem.java b/src/client/java/minicraft/item/TorchItem.java index dc6754aad..52b19bc83 100644 --- a/src/client/java/minicraft/item/TorchItem.java +++ b/src/client/java/minicraft/item/TorchItem.java @@ -2,8 +2,8 @@ import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tile; import minicraft.level.tile.TorchTile; @@ -21,7 +21,7 @@ public static ArrayList getAllInstances() { private TorchItem() { this(1); } private TorchItem(int count) { - super("Torch", new LinkedSprite.SpriteLinkBuilder(SpriteType.Item, "torch").createSpriteLink(), + super("Torch", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "torch").createSpriteLink(), count, "", "dirt", "Wood Planks", "Stone Bricks", "Obsidian", "Wool", "Red Wool", "Blue Wool", "Green Wool", "Yellow Wool", "Black Wool", "grass", "sand","path","ornate stone","ornate obsidian"); } diff --git a/src/client/java/minicraft/item/UnknownItem.java b/src/client/java/minicraft/item/UnknownItem.java index a338ab50e..52cda6098 100644 --- a/src/client/java/minicraft/item/UnknownItem.java +++ b/src/client/java/minicraft/item/UnknownItem.java @@ -1,13 +1,13 @@ package minicraft.item; -import minicraft.gfx.SpriteLinker; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager; +import minicraft.gfx.SpriteManager.SpriteType; import org.jetbrains.annotations.NotNull; public class UnknownItem extends StackableItem { protected UnknownItem(String reqName) { - super(reqName, SpriteLinker.missingTexture(SpriteType.Item)); + super(reqName, SpriteManager.missingTexture(SpriteType.Item)); } public @NotNull UnknownItem copy() { diff --git a/src/client/java/minicraft/level/tile/BossWallTile.java b/src/client/java/minicraft/level/tile/BossWallTile.java index 12d1ea05f..4e3414c4f 100644 --- a/src/client/java/minicraft/level/tile/BossWallTile.java +++ b/src/client/java/minicraft/level/tile/BossWallTile.java @@ -7,13 +7,13 @@ import minicraft.entity.mob.ObsidianKnight; import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.item.Item; import minicraft.item.ToolItem; import minicraft.level.Level; public class BossWallTile extends WallTile { - private static SpriteAnimation obsidian = new SpriteAnimation(SpriteLinker.SpriteType.Tile, "obsidian_wall") + private static SpriteAnimation obsidian = new SpriteAnimation(SpriteManager.SpriteType.Tile, "obsidian_wall") .setConnectChecker((tile, side) -> tile.getClass() == BossWallTile.class); private static final String wallMsg = "minicraft.notification.defeat_obsidian_knight_first"; diff --git a/src/client/java/minicraft/level/tile/CactusTile.java b/src/client/java/minicraft/level/tile/CactusTile.java index 3fa2c59f7..0510c2a5b 100644 --- a/src/client/java/minicraft/level/tile/CactusTile.java +++ b/src/client/java/minicraft/level/tile/CactusTile.java @@ -11,7 +11,7 @@ import minicraft.gfx.Color; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Items; import minicraft.level.Level; diff --git a/src/client/java/minicraft/level/tile/CloudTile.java b/src/client/java/minicraft/level/tile/CloudTile.java index 6503df7c1..1e7879ad2 100644 --- a/src/client/java/minicraft/level/tile/CloudTile.java +++ b/src/client/java/minicraft/level/tile/CloudTile.java @@ -5,7 +5,7 @@ import minicraft.entity.Entity; import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/ConnectTile.java b/src/client/java/minicraft/level/tile/ConnectTile.java index c6db32812..da689fd03 100644 --- a/src/client/java/minicraft/level/tile/ConnectTile.java +++ b/src/client/java/minicraft/level/tile/ConnectTile.java @@ -3,7 +3,7 @@ import minicraft.entity.Entity; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; // TODO Remove this. diff --git a/src/client/java/minicraft/level/tile/DecorTile.java b/src/client/java/minicraft/level/tile/DecorTile.java index a40f13f2a..cb07dfc49 100644 --- a/src/client/java/minicraft/level/tile/DecorTile.java +++ b/src/client/java/minicraft/level/tile/DecorTile.java @@ -5,7 +5,7 @@ import minicraft.entity.Entity; import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/DirtTile.java b/src/client/java/minicraft/level/tile/DirtTile.java index 090f19ff4..2accb7526 100644 --- a/src/client/java/minicraft/level/tile/DirtTile.java +++ b/src/client/java/minicraft/level/tile/DirtTile.java @@ -6,7 +6,7 @@ import minicraft.gfx.Color; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/DoorTile.java b/src/client/java/minicraft/level/tile/DoorTile.java index e01b023cc..8f0c0162a 100644 --- a/src/client/java/minicraft/level/tile/DoorTile.java +++ b/src/client/java/minicraft/level/tile/DoorTile.java @@ -7,7 +7,7 @@ import minicraft.entity.mob.Player; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/ExplodedTile.java b/src/client/java/minicraft/level/tile/ExplodedTile.java index af333f481..9d1399804 100644 --- a/src/client/java/minicraft/level/tile/ExplodedTile.java +++ b/src/client/java/minicraft/level/tile/ExplodedTile.java @@ -2,7 +2,7 @@ import minicraft.entity.Entity; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; /// This class is for tiles WHILE THEY ARE EXPLODING diff --git a/src/client/java/minicraft/level/tile/FloorTile.java b/src/client/java/minicraft/level/tile/FloorTile.java index a3cbd60da..005124e82 100644 --- a/src/client/java/minicraft/level/tile/FloorTile.java +++ b/src/client/java/minicraft/level/tile/FloorTile.java @@ -5,7 +5,7 @@ import minicraft.entity.Entity; import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/FlowerTile.java b/src/client/java/minicraft/level/tile/FlowerTile.java index bf09593a0..b7454bed5 100644 --- a/src/client/java/minicraft/level/tile/FlowerTile.java +++ b/src/client/java/minicraft/level/tile/FlowerTile.java @@ -6,7 +6,7 @@ import minicraft.entity.mob.Player; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/GrassTile.java b/src/client/java/minicraft/level/tile/GrassTile.java index 5b14bd396..db62e3043 100644 --- a/src/client/java/minicraft/level/tile/GrassTile.java +++ b/src/client/java/minicraft/level/tile/GrassTile.java @@ -5,7 +5,7 @@ import minicraft.entity.mob.Player; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/HardRockTile.java b/src/client/java/minicraft/level/tile/HardRockTile.java index 07c18c4d2..31ff34d87 100644 --- a/src/client/java/minicraft/level/tile/HardRockTile.java +++ b/src/client/java/minicraft/level/tile/HardRockTile.java @@ -11,7 +11,7 @@ import minicraft.gfx.Color; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/HoleTile.java b/src/client/java/minicraft/level/tile/HoleTile.java index c3b89f59c..7f2a759b8 100644 --- a/src/client/java/minicraft/level/tile/HoleTile.java +++ b/src/client/java/minicraft/level/tile/HoleTile.java @@ -3,7 +3,7 @@ import minicraft.entity.Entity; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; public class HoleTile extends Tile { diff --git a/src/client/java/minicraft/level/tile/LavaBrickTile.java b/src/client/java/minicraft/level/tile/LavaBrickTile.java index 13508f7db..df4643d89 100644 --- a/src/client/java/minicraft/level/tile/LavaBrickTile.java +++ b/src/client/java/minicraft/level/tile/LavaBrickTile.java @@ -6,7 +6,7 @@ import minicraft.entity.mob.Mob; import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.ToolItem; import minicraft.item.ToolType; diff --git a/src/client/java/minicraft/level/tile/LavaTile.java b/src/client/java/minicraft/level/tile/LavaTile.java index 6edf5716e..f9ef7b31a 100644 --- a/src/client/java/minicraft/level/tile/LavaTile.java +++ b/src/client/java/minicraft/level/tile/LavaTile.java @@ -3,7 +3,7 @@ import minicraft.entity.Entity; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; public class LavaTile extends Tile { diff --git a/src/client/java/minicraft/level/tile/MaterialTile.java b/src/client/java/minicraft/level/tile/MaterialTile.java index 53df6a95b..c1f0fd4c2 100644 --- a/src/client/java/minicraft/level/tile/MaterialTile.java +++ b/src/client/java/minicraft/level/tile/MaterialTile.java @@ -5,7 +5,7 @@ import minicraft.entity.Entity; import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/OreTile.java b/src/client/java/minicraft/level/tile/OreTile.java index 2bfe1506a..5a10173bc 100644 --- a/src/client/java/minicraft/level/tile/OreTile.java +++ b/src/client/java/minicraft/level/tile/OreTile.java @@ -11,7 +11,7 @@ import minicraft.gfx.Color; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/PathTile.java b/src/client/java/minicraft/level/tile/PathTile.java index dea91f486..5f8697870 100644 --- a/src/client/java/minicraft/level/tile/PathTile.java +++ b/src/client/java/minicraft/level/tile/PathTile.java @@ -4,7 +4,7 @@ import minicraft.entity.Direction; import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/RockTile.java b/src/client/java/minicraft/level/tile/RockTile.java index b5f7e69b7..53483d063 100644 --- a/src/client/java/minicraft/level/tile/RockTile.java +++ b/src/client/java/minicraft/level/tile/RockTile.java @@ -12,7 +12,7 @@ import minicraft.gfx.Color; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/SandTile.java b/src/client/java/minicraft/level/tile/SandTile.java index 2e2a036f8..47212fb2f 100644 --- a/src/client/java/minicraft/level/tile/SandTile.java +++ b/src/client/java/minicraft/level/tile/SandTile.java @@ -8,7 +8,7 @@ import minicraft.entity.particle.SandParticle; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/SaplingTile.java b/src/client/java/minicraft/level/tile/SaplingTile.java index f000acf9e..888c2dce7 100644 --- a/src/client/java/minicraft/level/tile/SaplingTile.java +++ b/src/client/java/minicraft/level/tile/SaplingTile.java @@ -5,7 +5,7 @@ import minicraft.entity.mob.Mob; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; public class SaplingTile extends Tile { diff --git a/src/client/java/minicraft/level/tile/StairsTile.java b/src/client/java/minicraft/level/tile/StairsTile.java index 58d07c39c..c649488ec 100644 --- a/src/client/java/minicraft/level/tile/StairsTile.java +++ b/src/client/java/minicraft/level/tile/StairsTile.java @@ -8,7 +8,7 @@ import minicraft.entity.mob.Player; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.PowerGloveItem; import minicraft.level.Level; diff --git a/src/client/java/minicraft/level/tile/TorchTile.java b/src/client/java/minicraft/level/tile/TorchTile.java index 52353ac45..3696de08e 100644 --- a/src/client/java/minicraft/level/tile/TorchTile.java +++ b/src/client/java/minicraft/level/tile/TorchTile.java @@ -5,7 +5,7 @@ import minicraft.entity.mob.Player; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.PowerGloveItem; diff --git a/src/client/java/minicraft/level/tile/TreeTile.java b/src/client/java/minicraft/level/tile/TreeTile.java index 86b9cd923..91b447d19 100644 --- a/src/client/java/minicraft/level/tile/TreeTile.java +++ b/src/client/java/minicraft/level/tile/TreeTile.java @@ -11,8 +11,8 @@ import minicraft.gfx.Color; import minicraft.gfx.Screen; import minicraft.gfx.Sprite; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; @@ -22,8 +22,8 @@ import minicraft.util.AdvancementElement; public class TreeTile extends Tile { - private static LinkedSprite treeSprite = new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "tree").createSpriteLink(); - private static LinkedSprite treeSpriteFull = new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "tree_full").createSpriteLink(); + private static SpriteLink treeSprite = new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "tree").createSpriteLink(); + private static SpriteLink treeSpriteFull = new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "tree_full").createSpriteLink(); protected TreeTile(String name) { super(name, null); diff --git a/src/client/java/minicraft/level/tile/WallTile.java b/src/client/java/minicraft/level/tile/WallTile.java index df986e62a..e86b0f513 100644 --- a/src/client/java/minicraft/level/tile/WallTile.java +++ b/src/client/java/minicraft/level/tile/WallTile.java @@ -12,7 +12,7 @@ import minicraft.entity.particle.TextParticle; import minicraft.gfx.Color; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/WaterTile.java b/src/client/java/minicraft/level/tile/WaterTile.java index 09577816b..0783aed06 100644 --- a/src/client/java/minicraft/level/tile/WaterTile.java +++ b/src/client/java/minicraft/level/tile/WaterTile.java @@ -3,7 +3,7 @@ import minicraft.entity.Entity; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; public class WaterTile extends Tile { diff --git a/src/client/java/minicraft/level/tile/WoolTile.java b/src/client/java/minicraft/level/tile/WoolTile.java index 0de6bc9af..5516e3992 100644 --- a/src/client/java/minicraft/level/tile/WoolTile.java +++ b/src/client/java/minicraft/level/tile/WoolTile.java @@ -5,7 +5,7 @@ import minicraft.entity.Entity; import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; diff --git a/src/client/java/minicraft/level/tile/farming/FarmTile.java b/src/client/java/minicraft/level/tile/farming/FarmTile.java index 770cc0ead..87f21ae7c 100644 --- a/src/client/java/minicraft/level/tile/farming/FarmTile.java +++ b/src/client/java/minicraft/level/tile/farming/FarmTile.java @@ -6,7 +6,7 @@ import minicraft.entity.ItemEntity; import minicraft.entity.mob.Player; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Item; import minicraft.item.ToolItem; import minicraft.item.ToolType; diff --git a/src/client/java/minicraft/level/tile/farming/PotatoTile.java b/src/client/java/minicraft/level/tile/farming/PotatoTile.java index ce19ff3e5..07eb1b385 100644 --- a/src/client/java/minicraft/level/tile/farming/PotatoTile.java +++ b/src/client/java/minicraft/level/tile/farming/PotatoTile.java @@ -4,20 +4,20 @@ import minicraft.entity.Entity; import minicraft.entity.mob.Player; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.item.Items; import minicraft.level.Level; import minicraft.level.tile.Tiles; public class PotatoTile extends PlantTile { - private LinkedSprite[] spritStages = new LinkedSprite[] { - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage0").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage1").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage2").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage3").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage4").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "potato_stage5").createSpriteLink() + private SpriteLink[] spritStages = new SpriteLink[] { + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "potato_stage0").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "potato_stage1").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "potato_stage2").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "potato_stage3").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "potato_stage4").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "potato_stage5").createSpriteLink() }; public PotatoTile(String name) { diff --git a/src/client/java/minicraft/level/tile/farming/WheatTile.java b/src/client/java/minicraft/level/tile/farming/WheatTile.java index 118fcacad..60ac587f0 100644 --- a/src/client/java/minicraft/level/tile/farming/WheatTile.java +++ b/src/client/java/minicraft/level/tile/farming/WheatTile.java @@ -1,19 +1,19 @@ package minicraft.level.tile.farming; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tiles; public class WheatTile extends PlantTile { - private LinkedSprite[] spritStages = new LinkedSprite[] { - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage0").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage1").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage2").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage3").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage4").createSpriteLink(), - new LinkedSprite.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage5").createSpriteLink() + private SpriteLink[] spritStages = new SpriteLink[] { + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage0").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage1").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage2").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage3").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage4").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage5").createSpriteLink() }; public WheatTile(String name) { diff --git a/src/client/java/minicraft/screen/LevelTransitionDisplay.java b/src/client/java/minicraft/screen/LevelTransitionDisplay.java index 086edef5d..de6b02b60 100644 --- a/src/client/java/minicraft/screen/LevelTransitionDisplay.java +++ b/src/client/java/minicraft/screen/LevelTransitionDisplay.java @@ -6,8 +6,7 @@ import minicraft.core.io.InputHandler; import minicraft.gfx.MinicraftImage; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import java.util.function.Supplier; @@ -18,7 +17,7 @@ public class LevelTransitionDisplay extends Display { private int dir; // Direction that you are changing levels. (going up or down stairs) private int time = 0; // Time it spends on this menu - private final Supplier hudSheet = () -> Renderer.spriteLinker.getSheet(SpriteType.Gui, "hud"); + private final Supplier hudSheet = () -> Renderer.spriteManager.getSheet(SpriteType.Gui, "hud"); public LevelTransitionDisplay(int dir) { super(false,false); diff --git a/src/client/java/minicraft/screen/Menu.java b/src/client/java/minicraft/screen/Menu.java index 863d374b7..4095fd1ef 100644 --- a/src/client/java/minicraft/screen/Menu.java +++ b/src/client/java/minicraft/screen/Menu.java @@ -12,8 +12,7 @@ import minicraft.gfx.Point; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.screen.entry.BlankEntry; import minicraft.screen.entry.ListEntry; import org.jetbrains.annotations.NotNull; @@ -70,7 +69,7 @@ public class Menu { */ private String typingSearcher; - private final Supplier hudSheet = () -> Renderer.spriteLinker.getSheet(SpriteType.Gui, "hud"); + private final Supplier hudSheet = () -> Renderer.spriteManager.getSheet(SpriteType.Gui, "hud"); private Menu() {} protected Menu(Menu m) { diff --git a/src/client/java/minicraft/screen/QuestsDisplay.java b/src/client/java/minicraft/screen/QuestsDisplay.java index c871b79da..c444813b2 100644 --- a/src/client/java/minicraft/screen/QuestsDisplay.java +++ b/src/client/java/minicraft/screen/QuestsDisplay.java @@ -12,7 +12,7 @@ import minicraft.gfx.Point; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.saveload.Load; import minicraft.screen.entry.BlankEntry; import minicraft.screen.entry.ListEntry; @@ -306,7 +306,7 @@ public void render(int xp, int yp, int xt, int yt, int bits, MinicraftImage shee // Ignoring mirror. // Validation check if (xt * 8 + yt * 8 * sheet.width + 7 + 7 * sheet.width >= sheet.pixels.length) { - sheet = Renderer.spriteLinker.missingSheet(SpriteLinker.SpriteType.Item); + sheet = Renderer.spriteManager.missingSheet(SpriteManager.SpriteType.Item); xt = 0; yt = 0; } diff --git a/src/client/java/minicraft/screen/ResourcePackDisplay.java b/src/client/java/minicraft/screen/ResourcePackDisplay.java index 71dcf6153..15a0d224a 100644 --- a/src/client/java/minicraft/screen/ResourcePackDisplay.java +++ b/src/client/java/minicraft/screen/ResourcePackDisplay.java @@ -13,8 +13,8 @@ import minicraft.gfx.Point; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.saveload.Save; import minicraft.screen.entry.ListEntry; import minicraft.screen.entry.SelectEntry; @@ -702,7 +702,7 @@ public static void reloadResources() { Collections.reverse(loadQuery); // Clear all previously loaded resources. - Renderer.spriteLinker.resetSprites(); + Renderer.spriteManager.resetSprites(); Localization.resetLocalizations(); BookData.resetBooks(); Sound.resetSounds(); @@ -726,7 +726,7 @@ public static void reloadResources() { SkinDisplay.releaseSkins(); SpriteAnimation.refreshAnimations(); - Renderer.spriteLinker.updateLinkedSheets(); + Renderer.spriteManager.updateLinkedSheets(); Localization.loadLanguage(); } @@ -767,7 +767,7 @@ private static void loadTextures(ResourcePack pack, SpriteType type) throws IOEx for (String m : pack.getFiles(path, (p, isDir) -> p.toString().endsWith(".png.json") && !isDir)) { try { JSONObject obj = new JSONObject(readStringFromInputStream(pack.getResourceAsStream(m))); - SpriteLinker.SpriteMeta meta = new SpriteLinker.SpriteMeta(); + SpriteManager.SpriteMeta meta = new SpriteManager.SpriteMeta(); pngs.remove(m.substring(0, m.length() - 5)); BufferedImage image = ImageIO.read(pack.getResourceAsStream(m.substring(0, m.length() - 5))); @@ -782,7 +782,7 @@ private static void loadTextures(ResourcePack pack, SpriteType type) throws IOEx sheet = new MinicraftImage(image, 16, 16 * meta.frames); } else sheet = new MinicraftImage(image, 16, 16); - Renderer.spriteLinker.setSprite(type, m.substring(path.length(), m.length() - 9), sheet); + Renderer.spriteManager.setSprite(type, m.substring(path.length(), m.length() - 9), sheet); JSONObject borderObj = obj.optJSONObject("border"); if (borderObj != null) { @@ -792,7 +792,7 @@ private static void loadTextures(ResourcePack pack, SpriteType type) throws IOEx String borderK = path + meta.border + ".png"; pngs.remove(borderK); try { - Renderer.spriteLinker.setSprite(type, meta.border, new MinicraftImage(ImageIO.read(pack.getResourceAsStream(borderK)), 24, 24)); + Renderer.spriteManager.setSprite(type, meta.border, new MinicraftImage(ImageIO.read(pack.getResourceAsStream(borderK)), 24, 24)); } catch (IOException e) { Logging.RESOURCEHANDLER_RESOURCEPACK.warn(e, "Unable to read {} with {} in pack: {}", borderK, m, pack.name); meta.border = null; @@ -805,7 +805,7 @@ private static void loadTextures(ResourcePack pack, SpriteType type) throws IOEx String cornerK = path + meta.corner + ".png"; pngs.remove(cornerK); try { - Renderer.spriteLinker.setSprite(type, meta.corner, new MinicraftImage(ImageIO.read(pack.getResourceAsStream(cornerK)), 16, 16)); + Renderer.spriteManager.setSprite(type, meta.corner, new MinicraftImage(ImageIO.read(pack.getResourceAsStream(cornerK)), 16, 16)); } catch (IOException e) { Logging.RESOURCEHANDLER_RESOURCEPACK.warn(e, "Unable to read {} with {} in pack: {}", cornerK, m, pack.name); meta.corner = null; @@ -834,7 +834,7 @@ private static void loadTextures(ResourcePack pack, SpriteType type) throws IOEx sheet = new MinicraftImage(image); } - Renderer.spriteLinker.setSprite(type, p.substring(path.length(), p.length() - 4), sheet); + Renderer.spriteManager.setSprite(type, p.substring(path.length(), p.length() - 4), sheet); } catch (IOException e) { Logging.RESOURCEHANDLER_RESOURCEPACK.warn("Unable to load {} in pack : {}", p, pack.name); } diff --git a/src/client/java/minicraft/screen/SkinDisplay.java b/src/client/java/minicraft/screen/SkinDisplay.java index 475f84317..f968c8a40 100644 --- a/src/client/java/minicraft/screen/SkinDisplay.java +++ b/src/client/java/minicraft/screen/SkinDisplay.java @@ -12,7 +12,7 @@ import minicraft.gfx.MinicraftImage; import minicraft.gfx.Point; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; +import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.saveload.Save; import minicraft.screen.entry.ListEntry; import minicraft.screen.entry.SelectEntry; @@ -40,7 +40,7 @@ * Many skins can be put according to the number of files. */ public class SkinDisplay extends Display { - private static final LinkedHashMap skins = new LinkedHashMap<>(); + private static final LinkedHashMap skins = new LinkedHashMap<>(); private static final ArrayList defaultSkins = new ArrayList<>(); private static final MinicraftImage defaultSheet; private static final File FOLDER_LOCATION = new File(FileHandler.gameDir + "/skins"); @@ -76,18 +76,18 @@ public SkinDisplay() { refreshSkins(); refreshEntries(); menus[0].setSelection(new ArrayList<>(skins.keySet()).indexOf(selectedSkin)); - Renderer.spriteLinker.refreshSkins(); + Renderer.spriteManager.refreshSkins(); } public static void refreshSkins() { - Renderer.spriteLinker.clearSkins(); + Renderer.spriteManager.clearSkins(); skins.clear(); // Pointing the keys to the default sheet, - Renderer.spriteLinker.setSkin("skin.minicraft.skin.paul", defaultSheet); - Renderer.spriteLinker.setSkin("skin.minicraft.skin.paul_cape", defaultSheet); - Renderer.spriteLinker.setSkin("skin.minicraft.skin.minecraft_steve", defaultSheet); - Renderer.spriteLinker.setSkin("skin.minicraft.skin.minecraft_alex", defaultSheet); + Renderer.spriteManager.setSkin("skin.minicraft.skin.paul", defaultSheet); + Renderer.spriteManager.setSkin("skin.minicraft.skin.paul_cape", defaultSheet); + Renderer.spriteManager.setSkin("skin.minicraft.skin.minecraft_steve", defaultSheet); + Renderer.spriteManager.setSkin("skin.minicraft.skin.minecraft_alex", defaultSheet); skins.put("minicraft.skin.paul", Mob.compileMobSpriteAnimations(0, 0, "skin.minicraft.skin.paul")); skins.put("minicraft.skin.paul_cape", Mob.compileMobSpriteAnimations(0, 4, "skin.minicraft.skin.paul_cape")); @@ -187,7 +187,7 @@ private synchronized static void refreshSkinFiles(List files) { String name = skinPath.substring(0, skinPath.length() - 4); if (file.exists()) try { MinicraftImage sheet = new MinicraftImage(ImageIO.read(new FileInputStream(file)), 64, 32); - Renderer.spriteLinker.setSkin("skin." + name, sheet); + Renderer.spriteManager.setSkin("skin." + name, sheet); skins.put(name, Mob.compileMobSpriteAnimations(0, 0, "skin." + name)); } catch (IOException e) { Logging.RESOURCEHANDLER_SKIN.error("Could not read image at path {}. The file is probably missing or formatted wrong.", skinPath); @@ -200,9 +200,9 @@ private synchronized static void refreshSkinFiles(List files) { } private static void deregisterSkin(String name) { - Renderer.spriteLinker.setSkin("skin." + name, null); - if (skins.containsKey(name)) for (LinkedSprite[] a : skins.remove(name)) { - for (LinkedSprite b : a) { + Renderer.spriteManager.setSkin("skin." + name, null); + if (skins.containsKey(name)) for (SpriteLink[] a : skins.remove(name)) { + for (SpriteLink b : a) { try { b.destroy(); } catch (DestroyFailedException e) { @@ -256,7 +256,7 @@ public void render(Screen screen) { int spriteIndex = (step / 40) % 8; // 9 = 8 Frames for sprite // Render preview of skin. - LinkedSprite sprite = new ArrayList<>(skins.values()).get(menus[0].getSelection())[spriteIndex / 2][spriteIndex % 2]; + SpriteLink sprite = new ArrayList<>(skins.values()).get(menus[0].getSelection())[spriteIndex / 2][spriteIndex % 2]; screen.render(xOffset, yOffset, sprite); // Help text. @@ -274,8 +274,8 @@ public static void setSelectedSkin(String selectedSkin) { // First array is one of the four animations. @NotNull - public static LinkedSprite[][][] getSkinAsMobSprite() { - LinkedSprite[][][] mobSprites = new LinkedSprite[2][][]; + public static SpriteLink[][][] getSkinAsMobSprite() { + SpriteLink[][][] mobSprites = new SpriteLink[2][][]; if (!skins.keySet().contains(selectedSkin)) selectedSkin = defaultSkins.get(0); if (defaultSkins.contains(selectedSkin)) { diff --git a/src/client/java/minicraft/screen/TitleDisplay.java b/src/client/java/minicraft/screen/TitleDisplay.java index 4fc688322..41a2619eb 100644 --- a/src/client/java/minicraft/screen/TitleDisplay.java +++ b/src/client/java/minicraft/screen/TitleDisplay.java @@ -11,7 +11,7 @@ import minicraft.gfx.MinicraftImage; import minicraft.gfx.Point; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.network.Network; import minicraft.screen.entry.BlankEntry; @@ -114,7 +114,7 @@ public void tick(InputHandler input) { public void render(Screen screen) { super.render(screen); - MinicraftImage sheet = Renderer.spriteLinker.getSheet(SpriteType.Gui, "title"); + MinicraftImage sheet = Renderer.spriteManager.getSheet(SpriteType.Gui, "title"); int h = sheet.height / 8; // Height of squares (on the spritesheet) int w = sheet.width / 8; // Width of squares (on the spritesheet) int xo = (Screen.w - sheet.width) / 2; // X location of the title From e1f1ba829d5e877085da725579315b62e5a5298f Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Sat, 6 Jan 2024 22:48:45 +0800 Subject: [PATCH 08/10] Resolve merge errors --- .../minicraft/entity/furniture/Composter.java | 14 +++++++---- .../entity/particle/WaterParticle.java | 4 ++-- .../java/minicraft/item/StackableItem.java | 7 +++--- src/client/java/minicraft/item/TileItem.java | 18 +++++++-------- .../java/minicraft/item/WateringCanItem.java | 23 +++++++++++-------- .../level/tile/farming/CarrotTile.java | 14 +++++------ .../level/tile/farming/CropTile.java | 5 ++-- .../tile/farming/HeavenlyBerriesTile.java | 12 +++++----- .../tile/farming/HellishBerriesTile.java | 12 +++++----- .../level/tile/farming/TomatoTile.java | 13 +++++------ .../level/tile/farming/WheatTile.java | 2 +- 11 files changed, 65 insertions(+), 59 deletions(-) diff --git a/src/client/java/minicraft/entity/furniture/Composter.java b/src/client/java/minicraft/entity/furniture/Composter.java index 079d90795..673d6bf1b 100644 --- a/src/client/java/minicraft/entity/furniture/Composter.java +++ b/src/client/java/minicraft/entity/furniture/Composter.java @@ -2,17 +2,21 @@ import minicraft.entity.Direction; import minicraft.entity.mob.Player; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.StackableItem; import org.jetbrains.annotations.Nullable; public class Composter extends Furniture { - private static final SpriteLinker.LinkedSprite sprite = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "composter"); - private static final SpriteLinker.LinkedSprite spriteFilled = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "composter_filled"); - private static final SpriteLinker.LinkedSprite spriteFull = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "composter_full"); - private static final SpriteLinker.LinkedSprite itemSprite = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Item, "composter"); + private static final SpriteManager.SpriteLink sprite = + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "composter").createSpriteLink(); + private static final SpriteManager.SpriteLink spriteFilled = + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "composter_filled").createSpriteLink(); + private static final SpriteManager.SpriteLink spriteFull = + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "composter_full").createSpriteLink(); + private static final SpriteManager.SpriteLink itemSprite = + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Item, "composter").createSpriteLink(); private static final int MAX_COMPOST = 7; private int compost = 0; diff --git a/src/client/java/minicraft/entity/particle/WaterParticle.java b/src/client/java/minicraft/entity/particle/WaterParticle.java index b91491dc2..9a75ae75a 100644 --- a/src/client/java/minicraft/entity/particle/WaterParticle.java +++ b/src/client/java/minicraft/entity/particle/WaterParticle.java @@ -1,6 +1,6 @@ package minicraft.entity.particle; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; public class WaterParticle extends Particle { private final int destX; @@ -8,7 +8,7 @@ public class WaterParticle extends Particle { private int count; private boolean stopped; - public WaterParticle(int x, int y, int lifetime, SpriteLinker.LinkedSprite sprite, int destX, int destY) { + public WaterParticle(int x, int y, int lifetime, SpriteManager.SpriteLink sprite, int destX, int destY) { super(x, y, lifetime, sprite); this.destX = destX; this.destY = destY; diff --git a/src/client/java/minicraft/item/StackableItem.java b/src/client/java/minicraft/item/StackableItem.java index b63f5a437..4f9e94685 100644 --- a/src/client/java/minicraft/item/StackableItem.java +++ b/src/client/java/minicraft/item/StackableItem.java @@ -2,7 +2,6 @@ import minicraft.core.Game; import minicraft.core.io.Localization; -import minicraft.gfx.SpriteLinker; import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.gfx.SpriteManager.SpriteType; import org.jetbrains.annotations.NotNull; @@ -38,9 +37,9 @@ protected static ArrayList getAllInstances() { items.add(new StackableItem("Shard", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "shard").createSpriteLink())); items.add(new StackableItem("Cloud Ore", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cloud_ore").createSpriteLink())); items.add(new StackableItem("Glass Bottle", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "glass_bottle").createSpriteLink())); - items.add(new StackableItem("Tomato", new LinkedSprite(SpriteType.Item, "tomato"))); - items.add(new StackableItem("Bone", new LinkedSprite(SpriteType.Item, "bone"))); - items.add(new StackableItem("Fertilizer", new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Item, "fertilizer"))); + items.add(new StackableItem("Tomato", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "tomato").createSpriteLink())); + items.add(new StackableItem("Bone", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "bone").createSpriteLink())); + items.add(new StackableItem("Fertilizer", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "fertilizer").createSpriteLink())); return items; } diff --git a/src/client/java/minicraft/item/TileItem.java b/src/client/java/minicraft/item/TileItem.java index 7d613dbe4..4616ef99f 100644 --- a/src/client/java/minicraft/item/TileItem.java +++ b/src/client/java/minicraft/item/TileItem.java @@ -63,18 +63,18 @@ protected static ArrayList getAllInstances() { }; items.add(new TileItem("Wheat Seeds", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), new TileModel("wheat", seedPlanting), "farmland")); items.add(new TileItem("Potato", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "potato").createSpriteLink(), new TileModel("potato", TileModel.KEEP_DATA), "farmland")); - items.add(new TileItem("Carrot", new LinkedSprite(SpriteType.Item, "carrot"), new TileModel("carrot", TileModel.KEEP_DATA), "farmland")); - items.add(new TileItem("Tomato Seeds", new LinkedSprite(SpriteType.Item, "seed"), new TileModel("tomato", seedPlanting), "farmland")); - items.add(new TileItem("Heavenly Berries", new LinkedSprite(SpriteType.Item, "heavenly_berries"), new TileModel("heavenly berries", TileModel.KEEP_DATA), "farmland")); - items.add(new TileItem("Hellish Berries", new LinkedSprite(SpriteType.Item, "hellish_berries"), new TileModel("hellish berries", TileModel.KEEP_DATA), "farmland")); + items.add(new TileItem("Carrot", new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteType.Item, "carrot").createSpriteLink(), new TileModel("carrot", TileModel.KEEP_DATA), "farmland")); + items.add(new TileItem("Tomato Seeds", new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), new TileModel("tomato", seedPlanting), "farmland")); + items.add(new TileItem("Heavenly Berries", new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteType.Item, "heavenly_berries").createSpriteLink(), new TileModel("heavenly berries", TileModel.KEEP_DATA), "farmland")); + items.add(new TileItem("Hellish Berries", new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteType.Item, "hellish_berries").createSpriteLink(), new TileModel("hellish berries", TileModel.KEEP_DATA), "farmland")); items.add(new TileItem("Grass Seeds", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), new TileModel("grass"), "dirt")); // Creative mode available tiles: - items.add(new TileItem("Farmland", SpriteLinker.missingTexture(SpriteType.Item), new TileModel("farmland"), "dirt", "grass", "hole")); - items.add(new TileItem("hole", SpriteLinker.missingTexture(SpriteType.Item), new TileModel("hole"), "dirt", "grass")); - items.add(new TileItem("lava", SpriteLinker.missingTexture(SpriteType.Item), new TileModel("lava"), "dirt", "grass", "hole")); - items.add(new TileItem("path", SpriteLinker.missingTexture(SpriteType.Item), new TileModel("path"), "dirt", "grass", "hole")); - items.add(new TileItem("water", SpriteLinker.missingTexture(SpriteType.Item), new TileModel("water"), "dirt", "grass", "hole")); + items.add(new TileItem("Farmland", SpriteManager.missingTexture(SpriteType.Item), new TileModel("farmland"), "dirt", "grass", "hole")); + items.add(new TileItem("hole", SpriteManager.missingTexture(SpriteType.Item), new TileModel("hole"), "dirt", "grass")); + items.add(new TileItem("lava", SpriteManager.missingTexture(SpriteType.Item), new TileModel("lava"), "dirt", "grass", "hole")); + items.add(new TileItem("path", SpriteManager.missingTexture(SpriteType.Item), new TileModel("path"), "dirt", "grass", "hole")); + items.add(new TileItem("water", SpriteManager.missingTexture(SpriteType.Item), new TileModel("water"), "dirt", "grass", "hole")); return items; } diff --git a/src/client/java/minicraft/item/WateringCanItem.java b/src/client/java/minicraft/item/WateringCanItem.java index 181b34745..b0124dbf4 100644 --- a/src/client/java/minicraft/item/WateringCanItem.java +++ b/src/client/java/minicraft/item/WateringCanItem.java @@ -5,7 +5,7 @@ import minicraft.entity.particle.Particle; import minicraft.entity.particle.WaterParticle; import minicraft.gfx.Point; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.level.Level; import minicraft.level.tile.DirtTile; import minicraft.level.tile.GrassTile; @@ -25,15 +25,18 @@ protected static ArrayList getAllInstances() { return items; } - private static final SpriteLinker.LinkedSprite sprite = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Item, "watering_can"); - private static final SpriteLinker.LinkedSprite spriteFilled = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Item, "watering_can_filled"); - private static final SpriteLinker.LinkedSprite particleSprite = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "glint"); + private static final SpriteManager.SpriteLink sprite = new SpriteManager.SpriteLink.SpriteLinkBuilder( + SpriteManager.SpriteType.Item, "watering_can").createSpriteLink(); + private static final SpriteManager.SpriteLink spriteFilled = new SpriteManager.SpriteLink.SpriteLinkBuilder( + SpriteManager.SpriteType.Item, "watering_can_filled").createSpriteLink(); + private static final SpriteManager.SpriteLink particleSprite = new SpriteManager.SpriteLink.SpriteLinkBuilder( + SpriteManager.SpriteType.Entity, "glint").createSpriteLink(); - private static final SpriteLinker.LinkedSprite[] spriteSplash = new SpriteLinker.LinkedSprite[]{ - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "splash_0"), - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "splash_1"), - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "splash_2"), - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "splash_3") + private static final SpriteManager.SpriteLink[] spriteSplash = new SpriteManager.SpriteLink[]{ + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "splash_0").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "splash_1").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "splash_2").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "splash_3").createSpriteLink() }; public final int CAPACITY = 1800; @@ -57,7 +60,7 @@ public boolean interactOn(Tile tile, Level level, int xt, int yt, Player player, Random random = new Random(); if (renderingTick >= 8) { for (int i = 0; i < 4; i++) { - SpriteLinker.LinkedSprite splash = spriteSplash[random.nextInt(spriteSplash.length)]; + SpriteManager.SpriteLink splash = spriteSplash[random.nextInt(spriteSplash.length)]; // 2-pixel deviation for centering particle sprites. int destX = player.x - 2 + 12 * attackDir.getX() + random.nextInt(9) - 4; int destY = player.y - 2 + 12 * attackDir.getY() + random.nextInt(9) - 4; diff --git a/src/client/java/minicraft/level/tile/farming/CarrotTile.java b/src/client/java/minicraft/level/tile/farming/CarrotTile.java index de8cfc7b4..eb5a3ad60 100644 --- a/src/client/java/minicraft/level/tile/farming/CarrotTile.java +++ b/src/client/java/minicraft/level/tile/farming/CarrotTile.java @@ -1,17 +1,17 @@ package minicraft.level.tile.farming; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager.SpriteLink; +import minicraft.gfx.SpriteManager.SpriteType; import minicraft.level.Level; import minicraft.level.tile.Tiles; public class CarrotTile extends CropTile { - private final LinkedSprite[] spritStages = new LinkedSprite[]{ - new LinkedSprite(SpriteType.Tile, "carrot_stage0"), - new LinkedSprite(SpriteType.Tile, "carrot_stage1"), - new LinkedSprite(SpriteType.Tile, "carrot_stage2"), - new LinkedSprite(SpriteType.Tile, "carrot_stage3") + private final SpriteLink[] spritStages = new SpriteLink[]{ + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "carrot_stage0").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "carrot_stage1").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "carrot_stage2").createSpriteLink(), + new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "carrot_stage3").createSpriteLink() }; public CarrotTile(String name) { diff --git a/src/client/java/minicraft/level/tile/farming/CropTile.java b/src/client/java/minicraft/level/tile/farming/CropTile.java index 6291fa75b..a875216d4 100644 --- a/src/client/java/minicraft/level/tile/farming/CropTile.java +++ b/src/client/java/minicraft/level/tile/farming/CropTile.java @@ -6,7 +6,7 @@ import minicraft.entity.mob.Mob; import minicraft.entity.mob.Player; import minicraft.entity.particle.Particle; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.StackableItem; @@ -99,7 +99,8 @@ public boolean tick(Level level, int xt, int yt) { return successful; } - private static final SpriteLinker.LinkedSprite particleSprite = new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Entity, "glint"); + private static final SpriteManager.SpriteLink particleSprite = + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Entity, "glint").createSpriteLink(); @Override public boolean interact(Level level, int xt, int yt, Player player, Item item, Direction attackDir) { diff --git a/src/client/java/minicraft/level/tile/farming/HeavenlyBerriesTile.java b/src/client/java/minicraft/level/tile/farming/HeavenlyBerriesTile.java index 70b7e3fc8..478351450 100644 --- a/src/client/java/minicraft/level/tile/farming/HeavenlyBerriesTile.java +++ b/src/client/java/minicraft/level/tile/farming/HeavenlyBerriesTile.java @@ -1,16 +1,16 @@ package minicraft.level.tile.farming; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.level.Level; import minicraft.level.tile.Tiles; public class HeavenlyBerriesTile extends CropTile { - private final SpriteLinker.LinkedSprite[] spritStages = new SpriteLinker.LinkedSprite[]{ - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Tile, "heavenly_berries_stage0"), - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Tile, "heavenly_berries_stage1"), - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Tile, "heavenly_berries_stage2"), - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Tile, "heavenly_berries_stage3") + private final SpriteManager.SpriteLink[] spritStages = new SpriteManager.SpriteLink[]{ + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "heavenly_berries_stage0").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "heavenly_berries_stage1").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "heavenly_berries_stage2").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "heavenly_berries_stage3").createSpriteLink() }; public HeavenlyBerriesTile(String name) { diff --git a/src/client/java/minicraft/level/tile/farming/HellishBerriesTile.java b/src/client/java/minicraft/level/tile/farming/HellishBerriesTile.java index bbad34091..78a274e8b 100644 --- a/src/client/java/minicraft/level/tile/farming/HellishBerriesTile.java +++ b/src/client/java/minicraft/level/tile/farming/HellishBerriesTile.java @@ -1,16 +1,16 @@ package minicraft.level.tile.farming; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.level.Level; import minicraft.level.tile.Tiles; public class HellishBerriesTile extends CropTile { - private final SpriteLinker.LinkedSprite[] spritStages = new SpriteLinker.LinkedSprite[]{ - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Tile, "hellish_berries_stage0"), - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Tile, "hellish_berries_stage1"), - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Tile, "hellish_berries_stage2"), - new SpriteLinker.LinkedSprite(SpriteLinker.SpriteType.Tile, "hellish_berries_stage3") + private final SpriteManager.SpriteLink[] spritStages = new SpriteManager.SpriteLink[]{ + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "hellish_berries_stage0").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "hellish_berries_stage1").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "hellish_berries_stage2").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "hellish_berries_stage3").createSpriteLink() }; public HellishBerriesTile(String name) { diff --git a/src/client/java/minicraft/level/tile/farming/TomatoTile.java b/src/client/java/minicraft/level/tile/farming/TomatoTile.java index 1abe88c04..26c27014f 100644 --- a/src/client/java/minicraft/level/tile/farming/TomatoTile.java +++ b/src/client/java/minicraft/level/tile/farming/TomatoTile.java @@ -1,17 +1,16 @@ package minicraft.level.tile.farming; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker.LinkedSprite; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager; import minicraft.level.Level; import minicraft.level.tile.Tiles; public class TomatoTile extends CropTile { - private final LinkedSprite[] spritStages = new LinkedSprite[]{ - new LinkedSprite(SpriteType.Tile, "tomato_stage0"), - new LinkedSprite(SpriteType.Tile, "tomato_stage1"), - new LinkedSprite(SpriteType.Tile, "tomato_stage2"), - new LinkedSprite(SpriteType.Tile, "tomato_stage3") + private final SpriteManager.SpriteLink[] spritStages = new SpriteManager.SpriteLink[]{ + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "tomato_stage0").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "tomato_stage1").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "tomato_stage2").createSpriteLink(), + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Tile, "tomato_stage3").createSpriteLink() }; public TomatoTile(String name) { diff --git a/src/client/java/minicraft/level/tile/farming/WheatTile.java b/src/client/java/minicraft/level/tile/farming/WheatTile.java index 83cce81a6..4b6378fc8 100644 --- a/src/client/java/minicraft/level/tile/farming/WheatTile.java +++ b/src/client/java/minicraft/level/tile/farming/WheatTile.java @@ -7,7 +7,7 @@ import minicraft.level.tile.Tiles; public class WheatTile extends CropTile { - private final SpriteLink[] spritStages = new LinkedSprite[]{ + private final SpriteLink[] spritStages = new SpriteLink[]{ new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage0").createSpriteLink(), new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage1").createSpriteLink(), new SpriteLink.SpriteLinkBuilder(SpriteType.Tile, "wheat_stage2").createSpriteLink(), From 0d26aefc21e4170b6dfb2bcd6c5c6816f2ab999b Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Sun, 4 Aug 2024 04:55:57 +0800 Subject: [PATCH 09/10] Resolve post-merge errors --- .../minicraft/entity/particle/SandParticle.java | 5 ++--- src/client/java/minicraft/item/TileItem.java | 12 ++++++------ .../java/minicraft/level/tile/FenceTile.java | 16 ++++++++-------- .../java/minicraft/level/tile/SignTile.java | 8 ++------ .../java/minicraft/screen/ContainerDisplay.java | 6 ++---- .../minicraft/screen/OnScreenKeyboardMenu.java | 5 ++--- .../java/minicraft/screen/PlayerInvDisplay.java | 4 ++-- 7 files changed, 24 insertions(+), 32 deletions(-) diff --git a/src/client/java/minicraft/entity/particle/SandParticle.java b/src/client/java/minicraft/entity/particle/SandParticle.java index ea4fb0bd3..f740b074d 100644 --- a/src/client/java/minicraft/entity/particle/SandParticle.java +++ b/src/client/java/minicraft/entity/particle/SandParticle.java @@ -1,13 +1,12 @@ package minicraft.entity.particle; +import minicraft.gfx.SpriteManager; import minicraft.gfx.SpriteManager.SpriteLink; import minicraft.gfx.SpriteManager.SpriteType; import java.util.Random; public class SandParticle extends Particle { - public static final LinkedSprite sprite = new LinkedSprite(SpriteType.Entity, "sand_footsteps"); - /** * Creating a sand particle. * @param x X map position @@ -15,7 +14,7 @@ public class SandParticle extends Particle { */ public SandParticle(int x, int y) { super(x, y, 180 + new Random().nextInt(81) - 40, null); - sprite = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "sand_dust").setMirror(random.nextInt(4)) + sprite = new SpriteLink.SpriteLinkBuilder(SpriteType.Entity, "sand_footsteps").setMirror(random.nextInt(4)) .createSpriteLink(); } } diff --git a/src/client/java/minicraft/item/TileItem.java b/src/client/java/minicraft/item/TileItem.java index a7d307e1c..d87b57207 100644 --- a/src/client/java/minicraft/item/TileItem.java +++ b/src/client/java/minicraft/item/TileItem.java @@ -38,22 +38,22 @@ protected static ArrayList getAllInstances() { TileModel.TileDataGetter placeOverWithID = (model1, target, level, xt, yt, player, attackDir) -> target.id; items.add(new TileItem("Plank", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "plank").createSpriteLink(), new TileModel("Wood Planks"), "hole", "water", "cloud")); - items.add(new TileItem("Ornate Wood", new LinkedSprite(SpriteType.Item, "plank"), new TileModel("Ornate Wood"), "hole", "water", "cloud")); + items.add(new TileItem("Ornate Wood", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "plank").createSpriteLink(), new TileModel("Ornate Wood"), "hole", "water", "cloud")); items.add(new TileItem("Plank Wall", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "plank_wall").createSpriteLink(), new TileModel("Wood Wall"), "Wood Planks")); items.add(new TileItem("Wood Door", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "wood_door").createSpriteLink(), new TileModel("Wood Door"), "Wood Planks")); - items.add(new TileItem("Wood Fence", new LinkedSprite(SpriteType.Item, "wood_fence"), new TileModel("Wood Fence", placeOverWithID), solidTiles)); + items.add(new TileItem("Wood Fence", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "wood_fence").createSpriteLink(), new TileModel("Wood Fence", placeOverWithID), solidTiles)); items.add(new TileItem("Stone", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone").createSpriteLink(), new TileModel("Stone"), "hole", "water", "cloud", "lava")); items.add(new TileItem("Stone Brick", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone_brick").createSpriteLink(), new TileModel("Stone Bricks"), "hole", "water", "cloud", "lava")); items.add(new TileItem("Ornate Stone", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone_brick").createSpriteLink(), new TileModel("Ornate Stone"), "hole", "water", "cloud", "lava")); items.add(new TileItem("Stone Wall", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone_wall").createSpriteLink(), new TileModel("Stone Wall"), "Stone Bricks")); items.add(new TileItem("Stone Door", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone_door").createSpriteLink(), new TileModel("Stone Door"), "Stone Bricks")); - items.add(new TileItem("Stone Fence", new LinkedSprite(SpriteType.Item, "stone_fence"), new TileModel("Stone Fence", placeOverWithID), solidTiles)); + items.add(new TileItem("Stone Fence", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "stone_fence").createSpriteLink(), new TileModel("Stone Fence", placeOverWithID), solidTiles)); items.add(new TileItem("Raw Obsidian", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian").createSpriteLink(), new TileModel("Raw Obsidian"), "hole", "water", "cloud", "lava")); items.add(new TileItem("Obsidian Brick", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian_brick").createSpriteLink(), new TileModel("Obsidian"), "hole", "water", "cloud", "lava")); items.add(new TileItem("Ornate Obsidian", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian_brick").createSpriteLink(), new TileModel("Ornate Obsidian"), "hole", "water", "cloud", "lava")); items.add(new TileItem("Obsidian Wall", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian_wall").createSpriteLink(), new TileModel("Obsidian Wall"), "Obsidian")); items.add(new TileItem("Obsidian Door", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian_door").createSpriteLink(), new TileModel("Obsidian Door"), "Obsidian")); - items.add(new TileItem("Obsidian Fence", new LinkedSprite(SpriteType.Item, "obsidian_fence"), new TileModel("Obsidian Fence", placeOverWithID), solidTiles)); + items.add(new TileItem("Obsidian Fence", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "obsidian_fence").createSpriteLink(), new TileModel("Obsidian Fence", placeOverWithID), solidTiles)); items.add(new TileItem("Wool", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "wool").createSpriteLink(), new TileModel("Wool"), "hole", "water")); items.add(new TileItem("Red Wool", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "red_wool").createSpriteLink(), new TileModel("Red Wool"), "hole", "water")); @@ -78,8 +78,8 @@ protected static ArrayList getAllInstances() { items.add(new TileItem("Hellish Berries", new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteType.Item, "hellish_berries").createSpriteLink(), new TileModel("hellish berries", TileModel.KEEP_DATA), "farmland")); items.add(new TileItem("Grass Seeds", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "seed").createSpriteLink(), new TileModel("grass"), "dirt")); - items.add(new TileItem("Torch", new LinkedSprite(SpriteType.Item, "torch"), new TileModel("Torch", placeOverWithID), solidTiles)); - items.add(new TileItem("Sign", new LinkedSprite(SpriteType.Item, "sign"), new TileModel("Sign", (model1, target, level, xt, yt, player, attackDir) -> { + items.add(new TileItem("Torch", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "torch").createSpriteLink(), new TileModel("Torch", placeOverWithID), solidTiles)); + items.add(new TileItem("Sign", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "sign").createSpriteLink(), new TileModel("Sign", (model1, target, level, xt, yt, player, attackDir) -> { Game.setDisplay(new SignDisplay(level, xt, yt)); return placeOverWithID.getTileData(model1, target, level, xt, yt, player, attackDir); }), solidTiles)); diff --git a/src/client/java/minicraft/level/tile/FenceTile.java b/src/client/java/minicraft/level/tile/FenceTile.java index c62f84ab6..9b74fa9be 100644 --- a/src/client/java/minicraft/level/tile/FenceTile.java +++ b/src/client/java/minicraft/level/tile/FenceTile.java @@ -9,7 +9,7 @@ import minicraft.entity.particle.SmashParticle; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker.SpriteType; +import minicraft.gfx.SpriteManager; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; @@ -18,9 +18,9 @@ public class FenceTile extends Tile { - private static final SpriteAnimation wood = new SpriteAnimation(SpriteType.Tile, "wood_fence"); - private static final SpriteAnimation stone = new SpriteAnimation(SpriteType.Tile, "stone_fence"); - private static final SpriteAnimation obsidian = new SpriteAnimation(SpriteType.Tile, "obsidian_fence"); + private static final SpriteAnimation wood = new SpriteAnimation(SpriteManager.SpriteType.Tile, "wood_fence"); + private static final SpriteAnimation stone = new SpriteAnimation(SpriteManager.SpriteType.Tile, "stone_fence"); + private static final SpriteAnimation obsidian = new SpriteAnimation(SpriteManager.SpriteType.Tile, "obsidian_fence"); protected final Material type; @@ -44,10 +44,10 @@ protected FenceTile(Material type, String name) { sprite = obsidian; break; } - top = new SpriteAnimation(SpriteType.Tile, type.toString().toLowerCase() + "_fence_top"); - bottom = new SpriteAnimation(SpriteType.Tile, type.toString().toLowerCase() + "_fence_bottom"); - left = new SpriteAnimation(SpriteType.Tile, type.toString().toLowerCase() + "_fence_left"); - right = new SpriteAnimation(SpriteType.Tile, type.toString().toLowerCase() + "_fence_right"); + top = new SpriteAnimation(SpriteManager.SpriteType.Tile, type.toString().toLowerCase() + "_fence_top"); + bottom = new SpriteAnimation(SpriteManager.SpriteType.Tile, type.toString().toLowerCase() + "_fence_bottom"); + left = new SpriteAnimation(SpriteManager.SpriteType.Tile, type.toString().toLowerCase() + "_fence_left"); + right = new SpriteAnimation(SpriteManager.SpriteType.Tile, type.toString().toLowerCase() + "_fence_right"); } @Override diff --git a/src/client/java/minicraft/level/tile/SignTile.java b/src/client/java/minicraft/level/tile/SignTile.java index 88fb97ff5..b90c713ed 100644 --- a/src/client/java/minicraft/level/tile/SignTile.java +++ b/src/client/java/minicraft/level/tile/SignTile.java @@ -1,15 +1,13 @@ package minicraft.level.tile; import minicraft.core.Game; -import minicraft.core.Renderer; import minicraft.core.io.Sound; import minicraft.entity.Direction; -import minicraft.entity.Entity; import minicraft.entity.mob.Mob; import minicraft.entity.mob.Player; import minicraft.gfx.Screen; import minicraft.gfx.SpriteAnimation; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.item.Item; import minicraft.item.Items; import minicraft.item.ToolItem; @@ -17,13 +15,11 @@ import minicraft.level.Level; import minicraft.level.tile.entity.SignTileEntity; import minicraft.screen.SignDisplay; -import minicraft.screen.SignDisplayMenu; import minicraft.util.AdvancementElement; -import org.tinylog.Logger; public class SignTile extends Tile { protected SignTile() { - super("Sign", new SpriteAnimation(SpriteLinker.SpriteType.Tile, "sign")); + super("Sign", new SpriteAnimation(SpriteManager.SpriteType.Tile, "sign")); } @Override diff --git a/src/client/java/minicraft/screen/ContainerDisplay.java b/src/client/java/minicraft/screen/ContainerDisplay.java index 05da5855e..5876637ed 100644 --- a/src/client/java/minicraft/screen/ContainerDisplay.java +++ b/src/client/java/minicraft/screen/ContainerDisplay.java @@ -4,16 +4,14 @@ import minicraft.core.Game; import minicraft.core.Renderer; import minicraft.core.io.InputHandler; -import minicraft.core.io.Localization; import minicraft.entity.ItemHolder; import minicraft.entity.furniture.Chest; import minicraft.entity.mob.Player; import minicraft.gfx.Color; -import minicraft.gfx.Font; import minicraft.gfx.MinicraftImage; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.item.Inventory; import minicraft.item.Item; import minicraft.item.StackableItem; @@ -23,7 +21,7 @@ public class ContainerDisplay extends Display { private static final int padding = 10; private final MinicraftImage counterSheet = - Renderer.spriteLinker.getSheet(SpriteLinker.SpriteType.Gui, "inventory_counter"); + Renderer.spriteManager.getSheet(SpriteManager.SpriteType.Gui, "inventory_counter"); private Player player; private Chest chest; diff --git a/src/client/java/minicraft/screen/OnScreenKeyboardMenu.java b/src/client/java/minicraft/screen/OnScreenKeyboardMenu.java index 6d6f285dc..72c12a5e8 100644 --- a/src/client/java/minicraft/screen/OnScreenKeyboardMenu.java +++ b/src/client/java/minicraft/screen/OnScreenKeyboardMenu.java @@ -11,12 +11,11 @@ import minicraft.gfx.Point; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import org.jetbrains.annotations.Nullable; import java.awt.Label; import java.awt.event.KeyEvent; -import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.stream.Stream; @@ -275,7 +274,7 @@ public void render(Screen screen) { final int keyHeight = 14; final int keyWidth = 16; VirtualKey[][] keys = shiftPressed ? keysB : keysF; - MinicraftImage sheet = Renderer.spriteLinker.getSheet(SpriteLinker.SpriteType.Gui, "osk"); + MinicraftImage sheet = Renderer.spriteManager.getSheet(SpriteManager.SpriteType.Gui, "osk"); for (int r = 0; r < keys.length; r++) { int totalLength = (keys[r].length * keyWidth); totalLength += keyWidth * 2 * (int) Stream.of(keys[r]).filter(k -> k == spaceBar).count(); diff --git a/src/client/java/minicraft/screen/PlayerInvDisplay.java b/src/client/java/minicraft/screen/PlayerInvDisplay.java index 65373e58e..d7a5ad7a1 100644 --- a/src/client/java/minicraft/screen/PlayerInvDisplay.java +++ b/src/client/java/minicraft/screen/PlayerInvDisplay.java @@ -12,7 +12,7 @@ import minicraft.gfx.Point; import minicraft.gfx.Rectangle; import minicraft.gfx.Screen; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.item.Inventory; import minicraft.item.Item; import minicraft.item.Items; @@ -26,7 +26,7 @@ public class PlayerInvDisplay extends Display { private final Player player; private final MinicraftImage counterSheet = - Renderer.spriteLinker.getSheet(SpriteLinker.SpriteType.Gui, "inventory_counter"); + Renderer.spriteManager.getSheet(SpriteManager.SpriteType.Gui, "inventory_counter"); private String itemDescription = ""; private Menu.Builder descriptionMenuBuilder; From c9b2665fc0e9c1d73b4a93521d6e67bee5e43e0b Mon Sep 17 00:00:00 2001 From: BenCheung0422 <74168521+BenCheung0422@users.noreply.github.com> Date: Fri, 30 Aug 2024 04:03:34 +0800 Subject: [PATCH 10/10] Resolve post-merge errors --- .../java/minicraft/entity/furniture/Bed.java | 4 +- src/client/java/minicraft/item/DyeItem.java | 9 +++-- src/client/java/minicraft/item/TileItem.java | 38 +++++++++---------- src/client/java/minicraft/item/WoolItem.java | 9 +++-- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/client/java/minicraft/entity/furniture/Bed.java b/src/client/java/minicraft/entity/furniture/Bed.java index 224d88761..c6b9d6d30 100644 --- a/src/client/java/minicraft/entity/furniture/Bed.java +++ b/src/client/java/minicraft/entity/furniture/Bed.java @@ -16,8 +16,8 @@ public class Bed extends Furniture { - private static final HashMap sprites = new HashMap<>(); - private static final HashMap itemSprites = new HashMap<>(); + private static final HashMap sprites = new HashMap<>(); + private static final HashMap itemSprites = new HashMap<>(); @Override public @NotNull Furniture copy() { diff --git a/src/client/java/minicraft/item/DyeItem.java b/src/client/java/minicraft/item/DyeItem.java index 923e905a1..f2d6b71af 100644 --- a/src/client/java/minicraft/item/DyeItem.java +++ b/src/client/java/minicraft/item/DyeItem.java @@ -1,6 +1,6 @@ package minicraft.item; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.util.MyUtils; import org.jetbrains.annotations.NotNull; @@ -12,8 +12,9 @@ protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); for (DyeColor color : DyeColor.values()) { - items.add(new DyeItem(MyUtils.capitalizeFully(color.toString().replace('_', ' ')) + " Dye", new SpriteLinker.LinkedSprite( - SpriteLinker.SpriteType.Item, color.toString().toLowerCase() + "_dye"), color)); + items.add(new DyeItem(MyUtils.capitalizeFully(color.toString().replace('_', ' ')) + " Dye", + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Item, color.toString().toLowerCase() + "_dye") + .createSpriteLink(), color)); } return items; @@ -21,7 +22,7 @@ protected static ArrayList getAllInstances() { public final DyeColor color; - protected DyeItem(String name, SpriteLinker.LinkedSprite sprite, DyeColor color) { + protected DyeItem(String name, SpriteManager.SpriteLink sprite, DyeColor color) { super(name, sprite); this.color = color; } diff --git a/src/client/java/minicraft/item/TileItem.java b/src/client/java/minicraft/item/TileItem.java index 39517a4bf..031d955dd 100644 --- a/src/client/java/minicraft/item/TileItem.java +++ b/src/client/java/minicraft/item/TileItem.java @@ -80,25 +80,25 @@ protected static ArrayList getAllInstances() { }), solidTiles)); Function flowerModelGenerator = variant -> (model1, target, level, xt, yt, player, attackDir) -> variant.ordinal(); - items.add(new TileItem("Rose", new LinkedSprite(SpriteType.Item, "rose"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.ROSE)), "grass")); - items.add(new TileItem("Oxeye Daisy", new LinkedSprite(SpriteType.Item, "oxeye_daisy"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.OXEYE_DAISY)), "grass")); - items.add(new TileItem("Sunflower", new LinkedSprite(SpriteType.Item, "sunflower"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.SUNFLOWER)), "grass")); - items.add(new TileItem("Allium", new LinkedSprite(SpriteType.Item, "allium"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.ALLIUM)), "grass")); - items.add(new TileItem("Blue Orchid", new LinkedSprite(SpriteType.Item, "blue_orchid"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.BLUE_ORCHID)), "grass")); - items.add(new TileItem("Cornflower", new LinkedSprite(SpriteType.Item, "cornflower"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.CORNFLOWER)), "grass")); - items.add(new TileItem("Dandelion", new LinkedSprite(SpriteType.Item, "dandelion"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.DANDELION)), "grass")); - items.add(new TileItem("Hydrangea", new LinkedSprite(SpriteType.Item, "hydrangea"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.HYDRANGEA)), "grass")); - items.add(new TileItem("Iris", new LinkedSprite(SpriteType.Item, "iris"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.IRIS)), "grass")); - items.add(new TileItem("Orange Tulip", new LinkedSprite(SpriteType.Item, "orange_tulip"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.ORANGE_TULIP)), "grass")); - items.add(new TileItem("Pink Tulip", new LinkedSprite(SpriteType.Item, "pink_tulip"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PINK_TULIP)), "grass")); - items.add(new TileItem("Red Tulip", new LinkedSprite(SpriteType.Item, "red_tulip"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.RED_TULIP)), "grass")); - items.add(new TileItem("White Tulip", new LinkedSprite(SpriteType.Item, "white_tulip"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.WHITE_TULIP)), "grass")); - items.add(new TileItem("Peony", new LinkedSprite(SpriteType.Item, "peony"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PEONY)), "grass")); - items.add(new TileItem("Periwinkle", new LinkedSprite(SpriteType.Item, "periwinkle"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PERIWINKLE)), "grass")); - items.add(new TileItem("Pink Lily", new LinkedSprite(SpriteType.Item, "pink_lily"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PINK_LILY)), "grass")); - items.add(new TileItem("White Lily", new LinkedSprite(SpriteType.Item, "white_lily"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.WHITE_LILY)), "grass")); - items.add(new TileItem("Poppy", new LinkedSprite(SpriteType.Item, "poppy"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.POPPY)), "grass")); - items.add(new TileItem("Violet", new LinkedSprite(SpriteType.Item, "violet"), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.VIOLET)), "grass")); + items.add(new TileItem("Rose", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "rose").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.ROSE)), "grass")); + items.add(new TileItem("Oxeye Daisy", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "oxeye_daisy").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.OXEYE_DAISY)), "grass")); + items.add(new TileItem("Sunflower", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "sunflower").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.SUNFLOWER)), "grass")); + items.add(new TileItem("Allium", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "allium").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.ALLIUM)), "grass")); + items.add(new TileItem("Blue Orchid", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "blue_orchid").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.BLUE_ORCHID)), "grass")); + items.add(new TileItem("Cornflower", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "cornflower").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.CORNFLOWER)), "grass")); + items.add(new TileItem("Dandelion", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "dandelion").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.DANDELION)), "grass")); + items.add(new TileItem("Hydrangea", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "hydrangea").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.HYDRANGEA)), "grass")); + items.add(new TileItem("Iris", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "iris").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.IRIS)), "grass")); + items.add(new TileItem("Orange Tulip", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "orange_tulip").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.ORANGE_TULIP)), "grass")); + items.add(new TileItem("Pink Tulip", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "pink_tulip").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PINK_TULIP)), "grass")); + items.add(new TileItem("Red Tulip", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "red_tulip").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.RED_TULIP)), "grass")); + items.add(new TileItem("White Tulip", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "white_tulip").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.WHITE_TULIP)), "grass")); + items.add(new TileItem("Peony", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "peony").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PEONY)), "grass")); + items.add(new TileItem("Periwinkle", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "periwinkle").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PERIWINKLE)), "grass")); + items.add(new TileItem("Pink Lily", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "pink_lily").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.PINK_LILY)), "grass")); + items.add(new TileItem("White Lily", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "white_lily").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.WHITE_LILY)), "grass")); + items.add(new TileItem("Poppy", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "poppy").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.POPPY)), "grass")); + items.add(new TileItem("Violet", new SpriteLink.SpriteLinkBuilder(SpriteType.Item, "violet").createSpriteLink(), new TileModel("flower", flowerModelGenerator.apply(FlowerTile.FlowerVariant.VIOLET)), "grass")); // Creative mode available tiles: items.add(new TileItem("Farmland", SpriteManager.missingTexture(SpriteType.Item), new TileModel("farmland"), "dirt", "grass", "hole")); diff --git a/src/client/java/minicraft/item/WoolItem.java b/src/client/java/minicraft/item/WoolItem.java index ce5f3321b..57cee68fe 100644 --- a/src/client/java/minicraft/item/WoolItem.java +++ b/src/client/java/minicraft/item/WoolItem.java @@ -1,6 +1,6 @@ package minicraft.item; -import minicraft.gfx.SpriteLinker; +import minicraft.gfx.SpriteManager; import minicraft.util.MyUtils; import org.jetbrains.annotations.NotNull; @@ -11,8 +11,9 @@ protected static ArrayList getAllInstances() { ArrayList items = new ArrayList<>(); for (DyeItem.DyeColor color : DyeItem.DyeColor.values()) { - items.add(new WoolItem(MyUtils.capitalizeFully(color.toString().replace('_', ' ')) + " Wool", new SpriteLinker.LinkedSprite( - SpriteLinker.SpriteType.Item, color.toString().toLowerCase() + "_wool"), color)); + items.add(new WoolItem(MyUtils.capitalizeFully(color.toString().replace('_', ' ')) + " Wool", + new SpriteManager.SpriteLink.SpriteLinkBuilder(SpriteManager.SpriteType.Item, color.toString().toLowerCase() + "_wool") + .createSpriteLink(), color)); } return items; @@ -20,7 +21,7 @@ protected static ArrayList getAllInstances() { public final DyeItem.DyeColor color; - protected WoolItem(String name, SpriteLinker.LinkedSprite sprite, DyeItem.DyeColor color) { + protected WoolItem(String name, SpriteManager.SpriteLink sprite, DyeItem.DyeColor color) { super(name, sprite, new TileModel(name), "hole", "water"); this.color = color; }