Added a way to craft stuff

This commit is contained in:
jsrobson10 2020-07-28 18:33:05 +10:00
parent af72420f9d
commit d88b0946b5
17 changed files with 380 additions and 287 deletions

View File

@ -8,6 +8,7 @@ import projectzombie.items.ItemAmmo;
import projectzombie.items.ItemEmpty; import projectzombie.items.ItemEmpty;
import projectzombie.items.ItemFlare; import projectzombie.items.ItemFlare;
import projectzombie.items.ItemFlint; import projectzombie.items.ItemFlint;
import projectzombie.items.ItemFlintHatchet;
import projectzombie.items.ItemGrapplingHook; import projectzombie.items.ItemGrapplingHook;
import projectzombie.items.ItemHealthPotion; import projectzombie.items.ItemHealthPotion;
import projectzombie.items.ItemHempSeed; import projectzombie.items.ItemHempSeed;
@ -53,6 +54,8 @@ public class Items
register(AMMO); register(AMMO);
register(INFESTATION); register(INFESTATION);
register(FLINT_HATCHET);
} }
public static final Item AMMO = new ItemAmmo(); public static final Item AMMO = new ItemAmmo();
@ -73,5 +76,7 @@ public class Items
public static final Item HEMP_SEED = new ItemHempSeed(); public static final Item HEMP_SEED = new ItemHempSeed();
public static final Item PLANT_FIBRE = new ItemPlantFibre(); public static final Item PLANT_FIBRE = new ItemPlantFibre();
public static final Item FLINT_HATCHET = new ItemFlintHatchet();
public static final Item INFESTATION = new ItemInfestation(); public static final Item INFESTATION = new ItemInfestation();
} }

View File

@ -139,6 +139,8 @@ public class Models
public static final ModelItem ITEM_SANDSTONE = new ModelItem(Resources.ATLAS.get("/item/sandstone.png")); public static final ModelItem ITEM_SANDSTONE = new ModelItem(Resources.ATLAS.get("/item/sandstone.png"));
public static final ModelItem ITEM_FLINT = new ModelItem(Resources.ATLAS.get("/item/flint.png")); public static final ModelItem ITEM_FLINT = new ModelItem(Resources.ATLAS.get("/item/flint.png"));
public static final ModelItem ITEM_FLINT_HATCHET = new ModelItem(Resources.ATLAS.get("/item/flint_hatchet.png"));
public static final ModelItem ITEM_PLANT_FIBRE = new ModelItem(Resources.ATLAS.get("/item/plant_fibre.png")); public static final ModelItem ITEM_PLANT_FIBRE = new ModelItem(Resources.ATLAS.get("/item/plant_fibre.png"));
public static final ModelItem ITEM_HEMP_SEED = new ModelItem(Resources.ATLAS.get("/item/hemp_seed.png")); public static final ModelItem ITEM_HEMP_SEED = new ModelItem(Resources.ATLAS.get("/item/hemp_seed.png"));
public static final ModelItem ITEM_ACORN = new ModelItem(Resources.ATLAS.get("/item/acorn.png")); public static final ModelItem ITEM_ACORN = new ModelItem(Resources.ATLAS.get("/item/acorn.png"));

View File

@ -11,19 +11,6 @@ public class Recipies
{ {
public static ArrayList<Recipe> recipies; public static ArrayList<Recipe> recipies;
public static void init()
{
recipies = new ArrayList<Recipe>();
recipies.add(new RecipeBasic(
new ItemStack[] {
new ItemStack(Items.FLINT, 2, (short)0),
new ItemStack(Items.PLANT_FIBRE, 5, (short)0),
}, new Crafting[] {
Crafting.BASIC,
}, new ItemStack(Items.AMMO, 99, (short)0)));
}
public static Recipe[] getCraftableRecipies(Crafting tool) public static Recipe[] getCraftableRecipies(Crafting tool)
{ {
int size = 0; int size = 0;
@ -45,4 +32,27 @@ public class Recipies
return craftable_recipies; return craftable_recipies;
} }
public static void init()
{
recipies = new ArrayList<Recipe>();
recipies.add(new RecipeBasic(
new ItemStack[] {
new ItemStack(Items.FLINT, 2, (short)0),
new ItemStack(Items.PLANT_FIBRE, 5, (short)0),
}, new Crafting[] {
Crafting.BASIC,
}, new ItemStack(Items.FLINT_HATCHET, 1, (short)0)));
recipies.add(new RecipeBasic(
new ItemStack[] {
new ItemStack(Items.FLINT, 1, (short)0),
new ItemStack(Items.PLANT_FIBRE, 1, (short)0),
}, new Crafting[] {
Crafting.BASIC,
}, new ItemStack(Items.FLINT_HATCHET, 1, (short)0)));
}
} }

