Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cy.uhc.scenarios.threads;
- import org.bukkit.Bukkit;
- import org.bukkit.GameMode;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- import org.bukkit.block.Chest;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.metadata.FixedMetadataValue;
- import cy.uhc.game.GameManager;
- import cy.uhc.game.UhcItems;
- import cy.uhc.main.UhcCore;
- import cy.uhc.scenarios.Scenario;
- import de.inventivegames.hologram.Hologram;
- import de.inventivegames.hologram.HologramAPI;
- import java.util.List;
- import java.util.UUID;
- public class TimebombThread implements Runnable{
- private Block chest1;
- private Block chest2;
- private TimebombThread thread;
- private long timeLeft;
- private Location loc;
- private List<ItemStack> drops;
- private boolean spawned;
- private UUID killer;
- private String deadname;
- private Hologram holo;
- public TimebombThread(List<ItemStack> drops, Location loc, UUID kl, UUID d){
- this.drops = drops;
- this.loc = loc;
- thread = this;
- timeLeft = 30;
- spawned = false;
- killer = kl;
- deadname = Bukkit.getOfflinePlayer(d).getName();
- }
- @Override
- public void run() {
- if (!spawned){
- spawnChest();
- }
- if (timeLeft > 0){
- timeLeft--;
- Bukkit.getScheduler().runTaskLater(UhcCore.getPlugin(),thread,20L);
- if (holo.isSpawned()) {
- holo.setText("§e"+timeLeft);
- }
- if (timeLeft <= 10) {
- for(Player nearp : chest1.getLocation().getWorld().getPlayers()) {
- if (nearp != null) {
- if (nearp.getGameMode() == GameMode.SURVIVAL) {
- if (chest1.getLocation().distance(nearp.getLocation()) <= 16) {
- String lines = "§c§m-----------------------------------------------";
- GameManager.getGameManager().getPlayersManager().sendLanguageMSG(nearp, lines, lines);
- GameManager.getGameManager().getPlayersManager().sendLanguageMSG(nearp,
- "§7[§dTimeBomb§7] §cYou are near the chest from §f"+deadname+" §cis gonna explote in §c§l"+timeLeft+"s",
- "§7[§dTimeBomb§7] §cEsta cerca del cofre de §f"+deadname+" §cy va a explotar en §c§l"+timeLeft+"s");
- GameManager.getGameManager().getPlayersManager().sendLanguageMSG(nearp, lines, lines);
- }
- }
- }
- }
- }
- }else {
- if (holo.isSpawned()) {
- holo.despawn();
- }
- GameManager.getGameManager().getPlayersManager().sendLanguageBC("§7[§dTimeBomb§7] §f"+deadname+"'s corpse has exploded!",
- "§7[§dTimeBomb§7] §fCadaver de "+deadname+" ah explotado!");
- chest1.setType(Material.AIR);
- chest2.setType(Material.AIR);
- chest1.getWorld().createExplosion(chest1.getLocation(), 5.0F);
- }
- }
- private void spawnChest(){
- spawned = true;
- chest1 = loc.getBlock();
- loc.add(1, 0, 0);
- chest2 = loc.getBlock();
- chest1.setType(Material.CHEST);
- chest2.setType(Material.CHEST);
- if (killer != null) {
- if (GameManager.getGameManager().getScenarioManager().isActivated(Scenario.SAFELOOT)) {
- chest1.setMetadata("SafeLoot", new FixedMetadataValue(UhcCore.getPlugin(), killer));
- chest2.setMetadata("SafeLoot", new FixedMetadataValue(UhcCore.getPlugin(), killer));
- }
- }
- Chest chest = (Chest) chest1.getState();
- Inventory inv = chest.getInventory();
- inv.addItem(UhcItems.createGoldenHeadg(1));
- Location hololoc = new Location(chest.getWorld(),chest.getLocation().getBlockX()+1, chest.getLocation().getBlockY()+1, chest.getLocation().getBlockZ()+1);
- holo = HologramAPI.createHologram(hololoc, "§e"+timeLeft);
- holo.spawn();
- if (drops != null) {
- for (ItemStack drop : drops){
- if (drop != null) {
- if (drop.getType() != Material.AIR) {
- inv.addItem(drop);
- }
- }
- }
- }
- Chest chest1B = (Chest) chest1.getState();
- Chest chest2B = (Chest) chest2.getState();
- Location removeblock1 = new Location(chest1B.getWorld(),chest1B.getLocation().getBlockX(), chest1B.getLocation().getBlockY()+1.3, chest1B.getLocation().getBlockZ());
- Location removeblock2 = new Location(chest2B.getWorld(),chest2B.getLocation().getBlockX(), chest2B.getLocation().getBlockY()+1.3, chest2B.getLocation().getBlockZ());
- removeblock1.getBlock().setType(Material.AIR);
- removeblock2.getBlock().setType(Material.AIR);
- loc.add(1.0,1.3,.5);
- }
- }
Add Comment
Please, Sign In to add comment