102 lines
2.7 KiB
Java
Executable File
102 lines
2.7 KiB
Java
Executable File
package projectzombie.tiles;
|
|
|
|
import java.util.Random;
|
|
|
|
import gl_engine.vec.Vec2i;
|
|
import gl_engine.vec.Vec3d;
|
|
import projectzombie.Main;
|
|
import projectzombie.entity.Entity;
|
|
import projectzombie.entity.EntityItem;
|
|
import projectzombie.init.Items;
|
|
import projectzombie.init.Models;
|
|
import projectzombie.items.modifier.ItemModifierMeta;
|
|
import projectzombie.model.Model;
|
|
import projectzombie.util.ItemStack;
|
|
import projectzombie.util.TileState;
|
|
import projectzombie.util.math.random.RandomHelpers;
|
|
import projectzombie.world.chunk.Chunk;
|
|
import projectzombie.world.layer.Layer;
|
|
|
|
public class TileChest extends Tile implements TileBulletBreakable
|
|
{
|
|
public static final short CHEST_CAVES = 1;
|
|
public static final short CHEST_LAVA_CAVES = 2;
|
|
|
|
public TileChest() {
|
|
|
|
this.tileSolid = true;
|
|
this.tileHitbox = 0.4;
|
|
|
|
}
|
|
|
|
@Override
|
|
public boolean canUse(TileState state) {
|
|
return true;
|
|
}
|
|
|
|
private void spawnItem(Chunk chunk, Vec2i pos, ItemStack stack) {
|
|
chunk.spawnEntity(new EntityItem(pos.xny().toDouble(), new Vec3d(0, 0, 0), stack));
|
|
}
|
|
|
|
@Override
|
|
public boolean onActivated(Layer layer, Vec2i tpos, Entity entity, TileState state) {
|
|
super.onActivated(layer, tpos, entity, state);
|
|
|
|
Chunk chunk = layer.getChunk(tpos);
|
|
Random rand = Main.rand;
|
|
|
|
if(state.meta == CHEST_CAVES)
|
|
{
|
|
// Ammo
|
|
spawnItem(chunk, tpos, new ItemStack(Items.AMMO, RandomHelpers.randrange(rand, 100), new ItemModifierMeta(1)));
|
|
|
|
// Tnt
|
|
spawnItem(chunk, tpos, new ItemStack(Items.TNT, RandomHelpers.randrange(rand, 2), new ItemModifierMeta(10)));
|
|
|
|
// Flare
|
|
spawnItem(chunk, tpos, new ItemStack(Items.FLARE, RandomHelpers.randrange(rand, 5)));
|
|
|
|
// Lantern
|
|
spawnItem(chunk, tpos, new ItemStack(Items.LANTERN, RandomHelpers.randrange(rand, 5)));
|
|
|
|
// Health potions
|
|
spawnItem(chunk, tpos, new ItemStack(Items.HEALTH_POTION, RandomHelpers.randrange(rand, 4), new ItemModifierMeta(50)));
|
|
|
|
}
|
|
|
|
if(state.meta == CHEST_LAVA_CAVES)
|
|
{
|
|
// Ammo
|
|
spawnItem(chunk, tpos, new ItemStack(Items.AMMO, RandomHelpers.randrange(rand, 250), new ItemModifierMeta(1)));
|
|
|
|
// Tnt
|
|
spawnItem(chunk, tpos, new ItemStack(Items.TNT, RandomHelpers.randrange(rand, 2), new ItemModifierMeta(10)));
|
|
|
|
// Health potions
|
|
spawnItem(chunk, tpos, new ItemStack(Items.HEALTH_POTION, RandomHelpers.randrange(rand, 4), new ItemModifierMeta(50)));
|
|
|
|
// Flare
|
|
spawnItem(chunk, tpos, new ItemStack(Items.FLARE, RandomHelpers.randrange(rand, 5)));
|
|
|
|
// Lantern
|
|
spawnItem(chunk, tpos, new ItemStack(Items.LANTERN, RandomHelpers.randrange(rand, 5)));
|
|
|
|
}
|
|
|
|
layer.breakFrontTile(tpos);
|
|
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public int getBulletBreakChance() {
|
|
return 25;
|
|
}
|
|
|
|
@Override
|
|
public Model getModel(byte meta) {
|
|
return Models.TILE_CHEST;
|
|
}
|
|
|
|
}
|