View File

@ -14,6 +14,7 @@ public class RecipeBasic extends Recipe
{ {
this.stacks_required = stacks_required; this.stacks_required = stacks_required;
this.tools_required = tools_required; this.tools_required = tools_required;
this.result = result;
} }
@Override @Override

View File

@ -0,0 +1,43 @@
package projectzombie.items;
import projectzombie.init.Models;
import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack;
public class ItemFlintHatchet extends Item implements ItemTool
{
public ItemFlintHatchet() {
max = 1;
}
@Override
public int toolPowerAxe(ItemStack stack) {
return 1;
}
@Override
public int toolPowerPickaxe(ItemStack stack) {
return 0;
}
@Override
public int toolPowerShovel(ItemStack stack) {
return 0;
}
@Override
public int toolSpeed(ItemStack stack) {
return 1;
}
@Override
public void toolOnUse(ItemStack stack) {
}
@Override
public ModelItem getModel(short meta) {
return Models.ITEM_FLINT_HATCHET;
}
}

View File

@ -4,7 +4,7 @@ import projectzombie.init.Models;
import projectzombie.model.ModelItem; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
public class ItemRock extends Item implements ItemTool public class ItemRock extends Item
{ {
@Override @Override
@ -18,45 +18,12 @@ public class ItemRock extends Item implements ItemTool
} }
@Override @Override
public String getName(short meta) { public String getName(short meta)
return "Rock";
}
@Override
public void toolOnUse(ItemStack stack) {
if(stack.meta == 1) {
return;
}
stack.count -= 1;
}
@Override
public int toolPowerAxe(ItemStack stack)
{ {
if(stack.meta == 1) { switch(meta) {
return 0; case 1: return "Snow";
case 2: return "Sandstone";
default: return "Rock";
} }
return 1;
} }
@Override
public int toolPowerPickaxe(ItemStack stack) {
return 0;
}
@Override
public int toolPowerShovel(ItemStack stack) {
return 0;
}
@Override
public int toolSpeed(ItemStack stack) {
return 1;
}
} }

View File

