mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-11 03:30:10 +00:00
WaterCore
Some more Waterbending Methods (This is proving to be a pain)
This commit is contained in:
parent
43dcd5aae5
commit
c87d1c67cd
6 changed files with 196 additions and 13 deletions
|
@ -5,9 +5,9 @@
|
|||
<classpathentry kind="lib" path="C:/Users/Shawn/Documents/Bending Plugins/TagAPI.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="lib" path="C:/Users/Shawn/Documents/LocalServer/plugins/ProjectKorra/Abilities/RaiseEarth.jar"/>
|
||||
<classpathentry kind="lib" path="C:/Users/Shawn/Documents/LocalServer/plugins/ProjectKorra/Abilities/WaterManipulation.jar"/>
|
||||
<classpathentry kind="lib" path="C:/Users/Shawn/Documents/LocalServer/plugins/ProjectKorra/Abilities/OctopusForm.jar"/>
|
||||
<classpathentry kind="lib" path="C:/Users/Shawn/Documents/LocalServer/plugins/ProjectKorra/Abilities/PhaseChange.jar"/>
|
||||
<classpathentry kind="lib" path="C:/Users/Shawn/Documents/LocalServer/plugins/ProjectKorra/Abilities/WaterSpout.jar"/>
|
||||
<classpathentry kind="lib" path="C:/Users/Shawn/Documents/LocalServer/plugins/ProjectKorra/Abilities/WaterManipulation.jar"/>
|
||||
<classpathentry kind="lib" path="C:/Users/Shawn/Documents/LocalServer/plugins/ProjectKorra/Abilities/Surge.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
|
|
@ -32,7 +32,7 @@ import org.bukkit.util.Vector;
|
|||
import com.projectkorra.ProjectKorra.Ability.AbilityModule;
|
||||
import com.projectkorra.ProjectKorra.Ability.AbilityModuleManager;
|
||||
import com.projectkorra.ProjectKorra.earthbending.EarthPassive;
|
||||
import com.projectkorra.abilities.PhaseChange.FreezeMelt;
|
||||
import com.projectkorra.ProjectKorra.waterbending.WaterCore;
|
||||
import com.projectkorra.abilities.RaiseEarth.EarthColumn;
|
||||
|
||||
public class Methods {
|
||||
|
@ -541,7 +541,7 @@ public class Methods {
|
|||
boolean adjacent = false;
|
||||
if (Methods.isAbilityInstalled("PhaseChange", "orion304")) {
|
||||
for (BlockFace face : faces) {
|
||||
if (FreezeMelt.frozenblocks.containsKey((block.getRelative(face))))
|
||||
if (WaterCore.frozenblocks.containsKey((block.getRelative(face))))
|
||||
adjacent = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,10 +11,15 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockFadeEvent;
|
||||
import org.bukkit.event.block.BlockFormEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockPhysicsEvent;
|
||||
import org.bukkit.event.entity.EntityCombustEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
@ -24,7 +29,10 @@ import com.projectkorra.ProjectKorra.chiblocking.ChiPassive;
|
|||
import com.projectkorra.ProjectKorra.earthbending.EarthPassive;
|
||||
import com.projectkorra.ProjectKorra.firebending.Enflamed;
|
||||
import com.projectkorra.ProjectKorra.firebending.FireStream;
|
||||
import com.projectkorra.ProjectKorra.waterbending.WaterCore;
|
||||
import com.projectkorra.ProjectKorra.waterbending.WaterPassive;
|
||||
import com.projectkorra.abilities.Surge.WaterWall;
|
||||
import com.projectkorra.abilities.Surge.WaveAbility;
|
||||
|
||||
public class PKListener implements Listener {
|
||||
|
||||
|
@ -34,6 +42,17 @@ public class PKListener implements Listener {
|
|||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
public void onBlockFlowTo(BlockFromToEvent event) {
|
||||
Block toblock = event.getToBlock();
|
||||
Block fromblock = event.getBlock();
|
||||
if (Methods.isWater(fromblock)) {
|
||||
if (!event.isCancelled()) {
|
||||
event.setCancelled(!WaterCore.canFlowFromTo(fromblock, toblock));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent e) {
|
||||
Methods.createBendingPlayer(e.getPlayer().getUniqueId(), e.getPlayer().getName());
|
||||
|
@ -115,6 +134,41 @@ public class PKListener implements Listener {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
public void onBlockBreak(BlockBreakEvent event) {
|
||||
Block block = event.getBlock();
|
||||
Player player = event.getPlayer();
|
||||
if (Methods.isAbilityInstalled("Surge", "orion304")) {
|
||||
if (WaterWall.wasBrokenFor(player, block)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (WaterCore.waterwallblocks.containsKey(block)) {
|
||||
WaterWall.thaw(block);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if (!WaveAbility.canThaw(block)) {
|
||||
WaveAbility.thaw(block);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onEntityExplode(EntityExplodeEvent event) {
|
||||
for (Block block: event.blockList()) {
|
||||
if (Methods.isAbilityInstalled("Surge", "orion304")) {
|
||||
if (WaterCore.waterwallblocks.containsKey(block)) {
|
||||
block.setType(Material.AIR);
|
||||
}
|
||||
if (!WaveAbility.canThaw(block)) {
|
||||
WaveAbility.thaw(block);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDamage(EntityDamageEvent e) {
|
||||
Entity en = e.getEntity();
|
||||
|
@ -145,6 +199,18 @@ public class PKListener implements Listener {
|
|||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
public void onBlockPhysics(BlockPhysicsEvent event) {
|
||||
Block block = event.getBlock();
|
||||
event.setCancelled(!WaterCore.canPhysicsChange(block));
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
public void onBlockForm(BlockFormEvent event) {
|
||||
if (!WaterCore.canPhysicsChange(event.getBlock()))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
public void onNameTag(AsyncPlayerReceiveNameTagEvent e) {
|
||||
List<Element> elements = Methods.getBendingPlayer(e.getNamedPlayer().getName()).getElements();
|
||||
if (elements.size() > 1)
|
||||
|
|
|
@ -20,7 +20,6 @@ public class ProjectKorra extends JavaPlugin {
|
|||
plugin = this;
|
||||
|
||||
new Methods(this);
|
||||
getServer().getPluginManager().registerEvents(new PKListener(this), this);
|
||||
|
||||
new Commands(this);
|
||||
new AbilityModuleManager(this);
|
||||
|
@ -38,6 +37,7 @@ public class ProjectKorra extends JavaPlugin {
|
|||
for (Player player: Bukkit.getOnlinePlayers()) {
|
||||
Methods.createBendingPlayer(player.getUniqueId(), player.getName());
|
||||
}
|
||||
getServer().getPluginManager().registerEvents(new PKListener(this), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
118
src/com/projectkorra/ProjectKorra/waterbending/WaterCore.java
Normal file
118
src/com/projectkorra/ProjectKorra/waterbending/WaterCore.java
Normal file
|
@ -0,0 +1,118 @@
|
|||
package com.projectkorra.ProjectKorra.waterbending;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.projectkorra.ProjectKorra.Methods;
|
||||
import com.projectkorra.ProjectKorra.TempBlock;
|
||||
import com.projectkorra.abilities.Surge.WaveAbility;
|
||||
import com.projectkorra.abilities.WaterSpout.WaterSpoutAbility;
|
||||
|
||||
public class WaterCore {
|
||||
|
||||
public static ConcurrentHashMap<Block, Byte> frozenblocks = new ConcurrentHashMap<Block, Byte>();
|
||||
public static ConcurrentHashMap<Block, Block> waterSpoutAffectedBlocks = new ConcurrentHashMap<Block, Block>();
|
||||
public static ConcurrentHashMap<Block, Block> waterManipulationAffectedBlocks = new ConcurrentHashMap<Block, Block>();
|
||||
|
||||
public static ConcurrentHashMap<Block, Block> waterWallAffectedBlocks = new ConcurrentHashMap<Block, Block>();
|
||||
public static ConcurrentHashMap<Block, Player> waterwallblocks = new ConcurrentHashMap<Block, Player>();
|
||||
|
||||
|
||||
|
||||
public static void freeze(Player player, Block block) {
|
||||
// if (Methods.isRegionProtectedFromBuild(player, Abilities.PhaseChange,
|
||||
// block.getLocation()))
|
||||
// return;
|
||||
if (TempBlock.isTempBlock(block))
|
||||
return;
|
||||
byte data = block.getData();
|
||||
block.setType(Material.ICE);
|
||||
frozenblocks.put(block, data);
|
||||
}
|
||||
|
||||
public static void removeSpouts(Location loc0, double radius,
|
||||
Player sourceplayer) {
|
||||
if (!Methods.isAbilityInstalled("WaterSpout", "orion304")) return;
|
||||
for (Player player : WaterSpoutAbility.instances.keySet()) {
|
||||
if (!player.equals(sourceplayer)) {
|
||||
Location loc1 = player.getLocation().getBlock().getLocation();
|
||||
loc0 = loc0.getBlock().getLocation();
|
||||
double dx = loc1.getX() - loc0.getX();
|
||||
double dy = loc1.getY() - loc0.getY();
|
||||
double dz = loc1.getZ() - loc0.getZ();
|
||||
|
||||
double distance = Math.sqrt(dx * dx + dz * dz);
|
||||
|
||||
if (distance <= radius && dy > 0 && dy < WaterSpoutAbility.defaultheight)
|
||||
WaterSpoutAbility.instances.get(player).remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void thaw(Block block) {
|
||||
if (frozenblocks.containsKey(block)) {
|
||||
byte data = frozenblocks.get(block);
|
||||
frozenblocks.remove(block);
|
||||
block.setType(Material.WATER);
|
||||
block.setData(data);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean canFlowFromTo(Block from, Block to) {
|
||||
if (WaterCore.waterManipulationAffectedBlocks.containsKey(to) || WaterCore.waterManipulationAffectedBlocks.containsKey(from)) {
|
||||
return false;
|
||||
}
|
||||
if (WaterCore.waterSpoutAffectedBlocks.containsKey(to) || WaterCore.waterSpoutAffectedBlocks.containsKey(from)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (waterWallAffectedBlocks.containsKey(to)
|
||||
|| waterWallAffectedBlocks.containsKey(from)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (waterwallblocks.containsKey(to)
|
||||
|| waterwallblocks.containsKey(from)) {
|
||||
return false;
|
||||
}
|
||||
// if (WaveAbility.isBlockWave(to) || WaveAbility.isBlockWave(from)) {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
if (TempBlock.isTempBlock(to) || TempBlock.isTempBlock(from)) {
|
||||
return false;
|
||||
}
|
||||
if (Methods.isAdjacentToFrozenBlock(to)
|
||||
|| Methods.isAdjacentToFrozenBlock(from)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean canPhysicsChange(Block block) {
|
||||
if (waterManipulationAffectedBlocks.containsKey(block))
|
||||
return false;
|
||||
if (Methods.isAbilityInstalled("WaterSpout", "orion304")) {
|
||||
if (waterSpoutAffectedBlocks.containsKey(block))
|
||||
return false;
|
||||
}
|
||||
if (Methods.isAbilityInstalled("Surge", "orion304")) {
|
||||
if (waterWallAffectedBlocks.containsKey(block))
|
||||
return false;
|
||||
if (waterwallblocks.containsKey(block))
|
||||
return false;
|
||||
// if (WaveAbility.isBlockWave(block))
|
||||
// return false;
|
||||
}
|
||||
if (TempBlock.isTempBlock(block))
|
||||
return false;
|
||||
if (TempBlock.isTouchingTempBlock(block))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -15,7 +15,7 @@ import com.projectkorra.ProjectKorra.Methods;
|
|||
import com.projectkorra.ProjectKorra.TempBlock;
|
||||
import com.projectkorra.abilities.OctopusForm.OctopusFormAbility;
|
||||
import com.projectkorra.abilities.Surge.WaterWall;
|
||||
import com.projectkorra.abilities.Surge.Wave;
|
||||
import com.projectkorra.abilities.Surge.WaveAbility;
|
||||
import com.projectkorra.abilities.WaterManipulation.WaterManipulationAbility;
|
||||
|
||||
public class WaterReturn {
|
||||
|
@ -156,7 +156,7 @@ public class WaterReturn {
|
|||
|
||||
private static boolean isBending(Player player) {
|
||||
if (Methods.isAbilityInstalled("WaterManipulation", "orion304")) {
|
||||
for (int id : WaterManipulationAbility .instances.keySet()) {
|
||||
for (int id : WaterManipulationAbility.instances.keySet()) {
|
||||
WaterManipulationAbility.instances.get(id);
|
||||
if (WaterManipulationAbility.player.equals(player))
|
||||
return true;
|
||||
|
@ -167,11 +167,10 @@ public class WaterReturn {
|
|||
return true;
|
||||
}
|
||||
if (Methods.isAbilityInstalled("Surge", "orion304")) {
|
||||
for (int id : Wave.instances.keySet()) {
|
||||
if (Wave.instances.get(id).player.equals(player))
|
||||
for (int id : WaveAbility.instances.keySet()) {
|
||||
if (WaveAbility.instances.get(id).player.equals(player))
|
||||
return true;
|
||||
}
|
||||
|
||||
for (int id : WaterWall.instances.keySet()) {
|
||||
if (WaterWall.instances.get(id).player.equals(player))
|
||||
return true;
|
||||
|
|
Loading…
Reference in a new issue