From 20b1dac4a69f4e2aa9d2d0a5e8780fd8638f17e6 Mon Sep 17 00:00:00 2001 From: josua Date: Fri, 7 Aug 2020 13:58:29 +1000 Subject: [PATCH] Added tile entities, tile/entity placement guides, started working on campfires --- .../display/DisplayRenderUI.java | 23 +- src/projectzombie/entity/Entity.java | 10 +- src/projectzombie/entity/EntityBoss.java | 2 - src/projectzombie/entity/EntityBullet.java | 2 - src/projectzombie/entity/EntityContainer.java | 2 - src/projectzombie/entity/EntityDummy.java | 2 - src/projectzombie/entity/EntityExplosion.java | 2 - .../entity/EntityGrapplingHook.java | 2 - src/projectzombie/entity/EntityItem.java | 2 - src/projectzombie/entity/EntityParticle.java | 3 +- src/projectzombie/entity/EntityTnt.java | 2 - src/projectzombie/entity/EntityZombie.java | 5 +- .../entity/player/EntityPlayer.java | 53 ++- .../entity/tileentity/TileEntity.java | 22 + .../entity/tileentity/TileEntityCampfire.java | 22 + src/projectzombie/init/Entities.java | 2 + src/projectzombie/init/Items.java | 13 +- src/projectzombie/init/Models.java | 10 +- src/projectzombie/init/Recipes.java | 8 + src/projectzombie/init/Tiles.java | 3 + src/projectzombie/input/types/InputGame.java | 4 + src/projectzombie/items/Item.java | 29 +- src/projectzombie/items/ItemAcorn.java | 20 +- src/projectzombie/items/ItemCampfire.java | 47 ++ src/projectzombie/items/ItemFlare.java | 5 +- .../items/ItemGrapplingHook.java | 5 +- src/projectzombie/items/ItemHealthPotion.java | 5 +- src/projectzombie/items/ItemHempSeed.java | 18 +- src/projectzombie/items/ItemInfestation.java | 7 +- src/projectzombie/items/ItemLantern.java | 17 +- src/projectzombie/items/ItemSpawn.java | 8 +- src/projectzombie/items/ItemTnt.java | 5 +- .../items/modifier/ItemModifierDamage.java | 8 + .../items/spawner/ItemSpawnDummy.java | 4 +- .../items/spawner/ItemSpawnZombie.java | 4 +- .../menu/MenuInventoryBasic.java | 10 +- .../menu/MenuInventoryStorage.java | 120 +++++ .../menu/gui/GUIContainerSlider.java | 14 +- src/projectzombie/menu/gui/GUIItemHolder.java | 20 + src/projectzombie/menu/gui/GUIItemSlot.java | 27 ++ .../menu/gui/GUIItemSlotGetter.java | 4 + src/projectzombie/model/ModelEmpty.java | 5 + src/projectzombie/tiles/Tile.java | 8 + src/projectzombie/tiles/TileCampfire.java | 44 ++ src/projectzombie/world/World.java | 21 +- src/projectzombie/world/chunk/Chunk.java | 39 ++ src/projectzombie/world/layer/Layer.java | 29 ++ src/resources/shader/environmentRenderer.fsh | 4 +- .../texture/gui/item_slot_storage.png | Bin 0 -> 593 bytes ...box_big.png => selection_box_crafting.png} | Bin .../texture/gui/selection_box_storage.png | Bin 0 -> 2786 bytes src/resources/texture/list.txt | 449 +++++++++--------- src/resources/texture/tile/campfire.png | Bin 0 -> 774 bytes 53 files changed, 853 insertions(+), 317 deletions(-) create mode 100644 src/projectzombie/entity/tileentity/TileEntity.java create mode 100644 src/projectzombie/entity/tileentity/TileEntityCampfire.java create mode 100644 src/projectzombie/items/ItemCampfire.java create mode 100644 src/projectzombie/menu/MenuInventoryStorage.java create mode 100644 src/projectzombie/tiles/TileCampfire.java create mode 100644 src/resources/texture/gui/item_slot_storage.png rename src/resources/texture/gui/{selection_box_big.png => selection_box_crafting.png} (100%) create mode 100644 src/resources/texture/gui/selection_box_storage.png create mode 100644 src/resources/texture/tile/campfire.png diff --git a/src/projectzombie/display/DisplayRenderUI.java b/src/projectzombie/display/DisplayRenderUI.java index 0a94ead..fd40421 100755 --- a/src/projectzombie/display/DisplayRenderUI.java +++ b/src/projectzombie/display/DisplayRenderUI.java @@ -62,12 +62,29 @@ public class DisplayRenderUI model_item.setModel(matrix_item); model_item.render(); + double damage = stack.item.getDamage(stack); + + if(damage > 0) + { + Matrix4 matrix_damage = Matrix4.multiply(matrix_item, Matrix4.translate(0, -0.85 / 16, 0)); + matrix_damage = Matrix4.multiply(Matrix4.scale(new Vec3d(damage * 0.85, 0.85 / 16, 0)), matrix_damage); + + GL33.glUniform4f(Main.window.glsl_color, + 1 - (float)MathHelpers.squared(1 - damage), + 1 - (float)MathHelpers.squared(damage), 0, 1); + + Models.UI_PIXEL_WHITE.setModel(matrix_damage); + Models.UI_PIXEL_WHITE.render(); + + GL33.glUniform4f(Main.window.glsl_color, 1, 1, 1, 1); + } + if(stack.count > 1) { - matrix_item = Matrix4.multiply(matrix, Matrix4.translate(i * offset + 0.25, 0.28125, 0)); - matrix_item = Matrix4.multiply(Matrix4.scale(new Vec3d(0.4, 0.4, 0.4)), matrix_item); + Matrix4 matrix_text = Matrix4.multiply(matrix, Matrix4.translate(i * offset + 0.25, 0.28125, 0)); + matrix_text = Matrix4.multiply(Matrix4.scale(new Vec3d(0.4, 0.4, 0.4)), matrix_text); - Text.render("" + stack.count, matrix_item); + Text.render("" + stack.count, matrix_text); } } } diff --git a/src/projectzombie/entity/Entity.java b/src/projectzombie/entity/Entity.java index 23aaed1..27874a7 100755 --- a/src/projectzombie/entity/Entity.java +++ b/src/projectzombie/entity/Entity.java @@ -124,7 +124,7 @@ public abstract class Entity implements IBdfClassManager this.pos = pos.copy(); } - public Entity(BdfObject bdf) { + protected Entity() { } @Override @@ -223,6 +223,14 @@ public abstract class Entity implements IBdfClassManager tile_back.tile.onWalkedOn(chunk, layer, tpos, this, tile_back); tile_front.tile.onWalkedOn(chunk, layer, tpos, this, tile_front); } + + // Move the player out of a solid area + while(!moveIsLegal(pos)) + { + Vec2i tpos = pos.xz().toInt(); + Vec2d direction = pos.xz().subtract(tpos.toDouble()).subtract(0.5).normalize(); + pos = pos.add(direction.multiply(0.01).xny()); + } } } diff --git a/src/projectzombie/entity/EntityBoss.java b/src/projectzombie/entity/EntityBoss.java index 45f0aa4..efc2833 100755 --- a/src/projectzombie/entity/EntityBoss.java +++ b/src/projectzombie/entity/EntityBoss.java @@ -42,8 +42,6 @@ public class EntityBoss extends Entity implements IBossBar, EntityKillWithPartic private long seed; public EntityBoss(BdfObject bdf) { - super(bdf); - BdfClassLoad(bdf); } diff --git a/src/projectzombie/entity/EntityBullet.java b/src/projectzombie/entity/EntityBullet.java index bad3bc1..a4ab5e6 100755 --- a/src/projectzombie/entity/EntityBullet.java +++ b/src/projectzombie/entity/EntityBullet.java @@ -25,8 +25,6 @@ public class EntityBullet extends EntityParticle private double damage; public EntityBullet(BdfObject bdf) { - super(bdf); - BdfClassLoad(bdf); } diff --git a/src/projectzombie/entity/EntityContainer.java b/src/projectzombie/entity/EntityContainer.java index 28f6e81..4bd1aff 100644 --- a/src/projectzombie/entity/EntityContainer.java +++ b/src/projectzombie/entity/EntityContainer.java @@ -14,8 +14,6 @@ public class EntityContainer extends Entity implements EntityHoldsEntities private Entity[] entities; public EntityContainer(BdfObject bdf) { - super(bdf); - BdfClassLoad(bdf); } diff --git a/src/projectzombie/entity/EntityDummy.java b/src/projectzombie/entity/EntityDummy.java index 6f93da1..892af22 100755 --- a/src/projectzombie/entity/EntityDummy.java +++ b/src/projectzombie/entity/EntityDummy.java @@ -8,8 +8,6 @@ import projectzombie.model.Model; public class EntityDummy extends Entity implements EntityAlive { public EntityDummy(BdfObject bdf) { - super(bdf); - BdfClassLoad(bdf); } diff --git a/src/projectzombie/entity/EntityExplosion.java b/src/projectzombie/entity/EntityExplosion.java index b000a78..04cbc24 100755 --- a/src/projectzombie/entity/EntityExplosion.java +++ b/src/projectzombie/entity/EntityExplosion.java @@ -23,8 +23,6 @@ public class EntityExplosion extends Entity private int radius; public EntityExplosion(BdfObject bdf) { - super(bdf); - BdfClassLoad(bdf); } diff --git a/src/projectzombie/entity/EntityGrapplingHook.java b/src/projectzombie/entity/EntityGrapplingHook.java index 11de793..6873bcd 100755 --- a/src/projectzombie/entity/EntityGrapplingHook.java +++ b/src/projectzombie/entity/EntityGrapplingHook.java @@ -18,8 +18,6 @@ public class EntityGrapplingHook extends Entity private Entity entity; public EntityGrapplingHook(BdfObject bdf) { - super(bdf); - BdfClassLoad(bdf); } diff --git a/src/projectzombie/entity/EntityItem.java b/src/projectzombie/entity/EntityItem.java index f07e53a..92ebf6a 100755 --- a/src/projectzombie/entity/EntityItem.java +++ b/src/projectzombie/entity/EntityItem.java @@ -16,8 +16,6 @@ public class EntityItem extends EntityParticle private long age = 0; public EntityItem(BdfObject bdf) { - super(bdf); - BdfClassLoad(bdf); } diff --git a/src/projectzombie/entity/EntityParticle.java b/src/projectzombie/entity/EntityParticle.java index e4fedd0..13c0e35 100755 --- a/src/projectzombie/entity/EntityParticle.java +++ b/src/projectzombie/entity/EntityParticle.java @@ -12,8 +12,7 @@ public abstract class EntityParticle extends Entity public abstract int getParticleCount(); public abstract EntityParticlePart getParticleAt(int id); - public EntityParticle(BdfObject bdf) { - super(bdf); + protected EntityParticle() { } public EntityParticle(Vec3d pos, Vec3d velocity) { diff --git a/src/projectzombie/entity/EntityTnt.java b/src/projectzombie/entity/EntityTnt.java index d0cb5c0..56f2393 100755 --- a/src/projectzombie/entity/EntityTnt.java +++ b/src/projectzombie/entity/EntityTnt.java @@ -25,8 +25,6 @@ public class EntityTnt extends Entity implements EntityHoldsEntities } public EntityTnt(BdfObject bdf) { - super(bdf); - smoke_particles = new ParticleSmokeTrail(this); BdfClassLoad(bdf); } diff --git a/src/projectzombie/entity/EntityZombie.java b/src/projectzombie/entity/EntityZombie.java index 79254ba..491d2da 100755 --- a/src/projectzombie/entity/EntityZombie.java +++ b/src/projectzombie/entity/EntityZombie.java @@ -37,9 +37,8 @@ public class EntityZombie extends Entity implements EntityAlive, EntityKillWithP protected boolean crossUnwalkable = false; private int walking_for = 0; - public EntityZombie(BdfObject bdf) { - super(bdf); - + public EntityZombie(BdfObject bdf) + { // Set some settings hitbox = 0.5; isSolid = true; diff --git a/src/projectzombie/entity/player/EntityPlayer.java b/src/projectzombie/entity/player/EntityPlayer.java index e7991cc..417b62e 100755 --- a/src/projectzombie/entity/player/EntityPlayer.java +++ b/src/projectzombie/entity/player/EntityPlayer.java @@ -2,9 +2,12 @@ package projectzombie.entity.player; import java.util.ArrayList; +import org.lwjgl.opengl.GL33; + import bdf.types.BdfNamedList; import bdf.types.BdfObject; import gl_engine.MathHelpers; +import gl_engine.matrix.Matrix4; import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2i; import gl_engine.vec.Vec3d; @@ -67,7 +70,6 @@ public class EntityPlayer extends Entity implements private Vec2i last_chunk; public EntityPlayer(BdfObject bdf) { - super(bdf); BdfClassLoad(bdf); } @@ -262,12 +264,12 @@ public class EntityPlayer extends Entity implements Layer layer = Main.world.getLayer(); ItemStack is = inventory.getItem(inventory_hand); + Vec2d place_pos = getPos().xz().add(MathHelpers.moveTowards2(0.5, Math.toRadians(angle))); - if(is.isEmpty() || !is.item.onPlayerLeftClick(is, Main.world.getLayer(), chunk, this)) + if(is.isEmpty() || !is.item.onPlayerLeftClick(is, Main.world.getLayer(), this, place_pos)) { ItemTool tool = (is.item instanceof ItemTool) ? (ItemTool) is.item : null; - - Vec2i pos = getPos().xz().add(MathHelpers.moveTowards2(0.5, Math.toRadians(angle))).toInt(); + Vec2i pos = place_pos.toInt(); for(int ti=0;ti<2;ti++) { @@ -321,8 +323,9 @@ public class EntityPlayer extends Entity implements if(dead || in_animation) return; ItemStack is = inventory.getItem(inventory_hand); + Vec2d place_pos = getPos().xz().add(MathHelpers.moveTowards2(1, Math.toRadians(angle))); - if(is.isEmpty() || !is.item.onPlayerRightClick(is, Main.world.getLayer(), chunk, this)) { + if(is.isEmpty() || !is.item.onPlayerRightClick(is, Main.world.getLayer(), this, place_pos)) { activateTile(); } } @@ -394,6 +397,46 @@ public class EntityPlayer extends Entity implements } } + public void render() + { + Model model = getModel(); + model.setModel(Matrix4.identity()); + model.render(); + + ItemStack holding = inventory.getItem(inventory_hand); + + if(holding != null && !holding.isEmpty()) + { + Vec3d ppos = getPos(); + + Model model_place = holding.item.getPlaceModel(holding); + Model model_spawn = holding.item.getSpawnModel(holding); + Vec2d pos = ppos.xz().add(MathHelpers.moveTowards2(1, Math.toRadians(angle))); + + if(model_place != null || model_spawn != null) + { + GL33.glUniform4f(Main.window.glsl_color, 0.5f, 0.75f, 0.5f, 1); + } + + if(model_place != null) + { + model_place.setModel(Matrix4.translate(Math.floor(pos.x) - ppos.x + 0.5, 0, Math.floor(pos.y) - ppos.z + 0.5)); + model_place.render(); + } + + if(model_spawn != null) + { + model_spawn.setModel(Matrix4.translate(pos.x - ppos.x, 0, pos.y - ppos.z)); + model_spawn.render(); + } + + if(model_place != null || model_spawn != null) + { + GL33.glUniform4f(Main.window.glsl_color, 1, 1, 1, 1); + } + } + } + @Override public int bloodParticles() { return 12; diff --git a/src/projectzombie/entity/tileentity/TileEntity.java b/src/projectzombie/entity/tileentity/TileEntity.java new file mode 100644 index 0000000..0dd8d86 --- /dev/null +++ b/src/projectzombie/entity/tileentity/TileEntity.java @@ -0,0 +1,22 @@ +package projectzombie.entity.tileentity; + +import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; +import projectzombie.entity.Entity; +import projectzombie.init.Models; +import projectzombie.model.IModel; + +public abstract class TileEntity extends Entity +{ + public TileEntity(Vec2i pos) { + super(new Vec3d(pos.x, 0, pos.y), new Vec3d(0, 0, 0)); + } + + protected TileEntity() { + } + + @Override + public IModel getModel() { + return Models.EMPTY; + } +} diff --git a/src/projectzombie/entity/tileentity/TileEntityCampfire.java b/src/projectzombie/entity/tileentity/TileEntityCampfire.java new file mode 100644 index 0000000..58ab883 --- /dev/null +++ b/src/projectzombie/entity/tileentity/TileEntityCampfire.java @@ -0,0 +1,22 @@ +package projectzombie.entity.tileentity; + +import bdf.types.BdfObject; +import gl_engine.vec.Vec2i; +import projectzombie.world.chunk.Chunk; +import projectzombie.world.layer.Layer; + +public class TileEntityCampfire extends TileEntity +{ + public TileEntityCampfire(BdfObject bdf) { + BdfClassLoad(bdf); + } + + public TileEntityCampfire(Vec2i pos) { + super(pos); + } + + @Override + public void tick(Chunk chunk, Layer layer) { + super.tick(chunk, layer); + } +} diff --git a/src/projectzombie/init/Entities.java b/src/projectzombie/init/Entities.java index 12a0b09..54fa032 100755 --- a/src/projectzombie/init/Entities.java +++ b/src/projectzombie/init/Entities.java @@ -16,6 +16,7 @@ import projectzombie.entity.EntityTnt; import projectzombie.entity.EntityZombie; import projectzombie.entity.EntityZombieArmored; import projectzombie.entity.player.EntityPlayer; +import projectzombie.entity.tileentity.TileEntityCampfire; public class Entities { @@ -47,5 +48,6 @@ public class Entities register(EntityBoss.class); register(EntityPlayer.class); register(EntityContainer.class); + register(TileEntityCampfire.class); } } diff --git a/src/projectzombie/init/Items.java b/src/projectzombie/init/Items.java index 4d37cd2..5418e44 100755 --- a/src/projectzombie/init/Items.java +++ b/src/projectzombie/init/Items.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import projectzombie.items.Item; import projectzombie.items.ItemAcorn; import projectzombie.items.ItemAmmo; +import projectzombie.items.ItemCampfire; import projectzombie.items.ItemEmpty; import projectzombie.items.ItemFlare; import projectzombie.items.ItemFlint; @@ -33,29 +34,24 @@ public class Items public static void init() { register(EMPTY); - register(AMMO); register(HEALTH_POTION); register(TNT); register(LANTERN); register(FLARE); register(GRAPPLING_HOOK); - register(SPAWN_ZOMBIE); register(SPAWN_DUMMY); - register(ROCK); register(FLINT); register(LOG); register(ACORN); register(PLANT_FIBRE); register(HEMP_SEED); - register(AMMO); - register(INFESTATION); - register(FLINT_HATCHET); + register(CAMPFIRE); } public static final Item AMMO = new ItemAmmo(); @@ -65,18 +61,15 @@ public class Items public static final Item LANTERN = new ItemLantern(); public static final Item FLARE = new ItemFlare(); public static final Item GRAPPLING_HOOK = new ItemGrapplingHook(); - public static final Item SPAWN_ZOMBIE = new ItemSpawnZombie(); public static final Item SPAWN_DUMMY = new ItemSpawnDummy(); - public static final Item ROCK = new ItemRock(); public static final Item FLINT = new ItemFlint(); public static final Item LOG = new ItemLog(); public static final Item ACORN = new ItemAcorn(); public static final Item HEMP_SEED = new ItemHempSeed(); public static final Item PLANT_FIBRE = new ItemPlantFibre(); - + public static final Item CAMPFIRE = new ItemCampfire(); public static final Item FLINT_HATCHET = new ItemFlintHatchet(); - public static final Item INFESTATION = new ItemInfestation(); } diff --git a/src/projectzombie/init/Models.java b/src/projectzombie/init/Models.java index 2096cf6..1d2672a 100755 --- a/src/projectzombie/init/Models.java +++ b/src/projectzombie/init/Models.java @@ -27,6 +27,8 @@ public class Models public static final Model TILE_TREE = new ModelTree(); public static final Model TILE_TREE_SNOW = new ModelTreeSnow(); + public static final Model TILE_CAMPFIRE = new ModelCross(Resources.ATLAS.get("/tile/campfire.png")); + public static final Model TILE_SAPLING_1 = new ModelCross(Resources.ATLAS.get("/tile/sapling1.png")); public static final Model TILE_SAPLING_2 = new ModelCross(Resources.ATLAS.get("/tile/sapling2.png")); public static final Model TILE_SAPLING_3 = new ModelCross(Resources.ATLAS.get("/tile/sapling3.png")); @@ -103,11 +105,14 @@ public class Models public static final ModelGui UI_BUTTON_PLAY_HOVER = new ModelGui(Resources.ATLAS.get("/gui/button_play_hover.png"), new Vec2d(1.875, 1.875)); public static final ModelGui UI_LABEL = new ModelGui(Resources.ATLAS.get("/gui/label.png"), new Vec2d(24, 3)); public static final ModelGui UI_LABEL_RECIPE = new ModelGui(Resources.ATLAS.get("/gui/label_recipe.png"), new Vec2d(12, 3)); - public static final ModelGui UI_SELECTION_BOX_WIDE = new ModelGui(Resources.ATLAS.get("/gui/selection_box_wide.png"), new Vec2d(24, 12)); - public static final ModelGui UI_SELECTION_BOX_BIG = new ModelGui(Resources.ATLAS.get("/gui/selection_box_big.png"), new Vec2d(12, 12)); public static final ModelGui UI_TEXT_BOX = new ModelGui(Resources.ATLAS.get("/gui/text_box.png"), new Vec2d(12, 1.5)); public static final ModelGui UI_TEXT_CURSOR = new ModelGui(Resources.ATLAS.get("/gui/text_cursor.png"), 2, 50); + public static final ModelGui UI_SELECTION_BOX_WIDE = new ModelGui(Resources.ATLAS.get("/gui/selection_box_wide.png"), new Vec2d(24, 12)); + public static final ModelGui UI_SELECTION_BOX_CRAFTING = new ModelGui(Resources.ATLAS.get("/gui/selection_box_crafting.png"), new Vec2d(12, 12)); + public static final ModelGui UI_SELECTION_BOX_STORAGE = new ModelGui(Resources.ATLAS.get("/gui/selection_box_storage.png"), new Vec2d(12, 12)); + public static final ModelGui UI_ITEM_SLOT_STORAGE = new ModelGui(Resources.ATLAS.get("/gui/item_slot_storage.png"), new Vec2d(1.5, 1.5)); + public static final ModelGui UI_HEALTH_FG = new ModelGui(Resources.ATLAS.get("/gui/health_full.png"), new Vec2d(6, 0.375)); public static final ModelGui UI_HEALTH_BG = new ModelGui(Resources.ATLAS.get("/gui/health_empty.png"), new Vec2d(6, 0.375)); public static final ModelGui UI_ITEM_SLOTS = new ModelGui(Resources.ATLAS.get("/gui/hotbar.png"), new Vec2d(15, 1.5)); @@ -126,6 +131,7 @@ public class Models public static final ModelItem UI_SLOT_CLOTHING_BOOTS = new ModelItem(Resources.ATLAS.get("/gui/slot_clothing_boots.png")); public static final ModelItem ITEM_EMPTY = ModelItem.createEmpty(); + public static final ModelItem ITEM_CAMPFIRE = new ModelItem(Resources.ATLAS.get("/tile/campfire.png")); public static final ModelItem ITEM_GRAPPLING_HOOK = new ModelItem(Resources.ATLAS.get("/item/grappling_hook.png")); public static final ModelItem ITEM_HEALTH_POTION = new ModelItem(Resources.ATLAS.get("/item/health_potion.png")); public static final ModelItem ITEM_AMMO_BOX = new ModelItem(Resources.ATLAS.get("/item/ammo_box.png")); diff --git a/src/projectzombie/init/Recipes.java b/src/projectzombie/init/Recipes.java index a33729e..c9f5c82 100644 --- a/src/projectzombie/init/Recipes.java +++ b/src/projectzombie/init/Recipes.java @@ -54,6 +54,14 @@ public class Recipes Crafting.BASIC, }, new ItemStack(Items.FLINT_HATCHET, 1))); + recipies.add(new RecipeBasic( + new ItemStack[] { + new ItemStack(Items.LOG, 1), + new ItemStack(Items.ROCK, 1), + }, new Crafting[] { + Crafting.BASIC, + }, new ItemStack(Items.CAMPFIRE, 1))); + } } diff --git a/src/projectzombie/init/Tiles.java b/src/projectzombie/init/Tiles.java index d6c7883..7bfa986 100755 --- a/src/projectzombie/init/Tiles.java +++ b/src/projectzombie/init/Tiles.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import projectzombie.tiles.Tile; import projectzombie.tiles.TileBossPortal; import projectzombie.tiles.TileCactus; +import projectzombie.tiles.TileCampfire; import projectzombie.tiles.TileChest; import projectzombie.tiles.TileDirt; import projectzombie.tiles.TileGrass; @@ -74,6 +75,7 @@ public class Tiles register(GRASS_INFESTED); register(TALL_GRASS); register(SAPLING); + register(CAMPFIRE); } public static final Tile GRASS = new TileGrass(); @@ -103,4 +105,5 @@ public class Tiles public static final Tile TALL_GRASS = new TileTallGrass(); public static final Tile SAPLING = new TileSapling(); public static final Tile HEMP = new TileHemp(); + public static final Tile CAMPFIRE = new TileCampfire(); } diff --git a/src/projectzombie/input/types/InputGame.java b/src/projectzombie/input/types/InputGame.java index 962d50d..442b779 100755 --- a/src/projectzombie/input/types/InputGame.java +++ b/src/projectzombie/input/types/InputGame.java @@ -4,9 +4,13 @@ import gl_engine.MathHelpers; import gl_engine.vec.Vec2d; import projectzombie.Main; import projectzombie.inventory.Crafting; +import projectzombie.inventory.Inventory; import projectzombie.menu.MenuGamePause; import projectzombie.menu.MenuInventory; import projectzombie.menu.MenuInventoryBasic; +import projectzombie.menu.MenuInventoryStorage; +import projectzombie.menu.gui.GUIItemSlotGetter; +import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.ChunkEventHandler; public class InputGame implements Input diff --git a/src/projectzombie/items/Item.java b/src/projectzombie/items/Item.java index efcc843..569d235 100755 --- a/src/projectzombie/items/Item.java +++ b/src/projectzombie/items/Item.java @@ -1,9 +1,15 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.entity.Entity; import projectzombie.entity.EntityHasInventory; import projectzombie.entity.player.EntityPlayer; +import projectzombie.init.Models; import projectzombie.inventory.IInventory; +import projectzombie.items.modifier.ItemModifierDamage; +import projectzombie.model.Model; import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; @@ -14,11 +20,11 @@ public abstract class Item public int id; public int max = 99; - public boolean onPlayerLeftClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { + public boolean onPlayerLeftClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) { return false; } - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) { return false; } @@ -30,6 +36,14 @@ public abstract class Item return 0; } + public Model getPlaceModel(ItemStack stack) { + return null; + } + + public Model getSpawnModel(ItemStack stack) { + return null; + } + public abstract ModelItem getModel(ItemStack stack); public void onPickedUp(ItemStack stack, Layer layer, Chunk chunk, Entity entity) @@ -47,4 +61,15 @@ public abstract class Item entity_i.addItem(stack); } } + + public double getDamage(ItemStack stack) + { + ItemModifierDamage damage_modifier = (ItemModifierDamage)stack.getModifier(ItemModifierDamage.class); + + if(damage_modifier == null) { + return 0; + } + + return (double)damage_modifier.getDamage() / (double)damage_modifier.getMaxDamage(); + } } diff --git a/src/projectzombie/items/ItemAcorn.java b/src/projectzombie/items/ItemAcorn.java index 90e38f8..65ba89e 100644 --- a/src/projectzombie/items/ItemAcorn.java +++ b/src/projectzombie/items/ItemAcorn.java @@ -1,9 +1,12 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; import projectzombie.init.Tiles; +import projectzombie.model.Model; import projectzombie.model.ModelItem; import projectzombie.tiles.Tile; import projectzombie.util.math.ItemStack; @@ -24,13 +27,18 @@ public class ItemAcorn extends Item } @Override - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { + public Model getPlaceModel(ItemStack stack) { + return Models.TILE_SAPLING_1; + } + + @Override + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) + { + Vec2i pos = place_pos.toInt(); + Tile bt = layer.getBackTile(pos).tile; - Vec2i tpos = player.getPos().xz().toInt(); - Tile bt = chunk.getBackTile(tpos).tile; - - if((bt == Tiles.GRASS || bt == Tiles.SNOW) && chunk.getFrontTile(tpos).tile == Tiles.VOID) { - chunk.setFrontTile(Tiles.SAPLING.getDefaultState(), tpos); + if((bt == Tiles.GRASS || bt == Tiles.SNOW) && layer.getFrontTile(pos).tile == Tiles.VOID) { + layer.setFrontTile(Tiles.SAPLING.getDefaultState(), pos); stack.count -= 1; return true; } diff --git a/src/projectzombie/items/ItemCampfire.java b/src/projectzombie/items/ItemCampfire.java new file mode 100644 index 0000000..a8bc72a --- /dev/null +++ b/src/projectzombie/items/ItemCampfire.java @@ -0,0 +1,47 @@ +package projectzombie.items; + +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; +import projectzombie.entity.player.EntityPlayer; +import projectzombie.init.Models; +import projectzombie.init.Tiles; +import projectzombie.model.Model; +import projectzombie.model.ModelItem; +import projectzombie.util.math.ItemStack; +import projectzombie.world.chunk.Chunk; +import projectzombie.world.layer.Layer; + +public class ItemCampfire extends Item +{ + + @Override + public ModelItem getModel(ItemStack stack) { + return Models.ITEM_CAMPFIRE; + } + + @Override + public Model getPlaceModel(ItemStack stack) { + return Models.TILE_CAMPFIRE; + } + + @Override + public String getName(ItemStack stack) { + return "Campfire"; + } + + @Override + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) + { + Vec2i pos = place_pos.toInt(); + + if(layer.getFrontTile(pos).tile != Tiles.VOID) { + return false; + } + + stack.count -= 1; + layer.setFrontTile(Tiles.CAMPFIRE.getDefaultState(), pos); + + return true; + } + +} diff --git a/src/projectzombie/items/ItemFlare.java b/src/projectzombie/items/ItemFlare.java index 3b63add..44c66be 100755 --- a/src/projectzombie/items/ItemFlare.java +++ b/src/projectzombie/items/ItemFlare.java @@ -1,5 +1,8 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.entity.EntityFlare; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; @@ -17,7 +20,7 @@ public class ItemFlare extends Item } @Override - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) { layer.spawnEntity(new EntityFlare(player.getPos(), player.getVelocity(), player.angle)); stack.count -= 1; return true; diff --git a/src/projectzombie/items/ItemGrapplingHook.java b/src/projectzombie/items/ItemGrapplingHook.java index 4695e4f..281f091 100755 --- a/src/projectzombie/items/ItemGrapplingHook.java +++ b/src/projectzombie/items/ItemGrapplingHook.java @@ -1,5 +1,8 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.entity.EntityGrapplingHook; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; @@ -24,7 +27,7 @@ public class ItemGrapplingHook extends Item } @Override - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) { layer.spawnEntity(new EntityGrapplingHook(player.getPos(), ItemModifierMeta.getStackMeta(stack), player)); stack.count -= 1; diff --git a/src/projectzombie/items/ItemHealthPotion.java b/src/projectzombie/items/ItemHealthPotion.java index 0131448..bc0f6af 100755 --- a/src/projectzombie/items/ItemHealthPotion.java +++ b/src/projectzombie/items/ItemHealthPotion.java @@ -1,5 +1,8 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; import projectzombie.items.modifier.ItemModifierMeta; @@ -22,7 +25,7 @@ public class ItemHealthPotion extends Item } @Override - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) { player.addHealth(ItemModifierMeta.getStackMeta(stack)); stack.count -= 1; return true; diff --git a/src/projectzombie/items/ItemHempSeed.java b/src/projectzombie/items/ItemHempSeed.java index 769873e..bc6d11e 100644 --- a/src/projectzombie/items/ItemHempSeed.java +++ b/src/projectzombie/items/ItemHempSeed.java @@ -1,9 +1,12 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; import projectzombie.init.Tiles; +import projectzombie.model.Model; import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; @@ -23,12 +26,17 @@ public class ItemHempSeed extends Item } @Override - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { + public Model getPlaceModel(ItemStack stack) { + return Models.TILE_HEMP[0]; + } + + @Override + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) + { + Vec2i pos = place_pos.toInt(); - Vec2i tpos = player.getPos().xz().toInt(); - - if(chunk.getBackTile(tpos).tile == Tiles.GRASS && chunk.getFrontTile(tpos).tile == Tiles.VOID) { - chunk.setFrontTile(Tiles.HEMP.getDefaultState(), tpos); + if(layer.getBackTile(pos).tile == Tiles.GRASS && layer.getFrontTile(pos).tile == Tiles.VOID) { + layer.setFrontTile(Tiles.HEMP.getDefaultState(), pos); stack.count -= 1; return true; } diff --git a/src/projectzombie/items/ItemInfestation.java b/src/projectzombie/items/ItemInfestation.java index e104f93..3949dc7 100644 --- a/src/projectzombie/items/ItemInfestation.java +++ b/src/projectzombie/items/ItemInfestation.java @@ -1,5 +1,8 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; import projectzombie.init.Tiles; @@ -17,8 +20,8 @@ public class ItemInfestation extends Item } @Override - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { - chunk.setBackTile(Tiles.GRASS_INFESTED.getDefaultState(), player.getPos().xz().toInt()); + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) { + layer.setBackTile(Tiles.GRASS_INFESTED.getDefaultState(), place_pos.toInt()); stack.count -= 1; return true; } diff --git a/src/projectzombie/items/ItemLantern.java b/src/projectzombie/items/ItemLantern.java index 9d0489e..e384db6 100755 --- a/src/projectzombie/items/ItemLantern.java +++ b/src/projectzombie/items/ItemLantern.java @@ -1,10 +1,13 @@ package projectzombie.items; import gl_engine.MathHelpers; +import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; import projectzombie.init.Tiles; +import projectzombie.model.Model; import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; @@ -24,11 +27,17 @@ public class ItemLantern extends Item } @Override - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) + public Model getPlaceModel(ItemStack stack) { + return Models.TILE_LANTERN; + } + + @Override + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) { - Vec2i tpos = new Vec2i(MathHelpers.floor(player.getPos().x), MathHelpers.floor(player.getPos().z)); - if(layer.getFrontTile(tpos).tile == Tiles.VOID) { - layer.setFrontTile(Tiles.LANTERN.getDefaultState(), tpos); + Vec2i pos = place_pos.toInt(); + + if(layer.getFrontTile(pos).tile == Tiles.VOID) { + layer.setFrontTile(Tiles.LANTERN.getDefaultState(), pos); stack.count -= 1; return true; } diff --git a/src/projectzombie/items/ItemSpawn.java b/src/projectzombie/items/ItemSpawn.java index ea1990f..c5aac9e 100755 --- a/src/projectzombie/items/ItemSpawn.java +++ b/src/projectzombie/items/ItemSpawn.java @@ -1,5 +1,7 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; import gl_engine.vec.Vec3d; import projectzombie.entity.player.EntityPlayer; import projectzombie.util.math.ItemStack; @@ -9,13 +11,13 @@ import projectzombie.world.layer.Layer; public abstract class ItemSpawn extends Item { @Override - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { - this.spawnEntity(layer, chunk, player.getPos(), player.getVelocity()); + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) { + this.spawnEntity(layer, player.getPos(), player.getVelocity()); stack.count -= 1; return true; } - public void spawnEntity(Layer layer, Chunk chunk, Vec3d pos, Vec3d velocity) { + public void spawnEntity(Layer layer, Vec3d pos, Vec3d velocity) { } } diff --git a/src/projectzombie/items/ItemTnt.java b/src/projectzombie/items/ItemTnt.java index 8622f3b..e3bc7ba 100755 --- a/src/projectzombie/items/ItemTnt.java +++ b/src/projectzombie/items/ItemTnt.java @@ -1,5 +1,8 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.entity.EntityTnt; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; @@ -22,7 +25,7 @@ public class ItemTnt extends Item } @Override - public boolean onPlayerRightClick(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { + public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos) { layer.spawnEntity(new EntityTnt(player.getPos(), player.getVelocity(), player.angle, ItemModifierMeta.getStackMeta(stack), 5000)); stack.count -= 1; diff --git a/src/projectzombie/items/modifier/ItemModifierDamage.java b/src/projectzombie/items/modifier/ItemModifierDamage.java index bd34ca6..1d39b78 100644 --- a/src/projectzombie/items/modifier/ItemModifierDamage.java +++ b/src/projectzombie/items/modifier/ItemModifierDamage.java @@ -17,6 +17,14 @@ public class ItemModifierDamage extends ItemModifier BdfClassLoad(bdf); } + public int getDamage() { + return damage; + } + + public int getMaxDamage() { + return max; + } + public void repair() { damage = 0; } diff --git a/src/projectzombie/items/spawner/ItemSpawnDummy.java b/src/projectzombie/items/spawner/ItemSpawnDummy.java index ae3401b..c98c3d8 100644 --- a/src/projectzombie/items/spawner/ItemSpawnDummy.java +++ b/src/projectzombie/items/spawner/ItemSpawnDummy.java @@ -18,8 +18,8 @@ public class ItemSpawnDummy extends ItemSpawn } @Override - public void spawnEntity(Layer layer, Chunk chunk, Vec3d pos, Vec3d velocity) { - chunk.spawnEntity(new EntityDummy(pos, velocity)); + public void spawnEntity(Layer layer, Vec3d pos, Vec3d velocity) { + layer.spawnEntity(new EntityDummy(pos, velocity)); } } diff --git a/src/projectzombie/items/spawner/ItemSpawnZombie.java b/src/projectzombie/items/spawner/ItemSpawnZombie.java index 10d58bb..36b5f7b 100755 --- a/src/projectzombie/items/spawner/ItemSpawnZombie.java +++ b/src/projectzombie/items/spawner/ItemSpawnZombie.java @@ -18,8 +18,8 @@ public class ItemSpawnZombie extends ItemSpawn } @Override - public void spawnEntity(Layer layer, Chunk chunk, Vec3d pos, Vec3d velocity) { - chunk.spawnEntity(new EntityZombie(pos, velocity)); + public void spawnEntity(Layer layer, Vec3d pos, Vec3d velocity) { + layer.spawnEntity(new EntityZombie(pos, velocity)); } } diff --git a/src/projectzombie/menu/MenuInventoryBasic.java b/src/projectzombie/menu/MenuInventoryBasic.java index 90beddf..f4c45ef 100644 --- a/src/projectzombie/menu/MenuInventoryBasic.java +++ b/src/projectzombie/menu/MenuInventoryBasic.java @@ -30,14 +30,16 @@ public class MenuInventoryBasic extends MenuInventory Models.UI_INVENTORY.getWidth() * 21 / 256.0, -Models.UI_INVENTORY.getHeight() * 127 / 256.0), new Vec2d( Models.UI_INVENTORY.getWidth() * 234 / 256.0, - Models.UI_INVENTORY.getHeight() * 254 / 256.0), 100); + Models.UI_INVENTORY.getHeight() * 254 / 256.0), + recipies.length * Models.UI_LABEL_RECIPE.getHeight() * + 36 / 34.0 - Models.UI_INVENTORY.getHeight()); for(int i=0;i 0) + { + Matrix4 matrix_damage = Matrix4.multiply(holding_matrix, Matrix4.translate(0, -0.85 / 16, 0)); + matrix_damage = Matrix4.multiply(Matrix4.scale(new Vec3d(damage * 0.85, 0.85 / 16, 0)), matrix_damage); + + GL33.glUniform4f(Main.window.glsl_color, + 1 - (float)MathHelpers.squared(1 - damage), + 1 - (float)MathHelpers.squared(damage), 0, 1); + + Models.UI_PIXEL_WHITE.setModel(matrix_damage); + Models.UI_PIXEL_WHITE.render(); + + GL33.glUniform4f(Main.window.glsl_color, 1, 1, 1, 1); + } + if(holding.count > 1) { Matrix4 text_matrix = Matrix4.multiply(holding_matrix, Matrix4.translate(-0.75 / 4, -0.75 / 4, 0)); diff --git a/src/projectzombie/menu/gui/GUIItemSlot.java b/src/projectzombie/menu/gui/GUIItemSlot.java index 7e51049..6651a07 100644 --- a/src/projectzombie/menu/gui/GUIItemSlot.java +++ b/src/projectzombie/menu/gui/GUIItemSlot.java @@ -1,8 +1,12 @@ package projectzombie.menu.gui; +import org.lwjgl.opengl.GL33; + +import gl_engine.MathHelpers; import gl_engine.matrix.Matrix4; import gl_engine.vec.Vec2d; import gl_engine.vec.Vec3d; +import projectzombie.Main; import projectzombie.init.Models; import projectzombie.model.Model; import projectzombie.model.ModelItem; @@ -56,6 +60,12 @@ public class GUIItemSlot implements GUIComponent matrix = Matrix4.multiply(Matrix4.translate(pos.x, pos.y, 0), matrix); Model model = stack.item.getModel(stack).getGuiModel(); + if(getter.renderSlot()) + { + Models.UI_ITEM_SLOT_STORAGE.setModel(Matrix4.multiply(matrix, Matrix4.translate(-0.325, -0.325, 0))); + Models.UI_ITEM_SLOT_STORAGE.render(); + } + if(stack.isEmpty()) { model = model_empty; } @@ -78,6 +88,23 @@ public class GUIItemSlot implements GUIComponent if(renderItem && !stack.isEmpty()) { + double damage = stack.item.getDamage(stack); + + if(damage > 0) + { + Matrix4 matrix_damage = Matrix4.multiply(matrix, Matrix4.translate(0, -0.85 / 16, 0)); + matrix_damage = Matrix4.multiply(Matrix4.scale(new Vec3d(damage * 0.85, 0.85 / 16, 0)), matrix_damage); + + GL33.glUniform4f(Main.window.glsl_color, + 1 - (float)MathHelpers.squared(1 - damage), + 1 - (float)MathHelpers.squared(damage), 0, 1); + + Models.UI_PIXEL_WHITE.setModel(matrix_damage); + Models.UI_PIXEL_WHITE.render(); + + GL33.glUniform4f(Main.window.glsl_color, 1, 1, 1, 1); + } + if(stack.count > 1) { Matrix4 text_matrix = Matrix4.multiply(matrix, Matrix4.translate(-0.75 / 4, -0.75 / 4, 0)); diff --git a/src/projectzombie/menu/gui/GUIItemSlotGetter.java b/src/projectzombie/menu/gui/GUIItemSlotGetter.java index 76ac25f..be40de6 100644 --- a/src/projectzombie/menu/gui/GUIItemSlotGetter.java +++ b/src/projectzombie/menu/gui/GUIItemSlotGetter.java @@ -18,4 +18,8 @@ public interface GUIItemSlotGetter { public default boolean isReadOnly() { return false; } + + public default boolean renderSlot() { + return false; + } } diff --git a/src/projectzombie/model/ModelEmpty.java b/src/projectzombie/model/ModelEmpty.java index a9b52d1..14b0484 100644 --- a/src/projectzombie/model/ModelEmpty.java +++ b/src/projectzombie/model/ModelEmpty.java @@ -1,5 +1,6 @@ package projectzombie.model; +import gl_engine.matrix.Matrix4; import gl_engine.texture.TextureRef3D; public class ModelEmpty extends Model @@ -32,6 +33,10 @@ public class ModelEmpty extends Model return new int[0]; } + @Override + public void setModel(Matrix4 model) { + } + @Override public void render() {} diff --git a/src/projectzombie/tiles/Tile.java b/src/projectzombie/tiles/Tile.java index c8bec60..7c3e17b 100755 --- a/src/projectzombie/tiles/Tile.java +++ b/src/projectzombie/tiles/Tile.java @@ -61,4 +61,12 @@ public abstract class Tile } public abstract Model getModel(byte meta); + + public void onGenerate(Layer layer, Chunk chunk, TileState state, Vec2i pos) { + + } + + public void onDestroy(Layer layer, Chunk chunk, TileState state, Vec2i pos) { + + } } diff --git a/src/projectzombie/tiles/TileCampfire.java b/src/projectzombie/tiles/TileCampfire.java new file mode 100644 index 0000000..1a21396 --- /dev/null +++ b/src/projectzombie/tiles/TileCampfire.java @@ -0,0 +1,44 @@ +package projectzombie.tiles; + +import gl_engine.vec.Vec2i; +import projectzombie.entity.tileentity.TileEntityCampfire; +import projectzombie.init.Models; +import projectzombie.model.Model; +import projectzombie.util.math.TileState; +import projectzombie.world.chunk.Chunk; +import projectzombie.world.layer.Layer; + +public class TileCampfire extends Tile +{ + + public TileCampfire() { + this.emitsLight = true; + this.tileSolid = true; + this.tileHitbox = 0.5; + } + + @Override + public double getLightLevel(TileState state, Vec2i pos) { + return 1; + } + + @Override + public Model getModel(byte meta) { + return Models.TILE_CAMPFIRE; + } + + @Override + public void onGenerate(Layer layer, Chunk chunk, TileState state, Vec2i pos) { + super.onGenerate(layer, chunk, state, pos); + + chunk.createTileEntity(pos, new TileEntityCampfire(pos)); + } + + @Override + public void onDestroy(Layer layer, Chunk chunk, TileState state, Vec2i pos) { + super.onDestroy(layer, chunk, state, pos); + + chunk.destroyTileEntity(pos); + } + +} diff --git a/src/projectzombie/world/World.java b/src/projectzombie/world/World.java index f5f01fa..353d12a 100755 --- a/src/projectzombie/world/World.java +++ b/src/projectzombie/world/World.java @@ -1,7 +1,7 @@ package projectzombie.world; import java.io.File; -import java.nio.ByteBuffer; +import java.nio.FloatBuffer; import java.util.ArrayList; import java.util.Random; @@ -102,15 +102,8 @@ public class World implements IBdfClassManager public void render(Camera camera) { // Render the world and the player - if(!Main.player.dead) - { - Vec3d ppos = Main.player.getPos(); - Model model = Main.player.getModel(); - - model.setModel(Matrix4.translate( - ppos.x - Camera.camera.x - 0.5, ppos.y, - ppos.z - Camera.camera.y - 0.5)); - model.render(); + if(!Main.player.dead) { + Main.player.render(); } // Re-generate the particle pool if the pool has changed @@ -130,9 +123,9 @@ public class World implements IBdfClassManager if(changed) { - ByteBuffer pool = BufferUtils.createByteBuffer(pool_size * Model.SIZE * 16); + FloatBuffer pool = BufferUtils.createFloatBuffer(pool_size * Model.SIZE * 16); - loaded.render(camera, pool.asFloatBuffer(), 0); + loaded.render(camera, pool, 0); if(pool_vao != 0) { GL33.glDeleteVertexArrays(pool_vao); @@ -169,9 +162,9 @@ public class World implements IBdfClassManager else { - ByteBuffer pool = BufferUtils.createByteBuffer(pool_particle_count * Model.SIZE * 16); + FloatBuffer pool = BufferUtils.createFloatBuffer(pool_particle_count * Model.SIZE * 16); - loaded.render(camera, pool.asFloatBuffer(), 0); + loaded.render(camera, pool, 0); GL33.glBindVertexArray(pool_vao); diff --git a/src/projectzombie/world/chunk/Chunk.java b/src/projectzombie/world/chunk/Chunk.java index 1532004..c8d0b0f 100755 --- a/src/projectzombie/world/chunk/Chunk.java +++ b/src/projectzombie/world/chunk/Chunk.java @@ -24,6 +24,7 @@ import projectzombie.entity.EntityKillWithParticles; import projectzombie.entity.EntityParticle; import projectzombie.entity.EntityParticlePart; import projectzombie.entity.particle.ParticleBreak; +import projectzombie.entity.tileentity.TileEntity; import projectzombie.init.Tiles; import projectzombie.model.IModel; import projectzombie.model.Model; @@ -473,6 +474,40 @@ public class Chunk implements IBdfClassManager } } + public void createTileEntity(Vec2i pos, TileEntity te) + { + TileEntity te_old = getTileEntity(pos); + + // Kill the old tile entity if it exists + if(te_old != null) { + te_old.kill(); + } + + te.setPos(new Vec3d(pos.x, 0, pos.y)); + spawnEntity(te); + } + + public void destroyTileEntity(Vec2i pos) + { + TileEntity te = getTileEntity(pos); + + if(te != null) { + te.kill(); + } + } + + public TileEntity getTileEntity(Vec2i pos) + { + for(Entity e : entities) + { + if(e instanceof TileEntity && e.getPos().xz().toInt().equal(pos)) { + return (TileEntity)e; + } + } + + return null; + } + public void setBackTile(TileState tile, Vec2i pos) { // Get the id @@ -491,6 +526,8 @@ public class Chunk implements IBdfClassManager this.tiles_back_meta[id] = tile.meta; setDirty(); + + tile.tile.onGenerate(layer, this, tile, Vec2i.fromId(CHUNK_SIZE, id)); } public void setFrontTile(TileState tile, Vec2i pos) @@ -511,6 +548,8 @@ public class Chunk implements IBdfClassManager this.tiles_front_meta[id] = tile.meta; setDirty(); + + tile.tile.onGenerate(layer, this, tile, Vec2i.fromId(CHUNK_SIZE, id)); } public TileState getBackTile(Vec2i pos) diff --git a/src/projectzombie/world/layer/Layer.java b/src/projectzombie/world/layer/Layer.java index 93af066..b9a4d3b 100755 --- a/src/projectzombie/world/layer/Layer.java +++ b/src/projectzombie/world/layer/Layer.java @@ -11,9 +11,11 @@ import bdf.types.BdfObject; import gl_engine.MathHelpers; import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2i; +import gl_engine.vec.Vec3d; import projectzombie.Main; import projectzombie.display.Camera; import projectzombie.entity.Entity; +import projectzombie.entity.tileentity.TileEntity; import projectzombie.init.LayerGenerators; import projectzombie.util.math.TileState; import projectzombie.util.math.map.Map2D; @@ -120,6 +122,33 @@ public class Layer implements IBdfClassManager return chunks.get(getChunkPosFromPos(pos)); } + public void createTileEntity(Vec2i pos, TileEntity te) + { + // Get the chunk pos + Vec2i c_pos = getChunkPosFromPos(pos); + + // Add the tile entity to that chunk + chunks.get(c_pos).createTileEntity(pos, te); + } + + public TileEntity getTileEntity(Vec2i pos) + { + // Get the chunk pos + Vec2i c_pos = getChunkPosFromPos(pos); + + // Get the tile entity from that chunk + return chunks.get(c_pos).getTileEntity(pos); + } + + public void destroyTileEntity(Vec2i pos) + { + // Get the chunk pos + Vec2i c_pos = getChunkPosFromPos(pos); + + // Destroy the tile entity from that chunk + chunks.get(c_pos).destroyTileEntity(pos); + } + public void setBackTile(TileState tile, Vec2i pos) { // Get the chunk pos diff --git a/src/resources/shader/environmentRenderer.fsh b/src/resources/shader/environmentRenderer.fsh index 7872ca1..4fca704 100644 --- a/src/resources/shader/environmentRenderer.fsh +++ b/src/resources/shader/environmentRenderer.fsh @@ -81,7 +81,7 @@ void main() vec3 light_day = max(vec3(0), pSunDepth.z < (texture(depthmap, sunDepthTexPos).r * 2 - 1 + depth_c ) ? lighting_day_high : lighting_day_low); - vec3 light_src = vec3(1, 1, 1) * (scaleLight(max(0, light.r)) - abs(pLightMapPos.y) * 0.1); + float light_src = scaleLight(max(0, light.r)) - abs(pLightMapPos.y) * 0.1; vec4 rgb = vec4((pRGB % 64) / 64.0, ((pRGB >> 6) % 64) / 64.0, ((pRGB >> 12) % 64) / 64.0, 1); vec4 color_grass = vec4(interpolate2RGB( @@ -93,7 +93,7 @@ void main() float fog = pCameraDepth; FragColor = (fog + (1 - fog) * textureRGB * (mod(int(pFlags / 4), 2) == 1 ? color_grass : vec4(1,1,1,1)) * color) - * vec4(biggest(light_day, light_src), pFade) * (mod(int(pFlags / 2), 2) == 1 ? rgb : vec4(1, 1, 1, 1)) + * vec4(light_day + max(0, light_src), pFade) * (mod(int(pFlags / 2), 2) == 1 ? rgb : vec4(1, 1, 1, 1)) * saturation + contrast; } diff --git a/src/resources/texture/gui/item_slot_storage.png b/src/resources/texture/gui/item_slot_storage.png new file mode 100644 index 0000000000000000000000000000000000000000..ad2310f8aaadb5d457d5b7b852c8cc15ea1cee14 GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANNfEt$^F0iMpz3I#>^X_+~x z3=A3*YbV-z9CnasyT5Fj*h-5Vjz<)oOE)QKJz5c};nW(Sz2#Lx(Mx%gOpl-#8P@Af z&Gy})?BeOMvN5cVAJ~tayy$t+)$5O*=9Z3+eUIht{k}JS_j`tgk*Tw;8uMlB%1sOM zG@KqUdU$<@LW{=P1!r`U{U%-dARGUkLIXjK_Azu4HFl{svmV~J2% ziQbCgtUWT^D;%5O{5tsmL3#e#M^9R&i}*4v6hHn`g7MI9ht&@)?jP^FY{l4g{=n3G zAFt0ka7O)QZ=aYw)35D~-LLzWyH7S) z#dGW!B4366VzaPdar2(C_uc1r9_9D{t?k)`f8D26l zOcj}ahk=2Cv%n*=n1O*?7=#%aX3ddcU|?V`@$_|Nf5O4aqshWE?^PfJ1B0KZi(^Q{ z;kVZ}@-i53FgvmvGBg|6NUMaZOks5TyiTBZ{nt}x)*k#}yXsYTp^L|)oJD)eXSFdi jpnx^}M>`8&y?^X_+~x z3MG{VsS2qTnQ06R6}Q$#L{2-b!Sm<3<}(gAou zf>sLTz54&x`h|SVH4la7s%;{Nnog@uw|K0o_j>B{%Q|^>-%sb9ceam>lU(bXeZ5g) zTc+$^9>sgVUN6&KeE+_NSFN!6}u|H`mrr&wV;! z(Vblv%Ge)Y6TUA0@^IwC2hD=*%OAU{sO)i%o1>8D%PTu|^108cSBw9fzg@&Ldq;Hg z^q(cGr(`v+-QVbZUE!W*vyVK>fz-;X-e|@XR*QW8=FJrXj zxwF*qMfCo?&iXO8Zu);`K4#xuom7=PamVRHH5*oJ*X>{bA+9cYi-lYK-qU&qo^G(* zTAh^PWEpi)WyWQuyo2W-$3B}|;I0!qF*$do_rX|SBc6`-!euja*k;6n}6_HpP4g){U|xp13DY<3Rwj~wlwql=~=UvO5;__}ZL-YliCJhnwS3(lN5^YiI4 zV<-E&$r{sp7WNvavCf#1S>AZS!Ncv? zl(#){jm1YH7ZtBbGPxxej|-?Cn~~%spPwUx%tdJTZP!o+h3@x)!4vfy;ydR^^d@5jo&A7vs4)x zRmt8coPFTr$`uD&Zav=M_FpSt<}BV_Q@Z9%Ua&u4kpb`KFHZk5w`e%4)Q2(?zo&LO-;%1FSS5D;VqDbbW>K1$bi^g3?DEF=2dU9I*@4LF;8S(^z_Euo4(~->B>j;S-xrA zE|=V$P|O*1d|Jz7{xZq^KAgS|w-;1=m%FjB>kVVW?;93e?>E+LUK-CT{Aue?p54a_ z8lJx}>WTDKXRYz}d$R1%TDkRn&1Rg>m*{5b3vW6y(RwXoL-2J01%`l!msMw_M_FlG zJluKK_d)S%6GfhfNq^7yZON|N7QKAF@TXamz8pB2%}{1HZ;^EEq2QT2i&a$q9`QJH z)3UPU7pLa+q9^&6KebKe7ky)@`qF!ypI6q2mnTk1pO>%TJk5V(kA>Yz&+m8k_@9-| zyZ7FQJ?m1tOl`(XN%O)l_in7bXaC`|rtQl|Ka1PsE){S3{PSJQ;TOB#)Lgu@`%TDp z`4^lFFI24Sb*GoCnLdBIr`5sp!A~dkef{*g$n$vB&&r)k%y;}u-nk@s@1H#}mo~=L z#p%8D&D*Cly`-ss`6*S|*H526on)8(YT^X2e(zoOhiaqrUcP?(Cd}l;AI5Lbi#)%t z`LiYFQu))5ju&f>R_q6vGEZyzj{-Bps2Z1}Sw1V3Tf06_T+2ECh@)~Y&%T`|y&HGv zZdH)D>vjBlDA(n-F8&RBq{{96_H)jWU7j!c=JA)cO|^6Og?`X-Yky*P_k5P(G9EXl zBW7AgDwa!Jw0HGOGIy2N{Nj^hJ)Ajv^SKMM4?LQzyK|1FU5u4F^W)mltE>LGd)rvE z#&Ys~`pZAxCVa8J!F6up!;$@B<{kzu{w)NJ1!$}XNBD;vY=_<{Y%$%~#BUA_M3 zX>RHG*!NiO-tT+UcfV&?7@0cjsxe>2uH3XBPs8c)qKDUaD70vtU2sMx*>BRN53=#! zIX?W=JGlAJ>whw}SqGCG98~6|wq*+E3;5^XVtZcuNJ9Ix)YnU+^ilfx zq|;32duHA|V^i1@p;Nl?($O_JSx1786oy{bj6YGirs&?IHKDK9)cXHBl;Id3`OIo< z;*t#=svZIh7xZzh+AwiJtol)>wsVv1{wZG9pXjX^&e|ixy~45i&98(1AC%{>ee|Sd zx`;2+Lh<82B^VFwc3Az;;{Nfz%T|m{=MPN1_wo9y183A<_V$U{GyU4$*!{Y1*&D{` z)(0L;R-C;_n>Ca3sM3czxBFAr+436inXb=&TRg{(A@Wt|FE$Gc7B}xHd*6M2=TUzD z-`dRY@7d4U6{W7VWBI|rz`&N|?e4q}Ffd4#xJHyX=jZ08=9Mrw7o{eaq^2m8XO?6rxO@5r zgg5euGcYjC_H=O!skrs_N}wRKB9DWk1*@QxrC?X{YyXV_FH){ENOI)&F&llBy>Na{ z=8RRp{yO~ryngE%=3JK}Ki>V_lR5ACk%xBnckgWbTs`mjWruhs1||j$1_g!&25K=H z7se3toi+uZw~&j`1tKg(9l$hc?X6WYta YEMMAb<{6zP1_lNOPgg&ebxsLQ05^;~kN^Mx literal 0 HcmV?d00001 diff --git a/src/resources/texture/list.txt b/src/resources/texture/list.txt index 90b216d..2599da7 100644 --- a/src/resources/texture/list.txt +++ b/src/resources/texture/list.txt @@ -1,234 +1,237 @@ -./tile/hemp6.png -./tile/hemp7.png -./tile/hemp1.png -./tile/rock.png -./tile/rock_ice.png -./tile/sapling3.png -./tile/ladder.png -./tile/tree_leaves_snow.png -./tile/ice_wall.png -./tile/water.png -./tile/sandstone_wall.png -./tile/ladder_up.png -./tile/cactus4.png -./tile/tall_grass.png -./tile/cactus2.png -./tile/grass_infested.png -./tile/tree_branch_leaves.png -./tile/dirt.png -./tile/wall.png -./tile/tree_base.png -./tile/cactus1.png -./tile/sapling4.png -./tile/hemp3.png -./tile/cactus_top.png -./tile/tunnel_down.png -./tile/stone.png -./tile/snow.png -./tile/boss_portal.png -./tile/hemp4.png -./tile/sand.png -./tile/lantern.png -./tile/ice.png -./tile/sapling1.png -./tile/chest.png -./tile/hemp2.png -./tile/hemp8.png -./tile/cactus3.png -./tile/lava.png -./tile/tree_leaves.png -./tile/hemp5.png -./tile/lava_flow.png -./tile/grass.png -./tile/tree_branch.png -./tile/sandstone.png -./tile/tree_branch_leaves_snow.png -./tile/rock_sandstone.png -./tile/sapling2.png +./text/char_question.png +./text/char_l_a.png +./text/char_u_j.png +./text/char_l_u.png +./text/char_u_s.png +./text/char_l_s.png +./text/char_apostrophe.png +./text/char_plus.png +./text/char_l_e.png +./text/char_7.png +./text/char_minus.png +./text/char_u_r.png +./text/char_u_l.png +./text/char_obracket.png +./text/char_pow.png +./text/char_u_m.png +./text/char_l_t.png +./text/char_percent.png +./text/char_l_y.png +./text/char_0.png +./text/char_4.png +./text/char_l_r.png +./text/char_l_m.png +./text/char_cbracket.png +./text/char_u_g.png +./text/char_u_q.png +./text/char_u_i.png +./text/char_tilde.png +./text/char_l_w.png +./text/char_l_v.png +./text/char_fslash.png +./text/char_u_p.png +./text/char_gthan.png +./text/char_8.png +./text/char_unknown.png +./text/char_and.png +./text/char_osbracket.png +./text/char_u_n.png +./text/char_l_i.png +./text/char_u_y.png +./text/char_l_p.png +./text/char_lthan.png +./text/char_l_g.png +./text/char_bslash.png +./text/char_1.png +./text/char_u_z.png +./text/char_l_f.png +./text/char_u_w.png +./text/char_9.png +./text/char_l_x.png +./text/char_ccbracket.png +./text/char_l_o.png +./text/char_equals.png +./text/char_l_d.png +./text/char_dollar.png +./text/char_hashtag.png +./text/char_l_q.png +./text/char_u_o.png +./text/char_6.png +./text/char_u_d.png +./text/char_u_e.png +./text/char_exclamation.png +./text/char_vertical.png +./text/char_ocbracket.png +./text/char_u_k.png +./text/char_u_c.png +./text/char_l_n.png +./text/char_semicolon.png +./text/char_u_b.png +./text/char_u_f.png +./text/char_l_h.png +./text/char_l_k.png +./text/char_u_t.png +./text/char_3.png +./text/char_u_v.png +./text/char_u_h.png +./text/char_quotation.png +./text/char_u_a.png +./text/char_l_b.png +./text/char_underscore.png +./text/char_u_x.png +./text/char_comma.png +./text/char_csbracket.png +./text/char_l_l.png +./text/char_5.png +./text/char_star.png +./text/char_colon.png +./text/char_l_z.png +./text/char_space.png +./text/char_2.png +./text/char_at.png +./text/char_grave.png +./text/char_l_j.png +./text/char_fullstop.png +./text/char_l_c.png +./text/char_u_u.png ./list.txt -./item/log.png -./item/rock.png -./item/acorn.png -./item/ammo_box.png -./item/plant_fibre.png -./item/flint_hatchet.png -./item/hemp_seed.png -./item/shield_upgrade.png -./item/grappling_hook.png -./item/log_snow.png -./item/health_potion.png -./item/snow_pile.png -./item/gun_upgrade.png -./item/sandstone.png -./item/flint.png +./player/player_white_front_moving.png +./player/player_white_back_moving.png +./player/player_black_back_moving.png +./player/player_black_back_still.png ./player/player_white_back_still.png ./player/player_white_front_still.png ./player/player_black_front_moving.png ./player/player_black_front_still.png -./player/player_black_back_moving.png -./player/player_black_back_still.png -./player/player_white_back_moving.png -./player/player_white_front_moving.png -./gui/selection_box_wide.png -./gui/text_box.png -./gui/pixel_white.png -./gui/water.png -./gui/gun.png -./gui/button_delete.png -./gui/button_delete_hover.png -./gui/slot_armor_chest.png -./gui/pixel_black.png -./gui/slot_clothing_shirt.png -./gui/button_play.png -./gui/slot_armor_legs.png -./gui/selection_box_big.png -./gui/inventory.png -./gui/label.png -./gui/slot_clothing_pants.png -./gui/health_empty.png -./gui/label_recipe.png -./gui/hotbar_selected.png -./gui/health_full.png +./particle/smoke_trail.png +./particle/water.png +./particle/smoke_0.png +./particle/smoke_1.png +./particle/blood.png +./particle/lava.png +./particle/bullet.png +./particle/smoke_2.png +./particle/snow.png +./particle/rain.png +./particle/smoke_4.png +./particle/smoke_3.png +./particle/smoke_5.png ./gui/temperature.png -./gui/button_play_hover.png -./gui/text_cursor.png -./gui/slot_armor_helmet.png -./gui/slot_clothing_boots.png -./gui/hotbar.png -./gui/button_normal.png -./gui/shield.png +./gui/slot_armor_chest.png +./gui/health_empty.png ./gui/button_hover.png -./text/char_bslash.png -./text/char_dollar.png -./text/char_l_w.png -./text/char_u_d.png -./text/char_u_t.png -./text/char_space.png -./text/char_l_x.png -./text/char_l_k.png -./text/char_6.png -./text/char_unknown.png -./text/char_comma.png -./text/char_obracket.png -./text/char_u_w.png -./text/char_7.png -./text/char_l_f.png -./text/char_vertical.png -./text/char_plus.png -./text/char_u_a.png -./text/char_star.png -./text/char_9.png -./text/char_u_k.png -./text/char_grave.png -./text/char_u_n.png -./text/char_percent.png -./text/char_u_m.png -./text/char_exclamation.png -./text/char_1.png -./text/char_l_q.png -./text/char_l_z.png -./text/char_l_h.png -./text/char_u_c.png -./text/char_l_g.png -./text/char_l_s.png -./text/char_fullstop.png -./text/char_u_j.png -./text/char_l_m.png -./text/char_l_t.png -./text/char_u_v.png -./text/char_colon.png -./text/char_l_i.png -./text/char_l_y.png -./text/char_semicolon.png -./text/char_u_l.png -./text/char_apostrophe.png -./text/char_u_e.png -./text/char_5.png -./text/char_2.png -./text/char_3.png -./text/char_l_p.png -./text/char_and.png -./text/char_fslash.png -./text/char_l_u.png -./text/char_u_f.png -./text/char_u_u.png -./text/char_at.png -./text/char_l_e.png -./text/char_l_l.png -./text/char_u_g.png -./text/char_u_q.png -./text/char_u_b.png -./text/char_l_o.png -./text/char_csbracket.png -./text/char_osbracket.png -./text/char_minus.png -./text/char_l_v.png -./text/char_lthan.png -./text/char_u_s.png -./text/char_equals.png -./text/char_8.png -./text/char_ccbracket.png -./text/char_underscore.png -./text/char_u_x.png -./text/char_0.png -./text/char_l_d.png -./text/char_l_c.png -./text/char_l_j.png -./text/char_u_z.png -./text/char_u_h.png -./text/char_pow.png -./text/char_hashtag.png -./text/char_gthan.png -./text/char_cbracket.png -./text/char_u_i.png -./text/char_question.png -./text/char_u_o.png -./text/char_u_y.png -./text/char_l_r.png -./text/char_l_b.png -./text/char_ocbracket.png -./text/char_l_a.png -./text/char_quotation.png -./text/char_l_n.png -./text/char_u_p.png -./text/char_tilde.png -./text/char_u_r.png -./text/char_4.png -./entity/armored_zombie_back_moving.png -./entity/zombie_front_still.png -./entity/tnt.png +./gui/item_slot_storage.png +./gui/water.png +./gui/slot_armor_legs.png +./gui/button_normal.png +./gui/label.png +./gui/hotbar.png +./gui/slot_armor_helmet.png +./gui/selection_box_crafting.png +./gui/button_delete.png +./gui/text_cursor.png +./gui/inventory.png +./gui/button_delete_hover.png +./gui/button_play_hover.png +./gui/health_full.png +./gui/hotbar_selected.png +./gui/slot_clothing_shirt.png +./gui/selection_box_storage.png +./gui/pixel_white.png +./gui/pixel_black.png +./gui/slot_clothing_pants.png +./gui/text_box.png +./gui/shield.png +./gui/label_recipe.png +./gui/slot_clothing_boots.png +./gui/selection_box_wide.png +./gui/gun.png +./gui/button_play.png +./tile/cactus4.png +./tile/hemp1.png +./tile/dirt.png +./tile/lantern.png +./tile/hemp8.png +./tile/wall.png +./tile/cactus_top.png +./tile/cactus2.png +./tile/rock.png +./tile/water.png +./tile/hemp4.png +./tile/stone.png +./tile/tree_leaves.png +./tile/sapling2.png +./tile/ladder_up.png +./tile/sapling3.png +./tile/lava_flow.png +./tile/ice_wall.png +./tile/grass.png +./tile/chest.png +./tile/sapling4.png +./tile/lava.png +./tile/tall_grass.png +./tile/hemp5.png +./tile/sapling1.png +./tile/snow.png +./tile/sandstone_wall.png +./tile/rock_sandstone.png +./tile/hemp6.png +./tile/cactus1.png +./tile/campfire.png +./tile/tree_branch_leaves.png +./tile/tunnel_down.png +./tile/tree_branch_leaves_snow.png +./tile/tree_leaves_snow.png +./tile/rock_ice.png +./tile/boss_portal.png +./tile/ladder.png +./tile/hemp7.png +./tile/grass_infested.png +./tile/tree_branch.png +./tile/sand.png +./tile/tree_base.png +./tile/cactus3.png +./tile/sandstone.png +./tile/hemp3.png +./tile/hemp2.png +./tile/ice.png ./entity/flare.png -./entity/boss1/boss_walking.png +./entity/grappling_hook.png +./entity/zombie_back_moving.png +./entity/tnt.png +./entity/armored_zombie_back_moving.png +./entity/armored_zombie_front_moving.png +./entity/player/hair_side.png +./entity/player/head_top.png +./entity/player/head_side.png +./entity/player/head_back.png +./entity/player/head_bottom.png +./entity/player/hair_front.png +./entity/player/head_front.png +./entity/player/hair_back.png +./entity/player/hair_top.png +./entity/dummy.png +./entity/armored_zombie_front_still.png +./entity/armored_zombie_back_still.png +./entity/zombie_front_moving.png +./entity/boss1/boss_walking_firing.png ./entity/boss1/boss_firing.png ./entity/boss1/boss_still.png -./entity/boss1/boss_walking_firing.png -./entity/armored_zombie_back_still.png -./entity/armored_zombie_front_moving.png -./entity/player/head_back.png -./entity/player/hair_top.png -./entity/player/head_front.png -./entity/player/head_top.png -./entity/player/hair_side.png -./entity/player/head_side.png -./entity/player/hair_back.png -./entity/player/hair_front.png -./entity/player/head_bottom.png -./entity/grappling_hook.png +./entity/boss1/boss_walking.png ./entity/zombie_back_still.png -./entity/dummy.png -./entity/zombie_back_moving.png -./entity/armored_zombie_front_still.png -./entity/zombie_front_moving.png -./particle/smoke_1.png -./particle/water.png -./particle/rain.png -./particle/blood.png -./particle/snow.png -./particle/smoke_3.png -./particle/smoke_4.png -./particle/smoke_2.png -./particle/smoke_0.png -./particle/bullet.png -./particle/lava.png -./particle/smoke_trail.png -./particle/smoke_5.png +./entity/zombie_front_still.png +./item/acorn.png +./item/grappling_hook.png +./item/gun_upgrade.png +./item/shield_upgrade.png +./item/rock.png +./item/flint_hatchet.png +./item/log.png +./item/log_snow.png +./item/hemp_seed.png +./item/ammo_box.png +./item/plant_fibre.png +./item/health_potion.png +./item/snow_pile.png +./item/flint.png +./item/sandstone.png diff --git a/src/resources/texture/tile/campfire.png b/src/resources/texture/tile/campfire.png new file mode 100644 index 0000000000000000000000000000000000000000..3d82566ecb1fe96d829a29a8a504df10b97ddc9f GIT binary patch literal 774 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7TQZ%U13aCb6$*;-(=u~X z85lGs)=sqbIP4&EG(LE%s}^6GKw_Kg@88+JyT|CX_l(JEZMKYExyytK z4JXHnGOy=Y#Lmd0tY&D)RQY^^f+L z{VsZ~F{%bdIt!S1H@#;6-+cdW)X$Tg`kEr_yW(Y@CyQ{rVd|arxJKUE?=i~-#EHnGRNV`%no%Q>~~$#TsnpAY<&tPK{E*uh$Leb2pF zzb$GRE?o)z#Aac^a*S)r-g^)49{hIipY7#0@7W`_7R~KFCpDXafq^Z_+ueoXKL{?^ zyL>VO0|RG)M`SSr1Gg{;GcwGYBf-GHz+U3%>&pIwgN;{?TRw1-E&~IDWQl7;iF1B# zZfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEv^p!#z(I#}JFtZzpc-I^-bG_CNM|tO2{A z$d-%joGi?aM-QcM+9b133FCn^+ZQhg$^{IZYn|NnoDng3j` z&bAA+nXgrL)?>QG<}cbVyN-BrO^j^PZvFFm)*;vVtUD%E>$aX}?VK*G@=|%pr3GE@ zb{+LLuSip3Kisic>df zGcV+8>+DaK`DA;