Merge remote-tracking branch 'origin/clans-beta' into clans-beta
This commit is contained in:
commit
f90b137ccd
@ -8,6 +8,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
@ -41,12 +42,18 @@ public class ClansAlphaManager extends MiniPlugin
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event)
|
||||
public void onPlayerJoin(final PlayerJoinEvent event)
|
||||
{
|
||||
if (!_taskManager.hasCompletedTask(event.getPlayer(), "ClansAlphaJoinMessage"))
|
||||
{
|
||||
_taskManager.completedTask(new Callback<Boolean>()
|
||||
{
|
||||
public void run(Boolean data)
|
||||
{
|
||||
UtilPlayer.message(event.getPlayer(), FIRST_JOIN_MESSAGES);
|
||||
}
|
||||
}, event.getPlayer(), "ClansAlphaJoinMessage");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -195,7 +195,7 @@ public class ClansManager extends MiniClientPlugin<ClientClan> implements IRelat
|
||||
_npcManager = new NpcManager(plugin, creature);
|
||||
_condition = new SkillConditionManager(plugin);
|
||||
DamageManager damageManager = new DamageManager(plugin, _combatManager, _npcManager, _disguiseManager, _condition);
|
||||
_worldEvent = new WorldEventManager(plugin, this, damageManager, _lootManager, blockRestore);
|
||||
_worldEvent = new WorldEventManager(plugin, this, damageManager, _lootManager, blockRestore, _clanRegions);
|
||||
|
||||
TaskManager taskManager = new TaskManager(plugin, _clientManager, webServerAddress);
|
||||
|
||||
|
@ -1,144 +1,131 @@
|
||||
package mineplex.game.clans.clans.worldevent;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.regions.ClansRegions;
|
||||
|
||||
public class EventTerrainFinder
|
||||
{
|
||||
private WorldEventManager _eventManager;
|
||||
private ClansManager _clansManager;
|
||||
private ClansRegions _clansRegions;
|
||||
|
||||
public EventTerrainFinder(WorldEventManager eventManager, ClansManager clansManager)
|
||||
public EventTerrainFinder(WorldEventManager eventManager, ClansManager clansManager, ClansRegions clansRegions)
|
||||
{
|
||||
_eventManager = eventManager;
|
||||
_clansManager = clansManager;
|
||||
_clansRegions = clansRegions;
|
||||
}
|
||||
|
||||
public double posNeg()
|
||||
{
|
||||
if (Math.random() > 0.5)
|
||||
return -1;
|
||||
if (Math.random() > 0.5) return -1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
public Location findArea(World world, int size, int vert)
|
||||
public Location findAreaInBorderlands(World world, int size, int vert)
|
||||
{
|
||||
for (int i=0 ; i<20 ; i++)
|
||||
System.out.println("Starting finding area...");
|
||||
int borderlandsDist = 31;
|
||||
int borderlandsWidth = 47 - borderlandsDist;
|
||||
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
int x = 0;
|
||||
int z = 0;
|
||||
|
||||
//X Side
|
||||
if (Math.random() > 0.5)
|
||||
x = (borderlandsDist * 16) + (UtilMath.clamp(UtilMath.random.nextInt(borderlandsWidth), 2, borderlandsWidth - 2) * 16);
|
||||
z = (borderlandsDist * 16) + (UtilMath.clamp(UtilMath.random.nextInt(borderlandsWidth), 2, borderlandsWidth - 2) * 16);
|
||||
|
||||
if (UtilMath.random.nextBoolean())
|
||||
{
|
||||
x = (int) (posNeg() * ((400 + size) + UtilMath.r(200 - (size*2))));
|
||||
z = (int) (posNeg() * UtilMath.r(600 - size));
|
||||
}
|
||||
//Z Side
|
||||
else
|
||||
{
|
||||
z = (int) (posNeg() * ((400 + size) + UtilMath.r(200 - (size*2))));
|
||||
x = (int) (posNeg() * UtilMath.r(600 - size));
|
||||
x = -x;
|
||||
z = -z;
|
||||
}
|
||||
|
||||
Location loc = UtilBlock.getHighest(world, x, z).getLocation();
|
||||
|
||||
int total = ((size*2)+1)*((size*2)+1);
|
||||
int blocks = ((size * 2) + 1) * ((size * 2) + 1);
|
||||
|
||||
int liquid = 0;
|
||||
HashMap<Integer, Integer> heights = new HashMap<Integer, Integer>();
|
||||
boolean suitable = true;
|
||||
|
||||
HashSet<Chunk> chunks = new HashSet<Chunk>();
|
||||
boolean wilderness = true;
|
||||
|
||||
//Gather Data
|
||||
for (x=-size ; x<=size && wilderness ; x++)
|
||||
for (z=-size ; z<=size && wilderness ; z++)
|
||||
int liquids = 0;
|
||||
for (x = -size; x < size; x++)
|
||||
{
|
||||
Block block = UtilBlock.getHighest(world, loc.getBlockX()+x, loc.getBlockZ()+z);
|
||||
|
||||
if (!chunks.contains(block.getChunk()))
|
||||
if (_clansManager.getClanUtility().isClaimed(block.getLocation()))
|
||||
for (z = -size; z < size; z++)
|
||||
{
|
||||
chunks.add(block.getChunk());
|
||||
wilderness = false;
|
||||
break;
|
||||
Block topBlock = loc.getWorld().getBlockAt(loc.getBlockX() + x, loc.getWorld().getHighestBlockYAt(loc.getBlockX() + x, loc.getBlockZ() + z), loc.getBlockZ());
|
||||
|
||||
if (255 - topBlock.getY() < size)
|
||||
{
|
||||
suitable = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
//Liquid
|
||||
if (block.getRelative(BlockFace.DOWN).isLiquid() || block.isLiquid())
|
||||
liquid++;
|
||||
|
||||
//Height
|
||||
int heightDiff = block.getY() - loc.getBlockY();
|
||||
if (!heights.containsKey(heightDiff)) heights.put(heightDiff, 1);
|
||||
else heights.put(heightDiff, heights.get(heightDiff) + 1);
|
||||
}
|
||||
|
||||
if (!wilderness)
|
||||
continue;
|
||||
|
||||
//Too Watery
|
||||
if ((double)liquid/(double)total > 0.25)
|
||||
continue;
|
||||
|
||||
//Too Height Variable
|
||||
int withinHeight = 0;
|
||||
for (int h=-vert ; h<=vert ; h++)
|
||||
if (topBlock.isLiquid())
|
||||
{
|
||||
if (!heights.containsKey(h))
|
||||
continue;
|
||||
|
||||
withinHeight += heights.get(h);
|
||||
liquids++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((double)withinHeight/(double)total < 0.9)
|
||||
continue;
|
||||
if (liquids > 1 && (((double) blocks)) / ((double) liquids) > 0.25)
|
||||
{
|
||||
System.out.println("water bad");
|
||||
suitable = false;
|
||||
}
|
||||
|
||||
//Success
|
||||
// If this region is not suitable, try again.
|
||||
if (!suitable)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
System.out.println("Done finding area... [success]");
|
||||
|
||||
// Success
|
||||
return loc;
|
||||
}
|
||||
|
||||
System.out.println("Done finding area...");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public Location locateSpace(Location areaSource, int areaRadius, int xArea, int yArea, int zArea, boolean replaceBlocks, boolean aboveOther, Set<Block> otherBlock)
|
||||
{
|
||||
for (int i=0 ; i<20 ; i++)
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
int x = UtilMath.r(areaRadius*2) - areaRadius + areaSource.getBlockX();
|
||||
int z = UtilMath.r(areaRadius*2) - areaRadius + areaSource.getBlockZ();
|
||||
int x = UtilMath.r(areaRadius * 2) - areaRadius + areaSource.getBlockX();
|
||||
int z = UtilMath.r(areaRadius * 2) - areaRadius + areaSource.getBlockZ();
|
||||
|
||||
Block block = UtilBlock.getHighest(areaSource.getWorld(), x, z);
|
||||
|
||||
if (!aboveOther)
|
||||
if (otherBlock.contains(block.getRelative(BlockFace.DOWN)))
|
||||
continue;
|
||||
if (!aboveOther) if (otherBlock.contains(block.getRelative(BlockFace.DOWN))) continue;
|
||||
|
||||
boolean valid = true;
|
||||
|
||||
int overlaps = 0;
|
||||
|
||||
//Previous
|
||||
for (x=-xArea ; x<=xArea ; x++)
|
||||
// Previous
|
||||
for (x = -xArea; x <= xArea; x++)
|
||||
{
|
||||
for (z=-zArea ; z<=zArea ; z++)
|
||||
for (z = -zArea; z <= zArea; z++)
|
||||
{
|
||||
for (int y=0 ; y<=yArea ; y++)
|
||||
for (int y = 0; y <= yArea; y++)
|
||||
{
|
||||
//Check Blocks
|
||||
Block cur = areaSource.getWorld().getBlockAt(block.getX()+x, block.getY()+y, block.getZ()+z);
|
||||
// Check Blocks
|
||||
Block cur = areaSource.getWorld().getBlockAt(block.getX() + x, block.getY() + y, block.getZ() + z);
|
||||
|
||||
if (cur.getRelative(BlockFace.DOWN).isLiquid())
|
||||
{
|
||||
@ -152,24 +139,19 @@ public class EventTerrainFinder
|
||||
break;
|
||||
}
|
||||
|
||||
//Check Area
|
||||
if (!UtilBlock.airFoliage(cur))
|
||||
overlaps += 1;
|
||||
// Check Area
|
||||
if (!UtilBlock.airFoliage(cur)) overlaps += 1;
|
||||
}
|
||||
|
||||
if (!valid)
|
||||
break;
|
||||
if (!valid) break;
|
||||
}
|
||||
|
||||
if (!valid)
|
||||
break;
|
||||
if (!valid) break;
|
||||
}
|
||||
|
||||
if (!replaceBlocks && overlaps > 0)
|
||||
continue;
|
||||
if (!replaceBlocks && overlaps > 0) continue;
|
||||
|
||||
if (!valid)
|
||||
continue;
|
||||
if (!valid) continue;
|
||||
|
||||
return block.getLocation();
|
||||
}
|
||||
|
@ -6,20 +6,6 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.blockrestore.BlockRestore;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.scoreboard.ScoreboardManager;
|
||||
import mineplex.core.scoreboard.elements.ScoreboardElement;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.loot.LootManager;
|
||||
import mineplex.game.clans.clans.worldevent.command.WorldEventCommand;
|
||||
import mineplex.minecraft.game.core.boss.EventState;
|
||||
import mineplex.minecraft.game.core.boss.WorldEvent;
|
||||
import mineplex.minecraft.game.core.damage.DamageManager;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -31,9 +17,25 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.blockrestore.BlockRestore;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.scoreboard.ScoreboardManager;
|
||||
import mineplex.core.scoreboard.elements.ScoreboardElement;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
import mineplex.game.clans.clans.loot.LootManager;
|
||||
import mineplex.game.clans.clans.regions.ClansRegions;
|
||||
import mineplex.game.clans.clans.worldevent.command.WorldEventCommand;
|
||||
import mineplex.minecraft.game.core.boss.EventState;
|
||||
import mineplex.minecraft.game.core.boss.WorldEvent;
|
||||
import mineplex.minecraft.game.core.damage.DamageManager;
|
||||
|
||||
public class WorldEventManager extends MiniPlugin implements ScoreboardElement
|
||||
{
|
||||
private final List<WorldEvent> _events;
|
||||
private final List<WorldEvent> _runningEvents;
|
||||
|
||||
private Random _random;
|
||||
private ClansManager _clansManager;
|
||||
@ -42,42 +44,48 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
|
||||
private LootManager _lootManager;
|
||||
private BlockRestore _blockRestore;
|
||||
|
||||
private long _lastEventEnd;
|
||||
private long _nextEventStart;
|
||||
|
||||
public WorldEventManager(JavaPlugin plugin, ClansManager clansManager, DamageManager damageManager, LootManager lootManager, BlockRestore blockRestore)
|
||||
public WorldEventManager(JavaPlugin plugin, ClansManager clansManager, DamageManager damageManager, LootManager lootManager, BlockRestore blockRestore, ClansRegions clansRegions)
|
||||
{
|
||||
super("World Event", plugin);
|
||||
|
||||
_random = new Random();
|
||||
_terrainFinder = new EventTerrainFinder(this, clansManager);
|
||||
_terrainFinder = new EventTerrainFinder(this, clansManager, clansRegions);
|
||||
_clansManager = clansManager;
|
||||
_damageManager = damageManager;
|
||||
_lootManager = lootManager;
|
||||
_blockRestore = blockRestore;
|
||||
_events = new LinkedList<WorldEvent>();
|
||||
_lastEventEnd = System.currentTimeMillis();
|
||||
_runningEvents = new LinkedList<WorldEvent>();
|
||||
updateNextEventTime();
|
||||
}
|
||||
|
||||
public void addCommands()
|
||||
{
|
||||
addCommand(new WorldEventCommand(this));
|
||||
}
|
||||
|
||||
// PS: This never gets called
|
||||
@Override
|
||||
public void disable()
|
||||
{
|
||||
for (WorldEvent event : _events)
|
||||
for (WorldEvent event : _runningEvents)
|
||||
{
|
||||
event.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void removeEvent(UpdateEvent event)
|
||||
public void cleanupEvent(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.SEC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
boolean removed = false;
|
||||
|
||||
Iterator<WorldEvent> iterator = _events.iterator();
|
||||
Iterator<WorldEvent> iterator = _runningEvents.iterator();
|
||||
while (iterator.hasNext())
|
||||
{
|
||||
WorldEvent worldEvent = iterator.next();
|
||||
@ -86,45 +94,40 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
|
||||
HandlerList.unregisterAll(worldEvent);
|
||||
iterator.remove();
|
||||
|
||||
// If the event was cancelled, we don't need to run a cleanup
|
||||
if (worldEvent.getState() == EventState.COMPLETE) worldEvent.cleanup();
|
||||
// If the event was cancelled, cleanup was already done.
|
||||
if (worldEvent.getState() == EventState.COMPLETE)
|
||||
{
|
||||
worldEvent.cleanup();
|
||||
}
|
||||
|
||||
removed = true;
|
||||
_lastEventEnd = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
|
||||
if (removed && _events.size() == 0)
|
||||
if (removed && _runningEvents.size() == 0)
|
||||
{
|
||||
updateNextEventTime();
|
||||
}
|
||||
|
||||
|
||||
if (_runningEvents.size() == 0 && System.currentTimeMillis() >= _nextEventStart)
|
||||
{
|
||||
if (UtilServer.getPlayers().length > 0)
|
||||
{
|
||||
tryStartEvent();
|
||||
}
|
||||
else
|
||||
{
|
||||
updateNextEventTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// @EventHandler
|
||||
// public void startEvent(UpdateEvent event)
|
||||
// {
|
||||
// if (event.getType() != UpdateType.SEC)
|
||||
// return;
|
||||
//
|
||||
// if (_events.size() == 0 && System.currentTimeMillis() > _nextEventStart)
|
||||
// {
|
||||
// if (UtilServer.getPlayers().length > 0)
|
||||
// {
|
||||
// Bukkit.broadcastMessage("Starting new event from random...");
|
||||
// startRandomEvent();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// updateNextEventTime();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
private void startRandomEvent()
|
||||
private void tryStartEvent()
|
||||
{
|
||||
WorldEventType[] types = WorldEventType.values();
|
||||
WorldEventType type = types[_random.nextInt(types.length)];
|
||||
Location location = _terrainFinder.findArea(Bukkit.getWorlds().get(0), type.getAreaNeeded(), type.getAreaNeeded());
|
||||
Location location = _terrainFinder.findAreaInBorderlands(Bukkit.getWorlds().get(0), type.getAreaNeeded(), type.getAreaNeeded());
|
||||
if (location != null)
|
||||
{
|
||||
initializeEvent(type.createInstance(this, location));
|
||||
@ -132,7 +135,7 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
|
||||
else
|
||||
{
|
||||
// Try again in 5 minutes
|
||||
_nextEventStart = System.currentTimeMillis() + 300000;
|
||||
_nextEventStart = System.currentTimeMillis() + 25000;//300000;
|
||||
}
|
||||
}
|
||||
|
||||
@ -143,7 +146,7 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
|
||||
event.loadMap();
|
||||
event.start();
|
||||
getPlugin().getServer().getPluginManager().registerEvents(event, getPlugin());
|
||||
_events.add(event);
|
||||
_runningEvents.add(event);
|
||||
}
|
||||
|
||||
public WorldEvent startEventFromName(Location location, String name)
|
||||
@ -161,7 +164,7 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
|
||||
|
||||
public void clearEvents()
|
||||
{
|
||||
Iterator<WorldEvent> iterator = _events.iterator();
|
||||
Iterator<WorldEvent> iterator = _runningEvents.iterator();
|
||||
while (iterator.hasNext())
|
||||
{
|
||||
WorldEvent event = iterator.next();
|
||||
@ -193,16 +196,10 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
|
||||
return _terrainFinder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCommands()
|
||||
{
|
||||
addCommand(new WorldEventCommand(this));
|
||||
}
|
||||
|
||||
private void updateNextEventTime()
|
||||
{
|
||||
// 45 Minutes + 0 - 15 Minutes
|
||||
long waitTime = 2700000L + _random.nextInt(900000);
|
||||
// 45 Minutes + (0 - 15 Minutes)
|
||||
long waitTime = 25000;//2700000L + _random.nextInt(900000);
|
||||
_nextEventStart = System.currentTimeMillis() + waitTime;
|
||||
}
|
||||
|
||||
@ -211,7 +208,7 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
|
||||
{
|
||||
ArrayList<String> output = new ArrayList<String>();
|
||||
|
||||
Iterator<WorldEvent> iterator = _events.iterator();
|
||||
Iterator<WorldEvent> iterator = _runningEvents.iterator();
|
||||
while (iterator.hasNext())
|
||||
{
|
||||
WorldEvent event = iterator.next();
|
||||
@ -243,14 +240,13 @@ public class WorldEventManager extends MiniPlugin implements ScoreboardElement
|
||||
|
||||
public List<WorldEvent> getEvents()
|
||||
{
|
||||
return _events;
|
||||
return _runningEvents;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void gear(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
if (!event.getPlayer().isOp())
|
||||
return;
|
||||
if (!event.getPlayer().isOp()) return;
|
||||
|
||||
// TODO: Remove
|
||||
if (event.getMessage().equalsIgnoreCase("/dgear"))
|
||||
|
@ -12,8 +12,10 @@ import org.bukkit.Location;
|
||||
|
||||
public enum WorldEventType
|
||||
{
|
||||
SLIME_KING("Slime King", SlimeBoss.class, 30), KING_OF_THE_HILL("King of The Hill", KingHill.class, 30), UNDEAD_CAMP(
|
||||
"Undead Camp", UndeadCamp.class, 30), Golem("Iron Wizard", GolemBoss.class, 30);
|
||||
SLIME_KING("Slime King", SlimeBoss.class, 30),
|
||||
KING_OF_THE_HILL("King of The Hill", KingHill.class, 30),
|
||||
UNDEAD_CAMP("Undead Camp", UndeadCamp.class, 30),
|
||||
Golem("Iron Wizard", GolemBoss.class, 30);
|
||||
|
||||
private String _name;
|
||||
private Class<? extends WorldEvent> _clazz;
|
||||
@ -47,13 +49,11 @@ public enum WorldEventType
|
||||
}
|
||||
else if (classes.length == 4)
|
||||
{
|
||||
worldEvent = (WorldEvent) con.newInstance(eventManager.getDamage(), eventManager.getBlockRestore(),
|
||||
eventManager.getClans().getCondition(), centerLocation);
|
||||
worldEvent = (WorldEvent) con.newInstance(eventManager.getDamage(), eventManager.getBlockRestore(), eventManager.getClans().getCondition(), centerLocation);
|
||||
}
|
||||
else
|
||||
{
|
||||
worldEvent = (WorldEvent) con.newInstance(eventManager.getDamage(), eventManager.getBlockRestore(),
|
||||
eventManager.getClans().getCondition(), eventManager.getClans().getProjectile(), centerLocation);
|
||||
worldEvent = (WorldEvent) con.newInstance(eventManager.getDamage(), eventManager.getBlockRestore(), eventManager.getClans().getCondition(), eventManager.getClans().getProjectile(), centerLocation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ public class ClearCommand extends CommandBase<WorldEventManager>
|
||||
{
|
||||
public ClearCommand(WorldEventManager plugin)
|
||||
{
|
||||
super(plugin, Rank.DEVELOPER, "clear");
|
||||
super(plugin, Rank.DEVELOPER, new Rank[] { Rank.JNR_DEV }, "clear");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -13,7 +13,7 @@ public class StartCommand extends CommandBase<WorldEventManager>
|
||||
{
|
||||
public StartCommand(WorldEventManager plugin)
|
||||
{
|
||||
super(plugin, Rank.DEVELOPER, "start", "create");
|
||||
super(plugin, Rank.DEVELOPER, new Rank[] { Rank.JNR_DEV }, "start", "create");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -10,7 +10,7 @@ public class WorldEventCommand extends MultiCommandBase<WorldEventManager>
|
||||
{
|
||||
public WorldEventCommand(WorldEventManager plugin)
|
||||
{
|
||||
super(plugin, Rank.DEVELOPER, "worldevent", "we", "event");
|
||||
super(plugin, Rank.DEVELOPER, new Rank[] { Rank.JNR_DEV }, "worldevent", "we", "event");
|
||||
|
||||
AddCommand(new StartCommand(Plugin));
|
||||
AddCommand(new ClearCommand(Plugin));
|
||||
|
@ -9,6 +9,8 @@ import org.bukkit.Material;
|
||||
import org.bukkit.entity.Skeleton;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
public class UndeadArcher extends EventCreature<Skeleton>
|
||||
{
|
||||
@ -27,6 +29,7 @@ public class UndeadArcher extends EventCreature<Skeleton>
|
||||
eq.setChestplate(new ItemStack(Material.CHAINMAIL_CHESTPLATE));
|
||||
eq.setLeggings(new ItemStack(Material.CHAINMAIL_LEGGINGS));
|
||||
eq.setBoots(new ItemStack(Material.CHAINMAIL_BOOTS));
|
||||
entity.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 999999, 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -15,6 +15,8 @@ import org.bukkit.entity.Zombie;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
public class UndeadWarrior extends EventCreature<Zombie>
|
||||
{
|
||||
@ -32,6 +34,7 @@ public class UndeadWarrior extends EventCreature<Zombie>
|
||||
eq.setChestplate(new ItemStack(Material.IRON_CHESTPLATE));
|
||||
eq.setLeggings(new ItemStack(Material.IRON_LEGGINGS));
|
||||
eq.setBoots(new ItemStack(Material.IRON_BOOTS));
|
||||
entity.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 999999, 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -54,7 +54,7 @@ public abstract class WorldEvent implements Listener
|
||||
private Schematic _schematic;
|
||||
|
||||
// Creatures
|
||||
private List<EventCreature> _creatures;
|
||||
private List<EventCreature<?>> _creatures;
|
||||
// Block Restore
|
||||
private BlockRestoreMap _blocks;
|
||||
private boolean _isArcade;
|
||||
@ -81,7 +81,7 @@ public abstract class WorldEvent implements Listener
|
||||
_random = new Random();
|
||||
_ticks = 0;
|
||||
|
||||
_creatures = new ArrayList<EventCreature>();
|
||||
_creatures = new ArrayList<>();
|
||||
_blocks = blockRestore.createMap();
|
||||
_lastActive = System.currentTimeMillis();
|
||||
|
||||
@ -240,18 +240,18 @@ public abstract class WorldEvent implements Listener
|
||||
return _map == null ? _cornerLocation : _map.getCenterLocation();
|
||||
}
|
||||
|
||||
public List<EventCreature> getCreatures()
|
||||
public List<EventCreature<?>> getCreatures()
|
||||
{
|
||||
return _creatures;
|
||||
}
|
||||
|
||||
public void registerCreature(EventCreature creature)
|
||||
public void registerCreature(EventCreature<?> creature)
|
||||
{
|
||||
UtilServer.getServer().getPluginManager().registerEvents(creature, _damageManager.getPlugin());
|
||||
_creatures.add(creature);
|
||||
}
|
||||
|
||||
public void removeCreature(EventCreature creature)
|
||||
public void removeCreature(EventCreature<?> creature)
|
||||
{
|
||||
HandlerList.unregisterAll(creature);
|
||||
_creatures.remove(creature);
|
||||
@ -267,7 +267,7 @@ public abstract class WorldEvent implements Listener
|
||||
|
||||
public void clearCreatures()
|
||||
{
|
||||
for (EventCreature creature : _creatures)
|
||||
for (EventCreature<?> creature : _creatures)
|
||||
{
|
||||
creature.remove(false);
|
||||
HandlerList.unregisterAll(creature);
|
||||
|
Loading…
Reference in New Issue
Block a user