diff --git a/LICENSE.md b/LICENSE.md
index 1700fb1..96cce5e 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -5,6 +5,6 @@ full text of GPLv3 can be found in the file "GPLv3"
# LGPLv3
-* src/main/java/de/craftinc/borderprotection/LocationSerializer.java
+* src/main/java/de/craftinc/borderprotection/util/LocationSerializer2D.java
full text of LGPLv3 can be found in the file "LGPLv3"
diff --git a/pom.xml b/pom.xml
index af3d231..2bd699d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,16 +4,16 @@
4.0.0
de.craftinc
CraftincBorderProtection
- Craft Inc. BorderProtection
+ CraftInc-BorderProtection
jar
- 2.0-beta
+ 2.0
UTF-8
- ${project.name} ${project.version}
+ ${project.name}-${project.version}
src/main/resources
@@ -55,27 +55,27 @@
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.10.2-R0.1-SNAPSHOT
+ provided
+
+
org.bukkit
bukkit
- 1.6.4-R2.0
- jar
- compile
-
-
- org.bukkit
- craftbukkit
- 1.6.4-R2.0
- jar
- compile
+ 1.10.2-R0.1-SNAPSHOT
+ provided
-
-
-
- bukkit-repo
- http://repo.bukkit.org/content/groups/public
-
-
diff --git a/scripts/minecraft.sh b/scripts/minecraft.sh
index 756ad10..7416a7b 100755
--- a/scripts/minecraft.sh
+++ b/scripts/minecraft.sh
@@ -1,160 +1,202 @@
#!/bin/bash
-SCRIPT_DIR=$(readlink -f $(dirname "$0"))
-SERVICE='craftbukkit*.jar'
-#USERNAME="minecraft"
-CPU_COUNT=2
-BUKKIT="$SCRIPT_DIR/../target/lib/$SERVICE"
-INVOCATION="java -Xmx1000M -Xms300M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $BUKKIT nogui"
-MCPATH="$SCRIPT_DIR/../bukkit-testserver"
+# Craft Inc. BorderProtection
+# Copyright (C) 2016 Paul Schulze
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
-if [ ! -d "$MCPATH" ]; then
- mkdir -p "$MCPATH"
+
+SERVICE='craftbukkit-1.10.2.jar'
+
+# numbers of CPU cores; used only for the parallel garbage collector threads
+CPU_COUNT=8
+
+# maximum memory which the JAVA VM is allowed to allocate (M is megabyte)
+XMX=-Xmx10000M
+
+# initial memory which the JAVA VM is allocating (M is megabyte)
+XMS=-Xms3000M
+
+# Replace with path which contains your craftbukkit.jar
+MCPATH="$(dirname "$0")/../bukkit-testserver"
+
+
+
+# ========================================================================
+# == Don't change anything below this line unless you know what you do. ==
+# ========================================================================
+BUKKIT="$MCPATH/$SERVICE"
+INVOCATION="java $XMX $XMS -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $BUKKIT nogui"
+
+if [[ "$MCPATH" == '/my/path/to/craftbukkit' ]]; then
+ echo "Please configure the \"MCPATH\" variable in the $0 file." >&2
+ exit 1
fi
-ME=$(whoami)
-as_user() {
- #if [ $ME == $USERNAME ] ; then
- bash -c "$1"
- #else
- #su - $USERNAME -c "$1"
- #fi
+SCREEN_NAME="$(cat "$MCPATH/screen_name" 2> /dev/null)"
+if [[ -z "$SCREEN_NAME" ]]; then
+ SCREEN_NAME="minecraft.$(head -c12 /dev/urandom | xxd -p)"
+ echo -n "$SCREEN_NAME" > "$MCPATH/screen_name"
+fi
+
+psgrep() {
+ psgreptmp=$(mktemp)
+
+ ps auxww > "$psgreptmp"
+ grep -v "$$" "$psgreptmp" | egrep --color=auto -i "$1"
+ rm "$psgreptmp"
+}
+
+send_to_screen() {
+ screen -p 0 -S "$SCREEN_NAME" -X stuff "$1
+"
+}
+
+mc_service_running() {
+ psgrep "$SERVICE" | grep -v -i 'screen' | grep 'java' | grep -- "$XMX" | grep -- "$XMS" | grep "$BUKKIT" > /dev/null
+ return $?
}
mc_start() {
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "Tried to start but $SERVICE was already running!"
- else
- echo "$SERVICE was not running... starting."
+ if ! mc_status; then
+ echo "Starting..."
cd "$MCPATH"
- as_user "cd "$MCPATH" && screen -dmS minecraft $INVOCATION"
- sleep 7
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "$SERVICE is now running."
- else
- echo "Could not start $SERVICE."
- fi
+ screen -dmS "$SCREEN_NAME" $INVOCATION
+ sleep 2
+ mc_status
fi
}
mc_stop() {
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "$SERVICE is running... stopping."
- as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
- sleep 2
- as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
- sleep 6
- else
- echo "$SERVICE was not running."
- fi
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "$SERVICE could not be shut down... still running."
- else
- echo "$SERVICE is shut down."
+ if mc_status; then
+# echo "Sending message to users..."
+# send_to_screen 'say SERVER SHUTTING DOWN IN 10 SECONDS!'
+# sleep 10
+ echo "Saving..."
+ send_to_screen 'save-all'
+ sleep 1
+ echo "Stopping..."
+ send_to_screen 'stop'
+ sleep 3
+ mc_status
fi
+
}
mc_save() {
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "$SERVICE is running... saving."
- as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
- else
- echo "$SERVICE was not running."
+ if mc_status; then
+ echo "Saving..."
+ send_to_screen 'save-all'
fi
}
-mc_reload() {
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "$SERVICE is running... reloading."
- as_user "screen -p 0 -S minecraft -X eval 'stuff \"reload\"\015'"
+
+mc_restart_or_start() {
+ if mc_service_running; then
+ mc_stop
+ sleep 1
+ mc_start
else
- echo "$SERVICE was not running."
+ mc_start
fi
}
-mc_reload_or_start() {
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "$SERVICE was already running! Doing a reload now!"
- mc_reload
- else
- echo "$SERVICE was not running... starting."
- cd "$MCPATH"
- as_user "cd \"$MCPATH\" && screen -dmS minecraft $INVOCATION"
- sleep 7
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "$SERVICE is now running."
- else
- echo "Could not start $SERVICE."
+mc_reset_permissions() {
+ if mc_status; then
+ echo "Unbanning ddidderr..."
+ send_to_screen 'pardon ddidderr'
+ echo "Unbanning mice_on_drugs..."
+ send_to_screen 'pardon mice_on_drugs'
+ echo "Unbanning Mochaccino..."
+ send_to_screen 'pardon Mochaccino'
+
+ echo "ddidder -> admin"
+ send_to_screen 'pex user ddidderr group set admin'
+ echo "mice_on_drugs -> mod"
+ send_to_screen 'pex user mice_on_drugs group set mod'
+ echo "Mochaccino -> mod"
+ send_to_screen 'pex user Mochaccino group set mod'
+
+ echo "Reloading permissions..."
+ send_to_screen 'pex reload'
+ echo "DONE"
+ fi
+}
+
+mc_custom_command() {
+ if mc_status; then
+ if [[ -z "$1" ]]; then
+ echo "You must specify a command." >&2
+ exit 1
fi
+
+ echo "Trying to issue command: \"$1\""
+ send_to_screen "$1"
+ tail -fn50 "$MCPATH/logs/latest.log"
fi
}
-mc_ddidderr_admin() {
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "$SERVICE is running... making ddidder to admin and reloading permissions."
- as_user "screen -p 0 -S minecraft -X eval 'stuff \"pex user ddidderr group set admin\"\015'"
- as_user "screen -p 0 -S minecraft -X eval 'stuff \"pex reload\"\015'"
+mc_status() {
+ if mc_service_running; then
+ echo "$SERVICE is running."
+ return 0
else
- echo "$SERVICE was not running."
+ echo "$SERVICE is stopped."
+ return 1
+ fi
+}
+
+mc_online() {
+ if mc_status; then
+ send_to_screen 'list'
+ sleep 2s
+ tac "$MCPATH/logs/latest.log" | egrep -om 1 "There are.*players online"
fi
}
case "$1" in
start)
- echo "Starting Minecraft..."
mc_start
- echo "DONE"
;;
stop)
- echo "Stopping Minecraft..."
- as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN!\"\015'"
mc_stop
- echo "DONE"
;;
restart)
- as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER REBOOT IN 10 SECONDS.\"\015'"
$0 stop
- sleep 1
+ sleep 2
$0 start
;;
- reload)
- mc_reload
+ restart_or_start)
+ mc_restart_or_start
;;
- reload_or_start)
- echo "Starting or reloading Minecraft..."
- mc_reload_or_start
- echo "DONE"
+ reset_permissions)
+ mc_reset_permissions
;;
- ddidderr_admin)
- mc_ddidderr_admin
+ custom)
+ mc_custom_command "${*:2}"
;;
- connected)
- as_user "screen -p 0 -S minecraft -X eval 'stuff \"who\"\015'"
- sleep 2s
- tac "$MCPATH"/server.log | grep -m 1 "Connected"
+ online)
+ mc_online
;;
status)
- if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
- then
- echo "$SERVICE is running."
- else
- echo "$SERVICE is not running."
- fi
+ mc_status
;;
save)
mc_save
;;
*)
- echo "Usage: /etc/init.d/minecraft {start|stop|restart|connected|status}"
+ echo "Usage: $0 {start|stop|restart|save|online|status|reset_permissions}"
exit 1
;;
esac
diff --git a/scripts/test-deployment.sh b/scripts/test-deployment.sh
index ebdf61f..a7c6310 100755
--- a/scripts/test-deployment.sh
+++ b/scripts/test-deployment.sh
@@ -1,29 +1,57 @@
#!/bin/bash
+# Craft Inc. BorderProtection
+# Copyright (C) 2016 Paul Schulze
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
SCRIPT_DIR="$(dirname "$0")"
-DEVELOPER=$(whoami)
+DEVELOPER="$(whoami)"
-if [ $DEVELOPER = "tobi" ]; then
- BUKKIT_DIR="$HOME/minecraft/testbuk"
- PLUGIN_DIR="$HOME/minecraft/testbuk/plugins"
- START_STOP_SCRIPT="$BUKKIT_DIR/../minecraft.sh"
-else
- BUKKIT_DIR="$SCRIPT_DIR/../bukkit-testserver"
- PLUGIN_DIR="$SCRIPT_DIR/../bukkit-testserver/plugins"
- START_STOP_SCRIPT="$SCRIPT_DIR/minecraft.sh"
+BUKKIT_DIR="$SCRIPT_DIR/../bukkit-testserver"
+PLUGIN_DIR="$SCRIPT_DIR/../bukkit-testserver/plugins"
+START_STOP_SCRIPT="$SCRIPT_DIR/minecraft.sh"
+BUILD_TOOLS_DIR="$BUKKIT_DIR/buildtools"
+
+mkdir -p "$BUILD_TOOLS_DIR"
+# get build tools
+if [ ! -f "$BUILD_TOOLS_DIR/BuildTools.jar" ]; then
+ wget -O- 'https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar' > "$BUILD_TOOLS_DIR/BuildTools.jar"
fi
+cp -f "$BUILD_TOOLS_DIR"/craftbukkit*.jar "$BUKKIT_DIR/"
+
+# run build tools
+if [ ! -f "$BUKKIT_DIR"/craftbukkit*.jar ]; then
+ cd "$BUILD_TOOLS_DIR"
+ java -jar ./BuildTools.jar
+fi
+
+echo 'eula=TRUE' > "$BUKKIT_DIR/eula.txt"
+
# TODO: This is a bad solution! Maven should write necessary information into an extra file.
ARTIFACT_ID="$(grep -C5 'de.craftinc' "$SCRIPT_DIR/../pom.xml" | grep '' | sed 's/[ \t]*//g' | sed 's/<\/name>[ \t]*//g')"
# TODO: This is a bad solution! Maven should write necessary information into an extra file.
VERSION="$(grep -C5 'de.craftinc' "$SCRIPT_DIR/../pom.xml" | grep '' | sed 's/[ \t]*//g' | sed 's/<\/version>[ \t]*//g')"
+rm -rf "$PLUGIN_DIR"
mkdir -p "$PLUGIN_DIR"
-cp "$SCRIPT_DIR/../target/$ARTIFACT_ID $VERSION".jar "$PLUGIN_DIR/"
+cp "$SCRIPT_DIR/../target/$ARTIFACT_ID-$VERSION".jar "$PLUGIN_DIR/"
echo -e "ddidderr\nmice_on_drugs\nMochaccino" > "$BUKKIT_DIR/ops.txt"
-$START_STOP_SCRIPT reload_or_start
+$START_STOP_SCRIPT restart_or_start
diff --git a/src/main/java/de/craftinc/borderprotection/Messages.java b/src/main/java/de/craftinc/borderprotection/Messages.java
index cc04cb3..da79e47 100644
--- a/src/main/java/de/craftinc/borderprotection/Messages.java
+++ b/src/main/java/de/craftinc/borderprotection/Messages.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -65,21 +65,21 @@ public class Messages
return sb.toString();
}
- private static String borderExplanation =
+ private static final String borderExplanation =
"One day the holy mods and administrators will expand the border. It is then your mission to explore " +
"strange new worlds, to seek out new life and new civilizations, to boldly go where no one has gone before.";
- public static String borderMessage =
+ public static final String borderMessage =
ChatColor.YELLOW + "Sorry Dude! " +
ChatColor.WHITE + "This is the border... the final frontier! " + borderExplanation + NEWLINE +
makeCmd("/cibp get", "shows the borders of the current world");
- public static String borderTeleportMessage =
+ public static final String borderTeleportMessage =
ChatColor.YELLOW + "Sorry Dude! " +
ChatColor.WHITE + "You cannot teleport outside the border. " + borderExplanation + NEWLINE +
makeCmd("/cibp get", "shows the borders of the current world");
- public static String helpGeneral =
+ public static final String helpGeneral =
ChatColor.GREEN + pluginName + " - Usage:" + NEWLINE +
ChatColor.WHITE + "Commands are always related to the current world." + NEWLINE +
makeCmd("help", "shows this help") +
@@ -90,15 +90,14 @@ public class Messages
makeCmd("set", "Square border with distance (d) from 0,0.", "r", "") +
makeCmd("set", "Rectangle defined by two points. Point=x,z.", "r", "", "") +
makeCmd("set", "Circle border with radius from 0,0.", "c", "") +
- makeCmd("set", "Circle defined by center and radius. Center=x,z.", "c", "", "") +
- makeCmd("checkversion", "Checks for a newer version.");
+ makeCmd("set", "Circle defined by center and radius. Center=x,z.", "c", "", "");
- public static String borderCreationSuccessful
+ public static final String borderCreationSuccessful
= ChatColor.YELLOW + "New border was set " +
ChatColor.GREEN + "successfully" +
ChatColor.YELLOW + "!";
- public static String commandIssuedByNonPlayer
+ public static final String commandIssuedByNonPlayer
= ChatColor.RED + "Only a player can use " + pluginName + " commands!";
public static String borderInfo( String worldName, Border border )
@@ -115,56 +114,41 @@ public class Messages
ChatColor.WHITE + "Border is " + borderEnabled + ChatColor.WHITE + ".";
}
- public static String borderInfoNoBorderSet =
+ public static final String borderInfoNoBorderSet =
ChatColor.YELLOW + "No border in this world.";
- public static String noPermissionSet =
+ public static final String noPermissionSet =
ChatColor.RED + "Sorry, you don't have permission to change the border.";
- public static String noPermissionCheckversion =
- ChatColor.RED + "Sorry, you don't have permission to check for new versions.";
-
- public static String borderEnabled =
+ public static final String borderEnabled =
ChatColor.YELLOW + "Border enabled.";
- public static String borderDisabled =
+ public static final String borderDisabled =
ChatColor.YELLOW + "Border disabled.";
- public static String borderSaveException =
+ public static final String borderSaveException =
ChatColor.RED + "Error: Could not save border on server. After the next reload this border will be lost!";
- public static String borderEnableDisableException =
+ public static final String borderEnableDisableException =
ChatColor.RED +
"Error: Could not save border state on server. After the next reload this border state will be lost!";
- public static String generationCanceled =
+ public static final String generationCanceled =
ChatColor.GREEN + "World generation canceled!";
- public static String generationNotCanceled =
+ public static final String generationNotCanceled =
ChatColor.RED + "No world generation happening. Cannot cancel!";
- public static String generationAlreadyInProgress =
- ChatColor.YELLOW + "World generation is already in progress. It will continue after all players are logged out.";
+ public static final String generationAlreadyInProgress =
+ ChatColor.YELLOW +
+ "World generation is already in progress. It will continue after all players are logged out.";
- public static String generationStarted =
+ public static final String generationStarted =
ChatColor.GREEN + "World generation will start after all players left the server.";
- public static String generationCouldNotBeStarted =
+ public static final String generationCouldNotBeStarted =
ChatColor.RED + "Could not start world generation! Is there a border?";
- public static String updateMessage( String newVersion, String curVersion )
- {
- return ChatColor.RED + pluginName + ": New version available!" + NEWLINE +
- ChatColor.YELLOW + "Current version: " + ChatColor.WHITE + curVersion + NEWLINE +
- ChatColor.YELLOW + "New version: " + ChatColor.WHITE + newVersion + NEWLINE +
- ChatColor.YELLOW + "Please visit:" + NEWLINE +
- ChatColor.AQUA + "http://dev.bukkit.org/bukkit-mods/craftinc-borderprotection" + NEWLINE +
- ChatColor.YELLOW + "to get the latest version!";
- }
-
- public static String noUpdateAvailable =
- ChatColor.YELLOW + "No updates available.";
-
/**
* Display a message to a player and then wait for timeout seconds before displaying it again.
*
@@ -190,8 +174,8 @@ public class Messages
{
lastMessage.put(player.getName(), new HashMap()
{{
- put(message, now);
- }});
+ put(message, now);
+ }});
}
else
{
diff --git a/src/main/java/de/craftinc/borderprotection/Plugin.java b/src/main/java/de/craftinc/borderprotection/Plugin.java
index af2e09a..8f4fb99 100644
--- a/src/main/java/de/craftinc/borderprotection/Plugin.java
+++ b/src/main/java/de/craftinc/borderprotection/Plugin.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -19,7 +19,10 @@ package de.craftinc.borderprotection;
import de.craftinc.borderprotection.borders.CircBorder;
import de.craftinc.borderprotection.borders.RectBorder;
import de.craftinc.borderprotection.commands.CommandSwitch;
-import de.craftinc.borderprotection.events.*;
+import de.craftinc.borderprotection.events.PlayerJoinListener;
+import de.craftinc.borderprotection.events.PlayerMoveListener;
+import de.craftinc.borderprotection.events.PlayerQuitListener;
+import de.craftinc.borderprotection.events.PlayerTeleportListener;
import org.bukkit.configuration.serialization.ConfigurationSerialization;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
diff --git a/src/main/java/de/craftinc/borderprotection/borders/Border.java b/src/main/java/de/craftinc/borderprotection/borders/Border.java
index f3f2b09..fc24948 100644
--- a/src/main/java/de/craftinc/borderprotection/borders/Border.java
+++ b/src/main/java/de/craftinc/borderprotection/borders/Border.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -32,12 +32,12 @@ public abstract class Border
{
private static final String dataFileName = "borders.yml";
- protected Boolean isActive;
+ private Boolean isActive;
- protected static final String isActiveKey = "enabled";
- protected static final String bordersKey = "borders";
+ private static final String isActiveKey = "enabled";
+ private static final String bordersKey = "borders";
- protected static final HashMap borders = new HashMap();
+ static final HashMap borders = new HashMap();
private static final File bordersFile = new File(Plugin.instance.getDataFolder(), dataFileName);
private static final FileConfiguration bordersFileConf = YamlConfiguration.loadConfiguration(bordersFile);
@@ -46,7 +46,7 @@ public abstract class Border
* The buffer in blocks which applies when a player is teleported inside the border. 0 means the player
* will be teleported directly to the border.
*/
- public static final double buffer = 0.5;
+ static final double buffer = 0.5;
public static HashMap getBorders()
{
@@ -79,11 +79,12 @@ public abstract class Border
/**
* Checks if the given location is inside or outside the border. If it is outside a new location (inside the border)
* is returned, otherwise null. Applies padding to the border. (Simulates a larger border using padding.)
- * @param l Location to check if inside the border
+ *
+ * @param l Location to check if inside the border
* @param padding number of Blocks of padding applied to the border.
* @return null if l is inside the border otherwise a new Location which is inside
*/
- public abstract Location checkBorder (Location l, double padding);
+ public abstract Location checkBorder( Location l, double padding );
/**
* Returns an array of two Location objects defining a rectangle bigger or at size of the border. There are no
@@ -96,7 +97,7 @@ public abstract class Border
return isActive;
}
- public Border( Map map )
+ Border( Map map )
{
try
{
@@ -109,7 +110,7 @@ public abstract class Border
}
}
- public Border()
+ Border()
{
// new borders are enabled by default
isActive = true;
@@ -137,7 +138,7 @@ public abstract class Border
isActive = false;
}
- protected void serialize( Map map )
+ void serialize( Map map )
{
map.put(isActiveKey, isActive);
}
diff --git a/src/main/java/de/craftinc/borderprotection/borders/CircBorder.java b/src/main/java/de/craftinc/borderprotection/borders/CircBorder.java
index 74ffa9a..9404dc2 100644
--- a/src/main/java/de/craftinc/borderprotection/borders/CircBorder.java
+++ b/src/main/java/de/craftinc/borderprotection/borders/CircBorder.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,8 +16,8 @@
*/
package de.craftinc.borderprotection.borders;
-import de.craftinc.borderprotection.util.LocationSerializer2D;
import de.craftinc.borderprotection.Plugin;
+import de.craftinc.borderprotection.util.LocationSerializer2D;
import de.craftinc.borderprotection.util.PlayerMovementUtil;
import org.bukkit.ChatColor;
import org.bukkit.Location;
@@ -31,8 +31,8 @@ public class CircBorder extends Border implements ConfigurationSerializable
private Double radius;
private Location center;
- private static String centerKey = "center";
- private static String radiusKey = "radius";
+ private static final String centerKey = "center";
+ private static final String radiusKey = "radius";
@SuppressWarnings("unchecked unused")
public CircBorder( Map map )
@@ -126,9 +126,9 @@ public class CircBorder extends Border implements ConfigurationSerializable
@Override
public Location[] getSurroundingRect()
{
- Location l1 = new Location(center.getWorld(), center.getX()+radius, center.getY(), center.getX()+radius);
- Location l2 = new Location(center.getWorld(), center.getX()-radius, center.getY(), center.getX()-radius);
+ Location l1 = new Location(center.getWorld(), center.getX() + radius, center.getY(), center.getX() + radius);
+ Location l2 = new Location(center.getWorld(), center.getX() - radius, center.getY(), center.getX() - radius);
- return new Location[]{ l1, l2 };
+ return new Location[] { l1, l2 };
}
}
\ No newline at end of file
diff --git a/src/main/java/de/craftinc/borderprotection/borders/RectBorder.java b/src/main/java/de/craftinc/borderprotection/borders/RectBorder.java
index 898c6b3..9f69bf8 100644
--- a/src/main/java/de/craftinc/borderprotection/borders/RectBorder.java
+++ b/src/main/java/de/craftinc/borderprotection/borders/RectBorder.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,8 +16,8 @@
*/
package de.craftinc.borderprotection.borders;
-import de.craftinc.borderprotection.util.LocationSerializer2D;
import de.craftinc.borderprotection.Plugin;
+import de.craftinc.borderprotection.util.LocationSerializer2D;
import de.craftinc.borderprotection.util.PlayerMovementUtil;
import org.bukkit.ChatColor;
import org.bukkit.Location;
@@ -31,8 +31,8 @@ public class RectBorder extends Border implements ConfigurationSerializable
private Location rectPoint1;
private Location rectPoint2;
- private static String rectPoint1Name = "p1";
- private static String rectPoint2Name = "p2";
+ private static final String rectPoint1Name = "p1";
+ private static final String rectPoint2Name = "p2";
@SuppressWarnings("unchecked unused")
public RectBorder( Map map )
@@ -179,6 +179,6 @@ public class RectBorder extends Border implements ConfigurationSerializable
@Override
public Location[] getSurroundingRect()
{
- return new Location[]{ rectPoint1, rectPoint2 };
+ return new Location[] { rectPoint1, rectPoint2 };
}
}
diff --git a/src/main/java/de/craftinc/borderprotection/commands/CancelGenerateCommand.java b/src/main/java/de/craftinc/borderprotection/commands/CancelGenerateCommand.java
index 2596ed1..e48e8d8 100644
--- a/src/main/java/de/craftinc/borderprotection/commands/CancelGenerateCommand.java
+++ b/src/main/java/de/craftinc/borderprotection/commands/CancelGenerateCommand.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze
+ Copyright (C) 2016 Paul Schulze
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -26,10 +26,9 @@ import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
-public class CancelGenerateCommand implements SubCommand
+class CancelGenerateCommand implements SubCommand
{
- @Override
- public boolean execute(CommandSender sender, String[] parameters)
+ public boolean execute( CommandSender sender, String[] parameters )
{
if ( !sender.hasPermission("craftinc.borderprotection.generate") )
{
@@ -39,7 +38,7 @@ public class CancelGenerateCommand implements SubCommand
World world = ( (Player) sender ).getWorld();
- if (!ChunkGenerator.isGenerating(world))
+ if ( !ChunkGenerator.isGenerating(world) )
{
sender.sendMessage(Messages.generationNotCanceled);
}
@@ -52,7 +51,6 @@ public class CancelGenerateCommand implements SubCommand
return true;
}
- @Override
public List commandNames()
{
ArrayList names = new ArrayList();
diff --git a/src/main/java/de/craftinc/borderprotection/commands/CheckVersionCommand.java b/src/main/java/de/craftinc/borderprotection/commands/CheckVersionCommand.java
deleted file mode 100644
index 279eac7..0000000
--- a/src/main/java/de/craftinc/borderprotection/commands/CheckVersionCommand.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-package de.craftinc.borderprotection.commands;
-
-import de.craftinc.borderprotection.Messages;
-import de.craftinc.borderprotection.util.UpdateHelper;
-import org.bukkit.command.CommandSender;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class CheckVersionCommand implements SubCommand
-{
- @Override
- public boolean execute(CommandSender sender, String[] parameters)
- {
- if ( !sender.hasPermission("craftinc.borderprotection.update") )
- {
- sender.sendMessage(Messages.noPermissionCheckversion);
- return false;
- }
-
- if ( UpdateHelper.newVersionAvailable() )
- {
- sender.sendMessage(
- Messages.updateMessage(UpdateHelper.cachedLatestVersion, UpdateHelper.getCurrentVersion()));
- return true;
- }
- else
- {
- sender.sendMessage(Messages.noUpdateAvailable);
- return true;
- }
- }
-
- @Override
- public List commandNames()
- {
- ArrayList names = new ArrayList();
- names.add("checkversion");
-
- return names;
- }
-}
diff --git a/src/main/java/de/craftinc/borderprotection/commands/CommandSwitch.java b/src/main/java/de/craftinc/borderprotection/commands/CommandSwitch.java
index 2fe8b66..c5391d3 100644
--- a/src/main/java/de/craftinc/borderprotection/commands/CommandSwitch.java
+++ b/src/main/java/de/craftinc/borderprotection/commands/CommandSwitch.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -27,12 +27,11 @@ import java.util.Map;
public class CommandSwitch implements CommandExecutor
{
- protected Map subCommandsMap = new HashMap();
+ private final Map subCommandsMap = new HashMap();
public CommandSwitch()
{
registerCommand(new CancelGenerateCommand());
- registerCommand(new CheckVersionCommand());
registerCommand(new GenerateCommand());
registerCommand(new GetCommand());
registerCommand(new HelpCommand());
@@ -40,15 +39,14 @@ public class CommandSwitch implements CommandExecutor
registerCommand(new SetCommand());
}
- protected void registerCommand(SubCommand command)
+ private void registerCommand( SubCommand command )
{
- for (String commandName : command.commandNames())
+ for ( String commandName : command.commandNames() )
{
subCommandsMap.put(commandName, command);
}
}
- @Override
public boolean onCommand( CommandSender sender, Command command, String label, String[] args )
{
// Check if command comes from a player.
@@ -63,18 +61,18 @@ public class CommandSwitch implements CommandExecutor
// command for all actions
if ( command.getName().equalsIgnoreCase("cibp") )
{
- if (args.length > 0)
+ if ( args.length > 0 )
{
String lowerCaseSubCommandName = args[0].toLowerCase();
SubCommand subCommand = subCommandsMap.get(lowerCaseSubCommandName);
- if (subCommand != null)
+ if ( subCommand != null )
{
success = subCommand.execute(sender, args);
}
}
- if (!success)
+ if ( !success )
{
subCommandsMap.get("help").execute(sender, args);
}
diff --git a/src/main/java/de/craftinc/borderprotection/commands/GenerateCommand.java b/src/main/java/de/craftinc/borderprotection/commands/GenerateCommand.java
index 29079c6..9d3feaa 100644
--- a/src/main/java/de/craftinc/borderprotection/commands/GenerateCommand.java
+++ b/src/main/java/de/craftinc/borderprotection/commands/GenerateCommand.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze
+ Copyright (C) 2016 Paul Schulze
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,10 +25,9 @@ import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
-public class GenerateCommand implements SubCommand
+class GenerateCommand implements SubCommand
{
- @Override
- public boolean execute(CommandSender sender, String[] parameters)
+ public boolean execute( CommandSender sender, String[] parameters )
{
if ( !sender.hasPermission("craftinc.borderprotection.generate") )
{
@@ -38,13 +37,13 @@ public class GenerateCommand implements SubCommand
World world = ( (Player) sender ).getWorld();
- if (ChunkGenerator.isGenerating(world))
+ if ( ChunkGenerator.isGenerating(world) )
{
sender.sendMessage(Messages.generationAlreadyInProgress);
}
else
{
- if (ChunkGenerator.generate(world))
+ if ( ChunkGenerator.generate(world) )
{
sender.sendMessage(Messages.generationStarted);
}
@@ -57,7 +56,6 @@ public class GenerateCommand implements SubCommand
return true;
}
- @Override
public List commandNames()
{
ArrayList names = new ArrayList();
diff --git a/src/main/java/de/craftinc/borderprotection/commands/GetCommand.java b/src/main/java/de/craftinc/borderprotection/commands/GetCommand.java
index fdb4da9..4cae78f 100644
--- a/src/main/java/de/craftinc/borderprotection/commands/GetCommand.java
+++ b/src/main/java/de/craftinc/borderprotection/commands/GetCommand.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze
+ Copyright (C) 2016 Paul Schulze
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,10 +25,9 @@ import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
-public class GetCommand implements SubCommand
+class GetCommand implements SubCommand
{
- @Override
- public boolean execute(CommandSender sender, String[] parameters)
+ public boolean execute( CommandSender sender, String[] parameters )
{
World world = ( (Player) sender ).getWorld();
@@ -45,7 +44,6 @@ public class GetCommand implements SubCommand
return true;
}
- @Override
public List commandNames()
{
ArrayList names = new ArrayList();
diff --git a/src/main/java/de/craftinc/borderprotection/commands/HelpCommand.java b/src/main/java/de/craftinc/borderprotection/commands/HelpCommand.java
index 8c29cb6..96a03af 100644
--- a/src/main/java/de/craftinc/borderprotection/commands/HelpCommand.java
+++ b/src/main/java/de/craftinc/borderprotection/commands/HelpCommand.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze
+ Copyright (C) 2016 Paul Schulze
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -22,16 +22,14 @@ import org.bukkit.command.CommandSender;
import java.util.ArrayList;
import java.util.List;
-public class HelpCommand implements SubCommand
+public class HelpCommand implements SubCommand
{
- @Override
- public boolean execute(CommandSender sender, String[] parameters)
+ public boolean execute( CommandSender sender, String[] parameters )
{
sender.sendMessage(Messages.helpGeneral);
return true;
}
- @Override
public List commandNames()
{
ArrayList names = new ArrayList();
diff --git a/src/main/java/de/craftinc/borderprotection/commands/OnOffCommand.java b/src/main/java/de/craftinc/borderprotection/commands/OnOffCommand.java
index 1e2d244..0c669b3 100644
--- a/src/main/java/de/craftinc/borderprotection/commands/OnOffCommand.java
+++ b/src/main/java/de/craftinc/borderprotection/commands/OnOffCommand.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze
+ Copyright (C) 2016 Paul Schulze
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -27,10 +27,9 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-public class OnOffCommand implements SubCommand
+class OnOffCommand implements SubCommand
{
- @Override
- public boolean execute(CommandSender sender, String[] parameters)
+ public boolean execute( CommandSender sender, String[] parameters )
{
if ( !sender.hasPermission("craftinc.borderprotection.set") )
{
@@ -72,7 +71,6 @@ public class OnOffCommand implements SubCommand
return true;
}
- @Override
public List commandNames()
{
ArrayList names = new ArrayList();
diff --git a/src/main/java/de/craftinc/borderprotection/commands/SetCommand.java b/src/main/java/de/craftinc/borderprotection/commands/SetCommand.java
index 935a642..9fff15b 100644
--- a/src/main/java/de/craftinc/borderprotection/commands/SetCommand.java
+++ b/src/main/java/de/craftinc/borderprotection/commands/SetCommand.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze
+ Copyright (C) 2016 Paul Schulze
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,10 +30,9 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-public class SetCommand implements SubCommand
+class SetCommand implements SubCommand
{
- @Override
- public boolean execute(CommandSender sender, String[] parameters)
+ public boolean execute( CommandSender sender, String[] parameters )
{
if ( !( parameters.length == 3 || parameters.length == 4 ) )
{
@@ -60,7 +59,7 @@ public class SetCommand implements SubCommand
if ( parameters[1].equalsIgnoreCase("r") )
{
newBorder = new RectBorder(new Location(world, distance, 0, distance),
- new Location(world, -distance, 0, -distance));
+ new Location(world, -distance, 0, -distance));
}
// circ border
else if ( parameters[1].equalsIgnoreCase("c") )
@@ -96,7 +95,7 @@ public class SetCommand implements SubCommand
Double p2Z = Double.parseDouble(parameters[3].split(",")[1]);
newBorder = new RectBorder(new Location(world, p1X, 0, p1Z),
- new Location(world, p2X, 0, p2Z));
+ new Location(world, p2X, 0, p2Z));
}
// circ border
else if ( parameters[1].equalsIgnoreCase("c") )
@@ -133,7 +132,6 @@ public class SetCommand implements SubCommand
return true;
}
- @Override
public List commandNames()
{
ArrayList names = new ArrayList();
diff --git a/src/main/java/de/craftinc/borderprotection/commands/SubCommand.java b/src/main/java/de/craftinc/borderprotection/commands/SubCommand.java
index acaa786..28f6f75 100644
--- a/src/main/java/de/craftinc/borderprotection/commands/SubCommand.java
+++ b/src/main/java/de/craftinc/borderprotection/commands/SubCommand.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze
+ Copyright (C) 2016 Paul Schulze
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -22,18 +22,17 @@ import org.bukkit.command.CommandSender;
import java.util.List;
-public interface SubCommand
+interface SubCommand
{
/**
- *
- * @param sender The sender (player) who executed the command.
+ * @param sender The sender (player) who executed the command.
* @param parameters All parameters for executing this subcommand. Includes the subcommand name at index 0.
* @return Returns an boolean indicating if the subcommand got could be executed.
*/
- public boolean execute(CommandSender sender, String[] parameters);
+ boolean execute( CommandSender sender, String[] parameters );
/**
* Returns a list of names of the command. All strings should be lowercase!
*/
- public List commandNames();
+ List commandNames();
}
diff --git a/src/main/java/de/craftinc/borderprotection/events/PlayerJoinListener.java b/src/main/java/de/craftinc/borderprotection/events/PlayerJoinListener.java
index bfbaaa4..520a968 100644
--- a/src/main/java/de/craftinc/borderprotection/events/PlayerJoinListener.java
+++ b/src/main/java/de/craftinc/borderprotection/events/PlayerJoinListener.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze
+ Copyright (C) 2016 Paul Schulze
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,10 +16,7 @@
*/
package de.craftinc.borderprotection.events;
-import de.craftinc.borderprotection.Messages;
import de.craftinc.borderprotection.util.ChunkGenerator;
-import de.craftinc.borderprotection.util.UpdateHelper;
-import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -31,17 +28,6 @@ public class PlayerJoinListener implements Listener
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerLogin( PlayerJoinEvent e )
{
- final Player player = e.getPlayer();
-
- if ( e.getPlayer().hasPermission("craftinc.borderprotection.update") )
- {
- if ( UpdateHelper.newVersionAvailable() )
- {
- String updateMessage = Messages.updateMessage(UpdateHelper.cachedLatestVersion, UpdateHelper.getCurrentVersion());
- e.setJoinMessage(e.getJoinMessage() + "\n" + updateMessage);
- }
- }
-
ChunkGenerator.pause();
}
}
diff --git a/src/main/java/de/craftinc/borderprotection/events/PlayerMoveListener.java b/src/main/java/de/craftinc/borderprotection/events/PlayerMoveListener.java
index 83a0fee..960a396 100644
--- a/src/main/java/de/craftinc/borderprotection/events/PlayerMoveListener.java
+++ b/src/main/java/de/craftinc/borderprotection/events/PlayerMoveListener.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@ public class PlayerMoveListener implements Listener
@SuppressWarnings("unused")
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerMove( PlayerMoveEvent e )
{
// do nothing if the event is already cancelled
diff --git a/src/main/java/de/craftinc/borderprotection/events/PlayerQuitListener.java b/src/main/java/de/craftinc/borderprotection/events/PlayerQuitListener.java
index dd5ed8c..a233207 100644
--- a/src/main/java/de/craftinc/borderprotection/events/PlayerQuitListener.java
+++ b/src/main/java/de/craftinc/borderprotection/events/PlayerQuitListener.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -29,7 +29,7 @@ public class PlayerQuitListener implements Listener
@EventHandler(priority = EventPriority.NORMAL)
public void onPlayerQuit( PlayerQuitEvent e )
{
- if (Plugin.instance.getServer().getOnlinePlayers().length == 1)
+ if ( Plugin.instance.getServer().getOnlinePlayers().size() == 1 )
{
ChunkGenerator.resume();
}
diff --git a/src/main/java/de/craftinc/borderprotection/events/PlayerTeleportListener.java b/src/main/java/de/craftinc/borderprotection/events/PlayerTeleportListener.java
index 21fb2eb..40c9975 100644
--- a/src/main/java/de/craftinc/borderprotection/events/PlayerTeleportListener.java
+++ b/src/main/java/de/craftinc/borderprotection/events/PlayerTeleportListener.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,7 +28,7 @@ import org.bukkit.event.player.PlayerTeleportEvent;
public class PlayerTeleportListener implements Listener
{
@SuppressWarnings("unused")
- @EventHandler(priority = EventPriority.HIGHEST)
+ @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerTeleport( PlayerTeleportEvent e )
{
// do nothing if the event is already cancelled
diff --git a/src/main/java/de/craftinc/borderprotection/util/ChunkGenerator.java b/src/main/java/de/craftinc/borderprotection/util/ChunkGenerator.java
index 5fad027..e234b37 100644
--- a/src/main/java/de/craftinc/borderprotection/util/ChunkGenerator.java
+++ b/src/main/java/de/craftinc/borderprotection/util/ChunkGenerator.java
@@ -1,5 +1,5 @@
/* Craft Inc. BorderProtection
- Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+ Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,13 +28,13 @@ import java.util.HashMap;
public class ChunkGenerator
{
- protected static HashMap chunkGenerationStatus = new HashMap();
- protected static boolean isPaused = true;
- protected static HashMap lastGenerationLogTime = new HashMap();
+ private static final HashMap chunkGenerationStatus = new HashMap();
+ private static boolean isPaused = true;
+ private static final HashMap lastGenerationLogTime = new HashMap();
- public static long waitTicks = 5; // TODO: make adjustable via config file
- public static int batchGenerationSize = 5; //TODO: make adjustable via config file
- public static int paddingChunksAroundBorder = 15; // TODO: make adjustable via config file
+ private static final long waitTicks = 5; // TODO: make adjustable via config file
+ private static final int batchGenerationSize = 5; //TODO: make adjustable via config file
+ private static final int paddingChunksAroundBorder = 15; // TODO: make adjustable via config file
public static void pause()
{
@@ -43,20 +43,20 @@ public class ChunkGenerator
public static void resume()
{
- if (isPaused)
+ if ( isPaused )
{
isPaused = false;
- for (World w : chunkGenerationStatus.keySet())
+ for ( World w : chunkGenerationStatus.keySet() )
{
slowLoadNextChunk(w);
}
}
}
- public static void cancelRender(World w)
+ public static void cancelRender( World w )
{
- if (w == null)
+ if ( w == null )
{
throw new IllegalArgumentException("World 'w' must not be null!");
}
@@ -64,9 +64,9 @@ public class ChunkGenerator
chunkGenerationStatus.remove(w);
}
- public static boolean isGenerating(World w)
+ public static boolean isGenerating( World w )
{
- if (w == null)
+ if ( w == null )
{
throw new IllegalArgumentException("World 'w' must not be null!");
}
@@ -76,45 +76,48 @@ public class ChunkGenerator
/**
* Starts the generation of all chunks inside a border.
+ *
* @param w The world in which chunks will be generated. Must not be 'null'. An exception will be thrown otherwise!
* @return A boolean indicating if the generation was successfully started. Will return false if no border exists
* for a given world. Will return true if the generation was already running but will not restart the generation.
*/
- public static boolean generate(World w)
+ public static boolean generate( World w )
{
- if (w == null)
+ if ( w == null )
{
throw new IllegalArgumentException("World 'w' must not be null!");
}
Border border = Border.getBorders().get(w);
- if (border == null)
+ if ( border == null )
{
return false;
}
Location[] borderRect = border.getSurroundingRect();
- int firstChunkX = (Math.min(borderRect[0].getBlockX(), borderRect[1].getBlockX()) >> 4) - paddingChunksAroundBorder;
- int firstChunkZ = (Math.min(borderRect[0].getBlockZ(), borderRect[1].getBlockZ()) >> 4) - paddingChunksAroundBorder;
+ int firstChunkX =
+ ( Math.min(borderRect[0].getBlockX(), borderRect[1].getBlockX()) >> 4 ) - paddingChunksAroundBorder;
+ int firstChunkZ =
+ ( Math.min(borderRect[0].getBlockZ(), borderRect[1].getBlockZ()) >> 4 ) - paddingChunksAroundBorder;
firstChunkX--;
- chunkGenerationStatus.put(w, new Integer[]{firstChunkX, firstChunkZ});
+ chunkGenerationStatus.put(w, new Integer[] { firstChunkX, firstChunkZ });
// the actual generation will start when resume is called!
return true;
}
- protected static void slowLoadNextChunk(World w)
+ static void slowLoadNextChunk( World w )
{
- if (w == null)
+ if ( w == null )
{
throw new IllegalArgumentException("World 'w' must not be null!");
}
- if (isPaused)
+ if ( isPaused )
{
return;
}
@@ -129,23 +132,23 @@ public class ChunkGenerator
/**
* Will only load/generate the next chunks inside the border of the given world. Will stop if no border exists.
*/
- protected static void loadNextChunk(World w)
+ static void loadNextChunk( World w )
{
- if (w == null)
+ if ( w == null )
{
throw new IllegalArgumentException("World 'w' must not be null!");
}
Border border = Border.getBorders().get(w);
- if (border == null)
+ if ( border == null )
{
return;
}
Integer[] lastGeneratedChunk = chunkGenerationStatus.get(w);
- if (lastGeneratedChunk == null)
+ if ( lastGeneratedChunk == null )
{
return; // the generation got most likely canceled
}
@@ -154,32 +157,37 @@ public class ChunkGenerator
int chunkZ = lastGeneratedChunk[1];
final Location[] borderRect = border.getSurroundingRect();
- final int minChunkX = (Math.min(borderRect[0].getBlockX(), borderRect[1].getBlockX()) >> 4) - paddingChunksAroundBorder;
- final int minChunkZ = (Math.min(borderRect[0].getBlockZ(), borderRect[1].getBlockZ()) >> 4) - paddingChunksAroundBorder;
- final int maxChunkX = (Math.max(borderRect[0].getBlockX(), borderRect[1].getBlockX()) >> 4) + paddingChunksAroundBorder;
- final int maxChunkZ = (Math.max(borderRect[0].getBlockZ(), borderRect[1].getBlockZ()) >> 4) + paddingChunksAroundBorder;
+ final int minChunkX =
+ ( Math.min(borderRect[0].getBlockX(), borderRect[1].getBlockX()) >> 4 ) - paddingChunksAroundBorder;
+ final int minChunkZ =
+ ( Math.min(borderRect[0].getBlockZ(), borderRect[1].getBlockZ()) >> 4 ) - paddingChunksAroundBorder;
+ final int maxChunkX =
+ ( Math.max(borderRect[0].getBlockX(), borderRect[1].getBlockX()) >> 4 ) + paddingChunksAroundBorder;
+ final int maxChunkZ =
+ ( Math.max(borderRect[0].getBlockZ(), borderRect[1].getBlockZ()) >> 4 ) + paddingChunksAroundBorder;
chunkX++;
- while (!chunkIsInsideBorder(chunkX, chunkZ, w, border)
- && chunkZ <= maxChunkZ)
+ while ( !chunkIsInsideBorder(chunkX, chunkZ, w, border)
+ && chunkZ <= maxChunkZ )
{
chunkX++;
- if (chunkX > maxChunkX)
+ if ( chunkX > maxChunkX )
{
chunkZ++;
chunkX = minChunkX;
}
}
- if (chunkZ <= maxChunkZ)
+ if ( chunkZ <= maxChunkZ )
{
- chunkGenerationStatus.put(w, new Integer[]{chunkX, chunkZ});
+ chunkGenerationStatus.put(w, new Integer[] { chunkX, chunkZ });
Chunk chunk = w.getChunkAt(chunkX, chunkZ);
chunk.load(true);
- loadSurroundingChunks(chunkX, chunkZ, w); // this will get the server to generate trees, … inside the new chunk
+ loadSurroundingChunks(chunkX, chunkZ,
+ w); // this will get the server to generate trees, … inside the new chunk
logProgress(minChunkX, maxChunkX, minChunkZ, maxChunkZ, chunkX, chunkZ, w);
}
@@ -190,69 +198,75 @@ public class ChunkGenerator
}
}
- protected static boolean chunkIsInsideBorder(int x, int z, World w, Border b)
+ private static boolean chunkIsInsideBorder( int x, int z, World w, Border b )
{
- double xLoc = (double)(x << 4) + 8.0;
+ double xLoc = (double) ( x << 4 ) + 8.0;
double yLoc = 0.0;
- double zLoc = (double)(z << 4) + 8.0;
+ double zLoc = (double) ( z << 4 ) + 8.0;
- double padding = (double)(paddingChunksAroundBorder << 4);
+ double padding = (double) ( paddingChunksAroundBorder << 4 );
Location l = new Location(w, xLoc, yLoc, zLoc);
return b.checkBorder(l, padding) == null;
}
- protected static void loadSurroundingChunks(int x, int z, World w)
+ private static void loadSurroundingChunks( int x, int z, World w )
{
int radius = 1;
- for (int i=-radius; i 30000) {
+ if ( lastLogTime == null || ( now - lastLogTime ) > 30000 )
+ {
lastGenerationLogTime.put(world, now);
final int numXChunks, offsetX;
- if (((maxChunkX > 0) && (minChunkX > 0)) || ((maxChunkX < 0) && (minChunkX < 0)))
+ if ( ( ( maxChunkX > 0 ) && ( minChunkX > 0 ) ) || ( ( maxChunkX < 0 ) && ( minChunkX < 0 ) ) )
{
numXChunks = minChunkX * maxChunkX;
offsetX = 0;
}
- else {
+ else
+ {
numXChunks = Math.abs(minChunkX) + maxChunkX;
offsetX = Math.abs(minChunkX);
}
final int numZChunks, offsetZ;
- if (((maxChunkZ > 0) && (minChunkZ > 0)) || ((maxChunkZ < 0) && (minChunkZ < 0)))
+ if ( ( ( maxChunkZ > 0 ) && ( minChunkZ > 0 ) ) || ( ( maxChunkZ < 0 ) && ( minChunkZ < 0 ) ) )
{
numZChunks = minChunkZ * maxChunkZ;
offsetZ = 0;
}
- else {
+ else
+ {
numZChunks = Math.abs(minChunkZ) + maxChunkZ;
offsetZ = Math.abs(minChunkZ);
}
final int totalNumChunks = numXChunks * numZChunks;
- final int currentChunk = ((offsetZ+chunkZ) * numXChunks) + offsetX+chunkX;
- Plugin.instance.getLogger().info("Generation progress: " + currentChunk + "/" + totalNumChunks + " Chunks in World " + world.getName());
+ final int currentChunk = ( ( offsetZ + chunkZ ) * numXChunks ) + offsetX + chunkX;
+ Plugin.instance.getLogger()
+ .info("Generation progress: " + currentChunk + "/" + totalNumChunks + " Chunks in World " +
+ world.getName());
}
}
}
@@ -261,12 +275,11 @@ public class ChunkGenerator
class DelayedCall implements Runnable
{
public World w;
- public int batchGenerationSize;
+ int batchGenerationSize;
- @Override
public void run()
{
- for (int i=0; i.
-*/
-package de.craftinc.borderprotection.util;
-
-import de.craftinc.borderprotection.Plugin;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-
-public class UpdateHelper
-{
- /**
- * The URL from which the Plugin tries to get the latest version.
- */
- @SuppressWarnings("FieldCanBeLocal")
- private static final String updateUrl = "http://www.craftinc.de/plugins/update/craftinc-borderprotection";
-
- /**
- * The latest version which was seen on last check.
- */
- public static String cachedLatestVersion = null;
-
- /**
- * Gets the latest version from the updateURL and returns it as String
.
- *
- * @return latest version as String
.
- */
- @SuppressWarnings("StringBufferMayBeStringBuilder")
- public static String getLatestVersion()
- {
- // StringBuffer is thread-safe. Don't know if this is really important here, but safe is safe :).
- StringBuffer s = new StringBuffer();
- try
- {
- URLConnection c = new URL(updateUrl).openConnection();
- BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
- String inputLine;
- while ( ( inputLine = br.readLine() ) != null )
- {
- s.append(inputLine);
- }
- br.close();
- }
- catch ( MalformedURLException e )
- {
- Plugin.instance.getLogger().warning("Could not check for latest version. Update URL is malformed.");
- }
- catch ( IOException e )
- {
- Plugin.instance.getLogger().warning("Could not check for latest version. Update URL was not readable.");
- }
-
- // update cached latest version
- cachedLatestVersion = s.toString();
-
- return s.toString();
- }
-
- /**
- * Gets the current version of this plugin directly from the plugin.yml version entry.
- *
- * @return current version as String
.
- */
- public static String getCurrentVersion()
- {
- return Plugin.instance.getDescription().getVersion();
- }
-
- /**
- * Checks if a newer version is available.
- *
- * @return Boolean
- */
- public static Boolean newVersionAvailable()
- {
- final String version = getLatestVersion();
-
- // do not show beta or dev versions
- if (version.contains("beta") || version.contains("dev"))
- return false;
-
- return !getCurrentVersion().equals(getLatestVersion());
- }
-}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index f33410d..e2efb20 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
# Craft Inc. BorderProtection
-# Copyright (C) 2013 Paul Schulze, Tobias Ottenweller
+# Copyright (C) 2016 Paul Schulze, Tobias Ottenweller
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -17,9 +17,9 @@
name: ${project.name}
main: de.craftinc.borderprotection.Plugin
version: ${project.version}
-softdepend: [Multiverse-Core]
+softdepend: []
authors: [ddidderr, mice_on_drugs]
-website: http://www.craftinc.de/plugins/borderprotection
+website: https://www.craftinc.de/plugins/borderprotection
commands:
@@ -33,9 +33,6 @@ permissions:
craftinc.borderprotection.ignoreborders:
default: false
description: Allows to be everywhere on the map (ignoring the borders).
- craftinc.borderprotection.update:
- default: op
- description: Allows to get notified on login, when a new update is available.
craftinc.borderprotection.generate:
default: op
description: Allows to generate the complete world inside the border.
\ No newline at end of file