mirror of
https://github.com/garbagemule/MobArena.git
synced 2024-12-26 02:57:39 +01:00
Fixed updateTargets... again
This commit is contained in:
parent
1dc4409857
commit
c84158aeb9
BIN
MobArena.jar
BIN
MobArena.jar
Binary file not shown.
40
src/com/garbagemule/MobArena/AbstractArena.java
Normal file
40
src/com/garbagemule/MobArena/AbstractArena.java
Normal file
@ -0,0 +1,40 @@
|
||||
package com.garbagemule.MobArena;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public abstract class AbstractArena
|
||||
{
|
||||
/**
|
||||
* Start the arena session.
|
||||
* This method should warp all players to their respective warp points, start all
|
||||
* needed timers, clear/populate all sets and lists, and flag all booleans.
|
||||
*/
|
||||
public abstract void startArena();
|
||||
|
||||
/**
|
||||
* Stop the arena session.
|
||||
* Distribute rewards, clean up arena floor and reset everything to how it was before
|
||||
* the arena session was started.
|
||||
*/
|
||||
public abstract void endArena();
|
||||
|
||||
/**
|
||||
* Player joins the arena/lobby.
|
||||
*/
|
||||
public abstract void playerJoin(Player p);
|
||||
|
||||
/**
|
||||
* Player leaves the arena/lobby.
|
||||
*/
|
||||
public abstract void playerLeave(Player p);
|
||||
|
||||
/**
|
||||
* Player dies in the arena.
|
||||
*/
|
||||
public abstract void playerDeath(Player p);
|
||||
|
||||
/**
|
||||
* Player signals that they are ready.
|
||||
*/
|
||||
public abstract void playerReady(Player p);
|
||||
}
|
@ -885,6 +885,9 @@ public class Arena
|
||||
{
|
||||
Material mat = b.getType();
|
||||
|
||||
if (mat == Material.LAVA) b.setType(Material.STATIONARY_LAVA);
|
||||
else if (mat == Material.WATER) b.setType(Material.STATIONARY_WATER);
|
||||
|
||||
if (mat == Material.WOODEN_DOOR || mat == Material.IRON_DOOR_BLOCK || mat == Material.FIRE || mat == Material.CAKE_BLOCK || mat == Material.WATER || mat == Material.LAVA)
|
||||
{
|
||||
blocks.remove(b);
|
||||
@ -1111,28 +1114,21 @@ public class Arena
|
||||
}
|
||||
|
||||
public void onPlayerInteract(PlayerInteractEvent event)
|
||||
{
|
||||
/*if (running && livePlayers.contains(event.getPlayer()))
|
||||
{
|
||||
if (!livePlayers.contains(event.getPlayer()))
|
||||
return;
|
||||
|
||||
if (running)
|
||||
{
|
||||
Player p = event.getPlayer();
|
||||
Action a = event.getAction();
|
||||
if (a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK)
|
||||
{
|
||||
if (p.getItemInHand().getType() == Material.BOW)
|
||||
p.shootArrow();
|
||||
event.setUseItemInHand(Result.DENY);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if (event.hasBlock() && event.getClickedBlock().getType() == Material.SAPLING)
|
||||
addTrunkAndLeaves(event.getClickedBlock());
|
||||
return;
|
||||
}*/
|
||||
}
|
||||
|
||||
if (running || !livePlayers.contains(event.getPlayer()))
|
||||
return;
|
||||
|
||||
Player p = event.getPlayer();
|
||||
Action a = event.getAction();
|
||||
if ((a == Action.RIGHT_CLICK_AIR) || (a == Action.RIGHT_CLICK_BLOCK))
|
||||
{
|
||||
Player p = event.getPlayer();
|
||||
if (a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK)
|
||||
{
|
||||
event.setUseItemInHand(Result.DENY);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@ -1363,16 +1359,39 @@ public class Arena
|
||||
public void delayRestoreInventory(final Player p, final String method)
|
||||
{
|
||||
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin,
|
||||
new Runnable()
|
||||
new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
if (method.equals("restoreInventory"))
|
||||
MAUtils.restoreInventory(p);
|
||||
else if (method.equals("giveRewards"))
|
||||
MAUtils.giveRewards(p, rewardMap.get(p), plugin);
|
||||
}
|
||||
}, 10);
|
||||
if (method.equals("restoreInventory"))
|
||||
MAUtils.restoreInventory(p);
|
||||
else if (method.equals("giveRewards"))
|
||||
MAUtils.giveRewards(p, rewardMap.get(p), plugin);
|
||||
}
|
||||
}, 10);
|
||||
}
|
||||
|
||||
public void addTrunkAndLeaves(Block b)
|
||||
{
|
||||
final int x = b.getX();
|
||||
final int y = b.getY();
|
||||
final int z = b.getZ();
|
||||
|
||||
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin,
|
||||
new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
List<Block> result = new LinkedList<Block>();
|
||||
for (int i = x-2; i <= x+2; i++)
|
||||
for (int j = y; j <= y+10; j++)
|
||||
for (int k = z-2; k <= z+2; k++)
|
||||
if (world.getBlockAt(i,j,k).getType() == Material.LOG || world.getBlockAt(i,j,k).getType() == Material.LEAVES)
|
||||
result.add(world.getBlockAt(i,j,k));
|
||||
|
||||
if (running) blocks.addAll(result);
|
||||
}
|
||||
}, 10);
|
||||
}
|
||||
|
||||
public boolean canAfford(Player p)
|
||||
|
@ -396,6 +396,40 @@ public class MACommands implements CommandExecutor
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Kick player from whichever arena they are in.
|
||||
*/
|
||||
if (base.equals("kick"))
|
||||
{
|
||||
if (!console && !(player && plugin.has(p, "mobarena.admin.kick")) && !op)
|
||||
{
|
||||
MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (arg1.isEmpty())
|
||||
{
|
||||
MAUtils.tellPlayer(sender, "Usage: /ma kick <player>");
|
||||
return true;
|
||||
}
|
||||
|
||||
Arena arena = am.getArenaWithPlayer(arg1);
|
||||
if (arena == null)
|
||||
{
|
||||
MAUtils.tellPlayer(sender, "That player is not in an arena.");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Player pl = server.getPlayer(arg1);
|
||||
am.arenaMap.remove(pl);
|
||||
arena.playerLeave(pl);
|
||||
MAUtils.tellPlayer(sender, "Player '" + arg1 + "' was kicked from arena '" + arena.configName() + "'.");
|
||||
MAUtils.tellPlayer(pl, "You were kicked by " + ((player) ? p.getName() : "the server."));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Restore a player's inventory.
|
||||
*/
|
||||
|
@ -180,6 +180,9 @@ public class MASpawnThread implements Runnable
|
||||
LivingEntity e = arena.world.spawnCreature(loc,mob);
|
||||
arena.monsters.add(e);
|
||||
|
||||
if (mob == CreatureType.WOLF)
|
||||
((Wolf)e).setOwner(null);
|
||||
|
||||
// Grab a random target.
|
||||
Creature c = (Creature) e;
|
||||
c.setTarget(getClosestPlayer(e));
|
||||
@ -253,7 +256,7 @@ public class MASpawnThread implements Runnable
|
||||
arena.monsters.add(e);
|
||||
|
||||
if (slime) ((Slime)e).setSize(2);
|
||||
if (wolf) ((Wolf)e).setAngry(true);
|
||||
if (wolf) { ((Wolf)e).setAngry(true); ((Wolf)e).setOwner(null); }
|
||||
if (ghast) ((Ghast)e).setHealth(Math.min(noOfPlayers*25, 200));
|
||||
if (creeper) ((Creeper)e).setPowered(true);
|
||||
|
||||
@ -358,7 +361,6 @@ public class MASpawnThread implements Runnable
|
||||
continue;
|
||||
}
|
||||
dist = p.getLocation().distanceSquared(e.getLocation());
|
||||
//double dist = MAUtils.distance(p.getLocation(), e.getLocation());
|
||||
if (dist < current && dist < MobArena.MIN_PLAYER_DISTANCE)
|
||||
{
|
||||
current = dist;
|
||||
@ -377,6 +379,9 @@ public class MASpawnThread implements Runnable
|
||||
LivingEntity target;
|
||||
for (Entity e : arena.monsters)
|
||||
{
|
||||
if (!(e instanceof Creature))
|
||||
continue;
|
||||
|
||||
c = (Creature) e;
|
||||
target = c.getTarget();
|
||||
|
||||
|
@ -173,7 +173,7 @@ public class MAUtils
|
||||
public static List<ItemStack> makeItemStackList(String string)
|
||||
{
|
||||
List<ItemStack> result = new LinkedList<ItemStack>();
|
||||
if (string == null) return result;
|
||||
if (string == null || string.isEmpty()) return result;
|
||||
|
||||
// Trim commas and whitespace, and split items by commas
|
||||
string = string.trim();
|
||||
|
Loading…
Reference in New Issue
Block a user