Refactoring and code cleanup.
This commit is contained in:
parent
e9027900ce
commit
040377cb36
@ -98,7 +98,7 @@ public class Gate implements ConfigurationSerializable
|
||||
{
|
||||
this.isHidden = isHidden;
|
||||
|
||||
if (isHidden == true) {
|
||||
if (isHidden) {
|
||||
emptyGate();
|
||||
}
|
||||
else if (isOpen()) {
|
||||
@ -117,14 +117,14 @@ public class Gate implements ConfigurationSerializable
|
||||
|
||||
public void setOpen(boolean isOpen) throws Exception
|
||||
{
|
||||
if (isOpen == true && this.isOpen == false) {
|
||||
if (isOpen && !this.isOpen) {
|
||||
findPortalBlocks();
|
||||
|
||||
if (!isHidden) {
|
||||
fillGate();
|
||||
}
|
||||
}
|
||||
else if (isOpen == false && this.isOpen == true) {
|
||||
else if (!isOpen && this.isOpen) {
|
||||
emptyGate();
|
||||
}
|
||||
|
||||
@ -213,7 +213,7 @@ public class Gate implements ConfigurationSerializable
|
||||
}
|
||||
|
||||
|
||||
if (isHidden == false) {
|
||||
if (!isHidden) {
|
||||
for (Location l : gateBlockLocations) {
|
||||
if (l.getBlock().getType() == Material.AIR) {
|
||||
setOpen(false);
|
||||
@ -240,7 +240,7 @@ public class Gate implements ConfigurationSerializable
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Gate(Map<String, Object> map)
|
||||
private Gate(Map<String, Object> map)
|
||||
{
|
||||
try {
|
||||
id = map.get(idKey).toString();
|
||||
@ -272,8 +272,6 @@ public class Gate implements ConfigurationSerializable
|
||||
Plugin.log("NOTE: This gate will be removed from 'gates.yml' and added to 'invalid_gates.yml'!");
|
||||
|
||||
Plugin.getPlugin().getGatesManager().storeInvalidGate(map);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -240,7 +240,7 @@ public class GatesManager
|
||||
fileWriter.close();
|
||||
}
|
||||
catch (IOException e) {
|
||||
Plugin.log("ERROR: Could not save invalid gates to disk. Reason: \n" + e.getStackTrace());
|
||||
Plugin.log("ERROR: Could not save invalid gates to disk. Reason: \n" + Arrays.toString(e.getStackTrace()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -85,7 +85,7 @@ public abstract class BaseCommand
|
||||
}
|
||||
|
||||
boolean senderHasPermission = this.hasPermission();
|
||||
boolean valid = false;
|
||||
boolean valid;
|
||||
|
||||
if (this.senderMustBePlayer && !senderIsPlayer) {
|
||||
sendMessage(ChatColor.RED + "This command can only be used by ingame players.");
|
||||
@ -233,9 +233,4 @@ public abstract class BaseCommand
|
||||
{
|
||||
return getUsageTemplate(withColor, false);
|
||||
}
|
||||
|
||||
protected String getUsageTemplate()
|
||||
{
|
||||
return getUsageTemplate(true);
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ public abstract class BaseLocationCommand extends BaseCommand
|
||||
{
|
||||
protected Location getValidPlayerLocation()
|
||||
{
|
||||
// The player might stand in a halfblock or a sign or whatever
|
||||
// The player might stand in a half block or a sign or whatever
|
||||
// Therefore we load som extra locations and blocks
|
||||
Block playerBlock = player.getLocation().getBlock();
|
||||
Block upBlock = playerBlock.getRelative(BlockFace.UP);
|
||||
|
@ -54,7 +54,7 @@ public class CommandCreate extends BaseLocationCommand
|
||||
gate.setLocation(playerLocation);
|
||||
sendMessage(ChatColor.AQUA + "The gates location has been set to your current location.");
|
||||
}
|
||||
catch (Exception e) {}
|
||||
catch (Exception ignored) {}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,15 +1,12 @@
|
||||
package de.craftinc.gates.commands;
|
||||
|
||||
import de.craftinc.gates.Plugin;
|
||||
import de.craftinc.gates.util.TextUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import de.craftinc.gates.Gate;
|
||||
import de.craftinc.gates.Plugin;
|
||||
import de.craftinc.gates.util.TextUtil;
|
||||
|
||||
public class CommandHelp extends BaseCommand
|
||||
{
|
||||
public static List<List<String>> helpPages;
|
||||
@ -38,8 +35,7 @@ public class CommandHelp extends BaseCommand
|
||||
// put 5 commands on one page
|
||||
helpPages = new ArrayList<List<String>>();
|
||||
|
||||
while (!allUsageStrings.isEmpty())
|
||||
{
|
||||
while (!allUsageStrings.isEmpty()) {
|
||||
int toIndex = allUsageStrings.size() >= 6 ? 5 : allUsageStrings.size();
|
||||
List<String> currentHelpPage = new ArrayList<String>(allUsageStrings.subList(0, toIndex));
|
||||
helpPages.add(currentHelpPage);
|
||||
@ -64,35 +60,29 @@ public class CommandHelp extends BaseCommand
|
||||
shouldPersistToDisk = false;
|
||||
senderMustBePlayer = false;
|
||||
}
|
||||
|
||||
|
||||
public boolean hasPermission(CommandSender sender, Gate gate)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public void perform()
|
||||
{
|
||||
int page = 1;
|
||||
|
||||
public void perform()
|
||||
{
|
||||
int page;
|
||||
|
||||
if (parameters.size() > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (parameters.size() > 0) {
|
||||
try {
|
||||
page = Integer.parseInt(parameters.get(0));
|
||||
}
|
||||
catch (NumberFormatException e)
|
||||
{
|
||||
catch (NumberFormatException e) {
|
||||
// wasn't an integer
|
||||
page = 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
page = 1;
|
||||
}
|
||||
|
||||
sendMessage(TextUtil.titleize("Craft Inc. Gates Help (" + page + "/" + helpPages.size() + ")"));
|
||||
|
||||
page -= 1;
|
||||
if (page < 0 || page >= helpPages.size())
|
||||
{
|
||||
if (page < 0 || page >= helpPages.size()) {
|
||||
sendMessage("This page does not exist");
|
||||
return;
|
||||
}
|
||||
|
@ -282,13 +282,7 @@ public class CommandList extends BaseCommand
|
||||
}
|
||||
|
||||
// cleanup
|
||||
if (linesNecessaryForCurrentGates < linesLeftOnPage) {
|
||||
moreGatesOnLastPage = false;
|
||||
}
|
||||
else {
|
||||
moreGatesOnLastPage = true;
|
||||
}
|
||||
|
||||
moreGatesOnLastPage = linesNecessaryForCurrentGates >= linesLeftOnPage;
|
||||
linesLeftOnPage -= linesToFill;
|
||||
}
|
||||
}
|
||||
@ -310,7 +304,7 @@ public class CommandList extends BaseCommand
|
||||
try {
|
||||
page = new Integer(parameters.get(0));
|
||||
}
|
||||
catch (Exception e) { }
|
||||
catch (Exception ignored) { }
|
||||
|
||||
return page;
|
||||
}
|
||||
|
@ -1,52 +0,0 @@
|
||||
package de.craftinc.gates.listeners;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockPhysicsEvent;
|
||||
|
||||
|
||||
// TODO: remove this class!!!
|
||||
|
||||
|
||||
public class PluginBlockListener implements Listener
|
||||
{
|
||||
@EventHandler(priority = EventPriority.NORMAL)
|
||||
public void onBlockPhysics(BlockPhysicsEvent event)
|
||||
{
|
||||
if (event.isCancelled())
|
||||
return;
|
||||
|
||||
if (event.getBlock().getType() != Material.PORTAL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isBlockInPortal(event.getBlock())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isBlockInPortal(Block block)
|
||||
{
|
||||
if (block.getRelative(BlockFace.UP).getType() == Material.AIR) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (block.getRelative(BlockFace.DOWN).getType() == Material.AIR) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( block.getRelative(BlockFace.NORTH).getType() != Material.AIR && block.getRelative(BlockFace.SOUTH).getType() != Material.AIR ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( block.getRelative(BlockFace.WEST).getType() != Material.AIR && block.getRelative(BlockFace.EAST).getType() != Material.AIR ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
package de.craftinc.gates.listeners;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityPortalEnterEvent;
|
||||
import org.bukkit.event.player.PlayerPortalEvent;
|
||||
|
||||
import de.craftinc.gates.Gate;
|
||||
import de.craftinc.gates.util.GateUtil;
|
||||
|
||||
|
||||
public class PluginPortalListener implements Listener
|
||||
{
|
||||
private HashMap<Player, Gate> currentGateAtEvent = new HashMap<Player, Gate>();
|
||||
|
||||
// TODO: check if this class can be deleted!
|
||||
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL)
|
||||
public void onPlayerPortal(PlayerPortalEvent event)
|
||||
{
|
||||
if (event.isCancelled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Location playerLocation = event.getPlayer().getLocation();
|
||||
Gate gateAtLocation = GateUtil.getGateAtPlayerLocation(playerLocation);
|
||||
|
||||
// If the player's gamemode is creative no gate might be found!
|
||||
// It seems like players get teleported on a move event when the 'to' location is
|
||||
// inside a gate. This meens the location obtained earlier is NOT inside a gate.
|
||||
if (gateAtLocation == null && event.getPlayer().getGameMode() == GameMode.CREATIVE)
|
||||
{
|
||||
gateAtLocation = this.currentGateAtEvent.get(event.getPlayer());
|
||||
}
|
||||
|
||||
if (gateAtLocation != null)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
||||
this.currentGateAtEvent.put(event.getPlayer(), null);
|
||||
}
|
||||
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL)
|
||||
public void onEntityPortalEnterEvent(EntityPortalEnterEvent event)
|
||||
{
|
||||
if (event.getEntity() instanceof Player)
|
||||
{
|
||||
Player player = (Player)event.getEntity();
|
||||
|
||||
if (player.getGameMode() == GameMode.CREATIVE)
|
||||
{
|
||||
if (this.currentGateAtEvent.get(player) != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Location eventLocation = event.getLocation();
|
||||
Gate closestGate = GateUtil.closestGate(eventLocation);
|
||||
|
||||
if (closestGate != null)
|
||||
{
|
||||
// Make sure gate and event locations are on the same height (y-value).
|
||||
// Otherwise the distance will be messed up when players are flying.
|
||||
// FIX ME: this could potentially let a nearby nether portal fail!
|
||||
eventLocation.setY(closestGate.getLocation().getY());
|
||||
|
||||
double distToClosestGate = closestGate.getLocation().distance(eventLocation);
|
||||
|
||||
if (distToClosestGate < 2.0) {
|
||||
this.currentGateAtEvent.put(player, closestGate);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.currentGateAtEvent.put(player, null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,87 +0,0 @@
|
||||
package de.craftinc.gates.util;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.BlockFace;
|
||||
|
||||
import de.craftinc.gates.Gate;
|
||||
import de.craftinc.gates.Plugin;
|
||||
|
||||
public class GateUtil
|
||||
{
|
||||
public static Gate closestGate(Location location)
|
||||
{
|
||||
Gate gate = null;
|
||||
double minmalDist = Double.MAX_VALUE;
|
||||
|
||||
for (Gate g : Plugin.getPlugin().getGatesManager().allGates()) {
|
||||
|
||||
if (!g.getLocation().getWorld().equals(location.getWorld()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
double tempDist = g.getLocation().distance(location);
|
||||
|
||||
if (tempDist < minmalDist)
|
||||
{
|
||||
gate = g;
|
||||
minmalDist = tempDist;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return gate;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static Gate getGateAtPlayerLocation(Location location)
|
||||
{
|
||||
Gate gate = null;
|
||||
World playerWorld = location.getWorld();
|
||||
|
||||
// players are sometime stuck into the ground
|
||||
Location locationUp = location.getBlock().getRelative(BlockFace.UP).getLocation();
|
||||
|
||||
for (Gate g : Plugin.getPlugin().getGatesManager().allGates())
|
||||
{
|
||||
if (gate != null)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Check if the gate is open and useable
|
||||
if (g.getLocation() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
World gateWorld = g.getLocation().getWorld();
|
||||
|
||||
if (!g.isOpen() || !gateWorld.equals(playerWorld)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// Check if the location matches
|
||||
for (Location l: g.getGateBlockLocations()) {
|
||||
|
||||
if (LocationUtil.locationsAreAtSamePositions(l, location) || LocationUtil.locationsAreAtSamePositions(l, locationUp))
|
||||
{
|
||||
// Check if the gate is still valid
|
||||
try {
|
||||
g.validate();
|
||||
|
||||
gate = g;
|
||||
break;
|
||||
}
|
||||
catch (Exception e2) {
|
||||
break; // do nothing - gate got closed
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return gate;
|
||||
}
|
||||
}
|
@ -1,9 +1,8 @@
|
||||
package de.craftinc.gates.util;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TextUtil
|
||||
{
|
||||
@ -29,7 +28,7 @@ public class TextUtil
|
||||
|
||||
|
||||
/**
|
||||
* Joins all emements of list into a single string, sperating the original strings with glue.
|
||||
* Joins all elements of list into a single string, separating the original strings with glue.
|
||||
*/
|
||||
public static String implode(List<String> list, String glue)
|
||||
{
|
||||
@ -45,24 +44,6 @@ public class TextUtil
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Joins all emements of list into a single string.
|
||||
*/
|
||||
public static String implode(List<String> list) {
|
||||
return implode(list, "");
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static String getMaterialName(Material material)
|
||||
{
|
||||
String ret = material.toString();
|
||||
ret = ret.replace('_', ' ');
|
||||
ret = ret.toLowerCase();
|
||||
|
||||
return ret.substring(0, 1).toUpperCase() + ret.substring(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user