Fix phasing and mob spawning
This commit is contained in:
parent
55e01b3259
commit
293880cee9
|
@ -1741,5 +1741,34 @@ public class UtilBlock
|
||||||
{
|
{
|
||||||
return horizontals.get(Math.round(yaw / 90F) & 0x3);
|
return horizontals.get(Math.round(yaw / 90F) & 0x3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isFence(Block block)
|
||||||
|
{
|
||||||
|
return isFence(block.getType());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isFence(Material type)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case FENCE:
|
||||||
|
case FENCE_GATE:
|
||||||
|
case ACACIA_FENCE:
|
||||||
|
case BIRCH_FENCE:
|
||||||
|
case DARK_OAK_FENCE:
|
||||||
|
case IRON_FENCE:
|
||||||
|
case JUNGLE_FENCE:
|
||||||
|
case NETHER_FENCE:
|
||||||
|
case SPRUCE_FENCE:
|
||||||
|
case ACACIA_FENCE_GATE:
|
||||||
|
case BIRCH_FENCE_GATE:
|
||||||
|
case DARK_OAK_FENCE_GATE:
|
||||||
|
case JUNGLE_FENCE_GATE:
|
||||||
|
case SPRUCE_FENCE_GATE:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,16 +82,16 @@ public class ObserverManager extends MiniPlugin
|
||||||
|
|
||||||
private void restore(Player player, ObserverData data)
|
private void restore(Player player, ObserverData data)
|
||||||
{
|
{
|
||||||
|
data.getSnapshot().applySnapshot(player);
|
||||||
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
((CraftPlayer) player).getHandle().spectating = false;
|
||||||
|
|
||||||
Condition condition = _conditionManager.GetActiveCondition(player, ConditionType.CLOAK);
|
Condition condition = _conditionManager.GetActiveCondition(player, ConditionType.CLOAK);
|
||||||
|
|
||||||
if (condition != null)
|
if (condition != null)
|
||||||
{
|
{
|
||||||
condition.Remove();
|
condition.Expire();
|
||||||
}
|
}
|
||||||
|
|
||||||
data.getSnapshot().applySnapshot(player);
|
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
|
||||||
((CraftPlayer) player).getHandle().spectating = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|
|
@ -31,6 +31,7 @@ import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Monster;
|
import org.bukkit.entity.Monster;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.BlockBurnEvent;
|
import org.bukkit.event.block.BlockBurnEvent;
|
||||||
import org.bukkit.event.block.BlockFromToEvent;
|
import org.bukkit.event.block.BlockFromToEvent;
|
||||||
|
@ -327,6 +328,25 @@ public class Spawn extends MiniPlugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String mobsEnabled = getSpawnWorld().getGameRuleValue("doMobSpawning");
|
||||||
|
|
||||||
|
if (mobsEnabled.equals("true"))
|
||||||
|
{
|
||||||
|
if (getSpawnWorld().getTime() < 12000)
|
||||||
|
{
|
||||||
|
Bukkit.broadcastMessage("Mob spawning disabled");
|
||||||
|
getSpawnWorld().setGameRuleValue("doMobSpawning", "false");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (getSpawnWorld().getTime() > 12000)
|
||||||
|
{
|
||||||
|
Bukkit.broadcastMessage("Mob spawning enabled");
|
||||||
|
getSpawnWorld().setGameRuleValue("doMobSpawning", "true");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -33,22 +33,23 @@ public class ArcticArmor extends Skill
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final double DELTA_THETA = Math.PI / 10;
|
private static final double DELTA_THETA = Math.PI / 10;
|
||||||
|
private static final double FENCE_FROM_CENTER_DIST = 0.95;
|
||||||
|
|
||||||
private final Set<Player> _active = new HashSet<>();
|
private final Set<Player> _active = new HashSet<>();
|
||||||
|
|
||||||
public ArcticArmor(SkillFactory skills, String name, ClassType classType, SkillType skillType, int cost, int levels)
|
public ArcticArmor(SkillFactory skills, String name, ClassType classType, SkillType skillType, int cost, int levels)
|
||||||
{
|
{
|
||||||
super(skills, name, classType, skillType, cost, levels);
|
super(skills, name, classType, skillType, cost, levels);
|
||||||
|
|
||||||
SetDesc(new String[]
|
SetDesc(new String[]
|
||||||
{
|
{
|
||||||
"Drop Axe/Sword to Toggle.",
|
"Drop Axe/Sword to Toggle.",
|
||||||
"",
|
"",
|
||||||
"Create a freezing area around you",
|
"Create a freezing area around you",
|
||||||
"in a #3#1 Block radius. Allies inside",
|
"in a #3#1 Block radius. Allies inside",
|
||||||
"this area receive Protection 2.",
|
"this area receive Protection 2.",
|
||||||
"",
|
"",
|
||||||
"You receive Protection 2."
|
"You receive Protection 2."
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +64,7 @@ public class ArcticArmor extends Skill
|
||||||
{
|
{
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if (getLevel(player) == 0)
|
if (getLevel(player) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!UtilGear.isWeapon(event.getItemDrop().getItemStack()))
|
if (!UtilGear.isWeapon(event.getItemDrop().getItemStack()))
|
||||||
|
@ -79,7 +80,7 @@ public class ArcticArmor extends Skill
|
||||||
|
|
||||||
if (_active.contains(player))
|
if (_active.contains(player))
|
||||||
{
|
{
|
||||||
Remove(player);
|
Remove(player);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -93,7 +94,7 @@ public class ArcticArmor extends Skill
|
||||||
public void Add(Player player)
|
public void Add(Player player)
|
||||||
{
|
{
|
||||||
_active.add(player);
|
_active.add(player);
|
||||||
UtilPlayer.message(player, F.main(GetClassType().name(), F.skill(GetName()) + ": " + F.oo("Enabled", true)));
|
UtilPlayer.message(player, F.main(GetClassType().name(), F.skill(GetName()) + ": " + F.oo("Enabled", true)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Remove(Player player)
|
public void Remove(Player player)
|
||||||
|
@ -109,7 +110,7 @@ public class ArcticArmor extends Skill
|
||||||
if (event.getType() != UpdateType.SEC)
|
if (event.getType() != UpdateType.SEC)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (Player cur : _active)
|
for (Player cur : _active)
|
||||||
cur.getWorld().playSound(cur.getLocation(), Sound.AMBIENCE_RAIN, 0.3f, 0f);
|
cur.getWorld().playSound(cur.getLocation(), Sound.AMBIENCE_RAIN, 0.3f, 0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +121,7 @@ public class ArcticArmor extends Skill
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (Player cur : GetUsers())
|
for (Player cur : GetUsers())
|
||||||
{
|
{
|
||||||
if (!_active.contains(cur))
|
if (!_active.contains(cur))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -128,10 +129,10 @@ public class ArcticArmor extends Skill
|
||||||
int level = getLevel(cur);
|
int level = getLevel(cur);
|
||||||
if (level == 0)
|
if (level == 0)
|
||||||
{
|
{
|
||||||
Remove(cur);
|
Remove(cur);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Check Allowed
|
//Check Allowed
|
||||||
SkillTriggerEvent trigger = new SkillTriggerEvent(cur, GetName(), GetClassType());
|
SkillTriggerEvent trigger = new SkillTriggerEvent(cur, GetName(), GetClassType());
|
||||||
UtilServer.getServer().getPluginManager().callEvent(trigger);
|
UtilServer.getServer().getPluginManager().callEvent(trigger);
|
||||||
|
@ -140,7 +141,7 @@ public class ArcticArmor extends Skill
|
||||||
Remove(cur);
|
Remove(cur);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Energy
|
//Energy
|
||||||
if (!Factory.Energy().Use(cur, GetName(), 0.55 - (level * 0.05), true, true))
|
if (!Factory.Energy().Use(cur, GetName(), 0.55 - (level * 0.05), true, true))
|
||||||
{
|
{
|
||||||
|
@ -157,18 +158,54 @@ public class ArcticArmor extends Skill
|
||||||
{
|
{
|
||||||
Block up = block.getRelative(BlockFace.UP);
|
Block up = block.getRelative(BlockFace.UP);
|
||||||
|
|
||||||
if (block.getType().toString().contains("BANNER") || up.getType().toString().contains("BANNER"))
|
if (block.getType().toString().contains("BANNER") || up.isLiquid() || block.getLocation().getY() > cur.getLocation().getY())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Freeze
|
//Freeze
|
||||||
if (!up.isLiquid() && block.getLocation().getY() <= cur.getLocation().getY())
|
Material type = block.getType();
|
||||||
|
|
||||||
|
if (UtilBlock.water(type) || type == Material.ICE)
|
||||||
{
|
{
|
||||||
if (block.getTypeId() == 8 || block.getTypeId() == 9 || block.getTypeId() == 79)
|
for (Player player : block.getWorld().getPlayers())
|
||||||
{
|
{
|
||||||
Factory.BlockRestore().add(block, 79, (byte) 0, (long) (duration * (1 + scale)));
|
if (UtilPlayer.isSpectator(player))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Location playerLocation = player.getLocation();
|
||||||
|
Block playerBlock = playerLocation.getBlock();
|
||||||
|
|
||||||
|
// Force players up if they try and get themselves stuck
|
||||||
|
if (playerBlock.equals(block))
|
||||||
|
{
|
||||||
|
player.teleport(playerLocation.add(0, 1, 0));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Location blockLocation = block.getLocation().add(0.5, 0, 0.5);
|
||||||
|
|
||||||
|
for (BlockFace face : UtilBlock.horizontals)
|
||||||
|
{
|
||||||
|
Block nextBlock = block.getRelative(face);
|
||||||
|
|
||||||
|
if (UtilBlock.isFence(nextBlock) && playerBlock.equals(nextBlock) && Math.abs(playerLocation.getX() - blockLocation.getX()) < FENCE_FROM_CENTER_DIST && Math.abs(playerLocation.getZ() - blockLocation.getZ()) < FENCE_FROM_CENTER_DIST)
|
||||||
|
{
|
||||||
|
Location moveTo = block.getLocation().add(0.5, 1, 0.5);
|
||||||
|
|
||||||
|
moveTo.setYaw(playerLocation.getYaw());
|
||||||
|
moveTo.setPitch(playerLocation.getPitch());
|
||||||
|
|
||||||
|
player.teleport(moveTo);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Factory.BlockRestore().add(block, 79, (byte) 0, (long) (duration * (1 + scale)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -207,50 +244,50 @@ public class ArcticArmor extends Skill
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void Damage(UpdateEvent event)
|
public void Damage(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.FAST)
|
if (event.getType() != UpdateType.FAST)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (Player cur : UtilServer.getPlayers())
|
for (Player cur : UtilServer.getPlayers())
|
||||||
{
|
{
|
||||||
if (UtilPlayer.isSpectator(cur))
|
if (UtilPlayer.isSpectator(cur))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (cur.getEyeLocation().getBlock().getType() == Material.ICE)
|
if (cur.getEyeLocation().getBlock().getType() == Material.ICE)
|
||||||
{
|
{
|
||||||
if (!Factory.BlockRestore().contains(cur.getEyeLocation().getBlock()))
|
if (!Factory.BlockRestore().contains(cur.getEyeLocation().getBlock()))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Player damager = null;
|
Player damager = null;
|
||||||
double closest = 0;
|
double closest = 0;
|
||||||
|
|
||||||
for (Player player : _active)
|
for (Player player : _active)
|
||||||
{
|
{
|
||||||
if (player.equals(cur))
|
if (player.equals(cur))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
double dist = UtilMath.offsetSquared(player, cur);
|
double dist = UtilMath.offsetSquared(player, cur);
|
||||||
|
|
||||||
if (dist < 25 && (damager == null || dist < closest))
|
if (dist < 25 && (damager == null || dist < closest))
|
||||||
{
|
{
|
||||||
damager = player;
|
damager = player;
|
||||||
closest = dist;
|
closest = dist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Damage Event
|
//Damage Event
|
||||||
Factory.Damage().NewDamageEvent(cur, damager, null,
|
Factory.Damage().NewDamageEvent(cur, damager, null,
|
||||||
DamageCause.CUSTOM, 2, false, true, false,
|
DamageCause.CUSTOM, 2, false, true, false,
|
||||||
damager == null ? null : damager.getName(), "Arctic Ice");
|
damager == null ? null : damager.getName(), "Arctic Ice");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void Reset(Player player)
|
public void Reset(Player player)
|
||||||
{
|
{
|
||||||
_active.remove(player);
|
_active.remove(player);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue