mirror of
https://github.com/Zrips/Jobs.git
synced 2024-12-30 21:07:48 +01:00
prevent water breaking blocks / small fixes
This commit is contained in:
parent
73ed579dcb
commit
5c715e35f8
@ -1,5 +1,5 @@
|
||||
#Generated by Maven
|
||||
#Wed Aug 20 21:00:44 EDT 2014
|
||||
version=2.13-SNAPSHOT
|
||||
version=2.55-SNAPSHOT
|
||||
groupId=com.gamingmesh
|
||||
artifactId=jobs
|
||||
|
@ -2,7 +2,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.gamingmesh</groupId>
|
||||
<artifactId>jobs</artifactId>
|
||||
<version>2.13-SNAPSHOT</version>
|
||||
<version>2.55-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
<name>Jobs</name>
|
||||
<description>Jobs Plugin for the BukkitAPI</description>
|
||||
|
@ -157,7 +157,7 @@ public class JobsPlugin extends JavaPlugin {
|
||||
ScheduleUtil.scheduler();
|
||||
ScheduleUtil.DateUpdater();
|
||||
|
||||
String message = ChatColor.translateAlternateColorCodes('&', "&2Plugin has been enabled succesfully.");
|
||||
String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] &6Plugin has been enabled succesfully.");
|
||||
ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
|
||||
console.sendMessage(message);
|
||||
}
|
||||
@ -166,7 +166,7 @@ public class JobsPlugin extends JavaPlugin {
|
||||
public void onDisable() {
|
||||
GuiTools.CloseInventories();
|
||||
Jobs.shutdown();
|
||||
String message = ChatColor.translateAlternateColorCodes('&', "&2Plugin has been disabled succesfully.");
|
||||
String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] &2Plugin has been disabled succesfully.");
|
||||
ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
|
||||
console.sendMessage(message);
|
||||
}
|
||||
|
@ -173,9 +173,22 @@ public class JobsCommands implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
sender.sendMessage(ChatColor.GOLD + "[Jobs] Starting name fix proccess, this can take up to minute depending on your data base size.");
|
||||
Jobs.getJobsDAO().fixName(sender);
|
||||
|
||||
sender.sendMessage(ChatColor.GOLD + "[Jobs] Starting name fix proccess, this can take up to minute depending on your data base size.");
|
||||
return true;
|
||||
}
|
||||
|
||||
@JobCommand
|
||||
public boolean fixuuid(CommandSender sender, String[] args) throws IOException {
|
||||
|
||||
if (args.length > 0) {
|
||||
sendUsage(sender, "fixuuid");
|
||||
return true;
|
||||
}
|
||||
|
||||
sender.sendMessage(ChatColor.GOLD + "[Jobs] Starting uuid fix proccess, this can take up to minute depending on your data base size.");
|
||||
Jobs.getJobsDAO().fixUuid(sender);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1417,8 +1430,12 @@ public class JobsCommands implements CommandExecutor {
|
||||
|
||||
List<Log> logList = JPlayer.getLog();
|
||||
|
||||
if (logList.size() == 0)
|
||||
if (logList.size() == 0) {
|
||||
sender.sendMessage(Language.getMessage("command.log.output.bottomline"));
|
||||
sender.sendMessage(Language.getMessage("command.log.output.nodata"));
|
||||
sender.sendMessage(Language.getMessage("command.log.output.bottomline"));
|
||||
return true;
|
||||
}
|
||||
|
||||
Map<String, Double> unsortMap = new HashMap<String, Double>();
|
||||
|
||||
@ -1442,7 +1459,7 @@ public class JobsCommands implements CommandExecutor {
|
||||
String msg = Language.getMessage("command.log.output.list")
|
||||
.replace("%number%", String.valueOf(count))
|
||||
.replace("%action%", one.getActionType())
|
||||
.replace("%item%", oneMap.getValue().getItemName().replace(":0", "").toLowerCase())
|
||||
.replace("%item%", oneMap.getValue().getItemName().replace(":0", "").replace("_", " ").toLowerCase())
|
||||
.replace("%qty%", String.valueOf(oneMap.getValue().getCount()))
|
||||
.replace("%money%", String.valueOf(oneMap.getValue().getMoney()))
|
||||
.replace("%exp%", String.valueOf(oneMap.getValue().getExp()));
|
||||
@ -1523,7 +1540,7 @@ public class JobsCommands implements CommandExecutor {
|
||||
break;
|
||||
}
|
||||
if (unsortMap.size() == 0) {
|
||||
sender.sendMessage("No data found");
|
||||
sender.sendMessage(Language.getMessage("command.glog.output.nodata"));
|
||||
}
|
||||
sender.sendMessage(Language.getMessage("command.glog.output.bottomline"));
|
||||
|
||||
|
@ -74,7 +74,7 @@ public class JobsConfiguration {
|
||||
public boolean EconomyLimitUse, EconomyExpLimitUse, PayForRenaming, PayForEachCraft, SignsEnabled,
|
||||
SignsColorizeJobName, ShowToplistInScoreboard, useGlobalTimer, useCoreProtect, BlockPlaceUse,
|
||||
EnableAnounceMessage, useBlockPiston, useSilkTouchProtection, UseCustomNames, EconomyMoneyStop,
|
||||
EconomyExpStop, UseJobsBrowse, PreventSlimeSplit, PreventMagmaCubeSplit;
|
||||
EconomyExpStop, UseJobsBrowse, PreventSlimeSplit, PreventMagmaCubeSplit, WaterBlockBreake;
|
||||
public int EconomyLimitTimeLimit, EconomyExpTimeLimit;
|
||||
public int EconomyLimitAnnouncmentDelay, EconomyLimitAnnouncmentExpDelay, globalblocktimer, CowMilkingTimer,
|
||||
CoreProtectInterval, BlockPlaceInterval, InfoUpdateInterval;
|
||||
@ -611,6 +611,11 @@ public class JobsConfiguration {
|
||||
writer.addComment("ExploitProtections.Spawner.PreventMagmaCubeSplit", "Prevent magmacube spliting when they are from spawner");
|
||||
PreventMagmaCubeSplit = getBoolean("ExploitProtections.Spawner.PreventMagmaCubeSplit", true, config, writer);
|
||||
|
||||
writer.addComment("ExploitProtections.WaterBlockBreake",
|
||||
"Prevent water braking placed blocks. Protection resets with server restart or after plants grows to next stage with bone powder or naturally",
|
||||
"For strange reason works only 5 of 10 times, but this is completely enough to prevent exploiting");
|
||||
WaterBlockBreake = getBoolean("ExploitProtections.WaterBlockBreake", true, config, writer);
|
||||
|
||||
writer.addComment("use-breeder-finder", "Breeder finder.",
|
||||
"If you are not using breeding payment, you can disable this to save little resources. Really little.");
|
||||
useBreederFinder = getBoolean("use-breeder-finder", true, config, writer);
|
||||
@ -946,6 +951,35 @@ public class JobsConfiguration {
|
||||
restrictedPlaceBlocksTimer = (ArrayList<Integer>) config.getIntegerList("PlacedBlockTimer");
|
||||
copySetting(config, writer, "PlacedBlockTimer");
|
||||
|
||||
writer.addComment("PlacedBlockTimer", "Block place protected by timer in sec", "For this to work CoreProtect plugin should be installed");
|
||||
restrictedPlaceBlocksTimer.add(2);
|
||||
restrictedPlaceBlocksTimer.add(3);
|
||||
restrictedPlaceBlocksTimer.add(6);
|
||||
restrictedPlaceBlocksTimer.add(12);
|
||||
restrictedPlaceBlocksTimer.add(18);
|
||||
restrictedPlaceBlocksTimer.add(31);
|
||||
restrictedPlaceBlocksTimer.add(32);
|
||||
restrictedPlaceBlocksTimer.add(37);
|
||||
restrictedPlaceBlocksTimer.add(38);
|
||||
restrictedPlaceBlocksTimer.add(39);
|
||||
restrictedPlaceBlocksTimer.add(40);
|
||||
restrictedPlaceBlocksTimer.add(55);
|
||||
restrictedPlaceBlocksTimer.add(59);
|
||||
restrictedPlaceBlocksTimer.add(80);
|
||||
restrictedPlaceBlocksTimer.add(81);
|
||||
restrictedPlaceBlocksTimer.add(83);
|
||||
restrictedPlaceBlocksTimer.add(103);
|
||||
restrictedPlaceBlocksTimer.add(106);
|
||||
restrictedPlaceBlocksTimer.add(111);
|
||||
restrictedPlaceBlocksTimer.add(141);
|
||||
restrictedPlaceBlocksTimer.add(142);
|
||||
restrictedPlaceBlocksTimer.add(161);
|
||||
restrictedPlaceBlocksTimer.add(171);
|
||||
restrictedPlaceBlocksTimer.add(175);
|
||||
config.addDefault("PlacedBlockTimer", restrictedPlaceBlocksTimer);
|
||||
restrictedPlaceBlocksTimer = (ArrayList<Integer>) config.getIntegerList("PlacedBlockTimer");
|
||||
copySetting(config, writer, "PlacedBlockTimer");
|
||||
|
||||
try {
|
||||
writer.save(f);
|
||||
} catch (IOException e) {
|
||||
@ -1378,6 +1412,7 @@ public class JobsConfiguration {
|
||||
GetConfigString("command.log.output.bottomline", "&7***********************************************************", writer, conf, true);
|
||||
GetConfigString("command.log.output.prev", "&e<<<<< Prev page &2|", writer, conf, true);
|
||||
GetConfigString("command.log.output.next", "&2|&e Next Page >>>>", writer, conf, true);
|
||||
GetConfigString("command.log.output.nodata", "&cData not found", writer, conf, true);
|
||||
|
||||
GetConfigString("command.glog.help.info", "Shows global statistics.", writer, conf, true);
|
||||
GetConfigString("command.glog.help.args", "", writer, conf, true);
|
||||
@ -1385,6 +1420,7 @@ public class JobsConfiguration {
|
||||
GetConfigString("command.glog.output.list", "&7* &6%number%. &3%username% &e%action%: &6%item% &eqty: %qty% &6money: %money% &eexp: %exp%", writer, conf,
|
||||
true);
|
||||
GetConfigString("command.glog.output.bottomline", "&7**************************************************************", writer, conf, true);
|
||||
GetConfigString("command.glog.output.nodata", "&cData not found", writer, conf, true);
|
||||
|
||||
GetConfigString("command.transfer.help.info", "Transfer a player's job from an old job to a new job.", writer, conf, true);
|
||||
GetConfigString("command.transfer.help.args", "[playername] [oldjob] [newjob]", writer, conf, true);
|
||||
|
1
com/gamingmesh/jobs/dao/.gitignore
vendored
1
com/gamingmesh/jobs/dao/.gitignore
vendored
@ -9,3 +9,4 @@
|
||||
/JobsDriver.class
|
||||
/JobsDrivers.class
|
||||
/JobsDAO$1.class
|
||||
/JobsDAO$2.class
|
||||
|
@ -491,6 +491,53 @@ public abstract class JobsDAO {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void fixUuid(final CommandSender sender) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(JobsPlugin.instance, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
JobsConnection conn = getConnection();
|
||||
if (conn == null)
|
||||
return;
|
||||
try {
|
||||
PreparedStatement prest = conn.prepareStatement("SELECT `player_uuid`, `username` FROM `" + prefix + "jobs`;");
|
||||
ResultSet res = prest.executeQuery();
|
||||
HashMap<String, String> convert = new HashMap<String, String>();
|
||||
int failed = 0;
|
||||
while (res.next()) {
|
||||
|
||||
UUID uuid = OfflinePlayerList.getPlayer(res.getString("username")).getUniqueId();
|
||||
if (uuid == null)
|
||||
continue;
|
||||
|
||||
convert.put(uuid.toString(), res.getString("username"));
|
||||
}
|
||||
res.close();
|
||||
prest.close();
|
||||
|
||||
prest = conn.prepareStatement("UPDATE `" + prefix + "jobs` SET `player_uuid` = ? WHERE `username` = ?;");
|
||||
|
||||
for (Entry<String, String> oneEntry : convert.entrySet()) {
|
||||
prest.setString(1, oneEntry.getKey());
|
||||
prest.setString(2, oneEntry.getValue());
|
||||
prest.execute();
|
||||
}
|
||||
if (prest != null)
|
||||
prest.close();
|
||||
|
||||
sender.sendMessage(ChatColor.GOLD + "[Jobs] Converted " + ChatColor.YELLOW + convert.size() + ChatColor.GOLD + " user uuids and failed "
|
||||
+ ChatColor.YELLOW + failed + ChatColor.GOLD + " to do so, most likely user data no longer exists in your player data folder");
|
||||
|
||||
return;
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
public void fixName(final CommandSender sender) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(JobsPlugin.instance, new Runnable() {
|
||||
@Override
|
||||
|
1
com/gamingmesh/jobs/listeners/.gitignore
vendored
1
com/gamingmesh/jobs/listeners/.gitignore
vendored
@ -7,3 +7,4 @@
|
||||
/JobsListener$1.class
|
||||
/JobsPaymentListener$2.class
|
||||
/MythicMobsListener.class
|
||||
/JobsListener$2.class
|
||||
|
@ -23,6 +23,7 @@ import java.util.regex.Pattern;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Sign;
|
||||
@ -32,6 +33,8 @@ import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockGrowEvent;
|
||||
import org.bukkit.event.block.SignChangeEvent;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
@ -115,7 +118,7 @@ public class JobsListener implements Listener {
|
||||
GuiTools.GuiList.remove(player.getName());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
// make sure plugin is enabled
|
||||
if (!plugin.isEnabled())
|
||||
@ -439,11 +442,36 @@ public class JobsListener implements Listener {
|
||||
event.setFormat(format);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onWorldLoad(WorldLoadEvent event) {
|
||||
World world = event.getWorld();
|
||||
PluginManager pm = plugin.getServer().getPluginManager();
|
||||
if (pm.getPermission("jobs.world." + world.getName().toLowerCase()) == null)
|
||||
pm.addPermission(new Permission("jobs.world." + world.getName().toLowerCase(), PermissionDefault.TRUE));
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||
public void onWaterBlockBreak(BlockFromToEvent event) {
|
||||
if (!ConfigManager.getJobsConfiguration().WaterBlockBreake)
|
||||
return;
|
||||
if (event.getBlock().getType() == Material.STATIONARY_WATER && event.getToBlock().getType() != Material.AIR && event.getToBlock()
|
||||
.getType() != Material.STATIONARY_WATER && event.getToBlock().getState().hasMetadata(
|
||||
JobsPaymentListener.PlacedBlockMetadata)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||
public void onCropGrown(final BlockGrowEvent event) {
|
||||
if (!ConfigManager.getJobsConfiguration().WaterBlockBreake)
|
||||
return;
|
||||
if (event.getBlock().getState().hasMetadata(JobsPaymentListener.PlacedBlockMetadata)) {
|
||||
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(JobsPlugin.instance, new Runnable() {
|
||||
public void run() {
|
||||
event.getBlock().getState().removeMetadata(JobsPaymentListener.PlacedBlockMetadata, plugin);
|
||||
return;
|
||||
}
|
||||
}, 1L);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -89,6 +89,7 @@ public class JobsPaymentListener implements Listener {
|
||||
public final static String brewingOwnerMetadata = "jobsBrewingOwner";
|
||||
private final String mobSpawnerMetadata = "jobsMobSpawner";
|
||||
public static final String BlockMetadata = "BlockOwner";
|
||||
public static final String PlacedBlockMetadata = "JobsBlockOwner";
|
||||
public static final String VegyMetadata = "VegyTimer";
|
||||
public static final String GlobalMetadata = "GlobalTimer";
|
||||
public static final String CowMetadata = "CowTimer";
|
||||
@ -296,7 +297,9 @@ public class JobsPaymentListener implements Listener {
|
||||
if (ConfigManager.getJobsConfiguration().useGlobalTimer) {
|
||||
if (block.getState().hasMetadata(GlobalMetadata)) {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
long BlockTime = block.getState().getMetadata(GlobalMetadata).get(0).asLong();
|
||||
List<MetadataValue> meta = block.getState().getMetadata(GlobalMetadata);
|
||||
if (meta.size() > 0) {
|
||||
long BlockTime = meta.get(0).asLong();
|
||||
if (currentTime < BlockTime + ConfigManager.getJobsConfiguration().globalblocktimer * 1000) {
|
||||
int sec = Math.round((((BlockTime + ConfigManager.getJobsConfiguration().globalblocktimer * 1000) - currentTime)) / 1000);
|
||||
ActionBar.send(player, Language.getMessage("message.blocktimer").replace("[time]", String.valueOf(sec)));
|
||||
@ -304,6 +307,7 @@ public class JobsPaymentListener implements Listener {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// restricted area multiplier
|
||||
double multiplier = ConfigManager.getJobsConfiguration().getRestrictedMultiplier(player);
|
||||
@ -377,11 +381,6 @@ public class JobsPaymentListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
// Block place/break protection
|
||||
if (ConfigManager.getJobsConfiguration().useBlockProtection)
|
||||
if (PistonProtectionListener.CheckBlock(block))
|
||||
block.getState().setMetadata(BlockMetadata, new FixedMetadataValue(plugin, true));
|
||||
|
||||
// check if in creative
|
||||
if (event.getPlayer().getGameMode().equals(GameMode.CREATIVE) && !ConfigManager.getJobsConfiguration().payInCreative())
|
||||
return;
|
||||
@ -389,6 +388,14 @@ public class JobsPaymentListener implements Listener {
|
||||
if (!Jobs.getPermissionHandler().hasWorldPermission(player, player.getLocation().getWorld().getName()))
|
||||
return;
|
||||
|
||||
// Block place/break protection
|
||||
if (ConfigManager.getJobsConfiguration().useBlockProtection)
|
||||
if (PistonProtectionListener.CheckBlock(block))
|
||||
block.getState().setMetadata(BlockMetadata, new FixedMetadataValue(plugin, true));
|
||||
|
||||
if (ConfigManager.getJobsConfiguration().WaterBlockBreake)
|
||||
block.getState().setMetadata(PlacedBlockMetadata, new FixedMetadataValue(plugin, true));
|
||||
|
||||
if (ConfigManager.getJobsConfiguration().useBlockTimer)
|
||||
if (PistonProtectionListener.CheckVegy(block)) {
|
||||
long time = System.currentTimeMillis();
|
||||
|
@ -61,7 +61,7 @@ public class McMMOlistener implements Listener {
|
||||
Plugin McMMO = Bukkit.getPluginManager().getPlugin("mcMMO");
|
||||
if (McMMO != null) {
|
||||
mcMMOPresent = true;
|
||||
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "mcMMO was found - Enabling capabilities.");
|
||||
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', "&e[Jobs] &6mcMMO was found - Enabling capabilities."));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -98,7 +98,7 @@ public class MythicMobsListener implements Listener {
|
||||
Plugin mm = Bukkit.getPluginManager().getPlugin("MythicMobs");
|
||||
if (mm != null) {
|
||||
Present = true;
|
||||
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "MythicMobs was found - Enabling capabilities.");
|
||||
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', "&e[Jobs] &6MythicMobs was found - Enabling capabilities."));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
2
com/gamingmesh/jobs/tasks/.gitignore
vendored
2
com/gamingmesh/jobs/tasks/.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
/BufferedPaymentTask.class
|
||||
/BufferedPaymentThread.class
|
||||
/DatabaseSaveThread.class
|
||||
/DatabaseSaveThread$1.class
|
||||
/BufferedPaymentThread$1.class
|
||||
|
@ -1,7 +1,7 @@
|
||||
name: Jobs
|
||||
description: Jobs Plugin for the BukkitAPI
|
||||
main: com.gamingmesh.jobs.JobsPlugin
|
||||
version: 2.54.5
|
||||
version: 2.55.1
|
||||
author: phrstbrn
|
||||
softdepend: [Vault, CoreProtect, MythicMobs, McMMO]
|
||||
commands:
|
||||
|
Loading…
Reference in New Issue
Block a user