@ -60,7 +60,7 @@ public abstract class MenuInventory extends Menu
for(int i=0;i<10;i++) for(int i=0;i<10;i++)
{ {
GUIItemSlot slot = new GUIItemSlot(itemHolder, 1, false, new GUIItemSlotGetterStorage(inventory, i)); GUIItemSlot slot = new GUIItemSlot(1, false, new GUIItemSlotGetterStorage(inventory, i));
slot.setPos(new Vec2d((i - 5) * offset + 0.325, 0.65 / 2 - 9.5)); slot.setPos(new Vec2d((i - 5) * offset + 0.325, 0.65 / 2 - 9.5));
@ -73,7 +73,7 @@ public abstract class MenuInventory extends Menu
int row = (i - 10) / 4; int row = (i - 10) / 4;
int col = (i - 10) % 4; int col = (i - 10) % 4;
GUIItemSlot slot = new GUIItemSlot(itemHolder, 1.5, true, new GUIItemSlotGetterStorage(inventory, i)); GUIItemSlot slot = new GUIItemSlot(1.5, true, new GUIItemSlotGetterStorage(inventory, i));
slot.setPos(new Vec2d(col * offset - inv_w + 0.325, -row * offset + inv_h / 2 - 1.175)); slot.setPos(new Vec2d(col * offset - inv_w + 0.325, -row * offset + inv_h / 2 - 1.175));
@ -102,7 +102,7 @@ public abstract class MenuInventory extends Menu
{ {
int[] id = {i}; int[] id = {i};
GUIItemSlot slot = new GUIItemSlot(itemHolder, 1.5, true, new GUIItemSlotGetter() { GUIItemSlot slot = new GUIItemSlot(1.5, true, new GUIItemSlotGetter() {
@Override @Override
public void setItemStack(ItemStack stack) { public void setItemStack(ItemStack stack) {

View File

@ -2,10 +2,12 @@ package projectzombie.menu;
import gl_engine.matrix.Matrix4; import gl_engine.matrix.Matrix4;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.Main;
import projectzombie.init.Items; import projectzombie.init.Items;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.init.Recipies; import projectzombie.init.Recipies;
import projectzombie.inventory.Crafting; import projectzombie.inventory.Crafting;
import projectzombie.inventory.Inventory;
import projectzombie.inventory.recipe.Recipe; import projectzombie.inventory.recipe.Recipe;
import projectzombie.menu.gui.GUIContainerSlider; import projectzombie.menu.gui.GUIContainerSlider;
import projectzombie.menu.gui.GUIItemSlot; import projectzombie.menu.gui.GUIItemSlot;
@ -15,11 +17,16 @@ import projectzombie.util.math.ItemStack;
public class MenuInventoryBasic extends MenuInventory public class MenuInventoryBasic extends MenuInventory
{ {
private GUIContainerSlider slider; private GUIContainerSlider slider;
private Inventory inventory;
private Crafting tool;
public MenuInventoryBasic(Menu parent, Crafting tool) { public MenuInventoryBasic(Menu parent, Crafting tool) {
super(parent); super(parent);
this.tool = tool;
Recipe[] recipies = Recipies.getCraftableRecipies(tool); Recipe[] recipies = Recipies.getCraftableRecipies(tool);
inventory = Main.player.getInventory();
slider = new GUIContainerSlider(new Vec2d( slider = new GUIContainerSlider(new Vec2d(
Models.UI_INVENTORY.getWidth() * 21 / 256.0, Models.UI_INVENTORY.getWidth() * 21 / 256.0,
@ -29,7 +36,9 @@ public class MenuInventoryBasic extends MenuInventory
for(int i=0;i<recipies.length;i++) for(int i=0;i<recipies.length;i++)
{ {
GUIItemSlot slot = new GUIItemSlot(itemHolder, 1.5, true, new GUIItemSlotGetter() Recipe recipe = recipies[i];
GUIItemSlot slot = new GUIItemSlot(1.5, true, new GUIItemSlotGetter()
{ {
@Override @Override
public void setItemStack(ItemStack stack) { public void setItemStack(ItemStack stack) {
@ -42,11 +51,26 @@ public class MenuInventoryBasic extends MenuInventory
@Override @Override
public ItemStack getItemStack() { public ItemStack getItemStack() {
return new ItemStack(Items.ACORN, 3, (short)0); return (recipe.canCraft(tool) &&
recipe.hasResourcesToCraft(inventory)) ?
recipe.getResult().copy() :
ItemStack.getEmpty();
}
@Override
public boolean mustTakeAll() {
return true;
}
@Override
public void onRemoveItemStack() {
if(recipe.canCraft(tool) && recipe.hasResourcesToCraft(inventory)) {
recipe.craftResult(inventory);
}
} }
}); });
slot.setPos(new Vec2d(4, i)); slot.setPos(new Vec2d(4, i*1.5));
slider.add(slot); slider.add(slot);
} }

View File

@ -51,6 +51,24 @@ public class GUIItemHolder implements GUIComponent
return true; return true;
} }
private void hoverToStack(Vec2d pos)
{
ItemStack hover = this.hover.getItemStack();
if(!holding.isEmpty() && (!holding.stackEquals(hover) || holding.count + hover.count > holding.item.max)) {
return;
}
holding.count += hover.count;
holding.meta = hover.meta;
holding.item = hover.item;
hover.count = 0;
this.hover.setItemStack(hover);
this.hover.getter.onRemoveItemStack();
}
@Override @Override
public void onRightClick(Vec2d pos) public void onRightClick(Vec2d pos)
{ {
@ -72,6 +90,11 @@ public class GUIItemHolder implements GUIComponent
return; return;
} }
if(hover.getter.mustTakeAll()) {
hoverToStack(pos);
return;
}
ItemStack hover = this.hover.getItemStack(); ItemStack hover = this.hover.getItemStack();
// Split the hovered slot in half if the holding slot is empty // Split the hovered slot in half if the holding slot is empty
@ -84,6 +107,7 @@ public class GUIItemHolder implements GUIComponent
hover.count = (int)Math.floor(hover.count / 2.0); hover.count = (int)Math.floor(hover.count / 2.0);
this.hover.setItemStack(hover); this.hover.setItemStack(hover);
this.hover.getter.onRemoveItemStack();
} }
// Put 1 item into the slot if the hovered slot is empty or equal to the holding slot // Put 1 item into the slot if the hovered slot is empty or equal to the holding slot
@ -108,6 +132,7 @@ public class GUIItemHolder implements GUIComponent
stack_from.meta = stack_to.meta; stack_from.meta = stack_to.meta;
this.hover.setItemStack(hover); this.hover.setItemStack(hover);
this.hover.getter.onRemoveItemStack();
} }
} }
} }
@ -132,6 +157,11 @@ public class GUIItemHolder implements GUIComponent
return; return;
} }
if(hover.getter.mustTakeAll()) {
hoverToStack(pos);
return;
}
ItemStack hover = this.hover.getItemStack(); ItemStack hover = this.hover.getItemStack();
// Are these the same item // Are these the same item
@ -158,6 +188,7 @@ public class GUIItemHolder implements GUIComponent
} }
this.hover.setItemStack(hover); this.hover.setItemStack(hover);
this.hover.getter.onRemoveItemStack();
} }
else if(holding.isEmpty() || this.hover.isItemAllowed(holding)) else if(holding.isEmpty() || this.hover.isItemAllowed(holding))
@ -174,6 +205,7 @@ public class GUIItemHolder implements GUIComponent
hover.meta = stack.meta; hover.meta = stack.meta;
this.hover.setItemStack(hover); this.hover.setItemStack(hover);
this.hover.getter.onRemoveItemStack();
} }
} }

