mirror of
https://github.com/EssentialsX/Essentials.git
synced 2025-02-01 21:11:44 +01:00
Renamed 2.1 -> trunk
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1017 e251c2fe-e539-e718-e476-b85c1f46cddb
This commit is contained in:
commit
cbbe0d8beb
@ -628,13 +628,6 @@ is divided into following sections:
|
|||||||
<param name="call.target" value="jar"/>
|
<param name="call.target" value="jar"/>
|
||||||
<param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
|
<param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
|
||||||
</antcall>
|
</antcall>
|
||||||
<antcall target="-maybe-call-dep">
|
|
||||||
<param name="call.built.properties" value="${built-jar.properties}"/>
|
|
||||||
<param location="${project.EssentialsServerlist}" name="call.subproject"/>
|
|
||||||
<param location="${project.EssentialsServerlist}/build.xml" name="call.script"/>
|
|
||||||
<param name="call.target" value="jar"/>
|
|
||||||
<param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
|
|
||||||
</antcall>
|
|
||||||
<antcall target="-maybe-call-dep">
|
<antcall target="-maybe-call-dep">
|
||||||
<param name="call.built.properties" value="${built-jar.properties}"/>
|
<param name="call.built.properties" value="${built-jar.properties}"/>
|
||||||
<param location="${project.EssentialsSpawn}" name="call.subproject"/>
|
<param location="${project.EssentialsSpawn}" name="call.subproject"/>
|
||||||
@ -1113,13 +1106,6 @@ is divided into following sections:
|
|||||||
<param name="call.target" value="clean"/>
|
<param name="call.target" value="clean"/>
|
||||||
<param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
|
<param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
|
||||||
</antcall>
|
</antcall>
|
||||||
<antcall target="-maybe-call-dep">
|
|
||||||
<param name="call.built.properties" value="${built-clean.properties}"/>
|
|
||||||
<param location="${project.EssentialsServerlist}" name="call.subproject"/>
|
|
||||||
<param location="${project.EssentialsServerlist}/build.xml" name="call.script"/>
|
|
||||||
<param name="call.target" value="clean"/>
|
|
||||||
<param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
|
|
||||||
</antcall>
|
|
||||||
<antcall target="-maybe-call-dep">
|
<antcall target="-maybe-call-dep">
|
||||||
<param name="call.built.properties" value="${built-clean.properties}"/>
|
<param name="call.built.properties" value="${built-clean.properties}"/>
|
||||||
<param location="${project.EssentialsSpawn}" name="call.subproject"/>
|
<param location="${project.EssentialsSpawn}" name="call.subproject"/>
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
build.xml.data.CRC32=36e85771
|
build.xml.data.CRC32=60061751
|
||||||
build.xml.script.CRC32=7a797370
|
build.xml.script.CRC32=7a797370
|
||||||
build.xml.stylesheet.CRC32=28e38971@1.42.1.45
|
build.xml.stylesheet.CRC32=28e38971@1.42.1.45
|
||||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||||
nbproject/build-impl.xml.data.CRC32=36e85771
|
nbproject/build-impl.xml.data.CRC32=60061751
|
||||||
nbproject/build-impl.xml.script.CRC32=eaedfa13
|
nbproject/build-impl.xml.script.CRC32=5fce336c
|
||||||
nbproject/build-impl.xml.stylesheet.CRC32=19debb58@1.42.1.45
|
nbproject/build-impl.xml.stylesheet.CRC32=19debb58@1.42.1.45
|
||||||
|
0
BuildAll/nbproject/private/config.properties
Normal file
0
BuildAll/nbproject/private/config.properties
Normal file
6
BuildAll/nbproject/private/private.properties
Normal file
6
BuildAll/nbproject/private/private.properties
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
compile.on.save=false
|
||||||
|
do.depend=false
|
||||||
|
do.jar=true
|
||||||
|
javac.debug=true
|
||||||
|
javadoc.preview=true
|
||||||
|
user.properties.file=C:\\Users\\Paul\\.netbeans\\7.0beta2\\build.properties
|
@ -34,7 +34,6 @@ javac.classpath=\
|
|||||||
${reference.EssentialsGroupBridge.jar}:\
|
${reference.EssentialsGroupBridge.jar}:\
|
||||||
${reference.EssentialsGroupManager.jar}:\
|
${reference.EssentialsGroupManager.jar}:\
|
||||||
${reference.EssentialsProtect.jar}:\
|
${reference.EssentialsProtect.jar}:\
|
||||||
${reference.EssentialsServerlist.jar}:\
|
|
||||||
${reference.EssentialsSpawn.jar}
|
${reference.EssentialsSpawn.jar}
|
||||||
# Space-separated list of extra javac options
|
# Space-separated list of extra javac options
|
||||||
javac.compilerargs=
|
javac.compilerargs=
|
||||||
@ -69,14 +68,12 @@ project.EssentialsChat=../EssentialsChat
|
|||||||
project.EssentialsGroupBridge=../EssentialsGroupBridge
|
project.EssentialsGroupBridge=../EssentialsGroupBridge
|
||||||
project.EssentialsGroupManager=../EssentialsGroupManager
|
project.EssentialsGroupManager=../EssentialsGroupManager
|
||||||
project.EssentialsProtect=../EssentialsProtect
|
project.EssentialsProtect=../EssentialsProtect
|
||||||
project.EssentialsServerlist=../EssentialsServerlist
|
|
||||||
project.EssentialsSpawn=../EssentialsSpawn
|
project.EssentialsSpawn=../EssentialsSpawn
|
||||||
reference.Essentials.jar=${project.Essentials}/dist/Essentials.jar
|
reference.Essentials.jar=${project.Essentials}/dist/Essentials.jar
|
||||||
reference.EssentialsChat.jar=${project.EssentialsChat}/dist/EssentialsChat.jar
|
reference.EssentialsChat.jar=${project.EssentialsChat}/dist/EssentialsChat.jar
|
||||||
reference.EssentialsGroupBridge.jar=${project.EssentialsGroupBridge}/dist/EssentialsGroupBridge.jar
|
reference.EssentialsGroupBridge.jar=${project.EssentialsGroupBridge}/dist/EssentialsGroupBridge.jar
|
||||||
reference.EssentialsGroupManager.jar=${project.EssentialsGroupManager}/dist/EssentialsGroupManager.jar
|
reference.EssentialsGroupManager.jar=${project.EssentialsGroupManager}/dist/EssentialsGroupManager.jar
|
||||||
reference.EssentialsProtect.jar=${project.EssentialsProtect}/dist/original-EssentialsProtect.jar
|
reference.EssentialsProtect.jar=${project.EssentialsProtect}/dist/original-EssentialsProtect.jar
|
||||||
reference.EssentialsServerlist.jar=${project.EssentialsServerlist}/dist/EssentialsServerlist.jar
|
|
||||||
reference.EssentialsSpawn.jar=${project.EssentialsSpawn}/dist/EssentialsSpawn.jar
|
reference.EssentialsSpawn.jar=${project.EssentialsSpawn}/dist/EssentialsSpawn.jar
|
||||||
run.classpath=\
|
run.classpath=\
|
||||||
${javac.classpath}:\
|
${javac.classpath}:\
|
||||||
|
@ -55,14 +55,6 @@
|
|||||||
<clean-target>clean</clean-target>
|
<clean-target>clean</clean-target>
|
||||||
<id>jar</id>
|
<id>jar</id>
|
||||||
</reference>
|
</reference>
|
||||||
<reference>
|
|
||||||
<foreign-project>EssentialsServerlist</foreign-project>
|
|
||||||
<artifact-type>jar</artifact-type>
|
|
||||||
<script>build.xml</script>
|
|
||||||
<target>jar</target>
|
|
||||||
<clean-target>clean</clean-target>
|
|
||||||
<id>jar</id>
|
|
||||||
</reference>
|
|
||||||
<reference>
|
<reference>
|
||||||
<foreign-project>EssentialsSpawn</foreign-project>
|
<foreign-project>EssentialsSpawn</foreign-project>
|
||||||
<artifact-type>jar</artifact-type>
|
<artifact-type>jar</artifact-type>
|
||||||
|
1
Essentials/nbproject/private/private.properties
Normal file
1
Essentials/nbproject/private/private.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
user.properties.file=C:\\Users\\Paul\\.netbeans\\7.0beta2\\build.properties
|
@ -159,25 +159,23 @@ public class Essentials extends JavaPlugin
|
|||||||
pm.registerEvent(Type.PLAYER_MOVE, playerListener, Priority.High, this);
|
pm.registerEvent(Type.PLAYER_MOVE, playerListener, Priority.High, this);
|
||||||
pm.registerEvent(Type.PLAYER_LOGIN, playerListener, Priority.High, this);
|
pm.registerEvent(Type.PLAYER_LOGIN, playerListener, Priority.High, this);
|
||||||
pm.registerEvent(Type.PLAYER_TELEPORT, playerListener, Priority.High, this);
|
pm.registerEvent(Type.PLAYER_TELEPORT, playerListener, Priority.High, this);
|
||||||
|
pm.registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.Monitor, this);
|
||||||
|
|
||||||
blockListener = new EssentialsBlockListener(this);
|
blockListener = new EssentialsBlockListener(this);
|
||||||
pm.registerEvent(Type.SIGN_CHANGE, blockListener, Priority.Monitor, this);
|
pm.registerEvent(Type.SIGN_CHANGE, blockListener, Priority.Monitor, this);
|
||||||
pm.registerEvent(Type.BLOCK_RIGHTCLICKED, blockListener, Priority.Monitor, this);
|
|
||||||
pm.registerEvent(Type.BLOCK_INTERACT, blockListener, Priority.Monitor, this);
|
|
||||||
pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Monitor, this);
|
pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Monitor, this);
|
||||||
pm.registerEvent(Type.BLOCK_PLACED, blockListener, Priority.Monitor, this);
|
pm.registerEvent(Type.BLOCK_PLACE, blockListener, Priority.Monitor, this);
|
||||||
|
|
||||||
entityListener = new EssentialsEntityListener(this);
|
entityListener = new EssentialsEntityListener(this);
|
||||||
pm.registerEvent(Type.ENTITY_DAMAGED, entityListener, Priority.Lowest, this);
|
pm.registerEvent(Type.ENTITY_DAMAGE, entityListener, Priority.Lowest, this);
|
||||||
pm.registerEvent(Type.ENTITY_COMBUST, entityListener, Priority.Lowest, this);
|
pm.registerEvent(Type.ENTITY_COMBUST, entityListener, Priority.Lowest, this);
|
||||||
pm.registerEvent(Type.ENTITY_DEATH, entityListener, Priority.Lowest, this);
|
pm.registerEvent(Type.ENTITY_DEATH, entityListener, Priority.Lowest, this);
|
||||||
|
|
||||||
jail = new Jail(this.getDataFolder());
|
jail = new Jail(this.getDataFolder());
|
||||||
confList.add(jail);
|
confList.add(jail);
|
||||||
pm.registerEvent(Type.BLOCK_BREAK, jail, Priority.High, this);
|
pm.registerEvent(Type.BLOCK_BREAK, jail, Priority.High, this);
|
||||||
pm.registerEvent(Type.BLOCK_DAMAGED, jail, Priority.High, this);
|
pm.registerEvent(Type.BLOCK_DAMAGE, jail, Priority.High, this);
|
||||||
pm.registerEvent(Type.BLOCK_INTERACT, jail, Priority.High, this);
|
pm.registerEvent(Type.BLOCK_PLACE, jail, Priority.High, this);
|
||||||
pm.registerEvent(Type.BLOCK_PLACED, jail, Priority.High, this);
|
|
||||||
|
|
||||||
attachEcoListeners();
|
attachEcoListeners();
|
||||||
|
|
||||||
@ -665,8 +663,6 @@ public class Essentials extends JavaPlugin
|
|||||||
{
|
{
|
||||||
PluginManager pm = getServer().getPluginManager();
|
PluginManager pm = getServer().getPluginManager();
|
||||||
EssentialsEcoBlockListener blockListener = new EssentialsEcoBlockListener();
|
EssentialsEcoBlockListener blockListener = new EssentialsEcoBlockListener();
|
||||||
pm.registerEvent(Type.BLOCK_INTERACT, blockListener, Priority.Lowest, this);
|
|
||||||
pm.registerEvent(Type.BLOCK_RIGHTCLICKED, blockListener, Priority.High, this);
|
|
||||||
pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.High, this);
|
pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.High, this);
|
||||||
pm.registerEvent(Type.SIGN_CHANGE, blockListener, Priority.Monitor, this);
|
pm.registerEvent(Type.SIGN_CHANGE, blockListener, Priority.Monitor, this);
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,16 @@
|
|||||||
package com.earth2me.essentials;
|
package com.earth2me.essentials;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
|
||||||
import net.minecraft.server.InventoryPlayer;
|
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.block.*;
|
import org.bukkit.block.*;
|
||||||
import org.bukkit.craftbukkit.block.CraftSign;
|
import org.bukkit.craftbukkit.block.CraftSign;
|
||||||
import org.bukkit.craftbukkit.inventory.CraftInventoryPlayer;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.block.*;
|
import org.bukkit.event.block.*;
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
|
|
||||||
public class EssentialsBlockListener extends BlockListener
|
public class EssentialsBlockListener extends BlockListener
|
||||||
{
|
{
|
||||||
private final Essentials parent;
|
private final Essentials parent;
|
||||||
private final static ArrayList<Material> protectedBlocks = new ArrayList<Material>(4);
|
public final static ArrayList<Material> protectedBlocks = new ArrayList<Material>(4);
|
||||||
|
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
@ -53,40 +48,6 @@ public class EssentialsBlockListener extends BlockListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBlockInteract(BlockInteractEvent event)
|
|
||||||
{
|
|
||||||
if (event.isCancelled()) return;
|
|
||||||
if (!(event.getEntity() instanceof Player)) return;
|
|
||||||
|
|
||||||
User user = User.get((Player)event.getEntity());
|
|
||||||
|
|
||||||
if (!Essentials.getSettings().areSignsDisabled() && protectedBlocks.contains(event.getBlock().getType()))
|
|
||||||
{
|
|
||||||
if (!user.isAuthorized("essentials.signs.protection.override"))
|
|
||||||
{
|
|
||||||
if (isBlockProtected(event.getBlock(), user))
|
|
||||||
{
|
|
||||||
event.setCancelled(true);
|
|
||||||
user.sendMessage("§cYou do not have permission to access that chest.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Essentials.getSettings().getBedSetsHome() && event.getBlock().getType() == Material.BED_BLOCK)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
user.setHome();
|
|
||||||
user.sendMessage("§7Your home is now set to this bed.");
|
|
||||||
}
|
|
||||||
catch (Throwable ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSignChange(SignChangeEvent event)
|
public void onSignChange(SignChangeEvent event)
|
||||||
{
|
{
|
||||||
@ -146,60 +107,6 @@ public class EssentialsBlockListener extends BlockListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBlockRightClick(BlockRightClickEvent event)
|
|
||||||
{
|
|
||||||
User user = User.get(event.getPlayer());
|
|
||||||
if (user.isJailed()) return;
|
|
||||||
if (Essentials.getSettings().areSignsDisabled()) return;
|
|
||||||
if (event.getBlock().getType() != Material.WALL_SIGN && event.getBlock().getType() != Material.SIGN_POST)
|
|
||||||
return;
|
|
||||||
Sign sign = new CraftSign(event.getBlock());
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (sign.getLine(0).equals("§1[Free]") && user.isAuthorized("essentials.signs.free.use"))
|
|
||||||
{
|
|
||||||
ItemStack item = ItemDb.get(sign.getLine(1));
|
|
||||||
CraftInventoryPlayer inv = new CraftInventoryPlayer(new InventoryPlayer(user.getHandle()));
|
|
||||||
inv.clear();
|
|
||||||
item.setAmount(9 * 4 * 64);
|
|
||||||
inv.addItem(item);
|
|
||||||
user.showInventory(inv);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (sign.getLine(0).equals("§1[Disposal]") && user.isAuthorized("essentials.signs.disposal.use"))
|
|
||||||
{
|
|
||||||
CraftInventoryPlayer inv = new CraftInventoryPlayer(new InventoryPlayer(user.getHandle()));
|
|
||||||
inv.clear();
|
|
||||||
user.showInventory(inv);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (sign.getLine(0).equals("§1[Heal]") && user.isAuthorized("essentials.signs.heal.use"))
|
|
||||||
{
|
|
||||||
user.setHealth(20);
|
|
||||||
user.sendMessage("§7You have been healed.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (sign.getLine(0).equals("§1[Mail]") && user.isAuthorized("essentials.signs.mail.use") && user.isAuthorized("essentials.mail"))
|
|
||||||
{
|
|
||||||
List<String> mail = Essentials.readMail(user);
|
|
||||||
if (mail.isEmpty())
|
|
||||||
{
|
|
||||||
user.sendMessage("§cYou do not have any mail!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (String s : mail) user.sendMessage(s);
|
|
||||||
user.sendMessage("§cTo mark your mail as read, type §c/mail clear");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Throwable ex)
|
|
||||||
{
|
|
||||||
user.sendMessage("§cError: " + ex.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBlockPlace(BlockPlaceEvent event) {
|
public void onBlockPlace(BlockPlaceEvent event) {
|
||||||
Block signBlock = event.getBlockAgainst();
|
Block signBlock = event.getBlockAgainst();
|
||||||
@ -230,7 +137,7 @@ public class EssentialsBlockListener extends BlockListener
|
|||||||
private static final int ALLOWED = 1;
|
private static final int ALLOWED = 1;
|
||||||
private static final int NOSIGN = 2;
|
private static final int NOSIGN = 2;
|
||||||
|
|
||||||
private int checkProtectionSign(Block block, User user)
|
private static int checkProtectionSign(Block block, User user)
|
||||||
{
|
{
|
||||||
if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN)
|
if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN)
|
||||||
{
|
{
|
||||||
@ -255,7 +162,7 @@ public class EssentialsBlockListener extends BlockListener
|
|||||||
return NOSIGN;
|
return NOSIGN;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Block[] getAdjacentBlocks(Block block)
|
private static Block[] getAdjacentBlocks(Block block)
|
||||||
{
|
{
|
||||||
return new Block[]
|
return new Block[]
|
||||||
{
|
{
|
||||||
@ -268,7 +175,7 @@ public class EssentialsBlockListener extends BlockListener
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isBlockProtected(Block block, User user)
|
public static boolean isBlockProtected(Block block, User user)
|
||||||
{
|
{
|
||||||
Block[] faces = getAdjacentBlocks(block);
|
Block[] faces = getAdjacentBlocks(block);
|
||||||
boolean protect = false;
|
boolean protect = false;
|
||||||
|
@ -81,6 +81,7 @@ public class EssentialsConf extends Configuration
|
|||||||
ostr.write(buffer, 0, length);
|
ostr.write(buffer, 0, length);
|
||||||
length = istr.read(buffer);
|
length = istr.read(buffer);
|
||||||
}
|
}
|
||||||
|
ostr.close();
|
||||||
istr.close();
|
istr.close();
|
||||||
}
|
}
|
||||||
catch (IOException ex)
|
catch (IOException ex)
|
||||||
@ -92,10 +93,8 @@ public class EssentialsConf extends Configuration
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (ostr != null) {
|
|
||||||
ostr.close();
|
ostr.close();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch (IOException ex)
|
catch (IOException ex)
|
||||||
{
|
{
|
||||||
logger.log(Level.SEVERE, "Failed to close config " + configFile.toString(), ex);
|
logger.log(Level.SEVERE, "Failed to close config " + configFile.toString(), ex);
|
||||||
|
@ -1,15 +1,11 @@
|
|||||||
package com.earth2me.essentials;
|
package com.earth2me.essentials;
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
|
||||||
import com.earth2me.essentials.ItemDb;
|
|
||||||
import com.earth2me.essentials.User;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
import org.bukkit.craftbukkit.block.CraftSign;
|
import org.bukkit.craftbukkit.block.CraftSign;
|
||||||
import org.bukkit.craftbukkit.inventory.CraftInventory;
|
import org.bukkit.craftbukkit.inventory.CraftInventory;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.BlockListener;
|
import org.bukkit.event.block.BlockListener;
|
||||||
import org.bukkit.event.block.BlockRightClickEvent;
|
|
||||||
import org.bukkit.event.block.SignChangeEvent;
|
import org.bukkit.event.block.SignChangeEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@ -69,132 +65,6 @@ public class EssentialsEcoBlockListener extends BlockListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBlockRightClick(BlockRightClickEvent event)
|
|
||||||
{
|
|
||||||
if (Essentials.getSettings().areSignsDisabled()) return;
|
|
||||||
User user = User.get(event.getPlayer());
|
|
||||||
if (event.getBlock().getType() != Material.WALL_SIGN && event.getBlock().getType() != Material.SIGN_POST)
|
|
||||||
return;
|
|
||||||
Sign sign = new CraftSign(event.getBlock());
|
|
||||||
|
|
||||||
if (sign.getLine(0).equals("§1[Buy]") && user.isAuthorized("essentials.signs.buy.use"))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
int amount = Integer.parseInt(sign.getLine(1));
|
|
||||||
ItemStack item = ItemDb.get(sign.getLine(2), amount);
|
|
||||||
int cost = Integer.parseInt(sign.getLine(3).substring(1));
|
|
||||||
if (user.getMoney() < cost) throw new Exception("You do not have sufficient funds.");
|
|
||||||
user.takeMoney(cost);
|
|
||||||
user.getInventory().addItem(item);
|
|
||||||
user.updateInventory();
|
|
||||||
}
|
|
||||||
catch (Throwable ex)
|
|
||||||
{
|
|
||||||
user.sendMessage("§cError: " + ex.getMessage());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sign.getLine(0).equals("§1[Sell]") && user.isAuthorized("essentials.signs.sell.use"))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
int amount = Integer.parseInt(sign.getLine(1));
|
|
||||||
ItemStack item = ItemDb.get(sign.getLine(2), amount);
|
|
||||||
int cost = Integer.parseInt(sign.getLine(3).substring(1));
|
|
||||||
if (!InventoryWorkaround.containsItem((CraftInventory)user.getInventory(), true, item)) throw new Exception("You do not have enough items to sell.");
|
|
||||||
user.giveMoney(cost);
|
|
||||||
InventoryWorkaround.removeItem((CraftInventory)user.getInventory(), true, item);
|
|
||||||
user.updateInventory();
|
|
||||||
}
|
|
||||||
catch (Throwable ex)
|
|
||||||
{
|
|
||||||
user.sendMessage("§cError: " + ex.getMessage());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sign.getLine(0).equals("§1[Trade]") && user.isAuthorized("essentials.signs.trade.use"))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
String[] l1 = sign.getLines()[1].split("[ :-]+");
|
|
||||||
String[] l2 = sign.getLines()[2].split("[ :-]+");
|
|
||||||
boolean m1 = l1[0].matches("\\$[0-9]+");
|
|
||||||
boolean m2 = l2[0].matches("\\$[0-9]+");
|
|
||||||
int q1 = Integer.parseInt(m1 ? l1[0].substring(1) : l1[0]);
|
|
||||||
int q2 = Integer.parseInt(m2 ? l2[0].substring(1) : l2[0]);
|
|
||||||
int r1 = Integer.parseInt(l1[m1 ? 1 : 2]);
|
|
||||||
int r2 = Integer.parseInt(l2[m2 ? 1 : 2]);
|
|
||||||
r1 = r1 - r1 % q1;
|
|
||||||
r2 = r2 - r2 % q2;
|
|
||||||
if (q1 < 1 || q2 < 1) throw new Exception("Quantities must be greater than 0.");
|
|
||||||
|
|
||||||
ItemStack i1 = m1 || r1 <= 0? null : ItemDb.get(l1[1], r1);
|
|
||||||
ItemStack qi1 = m1 ? null : ItemDb.get(l1[1], q1);
|
|
||||||
ItemStack qi2 = m2 ? null : ItemDb.get(l2[1], q2);
|
|
||||||
|
|
||||||
if (user.getName().equals(sign.getLines()[3].substring(2)))
|
|
||||||
{
|
|
||||||
if (m1)
|
|
||||||
{
|
|
||||||
user.giveMoney(r1);
|
|
||||||
}
|
|
||||||
else if (i1 != null)
|
|
||||||
{
|
|
||||||
user.getInventory().addItem(i1);
|
|
||||||
user.updateInventory();
|
|
||||||
}
|
|
||||||
r1 = 0;
|
|
||||||
sign.setLine(1, (m1 ? "$" + q1 : q1 + " " + l1[1]) + ":" + r1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (m1)
|
|
||||||
{
|
|
||||||
if (user.getMoney() < q1)
|
|
||||||
throw new Exception("You do not have sufficient funds.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!InventoryWorkaround.containsItem((CraftInventory)user.getInventory(), true, qi1))
|
|
||||||
throw new Exception("You do not have " + q1 + "x " + l1[1] + ".");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (r2 < q2) throw new Exception("The trade sign does not have enough supply left.");
|
|
||||||
|
|
||||||
if (m1)
|
|
||||||
user.takeMoney(q1);
|
|
||||||
else
|
|
||||||
InventoryWorkaround.removeItem((CraftInventory)user.getInventory(), true, qi1);
|
|
||||||
|
|
||||||
if (m2)
|
|
||||||
user.giveMoney(q2);
|
|
||||||
else
|
|
||||||
user.getInventory().addItem(qi2);
|
|
||||||
|
|
||||||
user.updateInventory();
|
|
||||||
|
|
||||||
r1 += q1;
|
|
||||||
r2 -= q2;
|
|
||||||
|
|
||||||
sign.setLine(0, "§1[Trade]");
|
|
||||||
sign.setLine(1, (m1 ? "$" + q1 : q1 + " " + l1[1]) + ":" + r1);
|
|
||||||
sign.setLine(2, (m2 ? "$" + q2 : q2 + " " + l2[1]) + ":" + r2);
|
|
||||||
|
|
||||||
user.sendMessage("§7Trade completed.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Throwable ex)
|
|
||||||
{
|
|
||||||
user.sendMessage("§cError: " + ex.getMessage());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSignChange(SignChangeEvent event)
|
public void onSignChange(SignChangeEvent event)
|
||||||
{
|
{
|
||||||
|
@ -2,10 +2,16 @@ package com.earth2me.essentials;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import net.minecraft.server.InventoryPlayer;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.Sign;
|
||||||
|
import org.bukkit.craftbukkit.block.CraftSign;
|
||||||
|
import org.bukkit.craftbukkit.inventory.CraftInventory;
|
||||||
|
import org.bukkit.craftbukkit.inventory.CraftInventoryPlayer;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.*;
|
||||||
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
|
||||||
public class EssentialsPlayerListener extends PlayerListener
|
public class EssentialsPlayerListener extends PlayerListener
|
||||||
@ -20,6 +26,224 @@ public class EssentialsPlayerListener extends PlayerListener
|
|||||||
this.server = parent.getServer();
|
this.server = parent.getServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onPlayerInteractEco(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
if (Essentials.getSettings().areSignsDisabled()) return;
|
||||||
|
User user = User.get(event.getPlayer());
|
||||||
|
if (event.getClickedBlock().getType() != Material.WALL_SIGN && event.getClickedBlock().getType() != Material.SIGN_POST)
|
||||||
|
return;
|
||||||
|
Sign sign = new CraftSign(event.getClickedBlock());
|
||||||
|
|
||||||
|
if (sign.getLine(0).equals("§1[Buy]") && user.isAuthorized("essentials.signs.buy.use"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int amount = Integer.parseInt(sign.getLine(1));
|
||||||
|
ItemStack item = ItemDb.get(sign.getLine(2), amount);
|
||||||
|
int cost = Integer.parseInt(sign.getLine(3).substring(1));
|
||||||
|
if (user.getMoney() < cost) throw new Exception("You do not have sufficient funds.");
|
||||||
|
user.takeMoney(cost);
|
||||||
|
user.getInventory().addItem(item);
|
||||||
|
user.updateInventory();
|
||||||
|
}
|
||||||
|
catch (Throwable ex)
|
||||||
|
{
|
||||||
|
user.sendMessage("§cError: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sign.getLine(0).equals("§1[Sell]") && user.isAuthorized("essentials.signs.sell.use"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int amount = Integer.parseInt(sign.getLine(1));
|
||||||
|
ItemStack item = ItemDb.get(sign.getLine(2), amount);
|
||||||
|
int cost = Integer.parseInt(sign.getLine(3).substring(1));
|
||||||
|
if (!InventoryWorkaround.containsItem((CraftInventory)user.getInventory(), true, item)) throw new Exception("You do not have enough items to sell.");
|
||||||
|
user.giveMoney(cost);
|
||||||
|
InventoryWorkaround.removeItem((CraftInventory)user.getInventory(), true, item);
|
||||||
|
user.updateInventory();
|
||||||
|
}
|
||||||
|
catch (Throwable ex)
|
||||||
|
{
|
||||||
|
user.sendMessage("§cError: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sign.getLine(0).equals("§1[Trade]") && user.isAuthorized("essentials.signs.trade.use"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
String[] l1 = sign.getLines()[1].split("[ :-]+");
|
||||||
|
String[] l2 = sign.getLines()[2].split("[ :-]+");
|
||||||
|
boolean m1 = l1[0].matches("\\$[0-9]+");
|
||||||
|
boolean m2 = l2[0].matches("\\$[0-9]+");
|
||||||
|
int q1 = Integer.parseInt(m1 ? l1[0].substring(1) : l1[0]);
|
||||||
|
int q2 = Integer.parseInt(m2 ? l2[0].substring(1) : l2[0]);
|
||||||
|
int r1 = Integer.parseInt(l1[m1 ? 1 : 2]);
|
||||||
|
int r2 = Integer.parseInt(l2[m2 ? 1 : 2]);
|
||||||
|
r1 = r1 - r1 % q1;
|
||||||
|
r2 = r2 - r2 % q2;
|
||||||
|
if (q1 < 1 || q2 < 1) throw new Exception("Quantities must be greater than 0.");
|
||||||
|
|
||||||
|
ItemStack i1 = m1 || r1 <= 0 ? null : ItemDb.get(l1[1], r1);
|
||||||
|
ItemStack qi1 = m1 ? null : ItemDb.get(l1[1], q1);
|
||||||
|
ItemStack qi2 = m2 ? null : ItemDb.get(l2[1], q2);
|
||||||
|
|
||||||
|
if (user.getName().equals(sign.getLines()[3].substring(2)))
|
||||||
|
{
|
||||||
|
if (m1)
|
||||||
|
{
|
||||||
|
user.giveMoney(r1);
|
||||||
|
}
|
||||||
|
else if (i1 != null)
|
||||||
|
{
|
||||||
|
user.getInventory().addItem(i1);
|
||||||
|
user.updateInventory();
|
||||||
|
}
|
||||||
|
r1 = 0;
|
||||||
|
sign.setLine(1, (m1 ? "$" + q1 : q1 + " " + l1[1]) + ":" + r1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m1)
|
||||||
|
{
|
||||||
|
if (user.getMoney() < q1)
|
||||||
|
throw new Exception("You do not have sufficient funds.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!InventoryWorkaround.containsItem((CraftInventory)user.getInventory(), true, qi1))
|
||||||
|
throw new Exception("You do not have " + q1 + "x " + l1[1] + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r2 < q2) throw new Exception("The trade sign does not have enough supply left.");
|
||||||
|
|
||||||
|
if (m1)
|
||||||
|
user.takeMoney(q1);
|
||||||
|
else
|
||||||
|
InventoryWorkaround.removeItem((CraftInventory)user.getInventory(), true, qi1);
|
||||||
|
|
||||||
|
if (m2)
|
||||||
|
user.giveMoney(q2);
|
||||||
|
else
|
||||||
|
user.getInventory().addItem(qi2);
|
||||||
|
|
||||||
|
user.updateInventory();
|
||||||
|
|
||||||
|
r1 += q1;
|
||||||
|
r2 -= q2;
|
||||||
|
|
||||||
|
sign.setLine(0, "§1[Trade]");
|
||||||
|
sign.setLine(1, (m1 ? "$" + q1 : q1 + " " + l1[1]) + ":" + r1);
|
||||||
|
sign.setLine(2, (m2 ? "$" + q2 : q2 + " " + l2[1]) + ":" + r2);
|
||||||
|
|
||||||
|
user.sendMessage("§7Trade completed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Throwable ex)
|
||||||
|
{
|
||||||
|
user.sendMessage("§cError: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPlayerInteract(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
if (event.isCancelled()) return;
|
||||||
|
User user = User.get(event.getPlayer());
|
||||||
|
if (user.isJailed())
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
onPlayerInteractEco(event);
|
||||||
|
onPlayerInteractSigns(event);
|
||||||
|
|
||||||
|
if (!Essentials.getSettings().areSignsDisabled() && EssentialsBlockListener.protectedBlocks.contains(event.getClickedBlock().getType()))
|
||||||
|
{
|
||||||
|
if (!user.isAuthorized("essentials.signs.protection.override"))
|
||||||
|
{
|
||||||
|
if (EssentialsBlockListener.isBlockProtected(event.getClickedBlock(), user))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
user.sendMessage("§cYou do not have permission to access that chest.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Essentials.getSettings().getBedSetsHome() && event.getClickedBlock().getType() == Material.BED_BLOCK)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
user.setHome();
|
||||||
|
user.sendMessage("§7Your home is now set to this bed.");
|
||||||
|
}
|
||||||
|
catch (Throwable ex)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onPlayerInteractSigns(PlayerInteractEvent event)
|
||||||
|
{
|
||||||
|
User user = User.get(event.getPlayer());
|
||||||
|
if (user.isJailed()) return;
|
||||||
|
if (Essentials.getSettings().areSignsDisabled()) return;
|
||||||
|
if (event.getClickedBlock().getType() != Material.WALL_SIGN && event.getClickedBlock().getType() != Material.SIGN_POST)
|
||||||
|
return;
|
||||||
|
Sign sign = new CraftSign(event.getClickedBlock());
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (sign.getLine(0).equals("§1[Free]") && user.isAuthorized("essentials.signs.free.use"))
|
||||||
|
{
|
||||||
|
ItemStack item = ItemDb.get(sign.getLine(1));
|
||||||
|
CraftInventoryPlayer inv = new CraftInventoryPlayer(new InventoryPlayer(user.getHandle()));
|
||||||
|
inv.clear();
|
||||||
|
item.setAmount(9 * 4 * 64);
|
||||||
|
inv.addItem(item);
|
||||||
|
user.showInventory(inv);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (sign.getLine(0).equals("§1[Disposal]") && user.isAuthorized("essentials.signs.disposal.use"))
|
||||||
|
{
|
||||||
|
CraftInventoryPlayer inv = new CraftInventoryPlayer(new InventoryPlayer(user.getHandle()));
|
||||||
|
inv.clear();
|
||||||
|
user.showInventory(inv);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (sign.getLine(0).equals("§1[Heal]") && user.isAuthorized("essentials.signs.heal.use"))
|
||||||
|
{
|
||||||
|
user.setHealth(20);
|
||||||
|
user.sendMessage("§7You have been healed.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (sign.getLine(0).equals("§1[Mail]") && user.isAuthorized("essentials.signs.mail.use") && user.isAuthorized("essentials.mail"))
|
||||||
|
{
|
||||||
|
List<String> mail = Essentials.readMail(user);
|
||||||
|
if (mail.isEmpty())
|
||||||
|
{
|
||||||
|
user.sendMessage("§cYou do not have any mail!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (String s : mail) user.sendMessage(s);
|
||||||
|
user.sendMessage("§cTo mark your mail as read, type §c/mail clear");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Throwable ex)
|
||||||
|
{
|
||||||
|
user.sendMessage("§cError: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerRespawn(PlayerRespawnEvent event)
|
public void onPlayerRespawn(PlayerRespawnEvent event)
|
||||||
{
|
{
|
||||||
@ -99,9 +323,12 @@ public class EssentialsPlayerListener extends PlayerListener
|
|||||||
|
|
||||||
event.setFrom(loc);
|
event.setFrom(loc);
|
||||||
event.setTo(loc);
|
event.setTo(loc);
|
||||||
try {
|
try
|
||||||
|
{
|
||||||
user.teleportToNow(loc);
|
user.teleportToNow(loc);
|
||||||
} catch (Exception ex) {
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
user.sendMessage(ex.getMessage());
|
user.sendMessage(ex.getMessage());
|
||||||
}
|
}
|
||||||
user.setJustPortaled(true);
|
user.setJustPortaled(true);
|
||||||
@ -115,12 +342,11 @@ public class EssentialsPlayerListener extends PlayerListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerQuit(PlayerEvent event)
|
public void onPlayerQuit(PlayerQuitEvent event)
|
||||||
{
|
{
|
||||||
if (!Essentials.getSettings().getReclaimSetting())
|
if (!Essentials.getSettings().getReclaimSetting())
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
User.get(event.getPlayer()).dispose();
|
User.get(event.getPlayer()).dispose();
|
||||||
Thread thread = new Thread(new Runnable()
|
Thread thread = new Thread(new Runnable()
|
||||||
{
|
{
|
||||||
@ -149,7 +375,7 @@ public class EssentialsPlayerListener extends PlayerListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerJoin(PlayerEvent event)
|
public void onPlayerJoin(PlayerJoinEvent event)
|
||||||
{
|
{
|
||||||
Essentials.getStatic().backup.onPlayerJoin();
|
Essentials.getStatic().backup.onPlayerJoin();
|
||||||
User user = User.get(event.getPlayer());
|
User user = User.get(event.getPlayer());
|
||||||
@ -215,7 +441,7 @@ public class EssentialsPlayerListener extends PlayerListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerTeleport(PlayerMoveEvent event)
|
public void onPlayerTeleport(PlayerTeleportEvent event)
|
||||||
{
|
{
|
||||||
User user = User.get(event.getPlayer());
|
User user = User.get(event.getPlayer());
|
||||||
if (user.currentJail == null || user.currentJail.isEmpty())
|
if (user.currentJail == null || user.currentJail.isEmpty())
|
||||||
|
@ -7,23 +7,25 @@ import java.util.Map;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.BlockDamageEvent;
|
import org.bukkit.event.block.BlockDamageEvent;
|
||||||
import org.bukkit.event.block.BlockInteractEvent;
|
|
||||||
import org.bukkit.event.block.BlockListener;
|
import org.bukkit.event.block.BlockListener;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
|
|
||||||
public class Jail extends BlockListener implements IConf {
|
|
||||||
|
public class Jail extends BlockListener implements IConf
|
||||||
|
{
|
||||||
private static final Logger logger = Logger.getLogger("Minecraft");
|
private static final Logger logger = Logger.getLogger("Minecraft");
|
||||||
private EssentialsConf config;
|
private EssentialsConf config;
|
||||||
|
|
||||||
public Jail(File dataFolder) {
|
public Jail(File dataFolder)
|
||||||
|
{
|
||||||
config = new EssentialsConf(new File(dataFolder, "jail.yml"));
|
config = new EssentialsConf(new File(dataFolder, "jail.yml"));
|
||||||
config.load();
|
config.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setJail(Location loc, String jailName) throws Exception {
|
public void setJail(Location loc, String jailName) throws Exception
|
||||||
|
{
|
||||||
Map<String, Object> map = new HashMap<String, Object>();
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
map.put("world", loc.getWorld().getName());
|
map.put("world", loc.getWorld().getName());
|
||||||
map.put("x", loc.getX());
|
map.put("x", loc.getX());
|
||||||
@ -35,8 +37,10 @@ public class Jail extends BlockListener implements IConf {
|
|||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Location getJail(String jailName) throws Exception {
|
public Location getJail(String jailName) throws Exception
|
||||||
if (config.getProperty(jailName.toLowerCase()) == null) {
|
{
|
||||||
|
if (config.getProperty(jailName.toLowerCase()) == null)
|
||||||
|
{
|
||||||
throw new Exception("That jail does not exist");
|
throw new Exception("That jail does not exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,10 +49,12 @@ public class Jail extends BlockListener implements IConf {
|
|||||||
double x = config.getDouble(jailName + ".x", 0); // wh.spawnX
|
double x = config.getDouble(jailName + ".x", 0); // wh.spawnX
|
||||||
double y = config.getDouble(jailName + ".y", 0); // wh.spawnY
|
double y = config.getDouble(jailName + ".y", 0); // wh.spawnY
|
||||||
double z = config.getDouble(jailName + ".z", 0); // wh.spawnZ
|
double z = config.getDouble(jailName + ".z", 0); // wh.spawnZ
|
||||||
float yaw = (float) config.getDouble(jailName + ".yaw", 0);
|
float yaw = (float)config.getDouble(jailName + ".yaw", 0);
|
||||||
float pitch = (float) config.getDouble(jailName + ".pitch", 0);
|
float pitch = (float)config.getDouble(jailName + ".pitch", 0);
|
||||||
for (World w : Essentials.getStatic().getServer().getWorlds()) {
|
for (World w : Essentials.getStatic().getServer().getWorlds())
|
||||||
if (w.getName().equalsIgnoreCase(world)) {
|
{
|
||||||
|
if (w.getName().equalsIgnoreCase(world))
|
||||||
|
{
|
||||||
jWorld = w;
|
jWorld = w;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -57,21 +63,25 @@ public class Jail extends BlockListener implements IConf {
|
|||||||
return new Location(jWorld, x, y, z, yaw, pitch);
|
return new Location(jWorld, x, y, z, yaw, pitch);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendToJail(User user, String jail) throws Exception {
|
public void sendToJail(User user, String jail) throws Exception
|
||||||
user.teleportTo(getJail(jail));
|
{
|
||||||
|
user.teleport(getJail(jail));
|
||||||
user.currentJail = jail;
|
user.currentJail = jail;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void delJail(String jail) throws Exception {
|
public void delJail(String jail) throws Exception
|
||||||
|
{
|
||||||
config.removeProperty(jail.toLowerCase());
|
config.removeProperty(jail.toLowerCase());
|
||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getJails() throws Exception {
|
public List<String> getJails() throws Exception
|
||||||
|
{
|
||||||
return config.getKeys(null);
|
return config.getKeys(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reloadConfig() {
|
public void reloadConfig()
|
||||||
|
{
|
||||||
config.load();
|
config.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,19 +89,8 @@ public class Jail extends BlockListener implements IConf {
|
|||||||
public void onBlockBreak(BlockBreakEvent event)
|
public void onBlockBreak(BlockBreakEvent event)
|
||||||
{
|
{
|
||||||
User user = User.get(event.getPlayer());
|
User user = User.get(event.getPlayer());
|
||||||
if (user.isJailed()) {
|
if (user.isJailed())
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBlockInteract(BlockInteractEvent event)
|
|
||||||
{
|
{
|
||||||
if (!event.isPlayer()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
User user = User.get((Player)event.getEntity());
|
|
||||||
if (user.isJailed()) {
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -100,15 +99,18 @@ public class Jail extends BlockListener implements IConf {
|
|||||||
public void onBlockPlace(BlockPlaceEvent event)
|
public void onBlockPlace(BlockPlaceEvent event)
|
||||||
{
|
{
|
||||||
User user = User.get(event.getPlayer());
|
User user = User.get(event.getPlayer());
|
||||||
if (user.isJailed()) {
|
if (user.isJailed())
|
||||||
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBlockDamage(BlockDamageEvent event) {
|
public void onBlockDamage(BlockDamageEvent event)
|
||||||
|
{
|
||||||
User user = User.get(event.getPlayer());
|
User user = User.get(event.getPlayer());
|
||||||
if (user.isJailed()) {
|
if (user.isJailed())
|
||||||
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -283,4 +283,69 @@ public class OfflinePlayer implements Player
|
|||||||
public void sendRawMessage(String string) {
|
public void sendRawMessage(String string) {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Location getCompassTarget()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaximumNoDamageTicks()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaximumNoDamageTicks(int i)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLastDamage()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLastDamage(int i)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNoDamageTicks()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNoDamageTicks(int i)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean teleport(Location lctn)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean teleport(Entity entity)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Entity getPassenger()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setPassenger(Entity entity)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEmpty()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean eject()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,15 +154,15 @@ public class PlayerWrapper implements Player
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void teleportTo(Location lctn)
|
public boolean teleport(Location lctn)
|
||||||
{
|
{
|
||||||
base.teleportTo(lctn);
|
return base.teleport(lctn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void teleportTo(Entity entity)
|
public boolean teleport(Entity entity)
|
||||||
{
|
{
|
||||||
base.teleportTo(entity);
|
return base.teleport(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -329,7 +329,88 @@ public class PlayerWrapper implements Player
|
|||||||
return base.getEyeLocation();
|
return base.getEyeLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void sendRawMessage(String string) {
|
public void sendRawMessage(String string) {
|
||||||
base.sendRawMessage(string);
|
base.sendRawMessage(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Location getCompassTarget()
|
||||||
|
{
|
||||||
|
return base.getCompassTarget();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaximumNoDamageTicks()
|
||||||
|
{
|
||||||
|
return base.getMaximumNoDamageTicks();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMaximumNoDamageTicks(int i)
|
||||||
|
{
|
||||||
|
base.setMaximumNoDamageTicks(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getLastDamage()
|
||||||
|
{
|
||||||
|
return base.getLastDamage();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLastDamage(int i)
|
||||||
|
{
|
||||||
|
base.setLastDamage(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getNoDamageTicks()
|
||||||
|
{
|
||||||
|
return base.getNoDamageTicks();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setNoDamageTicks(int i)
|
||||||
|
{
|
||||||
|
base.setNoDamageTicks(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Entity getPassenger()
|
||||||
|
{
|
||||||
|
return base.getPassenger();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setPassenger(Entity entity)
|
||||||
|
{
|
||||||
|
return base.setPassenger(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty()
|
||||||
|
{
|
||||||
|
return base.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean eject()
|
||||||
|
{
|
||||||
|
return base.eject();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
|
public void teleportTo(Location lctn)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
|
public void teleportTo(Entity entity)
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ public class User extends PlayerExtension implements Comparable<User>
|
|||||||
|
|
||||||
public void respawn(Spawn spawn, final String chargeFor) throws Exception
|
public void respawn(Spawn spawn, final String chargeFor) throws Exception
|
||||||
{
|
{
|
||||||
teleportTo(getSafeDestination(spawn.getSpawn(getGroup())), chargeFor);
|
teleport(getSafeDestination(spawn.getSpawn(getGroup())), chargeFor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private User update(Player base)
|
private User update(Player base)
|
||||||
@ -383,7 +383,7 @@ public class User extends PlayerExtension implements Comparable<User>
|
|||||||
cancelTeleport(false);
|
cancelTeleport(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void teleportTo(final Location loc, final String chargeFor)
|
public boolean teleport(final Location loc, final String chargeFor)
|
||||||
{
|
{
|
||||||
final long delay = Essentials.getSettings().getTeleportDelay();
|
final long delay = Essentials.getSettings().getTeleportDelay();
|
||||||
|
|
||||||
@ -393,13 +393,13 @@ public class User extends PlayerExtension implements Comparable<User>
|
|||||||
{
|
{
|
||||||
if (chargeFor != null) charge(chargeFor);
|
if (chargeFor != null) charge(chargeFor);
|
||||||
teleportCooldown(false);
|
teleportCooldown(false);
|
||||||
teleportToNow(loc);
|
return teleportToNow(loc);
|
||||||
}
|
}
|
||||||
catch (Throwable ex)
|
catch (Throwable ex)
|
||||||
{
|
{
|
||||||
sendMessage("§cError: " + ex.getMessage());
|
sendMessage("§cError: " + ex.getMessage());
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cancelTeleport();
|
cancelTeleport();
|
||||||
@ -424,15 +424,16 @@ public class User extends PlayerExtension implements Comparable<User>
|
|||||||
cancelTeleport();
|
cancelTeleport();
|
||||||
}
|
}
|
||||||
}, 10, 10);
|
}, 10, 10);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void teleportTo(final Location loc)
|
public boolean teleport(final Location loc)
|
||||||
{
|
{
|
||||||
teleportTo(loc, null);
|
return teleport(loc, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void teleportTo(final Entity entity, final String chargeFor)
|
public boolean teleport(final Entity entity, final String chargeFor)
|
||||||
{
|
{
|
||||||
final long delay = Essentials.getSettings().getTeleportDelay();
|
final long delay = Essentials.getSettings().getTeleportDelay();
|
||||||
|
|
||||||
@ -442,13 +443,13 @@ public class User extends PlayerExtension implements Comparable<User>
|
|||||||
{
|
{
|
||||||
if (chargeFor != null) charge(chargeFor);
|
if (chargeFor != null) charge(chargeFor);
|
||||||
teleportCooldown(false);
|
teleportCooldown(false);
|
||||||
teleportToNow(entity);
|
return teleportToNow(entity);
|
||||||
}
|
}
|
||||||
catch (Throwable ex)
|
catch (Throwable ex)
|
||||||
{
|
{
|
||||||
sendMessage("§cError: " + ex.getMessage());
|
sendMessage("§cError: " + ex.getMessage());
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cancelTeleport();
|
cancelTeleport();
|
||||||
@ -473,12 +474,13 @@ public class User extends PlayerExtension implements Comparable<User>
|
|||||||
cancelTeleport();
|
cancelTeleport();
|
||||||
}
|
}
|
||||||
}, 10, 10);
|
}, 10, 10);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void teleportTo(final Entity entity)
|
public boolean teleport(final Entity entity)
|
||||||
{
|
{
|
||||||
teleportTo(entity, null);
|
return teleport(entity, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Location getHome() throws Exception
|
public Location getHome() throws Exception
|
||||||
@ -579,23 +581,23 @@ public class User extends PlayerExtension implements Comparable<User>
|
|||||||
teleportToHome(null);
|
teleportToHome(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void teleportToNow(Location loc) throws Exception
|
public boolean teleportToNow(Location loc) throws Exception
|
||||||
{
|
{
|
||||||
cancelTeleport();
|
cancelTeleport();
|
||||||
lastLocation = getLocation();
|
lastLocation = getLocation();
|
||||||
getBase().teleportTo(getSafeDestination(loc));
|
return getBase().teleport(getSafeDestination(loc));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void teleportToNow(Entity entity)
|
public boolean teleportToNow(Entity entity)
|
||||||
{
|
{
|
||||||
cancelTeleport();
|
cancelTeleport();
|
||||||
lastLocation = getLocation();
|
lastLocation = getLocation();
|
||||||
getBase().teleportTo(entity);
|
return getBase().teleport(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void teleportBack(final String chargeFor)
|
public void teleportBack(final String chargeFor)
|
||||||
{
|
{
|
||||||
teleportTo(lastLocation, chargeFor);
|
teleport(lastLocation, chargeFor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void teleportBack()
|
public void teleportBack()
|
||||||
@ -667,7 +669,7 @@ public class User extends PlayerExtension implements Comparable<User>
|
|||||||
{
|
{
|
||||||
lastLocation = getLocation();
|
lastLocation = getLocation();
|
||||||
Location loc = Essentials.getWarps().getWarp(warp);
|
Location loc = Essentials.getWarps().getWarp(warp);
|
||||||
teleportTo(loc, chargeFor);
|
teleport(loc, chargeFor);
|
||||||
sendMessage("§7Warping to " + warp + ".");
|
sendMessage("§7Warping to " + warp + ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,6 +45,6 @@ public class Commandjump extends EssentialsCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
user.canAfford(this);
|
user.canAfford(this);
|
||||||
user.teleportTo(loc, this.getName());
|
user.teleport(loc, this.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,11 @@ public class Commandme extends EssentialsCommand
|
|||||||
@Override
|
@Override
|
||||||
public void run(Server server, Essentials parent, User user, String commandLabel, String[] args) throws Exception
|
public void run(Server server, Essentials parent, User user, String commandLabel, String[] args) throws Exception
|
||||||
{
|
{
|
||||||
|
if (user.isMuted())
|
||||||
|
{ user.sendMessage("§7Your voice has been silenced");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (args.length < 1)
|
if (args.length < 1)
|
||||||
{
|
{
|
||||||
user.sendMessage("§cUsage: /me [description]");
|
user.sendMessage("§cUsage: /me [description]");
|
||||||
|
@ -20,7 +20,7 @@ public class Commandtop extends EssentialsCommand
|
|||||||
int topZ = user.getLocation().getBlockZ();
|
int topZ = user.getLocation().getBlockZ();
|
||||||
int topY = user.getWorld().getHighestBlockYAt(topX, topZ);
|
int topY = user.getWorld().getHighestBlockYAt(topX, topZ);
|
||||||
user.charge(this);
|
user.charge(this);
|
||||||
user.teleportTo(new Location(user.getWorld(), user.getLocation().getX(), topY + 1, user.getLocation().getZ()), this.getName());
|
user.teleport(new Location(user.getWorld(), user.getLocation().getX(), topY + 1, user.getLocation().getZ()), this.getName());
|
||||||
user.sendMessage("§7Teleporting to top.");
|
user.sendMessage("§7Teleporting to top.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ public class Commandtp extends EssentialsCommand
|
|||||||
if (!p.isTeleEnabled()) throw new Exception(p.getDisplayName() + " has teleportation disabled.");
|
if (!p.isTeleEnabled()) throw new Exception(p.getDisplayName() + " has teleportation disabled.");
|
||||||
user.sendMessage("§7Teleporting...");
|
user.sendMessage("§7Teleporting...");
|
||||||
user.canAfford(this);
|
user.canAfford(this);
|
||||||
user.teleportTo(p, this.getName());
|
user.teleport(p, this.getName());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
|
@ -27,14 +27,14 @@ public class Commandtpaccept extends EssentialsCommand
|
|||||||
user.canAfford(this);
|
user.canAfford(this);
|
||||||
user.sendMessage("§7Teleport request accepted.");
|
user.sendMessage("§7Teleport request accepted.");
|
||||||
p.sendMessage("§7Teleport request accepted.");
|
p.sendMessage("§7Teleport request accepted.");
|
||||||
user.teleportTo(p, this.getName());
|
user.teleport(p, this.getName());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
user.canAfford(this);
|
user.canAfford(this);
|
||||||
user.sendMessage("§7Teleport request accepted.");
|
user.sendMessage("§7Teleport request accepted.");
|
||||||
p.sendMessage("§7Teleport request accepted.");
|
p.sendMessage("§7Teleport request accepted.");
|
||||||
p.teleportTo(user, this.getName());
|
p.teleport(user, this.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,6 @@ public class Commandtppos extends EssentialsCommand
|
|||||||
user.canAfford(this);
|
user.canAfford(this);
|
||||||
user.teleportCooldown();
|
user.teleportCooldown();
|
||||||
user.sendMessage("§7Teleporting...");
|
user.sendMessage("§7Teleporting...");
|
||||||
user.teleportTo(user.getSafeDestination(l), this.getName());
|
user.teleport(user.getSafeDestination(l), this.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -34,9 +34,9 @@ public class Commandwhois extends EssentialsCommand
|
|||||||
sender.sendMessage("");
|
sender.sendMessage("");
|
||||||
sender.sendMessage(u.getDisplayName() + " is " + u.getName());
|
sender.sendMessage(u.getDisplayName() + " is " + u.getName());
|
||||||
sender.sendMessage(ChatColor.BLUE + " - Health: " + u.getHealth() + "/20");
|
sender.sendMessage(ChatColor.BLUE + " - Health: " + u.getHealth() + "/20");
|
||||||
sender.sendMessage(ChatColor.BLUE + " - Location: (" + u.getLocation().getWorld().getName() + ", " + u.getLocation().getBlockX() + ", " + u.getLocation().getBlockY() + ", " + u.getLocation().getBlockZ() + ")");
|
sender.sendMessage(ChatColor.BLUE + " - Location: (" + u.getLocation().getBlockX() + ", " + u.getLocation().getBlockY() + ", " + u.getLocation().getBlockZ() + ")");
|
||||||
if (!parent.getConfiguration().getBoolean("disable-eco", false)) sender.sendMessage(ChatColor.BLUE + " - Money: $" + u.getMoney());
|
if (!parent.getConfiguration().getBoolean("disable-eco", false)) sender.sendMessage(ChatColor.BLUE + " - Money: $" + u.getMoney());
|
||||||
sender.sendMessage(ChatColor.BLUE + " - Status: " + (parent.away.contains(u) ? "§cAway§f" : "Available"));
|
sender.sendMessage(ChatColor.BLUE + " - Status: " + (parent.away.contains(u) ? "§cAway" : "Available"));
|
||||||
sender.sendMessage(ChatColor.BLUE + " - IP Address: " + u.getAddress().getAddress().toString());
|
sender.sendMessage(ChatColor.BLUE + " - IP Address: " + u.getAddress().getAddress().toString());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,6 @@ public class Commandworld extends EssentialsCommand
|
|||||||
|
|
||||||
user.canAfford(this);
|
user.canAfford(this);
|
||||||
user.teleportCooldown();
|
user.teleportCooldown();
|
||||||
user.teleportTo(loc, this.getName());
|
user.teleport(loc, this.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -268,7 +268,7 @@ protect:
|
|||||||
mysqlDb: 'jdbc:mysql://localhost:3306/minecraft'
|
mysqlDb: 'jdbc:mysql://localhost:3306/minecraft'
|
||||||
|
|
||||||
# For which block types would you like to be alerted?
|
# For which block types would you like to be alerted?
|
||||||
# You can find a list of IDs in plugins/Essentials/Items.db after loading Essentials for the first time.
|
# You can find a list of IDs in plugins/Essentials/Items.csv after loading Essentials for the first time.
|
||||||
alert:
|
alert:
|
||||||
# 10: lava
|
# 10: lava
|
||||||
# 11: still lava
|
# 11: still lava
|
||||||
@ -347,7 +347,7 @@ protect:
|
|||||||
# Should damage via lava be disabled? Items that fall into lava will still burn to a crisp. ;)
|
# Should damage via lava be disabled? Items that fall into lava will still burn to a crisp. ;)
|
||||||
lavadmg: false
|
lavadmg: false
|
||||||
|
|
||||||
# Should arrows cause damage?
|
# Should arrow damage be disabled
|
||||||
projectiles: false
|
projectiles: false
|
||||||
|
|
||||||
# This will disable damage from touching cacti.
|
# This will disable damage from touching cacti.
|
||||||
|
@ -28,62 +28,14 @@ ironore,15,0
|
|||||||
iore,15,0
|
iore,15,0
|
||||||
coalore,16,0
|
coalore,16,0
|
||||||
core,16,0
|
core,16,0
|
||||||
tree,17,0
|
|
||||||
log,17,0
|
log,17,0
|
||||||
trunk,17,0
|
trunk,17,0
|
||||||
wood,17,0
|
wood,17,0
|
||||||
redtree,17,1
|
redwood,5,1
|
||||||
redlog,17,1
|
rwood,5,1
|
||||||
redtrunk,17,1
|
birchwood,5,2
|
||||||
redwood,17,1
|
birch,5,2
|
||||||
darktree,17,1
|
bwood,5,2
|
||||||
darklog,17,1
|
|
||||||
darktrunk,17,1
|
|
||||||
darkwood,17,1
|
|
||||||
blacktree,17,1
|
|
||||||
blacklog,17,1
|
|
||||||
blacktrunk,17,1
|
|
||||||
blackwood,17,1
|
|
||||||
rtree,17,1
|
|
||||||
rlog,17,1
|
|
||||||
rtrunk,17,1
|
|
||||||
rwood,17,1
|
|
||||||
dtree,17,1
|
|
||||||
dlog,17,1
|
|
||||||
dtrunk,17,1
|
|
||||||
dwood,17,1
|
|
||||||
bltree,17,1
|
|
||||||
bllog,17,1
|
|
||||||
bltrunk,17,1
|
|
||||||
blwood,17,1
|
|
||||||
birchtree,17,2
|
|
||||||
birchlog,17,2
|
|
||||||
birchtrunk,17,2
|
|
||||||
birchwood,17,2
|
|
||||||
pandatree,17,2
|
|
||||||
pandalog,17,2
|
|
||||||
pandatrunk,17,2
|
|
||||||
pandawood,17,2
|
|
||||||
whitetree,17,2
|
|
||||||
whitelog,17,2
|
|
||||||
whitetrunk,17,2
|
|
||||||
whitewood,17,2
|
|
||||||
bitree,17,2
|
|
||||||
bilog,17,2
|
|
||||||
bitrunk,17,2
|
|
||||||
biwood,17,2
|
|
||||||
btree,17,2
|
|
||||||
blog,17,2
|
|
||||||
btrunk,17,2
|
|
||||||
bwood,17,2
|
|
||||||
ptree,17,2
|
|
||||||
plog,17,2
|
|
||||||
ptrunk,17,2
|
|
||||||
pwood,17,2
|
|
||||||
wtree,17,2
|
|
||||||
wlog,17,2
|
|
||||||
wtrunk,17,2
|
|
||||||
wwood,17,2
|
|
||||||
leaves,18,0
|
leaves,18,0
|
||||||
sponge,19,0
|
sponge,19,0
|
||||||
glass,20,0
|
glass,20,0
|
||||||
|
|
1
EssentialsChat/nbproject/private/private.properties
Normal file
1
EssentialsChat/nbproject/private/private.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
user.properties.file=C:\\Users\\Paul\\.netbeans\\7.0beta2\\build.properties
|
@ -2,10 +2,7 @@ package com.earth2me.essentials.chat;
|
|||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
import com.earth2me.essentials.Essentials;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.event.player.PlayerChatEvent;
|
import org.bukkit.event.player.*;
|
||||||
import org.bukkit.event.player.PlayerEvent;
|
|
||||||
import org.bukkit.event.player.PlayerListener;
|
|
||||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
|
||||||
|
|
||||||
|
|
||||||
public class EssentialsChatPlayerListener extends PlayerListener
|
public class EssentialsChatPlayerListener extends PlayerListener
|
||||||
@ -19,7 +16,7 @@ public class EssentialsChatPlayerListener extends PlayerListener
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("CallToThreadDumpStack")
|
@SuppressWarnings("CallToThreadDumpStack")
|
||||||
public void onPlayerJoin(PlayerEvent event)
|
public void onPlayerJoin(PlayerJoinEvent event)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
user.properties.file=C:\\Users\\Paul\\.netbeans\\7.0beta2\\build.properties
|
@ -0,0 +1 @@
|
|||||||
|
user.properties.file=C:\\Users\\Paul\\.netbeans\\7.0beta2\\build.properties
|
@ -1,136 +1,80 @@
|
|||||||
# "For a more advanced configuration example utilizing the advanced features of GroupManager, se http://pastebin.com/MeCpqVZv"
|
|
||||||
groups:
|
groups:
|
||||||
Default:
|
Default:
|
||||||
default: true
|
default: true
|
||||||
permissions:
|
permissions:
|
||||||
- essentials.help
|
- essentials.help
|
||||||
- essentials.helpop
|
- essentials.home
|
||||||
- essentials.list
|
|
||||||
- essentials.motd
|
- essentials.motd
|
||||||
- essentials.rules
|
- essentials.sethome
|
||||||
- essentials.spawn
|
- essentials.spawn
|
||||||
inheritance: []
|
inheritance: []
|
||||||
info:
|
info:
|
||||||
prefix: '&e'
|
prefix: ''
|
||||||
build: false
|
build: false
|
||||||
suffix: ''
|
suffix: ''
|
||||||
SemiAdmin:
|
SemiAdmin:
|
||||||
default: false
|
default: false
|
||||||
permissions:
|
permissions:
|
||||||
- essentials.clearinventory
|
- +groupmanager.mandemote
|
||||||
- essentials.cooldown.bypass
|
- +groupmanager.manpromote
|
||||||
- essentials.deljail
|
- -groupmanager.*
|
||||||
- essentials.give
|
- '*'
|
||||||
- essentials.god
|
|
||||||
- essentials.heal
|
|
||||||
- essentials.heal.others
|
|
||||||
- essentials.invsee
|
|
||||||
- essentials.item
|
|
||||||
- essentials.jails
|
|
||||||
- essentials.kit.*
|
|
||||||
- essentials.mute
|
|
||||||
- essentials.reloadall
|
|
||||||
- essentials.setjail
|
|
||||||
- essentials.signs.disposal.create
|
|
||||||
- essentials.spawmob
|
|
||||||
- essentials.togglejail
|
|
||||||
- groupmanager.*
|
|
||||||
inheritance:
|
inheritance:
|
||||||
- moderator
|
- moderator
|
||||||
info:
|
info:
|
||||||
prefix: '&1'
|
prefix: '&c'
|
||||||
build: true
|
build: true
|
||||||
suffix: ''
|
suffix: SemiAdmin
|
||||||
Builder:
|
RedFaction:
|
||||||
|
default: false
|
||||||
|
permissions: []
|
||||||
|
inheritance:
|
||||||
|
- peasant
|
||||||
|
info:
|
||||||
|
prefix: '&c'
|
||||||
|
roles-category: faction
|
||||||
|
build: true
|
||||||
|
suffix: Red
|
||||||
|
Farmer:
|
||||||
default: false
|
default: false
|
||||||
permissions:
|
permissions:
|
||||||
- essentials.afk
|
|
||||||
- essentials.back.death
|
|
||||||
- essentials.balance
|
|
||||||
- essentials.chat.shout
|
|
||||||
- essentials.home
|
|
||||||
- essentials.kit
|
- essentials.kit
|
||||||
- essentials.kit.tools
|
- essentials.kit.farmer
|
||||||
- essentials.mail
|
- essentials.spawnmob
|
||||||
- essentials.mail.send
|
inheritance: []
|
||||||
- essentials.me
|
|
||||||
- essentials.msg
|
|
||||||
- essentials.nick
|
|
||||||
- essentials.pay
|
|
||||||
- essentials.portal
|
|
||||||
- essentials.protect
|
|
||||||
- essentials.sell
|
|
||||||
- essentials.sethome
|
|
||||||
- essentials.signs.buy.use
|
|
||||||
- essentials.signs.disposal.use
|
|
||||||
- essentials.signs.free.use
|
|
||||||
- essentials.signs.heal.use
|
|
||||||
- essentials.signs.mail.create
|
|
||||||
- essentials.signs.mail.use
|
|
||||||
- essentials.signs.protection.create
|
|
||||||
- essentials.signs.protection.use
|
|
||||||
- essentials.signs.sell.use
|
|
||||||
- essentials.signs.trade.create
|
|
||||||
- essentials.signs.trade.use
|
|
||||||
- essentials.tpa
|
|
||||||
- essentials.tpaccept
|
|
||||||
- essentials.tpahere
|
|
||||||
- essentials.tpdeny
|
|
||||||
- essentials.warp
|
|
||||||
- essentials.warp.list
|
|
||||||
- essentials.worth
|
|
||||||
inheritance:
|
|
||||||
- default
|
|
||||||
info:
|
info:
|
||||||
prefix: '&5'
|
roles-requirement:
|
||||||
build: true
|
- BlueFaction
|
||||||
|
- RedFaction
|
||||||
|
prefix: ''
|
||||||
|
roles-category: job
|
||||||
|
build: false
|
||||||
suffix: ''
|
suffix: ''
|
||||||
Moderator:
|
Healer:
|
||||||
default: false
|
default: false
|
||||||
permissions:
|
permissions:
|
||||||
- essentials.back
|
- essentials.kit
|
||||||
- essentials.ban
|
- essentials.kit.healer
|
||||||
- essentials.banip
|
- essentials.heal
|
||||||
- essentials.broadcast
|
inheritance: []
|
||||||
- essentials.compass
|
|
||||||
- essentials.delwarp
|
|
||||||
- essentials.depth
|
|
||||||
- essentials.eco
|
|
||||||
- essentials.getpos
|
|
||||||
- essentials.jump
|
|
||||||
- essentials.kick
|
|
||||||
- essentials.kill
|
|
||||||
- essentials.setwarp
|
|
||||||
- essentials.time
|
|
||||||
- essentials.togglejail
|
|
||||||
- essentials.top
|
|
||||||
- essentials.tp
|
|
||||||
- essentials.tpa
|
|
||||||
- essentials.tpaaccept
|
|
||||||
- essentials.tpahere
|
|
||||||
- essentials.tpdeny
|
|
||||||
- essentials.tphere
|
|
||||||
- essentials.tpo
|
|
||||||
- essentials.tpohere
|
|
||||||
- essentials.tppos
|
|
||||||
- essentials.tptoggle
|
|
||||||
- essentials.unban
|
|
||||||
- essentials.unbanip
|
|
||||||
- essentials.whois
|
|
||||||
- essentials.world
|
|
||||||
- groupmanager.listgroups
|
|
||||||
- groupmanager.mandemote
|
|
||||||
- groupmanager.manload
|
|
||||||
- groupmanager.manpromote
|
|
||||||
- groupmanager.mansave
|
|
||||||
- groupmanager.manselect
|
|
||||||
- groupmanager.manuadd
|
|
||||||
- groupmanager.manudel
|
|
||||||
inheritance:
|
|
||||||
- builder
|
|
||||||
info:
|
info:
|
||||||
prefix: '&9'
|
roles-requirement:
|
||||||
build: true
|
- BlueFaction
|
||||||
|
- RedFaction
|
||||||
|
prefix: ''
|
||||||
|
roles-category: job
|
||||||
|
build: false
|
||||||
|
suffix: ''
|
||||||
|
Fighter:
|
||||||
|
default: false
|
||||||
|
permissions:
|
||||||
|
- essentials.kit
|
||||||
|
- essentials.kit.fighter
|
||||||
|
inheritance: []
|
||||||
|
info:
|
||||||
|
prefix: ''
|
||||||
|
roles-category: skill
|
||||||
|
build: false
|
||||||
suffix: ''
|
suffix: ''
|
||||||
Admin:
|
Admin:
|
||||||
default: false
|
default: false
|
||||||
@ -139,6 +83,90 @@ groups:
|
|||||||
inheritance:
|
inheritance:
|
||||||
- semiadmin
|
- semiadmin
|
||||||
info:
|
info:
|
||||||
prefix: '&4'
|
prefix: ''
|
||||||
build: true
|
build: true
|
||||||
suffix: ''
|
suffix: ''
|
||||||
|
Miner:
|
||||||
|
default: false
|
||||||
|
permissions:
|
||||||
|
- essentials.kit
|
||||||
|
- essentials.kit.miner
|
||||||
|
- flashlight.regular
|
||||||
|
inheritance: []
|
||||||
|
info:
|
||||||
|
roles-requirement:
|
||||||
|
- BlueFaction
|
||||||
|
- RedFaction
|
||||||
|
prefix: ''
|
||||||
|
roles-category: job
|
||||||
|
build: false
|
||||||
|
suffix: ''
|
||||||
|
FlyingMan:
|
||||||
|
default: false
|
||||||
|
permissions:
|
||||||
|
- nocheat.moving
|
||||||
|
inheritance: []
|
||||||
|
info:
|
||||||
|
roles-requirement: Fighter&SuperCart
|
||||||
|
prefix: ''
|
||||||
|
roles-category: skill
|
||||||
|
build: false
|
||||||
|
suffix: ''
|
||||||
|
Peasant:
|
||||||
|
default: false
|
||||||
|
permissions:
|
||||||
|
- roles.joinrole
|
||||||
|
- roles.leaverole
|
||||||
|
- roles.myroles
|
||||||
|
inheritance:
|
||||||
|
- default
|
||||||
|
info:
|
||||||
|
prefix: '&e'
|
||||||
|
build: true
|
||||||
|
suffix: Peasant
|
||||||
|
BlueFaction:
|
||||||
|
default: false
|
||||||
|
permissions: []
|
||||||
|
inheritance:
|
||||||
|
- peasant
|
||||||
|
info:
|
||||||
|
prefix: '&d'
|
||||||
|
roles-category: faction
|
||||||
|
build: true
|
||||||
|
suffix: Blue
|
||||||
|
Railer:
|
||||||
|
default: false
|
||||||
|
permissions:
|
||||||
|
- essentials.kit
|
||||||
|
- essentials.kit.railer
|
||||||
|
inheritance: []
|
||||||
|
info:
|
||||||
|
roles-requirement: Miner
|
||||||
|
prefix: ''
|
||||||
|
roles-category: subjob
|
||||||
|
build: false
|
||||||
|
suffix: ''
|
||||||
|
SuperCart:
|
||||||
|
default: false
|
||||||
|
permissions:
|
||||||
|
- minecartmania.*
|
||||||
|
inheritance: []
|
||||||
|
info:
|
||||||
|
roles-requirement: Railer
|
||||||
|
prefix: ''
|
||||||
|
roles-category: skill
|
||||||
|
build: false
|
||||||
|
suffix: ''
|
||||||
|
Moderator:
|
||||||
|
default: false
|
||||||
|
permissions:
|
||||||
|
- essentials.tp
|
||||||
|
- essentials.tphere
|
||||||
|
- essentials.item
|
||||||
|
- essentials.give
|
||||||
|
inheritance:
|
||||||
|
- default
|
||||||
|
info:
|
||||||
|
prefix: '&c'
|
||||||
|
build: true
|
||||||
|
suffix: Mod
|
@ -1,15 +1,59 @@
|
|||||||
# "For a more advanced configuration example utilizing the advanced features of GroupManager, see http://pastebin.com/a8ZA0j5G"
|
|
||||||
users:
|
users:
|
||||||
kimkandor:
|
aMiner:
|
||||||
|
subgroups:
|
||||||
|
- Miner
|
||||||
|
permissions: []
|
||||||
|
group: BlueFaction
|
||||||
|
info:
|
||||||
|
prefix: '&d'
|
||||||
|
suffix: Miner
|
||||||
|
gmcouto:
|
||||||
|
subgroups: []
|
||||||
|
permissions: []
|
||||||
|
group: SemiAdmin
|
||||||
|
tempRailer:
|
||||||
|
subgroups:
|
||||||
|
- Miner
|
||||||
|
- Railer
|
||||||
|
permissions: []
|
||||||
|
group: BlueFaction
|
||||||
|
info:
|
||||||
|
prefix: '&d'
|
||||||
|
suffix: Miner
|
||||||
|
anjocaido:
|
||||||
subgroups: []
|
subgroups: []
|
||||||
permissions: []
|
permissions: []
|
||||||
group: Admin
|
group: Admin
|
||||||
mudzereli:
|
info:
|
||||||
subgroups: []
|
prefix: '&c'
|
||||||
|
suffix: King
|
||||||
|
aFarmer:
|
||||||
|
subgroups:
|
||||||
|
- Farmer
|
||||||
permissions: []
|
permissions: []
|
||||||
group: Builder
|
group: RedFaction
|
||||||
|
info:
|
||||||
|
prefix: '&d'
|
||||||
|
suffix: Farmer
|
||||||
zenexer:
|
zenexer:
|
||||||
subgroups: []
|
subgroups: []
|
||||||
|
permissions:
|
||||||
|
- essentials.god
|
||||||
|
group: Moderator
|
||||||
|
Teste:
|
||||||
|
subgroups:
|
||||||
|
- Miner
|
||||||
|
- Railer
|
||||||
|
- SuperCart
|
||||||
|
- Fighter
|
||||||
|
- FlyingMan
|
||||||
permissions: []
|
permissions: []
|
||||||
group: Admin
|
group: BlueFaction
|
||||||
|
aHealer:
|
||||||
|
subgroups:
|
||||||
|
- Healer
|
||||||
|
permissions: []
|
||||||
|
group: RedFaction
|
||||||
|
info:
|
||||||
|
prefix: '&d'
|
||||||
|
suffix: Healer
|
||||||
|
1
EssentialsProtect/nbproject/private/private.properties
Normal file
1
EssentialsProtect/nbproject/private/private.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
user.properties.file=C:\\Users\\Paul\\.netbeans\\7.0beta2\\build.properties
|
@ -26,6 +26,7 @@ dist.jar=${dist.dir}/original-EssentialsProtect.jar
|
|||||||
dist.javadoc.dir=${dist.dir}/javadoc
|
dist.javadoc.dir=${dist.dir}/javadoc
|
||||||
endorsed.classpath=
|
endorsed.classpath=
|
||||||
excludes=
|
excludes=
|
||||||
|
file.reference.c3p0-0.9.1.2.jar=..\\lib\\c3p0-0.9.1.2.jar
|
||||||
file.reference.craftbukkit-0.0.1-SNAPSHOT.jar=..\\lib\\craftbukkit-0.0.1-SNAPSHOT.jar
|
file.reference.craftbukkit-0.0.1-SNAPSHOT.jar=..\\lib\\craftbukkit-0.0.1-SNAPSHOT.jar
|
||||||
file.reference.mysql.jar=..\\lib\\mysql.jar
|
file.reference.mysql.jar=..\\lib\\mysql.jar
|
||||||
file.reference.sqlite.jar=..\\lib\\sqlite.jar
|
file.reference.sqlite.jar=..\\lib\\sqlite.jar
|
||||||
@ -37,7 +38,8 @@ javac.classpath=\
|
|||||||
${reference.Essentials.jar}:\
|
${reference.Essentials.jar}:\
|
||||||
${file.reference.mysql.jar}:\
|
${file.reference.mysql.jar}:\
|
||||||
${file.reference.sqlite.jar}:\
|
${file.reference.sqlite.jar}:\
|
||||||
${file.reference.craftbukkit-0.0.1-SNAPSHOT.jar}
|
${file.reference.craftbukkit-0.0.1-SNAPSHOT.jar}:\
|
||||||
|
${file.reference.c3p0-0.9.1.2.jar}
|
||||||
# Space-separated list of extra javac options
|
# Space-separated list of extra javac options
|
||||||
javac.compilerargs=
|
javac.compilerargs=
|
||||||
javac.deprecation=false
|
javac.deprecation=false
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
package com.earth2me.essentials.protect;
|
package com.earth2me.essentials.protect;
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
import com.earth2me.essentials.Essentials;
|
||||||
|
import com.earth2me.essentials.IConf;
|
||||||
import com.earth2me.essentials.User;
|
import com.earth2me.essentials.User;
|
||||||
|
import com.earth2me.essentials.protect.data.IProtectedBlock;
|
||||||
|
import com.earth2me.essentials.protect.data.ProtectedBlockMemory;
|
||||||
|
import com.earth2me.essentials.protect.data.ProtectedBlockMySQL;
|
||||||
|
import com.earth2me.essentials.protect.data.ProtectedBlockSQLite;
|
||||||
|
import java.beans.PropertyVetoException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@ -15,7 +21,7 @@ import org.bukkit.plugin.PluginManager;
|
|||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
|
||||||
public class EssentialsProtect extends JavaPlugin
|
public class EssentialsProtect extends JavaPlugin implements IConf
|
||||||
{
|
{
|
||||||
private EssentialsProtectBlockListener blockListener = null;
|
private EssentialsProtectBlockListener blockListener = null;
|
||||||
private EssentialsProtectPlayerListener playerListener = null;
|
private EssentialsProtectPlayerListener playerListener = null;
|
||||||
@ -33,6 +39,8 @@ public class EssentialsProtect extends JavaPlugin
|
|||||||
public static ArrayList onUseAlert = null;
|
public static ArrayList onUseAlert = null;
|
||||||
public static ArrayList onBreakAlert = null;
|
public static ArrayList onBreakAlert = null;
|
||||||
|
|
||||||
|
private IProtectedBlock storage = null;
|
||||||
|
private static EssentialsProtect instance = null;
|
||||||
|
|
||||||
public EssentialsProtect()
|
public EssentialsProtect()
|
||||||
{
|
{
|
||||||
@ -42,27 +50,27 @@ public class EssentialsProtect extends JavaPlugin
|
|||||||
{
|
{
|
||||||
PluginManager pm = this.getServer().getPluginManager();
|
PluginManager pm = this.getServer().getPluginManager();
|
||||||
Essentials ess = (Essentials)pm.getPlugin("Essentials");
|
Essentials ess = (Essentials)pm.getPlugin("Essentials");
|
||||||
if (!ess.isEnabled())
|
if (!ess.isEnabled()) {
|
||||||
pm.enablePlugin(ess);
|
pm.enablePlugin(ess);
|
||||||
|
}
|
||||||
|
|
||||||
|
instance = this;
|
||||||
|
reloadConfig();
|
||||||
|
|
||||||
playerListener = new EssentialsProtectPlayerListener(this);
|
playerListener = new EssentialsProtectPlayerListener(this);
|
||||||
blockListener = new EssentialsProtectBlockListener(this);
|
blockListener = new EssentialsProtectBlockListener(this);
|
||||||
entityListener = new EssentialsProtectEntityListener(this);
|
entityListener = new EssentialsProtectEntityListener(this);
|
||||||
pm.registerEvent(Type.PLAYER_ITEM, playerListener, Priority.Low, this);
|
pm.registerEvent(Type.PLAYER_PICKUP_ITEM, playerListener, Priority.Low, this);
|
||||||
// Why is this commented?
|
pm.registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.Low, this);
|
||||||
//pm.registerEvent(Type.BLOCK_DAMAGED, blockListener, Priority.High, this);
|
pm.registerEvent(Type.BLOCK_PLACE, blockListener, Priority.Highest, this);
|
||||||
pm.registerEvent(Type.BLOCK_RIGHTCLICKED, blockListener, Priority.Low, this);
|
pm.registerEvent(Type.BLOCK_FROMTO, blockListener, Priority.Highest, this);
|
||||||
pm.registerEvent(Type.BLOCK_PLACED, blockListener, Priority.Highest, this);
|
|
||||||
pm.registerEvent(Type.BLOCK_INTERACT, blockListener, Priority.Highest, this);
|
|
||||||
pm.registerEvent(Type.BLOCK_FLOW, blockListener, Priority.Highest, this);
|
|
||||||
pm.registerEvent(Type.BLOCK_IGNITE, blockListener, Priority.Highest, this);
|
pm.registerEvent(Type.BLOCK_IGNITE, blockListener, Priority.Highest, this);
|
||||||
pm.registerEvent(Type.BLOCK_BURN, blockListener, Priority.Highest, this);
|
pm.registerEvent(Type.BLOCK_BURN, blockListener, Priority.Highest, this);
|
||||||
pm.registerEvent(Type.ENTITY_EXPLODE, entityListener, Priority.Highest, this);
|
pm.registerEvent(Type.ENTITY_EXPLODE, entityListener, Priority.Highest, this);
|
||||||
pm.registerEvent(Type.ENTITY_DAMAGED, entityListener, Priority.Highest, this);
|
pm.registerEvent(Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this);
|
||||||
pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Highest, this);
|
pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Highest, this);
|
||||||
pm.registerEvent(Type.CREATURE_SPAWN, entityListener, Priority.Highest, this);
|
pm.registerEvent(Type.CREATURE_SPAWN, entityListener, Priority.Highest, this);
|
||||||
|
|
||||||
loadSettings();
|
|
||||||
if (!this.getDescription().getVersion().equals(Essentials.getStatic().getDescription().getVersion())) {
|
if (!this.getDescription().getVersion().equals(Essentials.getStatic().getDescription().getVersion())) {
|
||||||
logger.log(Level.WARNING, "Version mismatch! Please update all Essentials jars to the same version.");
|
logger.log(Level.WARNING, "Version mismatch! Please update all Essentials jars to the same version.");
|
||||||
}
|
}
|
||||||
@ -94,8 +102,23 @@ public class EssentialsProtect extends JavaPlugin
|
|||||||
onBreakAlert = null;
|
onBreakAlert = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadSettings()
|
public void alert(User user, String item, String type)
|
||||||
{
|
{
|
||||||
|
Location loc = user.getLocation();
|
||||||
|
for (Player p : this.getServer().getOnlinePlayers())
|
||||||
|
{
|
||||||
|
User alertUser = User.get(p);
|
||||||
|
if (alertUser.isAuthorized("essentials.protect.alerts"))
|
||||||
|
alertUser.sendMessage(ChatColor.DARK_AQUA + "[" + user.getName() + "] " + ChatColor.WHITE + type + ChatColor.GOLD + item + " at: " + formatCoords(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String formatCoords(int x, int y, int z)
|
||||||
|
{
|
||||||
|
return x + "," + y + "," + z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reloadConfig() {
|
||||||
dataSettings = Essentials.getSettings().getEpDBSettings();
|
dataSettings = Essentials.getSettings().getEpDBSettings();
|
||||||
genSettings = Essentials.getSettings().getEpSettings();
|
genSettings = Essentials.getSettings().getEpSettings();
|
||||||
guardSettings = Essentials.getSettings().getEpGuardSettings();
|
guardSettings = Essentials.getSettings().getEpGuardSettings();
|
||||||
@ -106,17 +129,26 @@ public class EssentialsProtect extends JavaPlugin
|
|||||||
onUseAlert = Essentials.getSettings().getEpAlertOnUse();
|
onUseAlert = Essentials.getSettings().getEpAlertOnUse();
|
||||||
onBreakAlert = Essentials.getSettings().getEpAlertOnBreak();
|
onBreakAlert = Essentials.getSettings().getEpAlertOnBreak();
|
||||||
playerSettings = Essentials.getSettings().getEpPlayerSettings();
|
playerSettings = Essentials.getSettings().getEpPlayerSettings();
|
||||||
EssentialsProtectData.createSqlTable();
|
|
||||||
|
if (dataSettings.get("protect.datatype").equals("mysql")) {
|
||||||
|
try {
|
||||||
|
storage = new ProtectedBlockMySQL(dataSettings.get("protect.mysqlDb"), dataSettings.get("protect.username"), dataSettings.get("protect.password"));
|
||||||
|
} catch (PropertyVetoException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
storage = new ProtectedBlockSQLite("jdbc:sqlite:plugins/Essentials/EssentialsProtect.db");
|
||||||
|
} catch (PropertyVetoException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (genSettings.get("protect.memstore")) {
|
||||||
|
storage = new ProtectedBlockMemory(storage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void alert(User user, String item, String type)
|
public static IProtectedBlock getStorage() {
|
||||||
{
|
return EssentialsProtect.instance.storage;
|
||||||
Location loc = user.getLocation();
|
|
||||||
for (Player p : this.getServer().getOnlinePlayers())
|
|
||||||
{
|
|
||||||
User alertUser = User.get(p);
|
|
||||||
if (alertUser.isAuthorized("essentials.protect.alerts"))
|
|
||||||
alertUser.sendMessage(ChatColor.DARK_AQUA + "[" + user.getName() + "] " + ChatColor.WHITE + type + ChatColor.GOLD + item + " at: " + EssentialsProtectData.formatCoords(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,28 +2,24 @@ package com.earth2me.essentials.protect;
|
|||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
import com.earth2me.essentials.Essentials;
|
||||||
import com.earth2me.essentials.User;
|
import com.earth2me.essentials.User;
|
||||||
import org.bukkit.ChatColor;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
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;
|
||||||
import org.bukkit.event.block.BlockIgniteEvent;
|
import org.bukkit.event.block.BlockIgniteEvent;
|
||||||
import org.bukkit.event.block.BlockInteractEvent;
|
|
||||||
import org.bukkit.event.block.BlockListener;
|
import org.bukkit.event.block.BlockListener;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.block.BlockRightClickEvent;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
|
||||||
public class EssentialsProtectBlockListener extends BlockListener
|
public class EssentialsProtectBlockListener extends BlockListener
|
||||||
{
|
{
|
||||||
private EssentialsProtect parent;
|
private EssentialsProtect parent;
|
||||||
private int railBlockX;
|
|
||||||
private int railBlockY;
|
|
||||||
private int railBlockZ;
|
|
||||||
private EssentialsProtectData spData;
|
|
||||||
|
|
||||||
public EssentialsProtectBlockListener(EssentialsProtect parent)
|
public EssentialsProtectBlockListener(EssentialsProtect parent)
|
||||||
{
|
{
|
||||||
@ -31,34 +27,10 @@ public class EssentialsProtectBlockListener extends BlockListener
|
|||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initialize()
|
|
||||||
{
|
|
||||||
if (spData != null) return;
|
|
||||||
spData = new EssentialsProtectData();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBlockRightClick(BlockRightClickEvent event)
|
|
||||||
{
|
|
||||||
initialize();
|
|
||||||
User user = User.get(event.getPlayer());
|
|
||||||
if (user.isAuthorized("essentials.protect.admin"))
|
|
||||||
{
|
|
||||||
String ownerName = spData.getBlockOwner(user.getWorld().getName(), user.getName(),
|
|
||||||
event.getBlock());
|
|
||||||
if (ownerName != null)
|
|
||||||
{
|
|
||||||
user.sendMessage(ChatColor.GOLD + "[EssentialsProtect] Protection owner: "
|
|
||||||
+ ownerName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBlockPlace(BlockPlaceEvent event)
|
public void onBlockPlace(BlockPlaceEvent event)
|
||||||
{
|
{
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled()) return;
|
||||||
initialize();
|
|
||||||
ItemStack item = event.getItemInHand();
|
ItemStack item = event.getItemInHand();
|
||||||
User user = User.get(event.getPlayer());
|
User user = User.get(event.getPlayer());
|
||||||
|
|
||||||
@ -68,7 +40,6 @@ public class EssentialsProtectBlockListener extends BlockListener
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Block blockPlaced = event.getBlockAgainst();
|
|
||||||
int id = event.getBlockPlaced().getTypeId();
|
int id = event.getBlockPlaced().getTypeId();
|
||||||
|
|
||||||
if (EssentialsProtect.checkProtectionItems(EssentialsProtect.blackListPlace, id) && !user.isAuthorized("essentials.protect.exemptplacement"))
|
if (EssentialsProtect.checkProtectionItems(EssentialsProtect.blackListPlace, id) && !user.isAuthorized("essentials.protect.exemptplacement"))
|
||||||
@ -82,33 +53,48 @@ public class EssentialsProtectBlockListener extends BlockListener
|
|||||||
parent.alert(user, item.getType().toString(), "placed: ");
|
parent.alert(user, item.getType().toString(), "placed: ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spData.isBlockAboveProtectedRail(blockPlaced))
|
Block blockPlaced = event.getBlockPlaced();
|
||||||
{
|
Block below = blockPlaced.getFace(BlockFace.DOWN);
|
||||||
|
if (below.getType() == Material.RAILS) {
|
||||||
if (EssentialsProtect.genSettings.get("protect.protect.prevent.block-on-rail"))
|
if (EssentialsProtect.genSettings.get("protect.protect.prevent.block-on-rail"))
|
||||||
{
|
{
|
||||||
|
if (EssentialsProtect.getStorage().isProtected(below, user.getName())) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (item.getTypeId() == 66)
|
List<Block> protect = new ArrayList<Block>();
|
||||||
{
|
if (blockPlaced.getType() == Material.RAILS) {
|
||||||
if (EssentialsProtect.genSettings.get("protect.protect.rails"))
|
if (EssentialsProtect.genSettings.get("protect.protect.rails"))
|
||||||
{
|
{
|
||||||
if (user.isAuthorized("essentials.protect"))
|
if (user.isAuthorized("essentials.protect"))
|
||||||
{
|
{
|
||||||
railBlockX = blockPlaced.getX();
|
protect.add(blockPlaced);
|
||||||
railBlockY = blockPlaced.getY();
|
|
||||||
railBlockZ = blockPlaced.getZ();
|
|
||||||
|
|
||||||
spData.insertProtectionIntoDb(user.getWorld().getName(), user.getName(), railBlockX, railBlockY + 1, railBlockZ);
|
|
||||||
if (EssentialsProtect.genSettings.get("protect.protect.block-below"))
|
if (EssentialsProtect.genSettings.get("protect.protect.block-below"))
|
||||||
{
|
{
|
||||||
spData.insertProtectionIntoDb(user.getWorld().getName(), user.getName(), railBlockX, railBlockY, railBlockZ);
|
protect.add(blockPlaced.getFace(BlockFace.DOWN));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (blockPlaced.getType() == Material.SIGN_POST || blockPlaced.getType() == Material.WALL_SIGN) {
|
||||||
|
if (EssentialsProtect.genSettings.get("protect.protect.signs"))
|
||||||
|
{
|
||||||
|
if (user.isAuthorized("essentials.protect"))
|
||||||
|
{
|
||||||
|
protect.add(blockPlaced);
|
||||||
|
if (EssentialsProtect.genSettings.get("protect.protect.block-below"))
|
||||||
|
{
|
||||||
|
protect.add(event.getBlockAgainst());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (Block block : protect) {
|
||||||
|
EssentialsProtect.getStorage().protectBlock(block, user.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -145,7 +131,7 @@ public class EssentialsProtectBlockListener extends BlockListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBlockFlow(BlockFromToEvent event)
|
public void onBlockFromTo(BlockFromToEvent event)
|
||||||
{
|
{
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled()) return;
|
||||||
Block block = event.getBlock();
|
Block block = event.getBlock();
|
||||||
@ -179,22 +165,6 @@ public class EssentialsProtectBlockListener extends BlockListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBlockInteract(BlockInteractEvent event)
|
|
||||||
{
|
|
||||||
if (event.isCancelled()) return;
|
|
||||||
if (!event.isPlayer()) return;
|
|
||||||
|
|
||||||
User user = User.get((Player)event.getEntity());
|
|
||||||
|
|
||||||
if (EssentialsProtect.playerSettings.get("protect.disable.build") && !user.canBuild())
|
|
||||||
{
|
|
||||||
event.setCancelled(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBlockBurn(BlockBurnEvent event)
|
public void onBlockBurn(BlockBurnEvent event)
|
||||||
{
|
{
|
||||||
@ -220,7 +190,6 @@ public class EssentialsProtectBlockListener extends BlockListener
|
|||||||
public void onBlockBreak(BlockBreakEvent event)
|
public void onBlockBreak(BlockBreakEvent event)
|
||||||
{
|
{
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled()) return;
|
||||||
initialize();
|
|
||||||
User user = User.get(event.getPlayer());
|
User user = User.get(event.getPlayer());
|
||||||
Block block = event.getBlock();
|
Block block = event.getBlock();
|
||||||
if (EssentialsProtect.playerSettings.get("protect.disable.build") && !user.canBuild())
|
if (EssentialsProtect.playerSettings.get("protect.disable.build") && !user.canBuild())
|
||||||
@ -244,28 +213,57 @@ public class EssentialsProtectBlockListener extends BlockListener
|
|||||||
{
|
{
|
||||||
if (block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST || block.getType() == Material.RAILS)
|
if (block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST || block.getType() == Material.RAILS)
|
||||||
{
|
{
|
||||||
spData.removeProtectionFromDB(block, true);
|
EssentialsProtect.getStorage().unprotectBlock(block);
|
||||||
|
if (block.getType() == Material.RAILS || block.getType() == Material.SIGN_POST) {
|
||||||
|
Block below = block.getFace(BlockFace.DOWN);
|
||||||
|
EssentialsProtect.getStorage().unprotectBlock(below);
|
||||||
|
} else {
|
||||||
|
BlockFace[] faces = new BlockFace[] {
|
||||||
|
BlockFace.NORTH,
|
||||||
|
BlockFace.EAST,
|
||||||
|
BlockFace.SOUTH,
|
||||||
|
BlockFace.WEST
|
||||||
|
};
|
||||||
|
for (BlockFace blockFace : faces) {
|
||||||
|
Block against = block.getFace(blockFace);
|
||||||
|
EssentialsProtect.getStorage().unprotectBlock(against);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spData.removeProtectionFromDB(block);
|
EssentialsProtect.getStorage().unprotectBlock(block);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
boolean canDestroy = spData.canDestroy(user.getWorld().getName(), user.getName(), block);
|
|
||||||
if (canDestroy)
|
boolean isProtected = EssentialsProtect.getStorage().isProtected(block, user.getName());
|
||||||
{
|
if (!isProtected) {
|
||||||
if (block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST || block.getType() == Material.RAILS)
|
if (block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST || block.getType() == Material.RAILS)
|
||||||
{
|
{
|
||||||
spData.removeProtectionFromDB(block, true);
|
EssentialsProtect.getStorage().unprotectBlock(block);
|
||||||
|
if (block.getType() == Material.RAILS || block.getType() == Material.SIGN_POST) {
|
||||||
|
Block below = block.getFace(BlockFace.DOWN);
|
||||||
|
EssentialsProtect.getStorage().unprotectBlock(below);
|
||||||
|
} else {
|
||||||
|
BlockFace[] faces = new BlockFace[] {
|
||||||
|
BlockFace.NORTH,
|
||||||
|
BlockFace.EAST,
|
||||||
|
BlockFace.SOUTH,
|
||||||
|
BlockFace.WEST
|
||||||
|
};
|
||||||
|
for (BlockFace blockFace : faces) {
|
||||||
|
Block against = block.getFace(blockFace);
|
||||||
|
EssentialsProtect.getStorage().unprotectBlock(against);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spData.removeProtectionFromDB(block);
|
EssentialsProtect.getStorage().unprotectBlock(block);
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
@ -2,19 +2,16 @@ package com.earth2me.essentials.protect;
|
|||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
import com.earth2me.essentials.Essentials;
|
||||||
import com.earth2me.essentials.User;
|
import com.earth2me.essentials.User;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.event.player.PlayerItemEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerListener;
|
import org.bukkit.event.player.PlayerListener;
|
||||||
|
import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
|
||||||
public class EssentialsProtectPlayerListener extends PlayerListener
|
public class EssentialsProtectPlayerListener extends PlayerListener
|
||||||
{
|
{
|
||||||
private EssentialsProtect parent;
|
private EssentialsProtect parent;
|
||||||
private int signBlockX;
|
|
||||||
private int signBlockY;
|
|
||||||
private int signBlockZ;
|
|
||||||
private EssentialsProtectData spData = null;
|
|
||||||
|
|
||||||
public EssentialsProtectPlayerListener(EssentialsProtect parent)
|
public EssentialsProtectPlayerListener(EssentialsProtect parent)
|
||||||
{
|
{
|
||||||
@ -22,19 +19,43 @@ public class EssentialsProtectPlayerListener extends PlayerListener
|
|||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initialize()
|
@Override
|
||||||
|
public void onPlayerInteract(PlayerInteractEvent event)
|
||||||
{
|
{
|
||||||
if (spData != null) return;
|
if (event.isCancelled()) return;
|
||||||
spData = new EssentialsProtectData();
|
User user = User.get(event.getPlayer());
|
||||||
|
|
||||||
|
if (EssentialsProtect.playerSettings.get("protect.disable.build") && !user.canBuild())
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user.isAuthorized("essentials.protect.admin"))
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
boolean first = true;
|
||||||
|
for (String owner : EssentialsProtect.getStorage().getOwners(event.getClickedBlock())) {
|
||||||
|
if (!first) {
|
||||||
|
sb.append(", ");
|
||||||
|
}
|
||||||
|
first = false;
|
||||||
|
sb.append(owner);
|
||||||
|
}
|
||||||
|
String ownerNames = sb.toString();
|
||||||
|
if (ownerNames != null)
|
||||||
|
{
|
||||||
|
user.sendMessage(ChatColor.GOLD + "[EssentialsProtect] Protection owners: " + ownerNames);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerItem(PlayerItemEvent event)
|
public void onPlayerPickupItem(PlayerPickupItemEvent event)
|
||||||
{
|
{
|
||||||
if(event.isCancelled()) return;
|
if(event.isCancelled()) return;
|
||||||
ItemStack item = event.getItem();
|
ItemStack item = event.getItem().getItemStack();
|
||||||
User user = User.get(event.getPlayer());
|
User user = User.get(event.getPlayer());
|
||||||
Block blockPlaced = event.getBlockClicked();
|
|
||||||
if (EssentialsProtect.checkProtectionItems(EssentialsProtect.usageList, item.getTypeId()) && !user.isAuthorized("essentials.protect.exemptusage"))
|
if (EssentialsProtect.checkProtectionItems(EssentialsProtect.usageList, item.getTypeId()) && !user.isAuthorized("essentials.protect.exemptusage"))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
@ -45,29 +66,5 @@ public class EssentialsProtectPlayerListener extends PlayerListener
|
|||||||
{
|
{
|
||||||
parent.alert(user, item.getType().toString(), "used: ");
|
parent.alert(user, item.getType().toString(), "used: ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.getTypeId() == 323)
|
|
||||||
{
|
|
||||||
if (EssentialsProtect.genSettings.get("protect.protect.signs"))
|
|
||||||
{
|
|
||||||
if (user.isAuthorized("essentials.protect"))
|
|
||||||
{
|
|
||||||
|
|
||||||
signBlockX = blockPlaced.getX();
|
|
||||||
signBlockY = blockPlaced.getY();
|
|
||||||
signBlockZ = blockPlaced.getZ();
|
|
||||||
|
|
||||||
initialize();
|
|
||||||
spData.insertProtectionIntoDb(user.getWorld().getName(), user.getName(), signBlockX,
|
|
||||||
signBlockY + 1, signBlockZ);
|
|
||||||
|
|
||||||
if (EssentialsProtect.genSettings.get("protect.protect.block-below"))
|
|
||||||
{
|
|
||||||
spData.insertProtectionIntoDb(user.getWorld().getName(), user.getName(), signBlockX,
|
|
||||||
signBlockY, signBlockZ);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.earth2me.essentials.protect.data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
|
public interface IProtectedBlock {
|
||||||
|
public void clearProtections();
|
||||||
|
public void importProtections(List<OwnedBlock> blocks);
|
||||||
|
public List<OwnedBlock> exportProtections();
|
||||||
|
public void protectBlock(Block block, String playerName);
|
||||||
|
public boolean isProtected(Block block, String playerName);
|
||||||
|
public List<String> getOwners(Block block);
|
||||||
|
public int unprotectBlock(Block block);
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.earth2me.essentials.protect.data;
|
||||||
|
|
||||||
|
public class OwnedBlock {
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
int z;
|
||||||
|
String world;
|
||||||
|
String playerName;
|
||||||
|
}
|
@ -0,0 +1,292 @@
|
|||||||
|
package com.earth2me.essentials.protect.data;
|
||||||
|
|
||||||
|
import com.mchange.v2.c3p0.ComboPooledDataSource;
|
||||||
|
import java.beans.PropertyVetoException;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
|
public abstract class ProtectedBlockJDBC implements IProtectedBlock {
|
||||||
|
protected static final Logger logger = Logger.getLogger("Minecraft");
|
||||||
|
protected ComboPooledDataSource cpds;
|
||||||
|
|
||||||
|
protected abstract PreparedStatement getStatementCreateTable(Connection conn) throws SQLException;
|
||||||
|
protected abstract PreparedStatement getStatementDeleteAll(Connection conn) throws SQLException;
|
||||||
|
protected abstract PreparedStatement getStatementInsert(Connection conn, String world, int x, int y, int z, String playerName) throws SQLException;
|
||||||
|
protected abstract PreparedStatement getStatementPlayerCountByLocation(Connection conn, String world, int x, int y, int z, String playerName) throws SQLException;
|
||||||
|
protected abstract PreparedStatement getStatementPlayersByLocation(Connection conn, String name, int x, int y, int z) throws SQLException;
|
||||||
|
protected abstract PreparedStatement getStatementDeleteByLocation(Connection conn, String world, int x, int y, int z) throws SQLException;
|
||||||
|
protected abstract PreparedStatement getStatementAllBlocks(Connection conn) throws SQLException;
|
||||||
|
|
||||||
|
public ProtectedBlockJDBC(String driver, String url) throws PropertyVetoException {
|
||||||
|
this(driver, url, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProtectedBlockJDBC(String driver, String url, String username, String password) throws PropertyVetoException {
|
||||||
|
cpds = new ComboPooledDataSource();
|
||||||
|
cpds.setDriverClass(driver);
|
||||||
|
cpds.setJdbcUrl(url);
|
||||||
|
if (username != null) {
|
||||||
|
cpds.setUser(username);
|
||||||
|
cpds.setPassword(password);
|
||||||
|
}
|
||||||
|
cpds.setMaxStatements(20);
|
||||||
|
createAndConvertTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void createAndConvertTable() {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement ps = null;
|
||||||
|
try {
|
||||||
|
conn = cpds.getConnection();
|
||||||
|
ps = getStatementCreateTable(conn);
|
||||||
|
ps.execute();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
} finally {
|
||||||
|
if (ps != null) {
|
||||||
|
try {
|
||||||
|
ps.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
conn.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearProtections() {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement ps = null;
|
||||||
|
try {
|
||||||
|
conn = cpds.getConnection();
|
||||||
|
ps = getStatementDeleteAll(conn);
|
||||||
|
ps.executeUpdate();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
} finally {
|
||||||
|
if (ps != null) {
|
||||||
|
try {
|
||||||
|
ps.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
conn.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void importProtections(List<OwnedBlock> blocks) {
|
||||||
|
for (OwnedBlock ownedBlock : blocks) {
|
||||||
|
if (ownedBlock.playerName == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
protectBlock(ownedBlock.world, ownedBlock.x, ownedBlock.y, ownedBlock.z, ownedBlock.playerName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<OwnedBlock> exportProtections() {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement ps = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
List<OwnedBlock> blocks = new ArrayList<OwnedBlock>();
|
||||||
|
try {
|
||||||
|
conn = cpds.getConnection();
|
||||||
|
ps = getStatementAllBlocks(conn);
|
||||||
|
rs = ps.executeQuery();
|
||||||
|
while (rs.next()) {
|
||||||
|
OwnedBlock ob = new OwnedBlock();
|
||||||
|
ob.world = rs.getString(1);
|
||||||
|
ob.x = rs.getInt(2);
|
||||||
|
ob.y = rs.getInt(3);
|
||||||
|
ob.z = rs.getInt(4);
|
||||||
|
ob.playerName = rs.getString(5);
|
||||||
|
blocks.add(ob);
|
||||||
|
}
|
||||||
|
return blocks;
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
return blocks;
|
||||||
|
} finally {
|
||||||
|
if (rs != null) {
|
||||||
|
try {
|
||||||
|
rs.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ps != null) {
|
||||||
|
try {
|
||||||
|
ps.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
conn.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void protectBlock(Block block, String playerName) {
|
||||||
|
protectBlock(block.getWorld().getName(), block.getX(), block.getY(), block.getZ(), playerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void protectBlock(String world, int x, int y, int z, String playerName) {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement ps = null;
|
||||||
|
try {
|
||||||
|
conn = cpds.getConnection();
|
||||||
|
ps = getStatementInsert(conn, world, x, y, z, playerName);
|
||||||
|
ps.executeUpdate();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
} finally {
|
||||||
|
if (ps != null) {
|
||||||
|
try {
|
||||||
|
ps.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
conn.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isProtected(Block block, String playerName) {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement ps = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try {
|
||||||
|
conn = cpds.getConnection();
|
||||||
|
ps = getStatementPlayerCountByLocation(conn, block.getWorld().getName(), block.getX(), block.getY(), block.getZ(), playerName);
|
||||||
|
rs = ps.executeQuery();
|
||||||
|
rs.next();
|
||||||
|
return rs.getInt(1) > 0 && rs.getInt(2) == 0;
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
return true;
|
||||||
|
} finally {
|
||||||
|
if (rs != null) {
|
||||||
|
try {
|
||||||
|
rs.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ps != null) {
|
||||||
|
try {
|
||||||
|
ps.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
conn.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getOwners(Block block) {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement ps = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
List<String> owners = new ArrayList<String>();
|
||||||
|
try {
|
||||||
|
conn = cpds.getConnection();
|
||||||
|
ps = getStatementPlayersByLocation(conn, block.getWorld().getName(), block.getX(), block.getY(), block.getZ());
|
||||||
|
rs = ps.executeQuery();
|
||||||
|
while (rs.next()) {
|
||||||
|
owners.add(rs.getString(1));
|
||||||
|
}
|
||||||
|
return owners;
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
return owners;
|
||||||
|
} finally {
|
||||||
|
if (rs != null) {
|
||||||
|
try {
|
||||||
|
rs.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ps != null) {
|
||||||
|
try {
|
||||||
|
ps.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
conn.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int unprotectBlock(Block block) {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement ps = null;
|
||||||
|
try {
|
||||||
|
conn = cpds.getConnection();
|
||||||
|
ps = getStatementDeleteByLocation(conn, block.getWorld().getName(), block.getX(), block.getY(), block.getZ());
|
||||||
|
return ps.executeUpdate();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
return 0;
|
||||||
|
} finally {
|
||||||
|
if (ps != null) {
|
||||||
|
try {
|
||||||
|
ps.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
conn.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
logger.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,205 @@
|
|||||||
|
package com.earth2me.essentials.protect.data;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
public class ProtectedBlockMemory implements IProtectedBlock {
|
||||||
|
|
||||||
|
List<String> worlds = new ArrayList<String>();
|
||||||
|
List<String> playerNames = new ArrayList<String>();
|
||||||
|
IProtectedBlock storage;
|
||||||
|
Plugin plugin;
|
||||||
|
|
||||||
|
class ProtectedLocation {
|
||||||
|
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
int z;
|
||||||
|
int w;
|
||||||
|
|
||||||
|
private ProtectedLocation(Block block, int worldId) {
|
||||||
|
this.x = block.getX();
|
||||||
|
this.y = block.getY();
|
||||||
|
this.z = block.getZ();
|
||||||
|
this.w = worldId;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ProtectedLocation(OwnedBlock ownedBlock, int worldId) {
|
||||||
|
this.x = ownedBlock.x;
|
||||||
|
this.y = ownedBlock.y;
|
||||||
|
this.z = ownedBlock.z;
|
||||||
|
this.w = worldId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (o instanceof ProtectedLocation) {
|
||||||
|
ProtectedLocation pl = (ProtectedLocation) o;
|
||||||
|
return x == pl.x && y == pl.y && z == pl.z && w == pl.w;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return x ^ y ^ z ^ w;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ProtectedBy {
|
||||||
|
|
||||||
|
private int playerId = -1;
|
||||||
|
private Set<Integer> playerIds;
|
||||||
|
|
||||||
|
private ProtectedBy() {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void add(int playerId) {
|
||||||
|
if (this.playerId == -1 || this.playerId == playerId) {
|
||||||
|
this.playerId = playerId;
|
||||||
|
} else {
|
||||||
|
if (playerIds == null) {
|
||||||
|
playerIds = new HashSet<Integer>(4);
|
||||||
|
playerIds.add(this.playerId);
|
||||||
|
}
|
||||||
|
playerIds.add(playerId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean contains(int playerId) {
|
||||||
|
if (playerIds == null) {
|
||||||
|
return this.playerId == playerId;
|
||||||
|
}
|
||||||
|
return playerIds.contains(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getPlayers(List<String> playerNames) {
|
||||||
|
if (playerIds == null) {
|
||||||
|
List<String> list = new ArrayList<String>(2);
|
||||||
|
list.add(playerNames.get(playerId));
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
List<String> list = new ArrayList<String>(playerIds.size());
|
||||||
|
for (Integer integer : playerIds) {
|
||||||
|
list.add(playerNames.get(integer));
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int size() {
|
||||||
|
if (playerIds == null) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return playerIds.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
HashMap<ProtectedLocation, ProtectedBy> blocks = new HashMap<ProtectedLocation, ProtectedBy>();
|
||||||
|
|
||||||
|
public ProtectedBlockMemory(IProtectedBlock storage) {
|
||||||
|
this.storage = storage;
|
||||||
|
importProtections(storage.exportProtections());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearProtections() {
|
||||||
|
blocks.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public final void importProtections(List<OwnedBlock> blocks) {
|
||||||
|
for (OwnedBlock ownedBlock : blocks) {
|
||||||
|
ProtectedLocation pl = new ProtectedLocation(ownedBlock, getWorldId(ownedBlock.world));
|
||||||
|
if (ownedBlock.playerName == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
protectBlock(pl, ownedBlock.playerName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<OwnedBlock> exportProtections() {
|
||||||
|
List<OwnedBlock> blockList = new ArrayList<OwnedBlock>(blocks.size());
|
||||||
|
for (Entry<ProtectedLocation, ProtectedBy> entry : blocks.entrySet()) {
|
||||||
|
for (String name : entry.getValue().getPlayers(playerNames)) {
|
||||||
|
OwnedBlock ob = new OwnedBlock();
|
||||||
|
ob.x = entry.getKey().x;
|
||||||
|
ob.y = entry.getKey().y;
|
||||||
|
ob.z = entry.getKey().z;
|
||||||
|
ob.world = worlds.get(entry.getKey().w);
|
||||||
|
ob.playerName = name;
|
||||||
|
blockList.add(ob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return blockList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void protectBlock(final Block block, final String playerName) {
|
||||||
|
ProtectedLocation pl = new ProtectedLocation(block, getWorldId(block.getWorld()));
|
||||||
|
protectBlock(pl, playerName);
|
||||||
|
plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
storage.protectBlock(block, playerName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void protectBlock(ProtectedLocation pl, String playerName) {
|
||||||
|
int playerId = getPlayerId(playerName);
|
||||||
|
ProtectedBy pb = blocks.get(pl);
|
||||||
|
if (pb == null) {
|
||||||
|
pb = new ProtectedBy();
|
||||||
|
blocks.put(pl, pb);
|
||||||
|
}
|
||||||
|
pb.add(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isProtected(Block block, String playerName) {
|
||||||
|
int playerId = getPlayerId(playerName);
|
||||||
|
ProtectedLocation pl = new ProtectedLocation(block, getWorldId(block.getWorld()));
|
||||||
|
ProtectedBy pb = blocks.get(pl);
|
||||||
|
return !pb.contains(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getOwners(Block block) {
|
||||||
|
ProtectedLocation pl = new ProtectedLocation(block, getWorldId(block.getWorld()));
|
||||||
|
ProtectedBy pb = blocks.get(pl);
|
||||||
|
return pb.getPlayers(playerNames);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int unprotectBlock(final Block block) {
|
||||||
|
ProtectedLocation pl = new ProtectedLocation(block, getWorldId(block.getWorld()));
|
||||||
|
ProtectedBy pb = blocks.remove(pl);
|
||||||
|
plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
storage.unprotectBlock(block);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return pb.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getPlayerId(String playername) {
|
||||||
|
int id = playerNames.indexOf(playername);
|
||||||
|
if (id < 0) {
|
||||||
|
playerNames.add(playername);
|
||||||
|
id = playerNames.indexOf(playername);
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getWorldId(World world) {
|
||||||
|
return getWorldId(world.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getWorldId(String name) {
|
||||||
|
int id = worlds.indexOf(name);
|
||||||
|
if (id < 0) {
|
||||||
|
worlds.add(name);
|
||||||
|
id = worlds.indexOf(name);
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,89 @@
|
|||||||
|
package com.earth2me.essentials.protect.data;
|
||||||
|
|
||||||
|
import java.beans.PropertyVetoException;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class ProtectedBlockMySQL extends ProtectedBlockJDBC {
|
||||||
|
|
||||||
|
public ProtectedBlockMySQL(String url, String username, String password) throws PropertyVetoException {
|
||||||
|
super("com.mysql.jdbc.Driver", url, username, password);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String QueryCreateTable =
|
||||||
|
"CREATE TABLE IF NOT EXISTS `EssentialsProtectedBlocks` ("
|
||||||
|
+ "`worldName` varchar(150) NOT NULL,"
|
||||||
|
+ "`x` int(11) NOT NULL, `y` int(11) NOT NULL, `z` int(11) NOT NULL,"
|
||||||
|
+ "`playerName` varchar(150) NOT NULL,"
|
||||||
|
+ ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementCreateTable(Connection conn) throws SQLException {
|
||||||
|
return conn.prepareStatement(QueryCreateTable);
|
||||||
|
}
|
||||||
|
private static final String QueryDeleteAll = "DELETE FROM EssentialsProtectedBlocks;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementDeleteAll(Connection conn) throws SQLException {
|
||||||
|
return conn.prepareStatement(QueryDeleteAll);
|
||||||
|
}
|
||||||
|
private static final String QueryInsert =
|
||||||
|
"INSERT INTO EssentialsProtectedBlocks (worldName, x, y, z, playerName) VALUES (?, ?, ?, ?, ?);";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementInsert(Connection conn, String world, int x, int y, int z, String playerName) throws SQLException {
|
||||||
|
PreparedStatement ps = conn.prepareStatement(QueryInsert);
|
||||||
|
ps.setString(1, world);
|
||||||
|
ps.setInt(2, x);
|
||||||
|
ps.setInt(3, y);
|
||||||
|
ps.setInt(4, z);
|
||||||
|
ps.setString(5, playerName);
|
||||||
|
return ps;
|
||||||
|
}
|
||||||
|
private static final String QueryCountByPlayer =
|
||||||
|
"SELECT COUNT(playerName), SUM(playerName = ?) FROM EssentialsProtectedBlocks "
|
||||||
|
+ "WHERE worldName = ? AND x = ? AND y = ? AND z = ? GROUP BY x;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementPlayerCountByLocation(Connection conn, String world, int x, int y, int z, String playerName) throws SQLException {
|
||||||
|
PreparedStatement ps = conn.prepareStatement(QueryCountByPlayer);
|
||||||
|
ps.setString(1, playerName);
|
||||||
|
ps.setString(2, world);
|
||||||
|
ps.setInt(3, x);
|
||||||
|
ps.setInt(4, y);
|
||||||
|
ps.setInt(5, z);
|
||||||
|
return ps;
|
||||||
|
}
|
||||||
|
private static final String QueryPlayersByLocation =
|
||||||
|
"SELECT playerName FROM EssentialsProtectedBlocks WHERE worldname = ? AND x = ? AND y = ? AND z = ?;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementPlayersByLocation(Connection conn, String world, int x, int y, int z) throws SQLException {
|
||||||
|
PreparedStatement ps = conn.prepareStatement(QueryPlayersByLocation);
|
||||||
|
ps.setString(1, world);
|
||||||
|
ps.setInt(2, x);
|
||||||
|
ps.setInt(3, y);
|
||||||
|
ps.setInt(4, z);
|
||||||
|
return ps;
|
||||||
|
}
|
||||||
|
private static final String QueryDeleteByLocation =
|
||||||
|
"DELETE FROM EssentialsProtectedBlocks WHERE worldName = ? AND x = ? AND y = ? AND z = ?;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementDeleteByLocation(Connection conn, String world, int x, int y, int z) throws SQLException {
|
||||||
|
PreparedStatement ps = conn.prepareStatement(QueryDeleteByLocation);
|
||||||
|
ps.setString(1, world);
|
||||||
|
ps.setInt(2, x);
|
||||||
|
ps.setInt(3, y);
|
||||||
|
ps.setInt(4, z);
|
||||||
|
return ps;
|
||||||
|
}
|
||||||
|
private static final String QueryAllBlocks =
|
||||||
|
"SELECT worldName, x, y, z, playerName FROM EssentialsProtectedBlocks;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementAllBlocks(Connection conn) throws SQLException {
|
||||||
|
return conn.prepareStatement(QueryAllBlocks);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package com.earth2me.essentials.protect.data;
|
||||||
|
|
||||||
|
import java.beans.PropertyVetoException;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class ProtectedBlockSQLite extends ProtectedBlockJDBC {
|
||||||
|
|
||||||
|
public ProtectedBlockSQLite(String url) throws PropertyVetoException {
|
||||||
|
super("org.sqlite.JDBC", url);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String QueryCreateTable =
|
||||||
|
"CREATE TABLE IF NOT EXISTS EssentialsProtect ("
|
||||||
|
+ "worldName TEXT ,playerName TEXT, "
|
||||||
|
+ "x NUMERIC, y NUMERIC, z NUMERIC)";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementCreateTable(Connection conn) throws SQLException {
|
||||||
|
return conn.prepareStatement(QueryCreateTable);
|
||||||
|
}
|
||||||
|
private static final String QueryDeleteAll = "DELETE FROM EssentialsProtectedBlocks;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementDeleteAll(Connection conn) throws SQLException {
|
||||||
|
return conn.prepareStatement(QueryDeleteAll);
|
||||||
|
}
|
||||||
|
private static final String QueryInsert =
|
||||||
|
"INSERT INTO EssentialsProtectedBlocks (worldName, x, y, z, playerName) VALUES (?, ?, ?, ?, ?);";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementInsert(Connection conn, String world, int x, int y, int z, String playerName) throws SQLException {
|
||||||
|
PreparedStatement ps = conn.prepareStatement(QueryInsert);
|
||||||
|
ps.setString(1, world);
|
||||||
|
ps.setInt(2, x);
|
||||||
|
ps.setInt(3, y);
|
||||||
|
ps.setInt(4, z);
|
||||||
|
ps.setString(5, playerName);
|
||||||
|
return ps;
|
||||||
|
}
|
||||||
|
private static final String QueryPlayerCountByLocation =
|
||||||
|
"SELECT COUNT(playerName), SUM(playerName = ?) FROM EssentialsProtectedBlocks "
|
||||||
|
+ "WHERE worldName = ? AND x = ? AND y = ? AND z = ? GROUP BY x;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementPlayerCountByLocation(Connection conn, String world, int x, int y, int z, String playerName) throws SQLException {
|
||||||
|
PreparedStatement ps = conn.prepareStatement(QueryPlayerCountByLocation);
|
||||||
|
ps.setString(1, playerName);
|
||||||
|
ps.setString(2, world);
|
||||||
|
ps.setInt(3, x);
|
||||||
|
ps.setInt(4, y);
|
||||||
|
ps.setInt(5, z);
|
||||||
|
return ps;
|
||||||
|
}
|
||||||
|
private static final String QueryPlayersByLocation =
|
||||||
|
"SELECT playerName FROM EssentialsProtectedBlocks WHERE worldname = ? AND x = ? AND y = ? AND z = ?;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementPlayersByLocation(Connection conn, String world, int x, int y, int z) throws SQLException {
|
||||||
|
PreparedStatement ps = conn.prepareStatement(QueryPlayersByLocation);
|
||||||
|
ps.setString(1, world);
|
||||||
|
ps.setInt(2, x);
|
||||||
|
ps.setInt(3, y);
|
||||||
|
ps.setInt(4, z);
|
||||||
|
return ps;
|
||||||
|
}
|
||||||
|
private static final String QueryDeleteByLocation =
|
||||||
|
"DELETE FROM EssentialsProtectedBlocks WHERE worldName = ? AND x = ? AND y = ? AND z = ?;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementDeleteByLocation(Connection conn, String world, int x, int y, int z) throws SQLException {
|
||||||
|
PreparedStatement ps = conn.prepareStatement(QueryDeleteByLocation);
|
||||||
|
ps.setString(1, world);
|
||||||
|
ps.setInt(2, x);
|
||||||
|
ps.setInt(3, y);
|
||||||
|
ps.setInt(4, z);
|
||||||
|
return ps;
|
||||||
|
}
|
||||||
|
private static final String QueryAllBlocks =
|
||||||
|
"SELECT worldName, x, y, z, playerName FROM EssentialsProtectedBlocks;";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected PreparedStatement getStatementAllBlocks(Connection conn) throws SQLException {
|
||||||
|
return conn.prepareStatement(QueryAllBlocks);
|
||||||
|
}
|
||||||
|
}
|
@ -1,76 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE project [ <!ENTITY buildinc SYSTEM "../build.inc.xml"> ]>
|
|
||||||
<!-- You may freely edit this file. See commented blocks below for -->
|
|
||||||
<!-- some examples of how to customize the build. -->
|
|
||||||
<!-- (If you delete it and reopen the project it will be recreated.) -->
|
|
||||||
<!-- By default, only the Clean and Build commands use this build script. -->
|
|
||||||
<!-- Commands such as Run, Debug, and Test only use this build script if -->
|
|
||||||
<!-- the Compile on Save feature is turned off for the project. -->
|
|
||||||
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
|
|
||||||
<!-- in the project's Project Properties dialog box.-->
|
|
||||||
<project name="EssentialsServerlist" default="default" basedir=".">
|
|
||||||
<description>Builds, tests, and runs the project EssentialsServerlist.</description>
|
|
||||||
<import file="nbproject/build-impl.xml"/>
|
|
||||||
&buildinc;
|
|
||||||
<!--
|
|
||||||
|
|
||||||
There exist several targets which are by default empty and which can be
|
|
||||||
used for execution of your tasks. These targets are usually executed
|
|
||||||
before and after some main targets. They are:
|
|
||||||
|
|
||||||
-pre-init: called before initialization of project properties
|
|
||||||
-post-init: called after initialization of project properties
|
|
||||||
-pre-compile: called before javac compilation
|
|
||||||
-post-compile: called after javac compilation
|
|
||||||
-pre-compile-single: called before javac compilation of single file
|
|
||||||
-post-compile-single: called after javac compilation of single file
|
|
||||||
-pre-compile-test: called before javac compilation of JUnit tests
|
|
||||||
-post-compile-test: called after javac compilation of JUnit tests
|
|
||||||
-pre-compile-test-single: called before javac compilation of single JUnit test
|
|
||||||
-post-compile-test-single: called after javac compilation of single JUunit test
|
|
||||||
-pre-jar: called before JAR building
|
|
||||||
-post-jar: called after JAR building
|
|
||||||
-post-clean: called after cleaning build products
|
|
||||||
|
|
||||||
(Targets beginning with '-' are not intended to be called on their own.)
|
|
||||||
|
|
||||||
Example of inserting an obfuscator after compilation could look like this:
|
|
||||||
|
|
||||||
<target name="-post-compile">
|
|
||||||
<obfuscate>
|
|
||||||
<fileset dir="${build.classes.dir}"/>
|
|
||||||
</obfuscate>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
For list of available properties check the imported
|
|
||||||
nbproject/build-impl.xml file.
|
|
||||||
|
|
||||||
|
|
||||||
Another way to customize the build is by overriding existing main targets.
|
|
||||||
The targets of interest are:
|
|
||||||
|
|
||||||
-init-macrodef-javac: defines macro for javac compilation
|
|
||||||
-init-macrodef-junit: defines macro for junit execution
|
|
||||||
-init-macrodef-debug: defines macro for class debugging
|
|
||||||
-init-macrodef-java: defines macro for class execution
|
|
||||||
-do-jar-with-manifest: JAR building (if you are using a manifest)
|
|
||||||
-do-jar-without-manifest: JAR building (if you are not using a manifest)
|
|
||||||
run: execution of project
|
|
||||||
-javadoc-build: Javadoc generation
|
|
||||||
test-report: JUnit report generation
|
|
||||||
|
|
||||||
An example of overriding the target for project execution could look like this:
|
|
||||||
|
|
||||||
<target name="run" depends="EssentialsServerlist-impl.jar">
|
|
||||||
<exec dir="bin" executable="launcher.exe">
|
|
||||||
<arg file="${dist.jar}"/>
|
|
||||||
</exec>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
Notice that the overridden target depends on the jar target and not only on
|
|
||||||
the compile target as the regular run target does. Again, for a list of available
|
|
||||||
properties which you can use, check the target you are overriding in the
|
|
||||||
nbproject/build-impl.xml file.
|
|
||||||
|
|
||||||
-->
|
|
||||||
</project>
|
|
File diff suppressed because it is too large
Load Diff
@ -1,8 +0,0 @@
|
|||||||
build.xml.data.CRC32=b3f32d5a
|
|
||||||
build.xml.script.CRC32=d07c143a
|
|
||||||
build.xml.stylesheet.CRC32=28e38971@1.38.2.45
|
|
||||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
|
||||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
|
||||||
nbproject/build-impl.xml.data.CRC32=28f52c06
|
|
||||||
nbproject/build-impl.xml.script.CRC32=bdef3982
|
|
||||||
nbproject/build-impl.xml.stylesheet.CRC32=19debb58@1.42.1.45
|
|
@ -1,76 +0,0 @@
|
|||||||
annotation.processing.enabled=true
|
|
||||||
annotation.processing.enabled.in.editor=false
|
|
||||||
annotation.processing.run.all.processors=true
|
|
||||||
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
|
|
||||||
application.title=EssentialsServerlist
|
|
||||||
application.vendor=Paul
|
|
||||||
build.classes.dir=${build.dir}/classes
|
|
||||||
build.classes.excludes=**/*.java,**/*.form
|
|
||||||
# This directory is removed when the project is cleaned:
|
|
||||||
build.dir=build
|
|
||||||
build.generated.dir=${build.dir}/generated
|
|
||||||
build.generated.sources.dir=${build.dir}/generated-sources
|
|
||||||
# Only compile against the classpath explicitly listed here:
|
|
||||||
build.sysclasspath=ignore
|
|
||||||
build.test.classes.dir=${build.dir}/test/classes
|
|
||||||
build.test.results.dir=${build.dir}/test/results
|
|
||||||
# Uncomment to specify the preferred debugger connection transport:
|
|
||||||
#debug.transport=dt_socket
|
|
||||||
debug.classpath=\
|
|
||||||
${run.classpath}
|
|
||||||
debug.test.classpath=\
|
|
||||||
${run.test.classpath}
|
|
||||||
# This directory is removed when the project is cleaned:
|
|
||||||
dist.dir=dist
|
|
||||||
dist.jar=${dist.dir}/EssentialsServerlist.jar
|
|
||||||
dist.javadoc.dir=${dist.dir}/javadoc
|
|
||||||
endorsed.classpath=
|
|
||||||
excludes=
|
|
||||||
file.reference.craftbukkit-0.0.1-SNAPSHOT.jar-1=..\\lib\\craftbukkit-0.0.1-SNAPSHOT.jar
|
|
||||||
includes=**
|
|
||||||
jar.compress=false
|
|
||||||
javac.classpath=\
|
|
||||||
${reference.Essentials.jar}:\
|
|
||||||
${file.reference.craftbukkit-0.0.1-SNAPSHOT.jar-1}
|
|
||||||
# Space-separated list of extra javac options
|
|
||||||
javac.compilerargs=
|
|
||||||
javac.deprecation=false
|
|
||||||
javac.processorpath=\
|
|
||||||
${javac.classpath}
|
|
||||||
javac.source=1.5
|
|
||||||
javac.target=1.5
|
|
||||||
javac.test.classpath=\
|
|
||||||
${javac.classpath}:\
|
|
||||||
${build.classes.dir}:\
|
|
||||||
${libs.junit.classpath}:\
|
|
||||||
${libs.junit_4.classpath}
|
|
||||||
javac.test.processorpath=\
|
|
||||||
${javac.test.classpath}
|
|
||||||
javadoc.additionalparam=
|
|
||||||
javadoc.author=false
|
|
||||||
javadoc.encoding=${source.encoding}
|
|
||||||
javadoc.noindex=false
|
|
||||||
javadoc.nonavbar=false
|
|
||||||
javadoc.notree=false
|
|
||||||
javadoc.private=false
|
|
||||||
javadoc.splitindex=true
|
|
||||||
javadoc.use=true
|
|
||||||
javadoc.version=false
|
|
||||||
javadoc.windowtitle=
|
|
||||||
meta.inf.dir=${src.dir}/META-INF
|
|
||||||
platform.active=default_platform
|
|
||||||
project.Essentials=../Essentials
|
|
||||||
reference.Essentials.jar=${project.Essentials}/dist/Essentials.jar
|
|
||||||
run.classpath=\
|
|
||||||
${javac.classpath}:\
|
|
||||||
${build.classes.dir}
|
|
||||||
# Space-separated list of JVM arguments used when running the project
|
|
||||||
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
|
|
||||||
# or test-sys-prop.name=value to set system properties for unit tests):
|
|
||||||
run.jvmargs=
|
|
||||||
run.test.classpath=\
|
|
||||||
${javac.test.classpath}:\
|
|
||||||
${build.test.classes.dir}
|
|
||||||
source.encoding=UTF-8
|
|
||||||
src.dir=src
|
|
||||||
test.src.dir=test
|
|
@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
|
||||||
<type>org.netbeans.modules.java.j2seproject</type>
|
|
||||||
<configuration>
|
|
||||||
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
|
|
||||||
<name>EssentialsServerlist</name>
|
|
||||||
<source-roots>
|
|
||||||
<root id="src.dir"/>
|
|
||||||
</source-roots>
|
|
||||||
<test-roots>
|
|
||||||
<root id="test.src.dir"/>
|
|
||||||
</test-roots>
|
|
||||||
</data>
|
|
||||||
<libraries xmlns="http://www.netbeans.org/ns/ant-project-libraries/1">
|
|
||||||
<definitions>../lib\nblibraries.properties</definitions>
|
|
||||||
</libraries>
|
|
||||||
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
|
|
||||||
<reference>
|
|
||||||
<foreign-project>Essentials</foreign-project>
|
|
||||||
<artifact-type>jar</artifact-type>
|
|
||||||
<script>build.xml</script>
|
|
||||||
<target>jar</target>
|
|
||||||
<clean-target>clean</clean-target>
|
|
||||||
<id>jar</id>
|
|
||||||
</reference>
|
|
||||||
</references>
|
|
||||||
</configuration>
|
|
||||||
</project>
|
|
@ -1,149 +0,0 @@
|
|||||||
package net.mcserverlist.bukkit;
|
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
|
||||||
import java.io.*;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.event.Event;
|
|
||||||
import org.bukkit.event.Event.Priority;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.bukkit.plugin.PluginDescriptionFile;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
|
|
||||||
public class Mcsl extends JavaPlugin
|
|
||||||
{
|
|
||||||
private static final Logger logger = Logger.getLogger("Minecraft");
|
|
||||||
private McslPlayerListener playerListener;
|
|
||||||
public final String author;
|
|
||||||
|
|
||||||
public Mcsl() throws IOException
|
|
||||||
{
|
|
||||||
|
|
||||||
PluginDescriptionFile desc = this.getDescription();
|
|
||||||
|
|
||||||
// Compile author list
|
|
||||||
List<String> authors = new ArrayList<String>();
|
|
||||||
authors.add("Vimae Development");
|
|
||||||
int alen = authors.size();
|
|
||||||
if (alen == 1)
|
|
||||||
{
|
|
||||||
author = " by " + authors.get(0);
|
|
||||||
}
|
|
||||||
else if (alen > 1)
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
StringBuilder bldr = new StringBuilder();
|
|
||||||
for (String a : desc.getAuthors())
|
|
||||||
{
|
|
||||||
if (i + 1 == alen)
|
|
||||||
{
|
|
||||||
if (alen > 2) bldr.append(",");
|
|
||||||
bldr.append(" and ");
|
|
||||||
}
|
|
||||||
else if (i++ > 0)
|
|
||||||
{
|
|
||||||
bldr.append(", ");
|
|
||||||
}
|
|
||||||
bldr.append(a);
|
|
||||||
}
|
|
||||||
bldr.insert(0, " by ");
|
|
||||||
author = bldr.toString();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
author = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
|
|
||||||
{
|
|
||||||
McslCommands mcslCmd;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
switch (McslCommands.valueOf(cmd.getName().toUpperCase()))
|
|
||||||
{
|
|
||||||
case WHITELIST:
|
|
||||||
whitelist(sender, WhitelistCommands.valueOf(args[0].toUpperCase()), args);
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException ex)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
logger.log(Level.WARNING, "MCSL encountered an unknown error.", ex);
|
|
||||||
sender.sendMessage("MCSL encountered an unknown error.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("LoggerStringConcat")
|
|
||||||
public void onEnable()
|
|
||||||
{
|
|
||||||
Plugin p = this.getServer().getPluginManager().getPlugin("Essentials");
|
|
||||||
if (p != null) {
|
|
||||||
if (!this.getServer().getPluginManager().isPluginEnabled(p)) {
|
|
||||||
this.getServer().getPluginManager().enablePlugin(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
playerListener = new McslPlayerListener(this);
|
|
||||||
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Monitor, this);
|
|
||||||
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Monitor, this);
|
|
||||||
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Lowest, this);
|
|
||||||
|
|
||||||
if (!this.getDescription().getVersion().equals(Essentials.getStatic().getDescription().getVersion())) {
|
|
||||||
logger.log(Level.WARNING, "Version mismatch! Please update all Essentials jars to the same version.");
|
|
||||||
}
|
|
||||||
logger.info(getDescription().getName() + " version " + getDescription().getVersion() + author + " enabled.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("LoggerStringConcat")
|
|
||||||
public void onDisable()
|
|
||||||
{
|
|
||||||
logger.info(getDescription().getName() + " version " + getDescription().getVersion() + " disabled.");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void whitelist(CommandSender sender, WhitelistCommands cmd, String[] args)
|
|
||||||
{
|
|
||||||
if (!playerListener.isWhitelistEnabled())
|
|
||||||
{
|
|
||||||
sender.sendMessage("§cThe whitelist is disabled.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!sender.isOp())
|
|
||||||
{
|
|
||||||
sender.sendMessage("§cYou must be an operator to manage the whitelist.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (cmd)
|
|
||||||
{
|
|
||||||
case RELOAD:
|
|
||||||
playerListener.whitelistReload();
|
|
||||||
sender.sendMessage("A whitelist updated has been queued.");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum McslCommands
|
|
||||||
{
|
|
||||||
WHITELIST
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum WhitelistCommands
|
|
||||||
{
|
|
||||||
RELOAD
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,209 +0,0 @@
|
|||||||
package net.mcserverlist.bukkit;
|
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
|
||||||
import java.io.*;
|
|
||||||
import java.net.*;
|
|
||||||
import java.util.logging.*;
|
|
||||||
import org.bukkit.*;
|
|
||||||
import org.bukkit.entity.*;
|
|
||||||
import org.bukkit.event.player.*;
|
|
||||||
|
|
||||||
|
|
||||||
public class McslPlayerListener extends PlayerListener
|
|
||||||
{
|
|
||||||
private final static Logger logger = Logger.getLogger("Minecraft");
|
|
||||||
private boolean running = true;
|
|
||||||
private final Server server;
|
|
||||||
private Thread thread;
|
|
||||||
private Whitelist whitelist = null;
|
|
||||||
private volatile boolean updateNeeded = true;
|
|
||||||
|
|
||||||
@SuppressWarnings("CallToThreadStartDuringObjectConstruction")
|
|
||||||
public McslPlayerListener(Mcsl parent)
|
|
||||||
{
|
|
||||||
this.server = parent.getServer();
|
|
||||||
|
|
||||||
// Get the data from the server.properties file as the server sees it, rather than reading it manually
|
|
||||||
try
|
|
||||||
{
|
|
||||||
this.whitelist = new Whitelist(server);
|
|
||||||
}
|
|
||||||
catch (Throwable ex)
|
|
||||||
{
|
|
||||||
// Disable the plugin
|
|
||||||
logger.log(Level.WARNING, "Error encountered while initializing MCServerlist plugin.", ex);
|
|
||||||
parent.getPluginLoader().disablePlugin(parent);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run Update on a set interval of 1 minute with an initial delay of 10 seconds
|
|
||||||
thread = new Thread(new UpdateRunnable());
|
|
||||||
thread.setDaemon(true);
|
|
||||||
thread.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SuppressWarnings("FinalizeDeclaration")
|
|
||||||
protected void finalize() throws Throwable
|
|
||||||
{
|
|
||||||
// Stop the timer
|
|
||||||
if (thread != null && thread.isAlive())
|
|
||||||
{
|
|
||||||
running = false;
|
|
||||||
thread.join();
|
|
||||||
}
|
|
||||||
|
|
||||||
super.finalize();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPlayerLogin(PlayerLoginEvent event)
|
|
||||||
{
|
|
||||||
if (event.getResult() != PlayerLoginEvent.Result.ALLOWED)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
|
|
||||||
// Check the whitelist
|
|
||||||
if (!Essentials.getSettings().getWhitelistEnabled() || player.isOp() || whitelist == null || whitelist.isAllowed(player.getName()))
|
|
||||||
{
|
|
||||||
// Player is an op, there is no whitelist, or the player is whitelisted.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Player is not whitelisted.
|
|
||||||
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "This server employs a whitelist.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPlayerJoin(PlayerEvent event)
|
|
||||||
{
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPlayerQuit(PlayerEvent event)
|
|
||||||
{
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isWhitelistEnabled()
|
|
||||||
{
|
|
||||||
return whitelist != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void whitelistReload()
|
|
||||||
{
|
|
||||||
whitelist.update();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void update()
|
|
||||||
{
|
|
||||||
updateNeeded = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private class UpdateRunnable implements Runnable
|
|
||||||
{
|
|
||||||
@SuppressWarnings("SleepWhileInLoop")
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
do
|
|
||||||
{
|
|
||||||
if (updateNeeded)
|
|
||||||
{
|
|
||||||
updateNeeded = false;
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Thread.sleep(60000);
|
|
||||||
}
|
|
||||||
catch (InterruptedException ex)
|
|
||||||
{
|
|
||||||
logger.info("Forcing MCServerlist update.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (running);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("CallToThreadDumpStack")
|
|
||||||
public void update()
|
|
||||||
{
|
|
||||||
// Check that we aren't receiving an event inappropriately
|
|
||||||
if (Essentials.getSettings().getMcslKey() == null || Essentials.getSettings().getMcslKey().equals("")) return;
|
|
||||||
// Compile a comma-space-delimted list of players
|
|
||||||
Player[] players = server.getOnlinePlayers();
|
|
||||||
StringBuilder list = new StringBuilder();
|
|
||||||
if (players.length > 0)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < players.length; i++)
|
|
||||||
{
|
|
||||||
if (i > 0) list.append(", ");
|
|
||||||
list.append(players[i].getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Compile POST data
|
|
||||||
StringBuilder data = new StringBuilder();
|
|
||||||
data.append("key=");
|
|
||||||
data.append(URLEncoder.encode(Essentials.getSettings().getMcslKey(), "UTF-8"));
|
|
||||||
data.append("&player_count=");
|
|
||||||
data.append(Integer.toString(players.length));
|
|
||||||
data.append("&max_players=");
|
|
||||||
data.append(Integer.toString(server.getMaxPlayers()));
|
|
||||||
data.append("&player_list=");
|
|
||||||
data.append(URLEncoder.encode(list.toString(), "UTF-8"));
|
|
||||||
|
|
||||||
OutputStreamWriter tx = null;
|
|
||||||
BufferedReader rx = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Send POST request
|
|
||||||
URL url = new URL("http://mcserverlist.net/api/update");
|
|
||||||
// Swap line for testing purposes
|
|
||||||
//URL url = new URL("http://localhost/mcsl/update.php");
|
|
||||||
HttpURLConnection http = (HttpURLConnection)url.openConnection();
|
|
||||||
http.setRequestMethod("POST");
|
|
||||||
http.setUseCaches(false);
|
|
||||||
http.setConnectTimeout(1000);
|
|
||||||
http.setAllowUserInteraction(false);
|
|
||||||
http.setInstanceFollowRedirects(true);
|
|
||||||
http.setRequestProperty("User-Agent", "Java;Mcsl");
|
|
||||||
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
|
|
||||||
http.setRequestProperty("X-Mcsl-Key", Essentials.getSettings().getMcslKey());
|
|
||||||
http.setRequestProperty("X-Minecraft-Name", URLEncoder.encode(server.getName(), "UTF-8"));
|
|
||||||
http.setRequestProperty("X-Minecraft-Version", server.getVersion());
|
|
||||||
http.setDoInput(true);
|
|
||||||
http.setDoOutput(true);
|
|
||||||
tx = new OutputStreamWriter(http.getOutputStream());
|
|
||||||
tx.write(data.toString());
|
|
||||||
tx.flush();
|
|
||||||
|
|
||||||
// Get the HTTP response
|
|
||||||
rx = new BufferedReader(new InputStreamReader(http.getInputStream()));
|
|
||||||
for (String l = ""; rx.ready(); l = rx.readLine())
|
|
||||||
{
|
|
||||||
if ("".equals(l)) continue;
|
|
||||||
else if (l.startsWith("i:")) logger.info(l.substring(2));
|
|
||||||
else if (l.startsWith("w:")) logger.warning(l.substring(2));
|
|
||||||
else System.out.println(l);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (tx != null) tx.close();
|
|
||||||
if (rx != null) rx.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
logger.log(Level.WARNING, "Error communication with MCServerlist.", ex);
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,107 +0,0 @@
|
|||||||
package net.mcserverlist.bukkit;
|
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.OutputStreamWriter;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLEncoder;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
import org.bukkit.Server;
|
|
||||||
|
|
||||||
|
|
||||||
public class Whitelist
|
|
||||||
{
|
|
||||||
private static final Logger logger = Logger.getLogger("Minecraft");
|
|
||||||
private List<String> allowed = new ArrayList<String>();
|
|
||||||
private final Object allowedLock = new Object();
|
|
||||||
private Server server;
|
|
||||||
|
|
||||||
public Whitelist(Server server)
|
|
||||||
{
|
|
||||||
this.server = server;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void update()
|
|
||||||
{
|
|
||||||
Thread thread = new Thread(new UpdateRunnable());
|
|
||||||
thread.setDaemon(true);
|
|
||||||
thread.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAllowed(String player)
|
|
||||||
{
|
|
||||||
String p = player.toLowerCase();
|
|
||||||
synchronized (allowedLock)
|
|
||||||
{
|
|
||||||
return allowed.contains(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class UpdateRunnable implements Runnable
|
|
||||||
{
|
|
||||||
@SuppressWarnings("CallToThreadDumpStack")
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
// Check that we aren't receiving an event inappropriately
|
|
||||||
if (Essentials.getSettings().getMcslKey() == null || Essentials.getSettings().getMcslKey().equals("")) return;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
OutputStreamWriter tx = null;
|
|
||||||
BufferedReader rx = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Send GET request
|
|
||||||
URL url = new URL("http://mcserverlist.net/api/whitelist");
|
|
||||||
// Swap line for testing purposes
|
|
||||||
//URL url = new URL("http://localhost/mcsl/whitelist.php");
|
|
||||||
HttpURLConnection http = (HttpURLConnection)url.openConnection();
|
|
||||||
http.setRequestMethod("POST");
|
|
||||||
http.setUseCaches(false);
|
|
||||||
http.setConnectTimeout(1000);
|
|
||||||
http.setAllowUserInteraction(false);
|
|
||||||
http.setInstanceFollowRedirects(true);
|
|
||||||
http.setRequestProperty("User-Agent", "Java;Mcsl");
|
|
||||||
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
|
|
||||||
http.setRequestProperty("X-Mcsl-Key", Essentials.getSettings().getMcslKey());
|
|
||||||
http.setRequestProperty("X-Minecraft-Name", URLEncoder.encode(server.getName(), "UTF-8"));
|
|
||||||
http.setRequestProperty("X-Minecraft-Version", server.getVersion());
|
|
||||||
http.setDoInput(true);
|
|
||||||
http.setDoOutput(false);
|
|
||||||
|
|
||||||
// Get the HTTP response
|
|
||||||
rx = new BufferedReader(new InputStreamReader(http.getInputStream()));
|
|
||||||
List<String> allowed = new ArrayList<String>();
|
|
||||||
for (String l = ""; rx.ready(); l = rx.readLine())
|
|
||||||
{
|
|
||||||
if ("".equals(l)) continue;
|
|
||||||
else if (l.startsWith("i:")) logger.info(l.substring(2));
|
|
||||||
else if (l.startsWith("w:")) logger.warning(l.substring(2));
|
|
||||||
else allowed.add(l.toLowerCase()); // Add to whitelist
|
|
||||||
}
|
|
||||||
|
|
||||||
synchronized (Whitelist.this.allowedLock)
|
|
||||||
{
|
|
||||||
Whitelist.this.allowed = allowed;
|
|
||||||
allowed = null; // Remove our reference so that we don't accidentally use it
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (tx != null) tx.close();
|
|
||||||
if (rx != null) rx.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
logger.log(Level.WARNING, "Error communication with MCServerlist.", ex);
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
name: EssentialsServerlist
|
|
||||||
main: net.mcserverlist.bukkit.Mcsl
|
|
||||||
version: TeamCity
|
|
||||||
website: http://mcserverlist.net/
|
|
||||||
description: Official MCServerlist API implementation
|
|
1
EssentialsSpawn/nbproject/private/private.properties
Normal file
1
EssentialsSpawn/nbproject/private/private.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
user.properties.file=C:\\Users\\Paul\\.netbeans\\7.0beta2\\build.properties
|
@ -4,7 +4,7 @@ import com.earth2me.essentials.Essentials;
|
|||||||
import com.earth2me.essentials.User;
|
import com.earth2me.essentials.User;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import org.bukkit.event.player.PlayerEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerListener;
|
import org.bukkit.event.player.PlayerListener;
|
||||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ public class EssentialsSpawnPlayerListener extends PlayerListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerJoin(PlayerEvent event)
|
public void onPlayerJoin(PlayerJoinEvent event)
|
||||||
{
|
{
|
||||||
Essentials.loadClasses();
|
Essentials.loadClasses();
|
||||||
User user = User.get(event.getPlayer());
|
User user = User.get(event.getPlayer());
|
||||||
|
BIN
lib/c3p0-0.9.1.2.jar
Normal file
BIN
lib/c3p0-0.9.1.2.jar
Normal file
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user