Thank you to anyone who has already donated - your generous donations helped make three months of treatment possible.
My brother Nate continues to fight stage IV Hodgkin's lymphoma. He's just 31, with a wife and baby girl. They have no active income (since he's been unable to return to work), no insurance, and cannot afford the treatment he needs. Nate and his family need your help. Please consider a donation, every dollar helps. Thanks.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
package com.acyrid.SunSteel.listeners; import com.acyrid.SunSteel.SunSteel; import com.acyrid.SunSteel.utils.SSConfig; import com.acyrid.SunSteel.utils.SSMechanics; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; import java.util.*; import java.util.logging.Level; import static java.lang.Math.abs; public class SSPlayerListener implements Listener{ public SSPlayerListener(SunSteel plugin) { } public static SunSteel plugin; private int lastBlock; private Map<Player, Set<Block>> revertSet = new HashMap<Player,Set<Block>>(); private boolean flightToggle = false; @EventHandler public void onPlayerMove(PlayerMoveEvent event){ Player player = event.getPlayer(); if(SSMechanics.hasSSHoverWater(player)||SSMechanics.hasSSHoverLava(player)){ if(!revertSet.containsKey(player)){ revertSet.put(player,new HashSet<Block>()); } double originalY; Block toBlockLoc = event.getTo().getBlock(); Block fromBlockLoc = event.getFrom().getBlock(); if (!fromBlockLoc.equals(toBlockLoc)){ final int range = 1; for (int dx = -range; dx <=range; dx++) { for (int dz = -range; dz <=range; dz++) { Block block = toBlockLoc.getRelative(dx, -1, dz); if(((block.getType() == Material.WATER || block.getType() == Material.STATIONARY_WATER))&& SSMechanics.hasSSHoverWater(player)){ if(SSMechanics.getNoCheatInstalled()){ plugin.getLogger().log(Level.INFO,"NoCheat installed? " + SSMechanics.getNoCheatInstalled()); player.setAllowFlight(true); plugin.getLogger().log(Level.INFO,"Flight Allowed?? " + player.getAllowFlight()); flightToggle = true; plugin.getLogger().log(Level.INFO,"Flying? " + player.isFlying()); } if(Material.getMaterial(SSMechanics.getWaterWalkBlock()) != null){ player.sendBlockChange(block.getLocation() ,Material.getMaterial(SSMechanics.getWaterWalkBlock()),(byte)0 ); originalY = player.getLocation().getY(); revertSet.get(player).add(block); revertCheck(player, Material.WATER); lastBlock = 1; if(originalY+2 < player.getLocation().getBlockY()){ player.getLocation().setY(originalY); } } }else if(((block.getType() == Material.LAVA || block.getType() == Material.STATIONARY_LAVA))&& SSMechanics.hasSSHoverLava(player)){ if(SSMechanics.getNoCheatInstalled()){ player.setAllowFlight(true); flightToggle = true; } if(Material.getMaterial(SSMechanics.getLavaWalkBlock()) != null){ player.sendBlockChange(block.getLocation() ,Material.getMaterial(SSMechanics.getLavaWalkBlock()),(byte)0 ); originalY = player.getLocation().getY(); revertSet.get(player).add(block); revertCheck(player, Material.LAVA); lastBlock = 2; if(originalY+2 < player.getLocation().getBlockY()){ player.getLocation().setY(originalY); } } } } } } if(lastBlock == 1){ revertCheck(player, Material.WATER); }else if(lastBlock ==2){ revertCheck(player, Material.LAVA); } } if(flightToggle){ player.setAllowFlight(false); if(player.isFlying()){ player.setFlying(false); } } } public void revertCheck(Player player, Material material){ Block playerBlock = player.getLocation().getBlock(); Iterator<Block> iterator = revertSet.get(player).iterator(); while(iterator.hasNext()){ Block nextBlock = iterator.next(); int xCheck = abs(nextBlock.getX()) - abs(playerBlock.getX()); int zCheck = abs(nextBlock.getZ()) - abs(playerBlock.getZ()); if((abs(xCheck) > 3 || abs(zCheck) >3)){ if(!SSMechanics.getNoCheatInstalled()){ player.sendBlockChange(nextBlock.getLocation(), material,(byte)0 ); iterator.remove(); }else if(SSMechanics.getNoCheatInstalled()){ nextBlock.setType(material); iterator.remove(); } } } } } |