View File

@ -11,17 +11,15 @@ import projectzombie.util.math.ItemStack;
public class GUIItemSlot implements GUIComponent public class GUIItemSlot implements GUIComponent
{ {
private GUIItemHolder itemHolder; GUIItemSlotGetter getter;
private Vec2d pos = new Vec2d(0, 0); private Vec2d pos = new Vec2d(0, 0);
private GUIItemSlotGetter getter;
private double hitboxSize; private double hitboxSize;
private boolean renderItem; private boolean renderItem;
private Model model_empty = Models.ITEM_EMPTY.getGuiModel(); private Model model_empty = Models.ITEM_EMPTY.getGuiModel();
public GUIItemSlot(GUIItemHolder itemHolder, double hitboxSize, boolean renderItem, GUIItemSlotGetter getter) { public GUIItemSlot(double hitboxSize, boolean renderItem, GUIItemSlotGetter getter) {
this.renderItem = renderItem; this.renderItem = renderItem;
this.hitboxSize = hitboxSize; this.hitboxSize = hitboxSize;
this.itemHolder = itemHolder;
this.getter = getter; this.getter = getter;
} }

View File

@ -6,4 +6,12 @@ public interface GUIItemSlotGetter {
public boolean isAllowed(ItemStack stack); public boolean isAllowed(ItemStack stack);
public ItemStack getItemStack(); public ItemStack getItemStack();
public void setItemStack(ItemStack stack); public void setItemStack(ItemStack stack);
public default void onRemoveItemStack() {
}
public default boolean mustTakeAll() {
return false;
}
} }

View File

@ -0,0 +1,6 @@
package projectzombie.menu.gui;
public class GUIRecipeCard implements GUIContainer
{
}

View File

@ -20,7 +20,7 @@ public class TileGrass extends Tile
public void tickRandomly(Layer layer, Chunk chunk, TileState state, Vec2i pos) { public void tickRandomly(Layer layer, Chunk chunk, TileState state, Vec2i pos) {
super.tickRandomly(layer, chunk, state, pos); super.tickRandomly(layer, chunk, state, pos);
if(Math.random() > 0.95) if(Math.random() > 0.8)
{ {
Vec2i cpos = pos.add(new Vec2i((int)Math.floor(Math.random() * 3) - 1, (int)Math.floor(Math.random() * 3) - 1)); Vec2i cpos = pos.add(new Vec2i((int)Math.floor(Math.random() * 3) - 1, (int)Math.floor(Math.random() * 3) - 1));

View File

@ -37,7 +37,7 @@ public class TileRock extends Tile implements TileBulletBreakable
public ItemStack[] getTileDrops(TileState state) { public ItemStack[] getTileDrops(TileState state) {
return new ItemStack[] { return new ItemStack[] {
new ItemStack(Items.ROCK, 1, state.meta), new ItemStack(Items.ROCK, 1, state.meta),
new ItemStack(Items.FLINT, state.meta == 0 && Math.random() > 0.9 ? 1 : 0, (short)0), new ItemStack(Items.FLINT, state.meta == 0 && Math.random() > 0.8 ? 1 : 0, (short)0),
}; };
} }

View File

@ -79,8 +79,8 @@ void main()
vec2 sunDepthTexPos = pSunDepth.xy * 0.5 + 0.5; vec2 sunDepthTexPos = pSunDepth.xy * 0.5 + 0.5;
vec3 light_day = pSunDepth.z < (texture(depthmap, sunDepthTexPos).r * 2 - 1 + depth_c vec3 light_day = max(vec3(0), pSunDepth.z < (texture(depthmap, sunDepthTexPos).r * 2 - 1 + depth_c
) ? lighting_day_high : lighting_day_low; ) ? lighting_day_high : lighting_day_low);
vec3 light_src = vec3(1, 1, 1) * (scaleLight(max(0, light.r)) - abs(pLightMapPos.y) * 0.1); vec3 light_src = vec3(1, 1, 1) * (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 rgb = vec4((pRGB % 64) / 64.0, ((pRGB >> 6) % 64) / 64.0, ((pRGB >> 12) % 64) / 64.0, 1);
@ -95,10 +95,6 @@ void main()
FragColor = (fog + (1 - fog) * textureRGB * (mod(int(pFlags / 4), 2) == 1 ? color_grass : vec4(1,1,1,1)) * color) 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(biggest(light_day, light_src), pFade) * (mod(int(pFlags / 2), 2) == 1 ? rgb : vec4(1, 1, 1, 1))
* saturation + contrast; * saturation + contrast;
FragColor.r = min(1, FragColor.r);
FragColor.g = min(1, FragColor.g);
FragColor.b = min(1, FragColor.b);
} }
discard(textureRGB.a == 0 || (do_discard_coords == 1 && ( discard(textureRGB.a == 0 || (do_discard_coords == 1 && (

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 B

View File

@ -1,232 +1,233 @@
./text/char_question.png ./tile/hemp6.png
./text/char_l_a.png ./tile/hemp7.png
./text/char_u_j.png ./tile/hemp1.png
./text/char_l_u.png ./tile/rock.png
./text/char_u_s.png ./tile/rock_ice.png
./text/char_l_s.png ./tile/sapling3.png
./text/char_apostrophe.png ./tile/ladder.png
./text/char_plus.png ./tile/tree_leaves_snow.png
./text/char_l_e.png ./tile/ice_wall.png
./text/char_7.png ./tile/water.png
./text/char_minus.png ./tile/sandstone_wall.png
./text/char_u_r.png ./tile/ladder_up.png
./text/char_u_l.png ./tile/cactus4.png
./text/char_obracket.png ./tile/tall_grass.png
./text/char_pow.png ./tile/cactus2.png
./text/char_u_m.png ./tile/grass_infested.png
./text/char_l_t.png ./tile/tree_branch_leaves.png
./text/char_percent.png ./tile/dirt.png
./text/char_l_y.png ./tile/wall.png
./text/char_0.png ./tile/tree_base.png
./text/char_4.png ./tile/cactus1.png
./text/char_l_r.png ./tile/sapling4.png
./text/char_l_m.png ./tile/hemp3.png
./text/char_cbracket.png ./tile/cactus_top.png
./text/char_u_g.png ./tile/tunnel_down.png
./text/char_u_q.png ./tile/stone.png
./text/char_u_i.png ./tile/snow.png
./text/char_tilde.png ./tile/boss_portal.png
./text/char_l_w.png ./tile/hemp4.png
./text/char_l_v.png ./tile/sand.png
./text/char_fslash.png ./tile/lantern.png
./text/char_u_p.png ./tile/ice.png
./text/char_gthan.png ./tile/sapling1.png
./text/char_8.png ./tile/chest.png
./text/char_unknown.png ./tile/hemp2.png
./text/char_and.png ./tile/hemp8.png
./text/char_osbracket.png ./tile/cactus3.png
./text/char_u_n.png ./tile/lava.png
./text/char_l_i.png ./tile/tree_leaves.png
./text/char_u_y.png ./tile/hemp5.png
./text/char_l_p.png ./tile/lava_flow.png
./text/char_lthan.png ./tile/grass.png
./text/char_l_g.png ./tile/tree_branch.png
./text/char_bslash.png ./tile/sandstone.png
./text/char_1.png ./tile/tree_branch_leaves_snow.png
./text/char_u_z.png ./tile/rock_sandstone.png
./text/char_l_f.png ./tile/sapling2.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 ./list.txt
./player/player_white_front_moving.png ./item/log.png
./player/player_white_back_moving.png ./item/rock.png
./player/player_black_back_moving.png ./item/acorn.png
./player/player_black_back_still.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_back_still.png ./player/player_white_back_still.png
./player/player_white_front_still.png ./player/player_white_front_still.png
./player/player_black_front_moving.png ./player/player_black_front_moving.png
./player/player_black_front_still.png ./player/player_black_front_still.png
./particle/smoke_trail.png ./player/player_black_back_moving.png
./particle/water.png ./player/player_black_back_still.png
./particle/smoke_0.png ./player/player_white_back_moving.png
./particle/smoke_1.png ./player/player_white_front_moving.png
./particle/blood.png ./gui/selection_box_wide.png
./particle/lava.png ./gui/text_box.png
./particle/bullet.png ./gui/pixel_white.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/slot_armor_chest.png
./gui/health_empty.png
./gui/button_hover.png
./gui/water.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/slot_armor_legs.png
./gui/selection_box_big.png ./gui/selection_box_big.png
./gui/button_normal.png
./gui/label.png
./gui/hotbar.png
./gui/slot_armor_helmet.png
./gui/button_delete.png
./gui/text_cursor.png
./gui/inventory.png ./gui/inventory.png
./gui/button_delete_hover.png ./gui/label.png
./gui/button_play_hover.png
./gui/health_full.png
./gui/hotbar_selected.png
./gui/slot_clothing_shirt.png
./gui/pixel_white.png
./gui/pixel_black.png
./gui/slot_clothing_pants.png ./gui/slot_clothing_pants.png
./gui/text_box.png ./gui/health_empty.png
./gui/shield.png ./gui/hotbar_selected.png
./gui/health_full.png
./gui/temperature.png
./gui/button_play_hover.png
./gui/text_cursor.png
./gui/slot_armor_helmet.png
./gui/slot_clothing_boots.png ./gui/slot_clothing_boots.png
./gui/selection_box_wide.png ./gui/hotbar.png
./gui/gun.png ./gui/button_normal.png
./gui/button_play.png ./gui/shield.png
./tile/cactus4.png ./gui/button_hover.png
./tile/hemp1.png ./text/char_bslash.png
./tile/dirt.png ./text/char_dollar.png
./tile/lantern.png ./text/char_l_w.png
./tile/hemp8.png ./text/char_u_d.png
./tile/wall.png ./text/char_u_t.png
./tile/cactus_top.png ./text/char_space.png
./tile/cactus2.png ./text/char_l_x.png
./tile/rock.png ./text/char_l_k.png
./tile/water.png ./text/char_6.png
./tile/hemp4.png ./text/char_unknown.png
./tile/stone.png ./text/char_comma.png
./tile/tree_leaves.png ./text/char_obracket.png
./tile/sapling2.png ./text/char_u_w.png
./tile/ladder_up.png ./text/char_7.png
./tile/sapling3.png ./text/char_l_f.png
./tile/lava_flow.png ./text/char_vertical.png
./tile/ice_wall.png ./text/char_plus.png
./tile/grass.png ./text/char_u_a.png
./tile/chest.png ./text/char_star.png
./tile/sapling4.png ./text/char_9.png
./tile/lava.png ./text/char_u_k.png
./tile/tall_grass.png ./text/char_grave.png
./tile/hemp5.png ./text/char_u_n.png
./tile/sapling1.png ./text/char_percent.png
./tile/snow.png ./text/char_u_m.png
./tile/sandstone_wall.png ./text/char_exclamation.png
./tile/rock_sandstone.png ./text/char_1.png
./tile/hemp6.png ./text/char_l_q.png
./tile/cactus1.png ./text/char_l_z.png
./tile/tree_branch_leaves.png ./text/char_l_h.png
./tile/tunnel_down.png ./text/char_u_c.png
./tile/tree_branch_leaves_snow.png ./text/char_l_g.png
./tile/tree_leaves_snow.png ./text/char_l_s.png
./tile/rock_ice.png ./text/char_fullstop.png
./tile/boss_portal.png ./text/char_u_j.png
./tile/ladder.png ./text/char_l_m.png
./tile/hemp7.png ./text/char_l_t.png
./tile/grass_infested.png ./text/char_u_v.png
./tile/tree_branch.png ./text/char_colon.png
./tile/sand.png ./text/char_l_i.png
./tile/tree_base.png ./text/char_l_y.png
./tile/cactus3.png ./text/char_semicolon.png
./tile/sandstone.png ./text/char_u_l.png
./tile/hemp3.png ./text/char_apostrophe.png
./tile/hemp2.png ./text/char_u_e.png
./tile/ice.png ./text/char_5.png
./entity/flare.png ./text/char_2.png
./entity/grappling_hook.png ./text/char_3.png
./entity/zombie_back_moving.png ./text/char_l_p.png
./entity/tnt.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/armored_zombie_back_moving.png
./entity/armored_zombie_front_moving.png ./entity/zombie_front_still.png
./entity/player/hair_side.png ./entity/tnt.png
./entity/player/head_top.png ./entity/flare.png
./entity/player/head_side.png ./entity/boss1/boss_walking.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_firing.png
./entity/boss1/boss_still.png ./entity/boss1/boss_still.png
./entity/boss1/boss_walking.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/zombie_back_still.png ./entity/zombie_back_still.png
./entity/zombie_front_still.png ./entity/dummy.png
./item/acorn.png ./entity/zombie_back_moving.png
./item/grappling_hook.png ./entity/armored_zombie_front_still.png
./item/gun_upgrade.png ./entity/zombie_front_moving.png
./item/shield_upgrade.png ./particle/smoke_1.png
./item/rock.png ./particle/water.png
./item/log.png ./particle/rain.png
./item/log_snow.png ./particle/blood.png
./item/hemp_seed.png ./particle/snow.png
./item/ammo_box.png ./particle/smoke_3.png
./item/plant_fibre.png ./particle/smoke_4.png
./item/health_potion.png ./particle/smoke_2.png
./item/snow_pile.png ./particle/smoke_0.png
./item/flint.png ./particle/bullet.png
./item/sandstone.png ./particle/lava.png
./particle/smoke_trail.png
./particle/smoke_5.png