Removed PvpTimer
Fixed issue where StatManager and FriendManager were created twice.
This commit is contained in:
parent
a6710280fb
commit
ff41ad248a
@ -375,6 +375,7 @@ public class CoreClientManager extends MiniPlugin
|
|||||||
|
|
||||||
runAsync(new Runnable()
|
runAsync(new Runnable()
|
||||||
{
|
{
|
||||||
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
client.setAccountId(_repository.login(_loginProcessors, uuid, client.GetPlayerName()));
|
client.setAccountId(_repository.login(_loginProcessors, uuid, client.GetPlayerName()));
|
||||||
|
@ -121,7 +121,7 @@ public class Clans extends JavaPlugin
|
|||||||
|
|
||||||
IgnoreManager ignoreManager = new IgnoreManager(this, _clientManager, preferenceManager, portal);
|
IgnoreManager ignoreManager = new IgnoreManager(this, _clientManager, preferenceManager, portal);
|
||||||
|
|
||||||
IncognitoManager incognito = new IncognitoManager(this, _clientManager, packetHandler);
|
new IncognitoManager(this, _clientManager, packetHandler);
|
||||||
|
|
||||||
StatsManager statsManager = new StatsManager(this, _clientManager);
|
StatsManager statsManager = new StatsManager(this, _clientManager);
|
||||||
AchievementManager achievementManager = new AchievementManager(statsManager, _clientManager, _donationManager);
|
AchievementManager achievementManager = new AchievementManager(statsManager, _clientManager, _donationManager);
|
||||||
@ -131,7 +131,6 @@ public class Clans extends JavaPlugin
|
|||||||
new MemoryFix(this);
|
new MemoryFix(this);
|
||||||
new FoodDupeFix(this);
|
new FoodDupeFix(this);
|
||||||
new Explosion(this, blockRestore);
|
new Explosion(this, blockRestore);
|
||||||
new FriendManager(this, _clientManager, preferenceManager, portal);
|
|
||||||
new InventoryManager(this, _clientManager);
|
new InventoryManager(this, _clientManager);
|
||||||
ResourcePackManager resourcePackManager = new ResourcePackManager(this, portal);
|
ResourcePackManager resourcePackManager = new ResourcePackManager(this, portal);
|
||||||
resourcePackManager.setResourcePack("http://garblox.com/files/b/ResClans.zip", "http://garblox.com/files/b/ResClans19.zip", true);
|
resourcePackManager.setResourcePack("http://garblox.com/files/b/ResClans.zip", "http://garblox.com/files/b/ResClans19.zip", true);
|
||||||
@ -141,7 +140,7 @@ public class Clans extends JavaPlugin
|
|||||||
GearManager customGear = new GearManager(this, packetHandler, _clientManager, _donationManager);
|
GearManager customGear = new GearManager(this, packetHandler, _clientManager, _donationManager);
|
||||||
|
|
||||||
HologramManager hologram = new HologramManager(this, packetHandler);
|
HologramManager hologram = new HologramManager(this, packetHandler);
|
||||||
_clansManager = new ClansManager(this, serverStatusManager.getCurrentServerName(), packetHandler, punish, _clientManager, _donationManager, preferenceManager, blockRestore, teleport, chat, customGear, hologram, webServerAddress);
|
_clansManager = new ClansManager(this, serverStatusManager.getCurrentServerName(), packetHandler, punish, _clientManager, _donationManager, preferenceManager, blockRestore, statsManager, teleport, chat, customGear, hologram, webServerAddress);
|
||||||
new Recipes(this);
|
new Recipes(this);
|
||||||
new Farming(this);
|
new Farming(this);
|
||||||
new BuildingShop(_clansManager, _clientManager, _donationManager);
|
new BuildingShop(_clansManager, _clientManager, _donationManager);
|
||||||
|
@ -93,7 +93,6 @@ import mineplex.game.clans.clans.nether.NetherManager;
|
|||||||
import mineplex.game.clans.clans.observer.ObserverManager;
|
import mineplex.game.clans.clans.observer.ObserverManager;
|
||||||
import mineplex.game.clans.clans.playtime.Playtime;
|
import mineplex.game.clans.clans.playtime.Playtime;
|
||||||
import mineplex.game.clans.clans.potato.PotatoManager;
|
import mineplex.game.clans.clans.potato.PotatoManager;
|
||||||
import mineplex.game.clans.clans.pvptimer.PvpTimer;
|
|
||||||
import mineplex.game.clans.clans.redis.ClanDeleteCommandHandler;
|
import mineplex.game.clans.clans.redis.ClanDeleteCommandHandler;
|
||||||
import mineplex.game.clans.clans.redis.ClanLoadCommandHandler;
|
import mineplex.game.clans.clans.redis.ClanLoadCommandHandler;
|
||||||
import mineplex.game.clans.clans.regions.ClansRegions;
|
import mineplex.game.clans.clans.regions.ClansRegions;
|
||||||
@ -198,7 +197,6 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
|||||||
private WarPointEvasion _warPointEvasion;
|
private WarPointEvasion _warPointEvasion;
|
||||||
private ObserverManager _observerManager;
|
private ObserverManager _observerManager;
|
||||||
private Punish _punish;
|
private Punish _punish;
|
||||||
private PvpTimer _pvpTimer;
|
|
||||||
|
|
||||||
private int _inviteExpire = 2;
|
private int _inviteExpire = 2;
|
||||||
private int _nameMin = 3;
|
private int _nameMin = 3;
|
||||||
@ -224,7 +222,7 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
|||||||
|
|
||||||
// Spawn area
|
// Spawn area
|
||||||
|
|
||||||
public ClansManager(JavaPlugin plugin, String serverName, PacketHandler packetHandler, Punish punish, CoreClientManager clientManager, DonationManager donationManager, PreferencesManager preferencesManager, BlockRestore blockRestore, Teleport teleport, Chat chat, GearManager gearManager, HologramManager hologramManager, String webServerAddress)
|
public ClansManager(JavaPlugin plugin, String serverName, PacketHandler packetHandler, Punish punish, CoreClientManager clientManager, DonationManager donationManager, PreferencesManager preferencesManager, BlockRestore blockRestore, StatsManager statsManager, Teleport teleport, Chat chat, GearManager gearManager, HologramManager hologramManager, String webServerAddress)
|
||||||
{
|
{
|
||||||
super("Clans Manager", plugin);
|
super("Clans Manager", plugin);
|
||||||
|
|
||||||
@ -327,8 +325,7 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
|||||||
// Register redis based server commands
|
// Register redis based server commands
|
||||||
ServerCommandManager.getInstance().registerCommandType(ClanDeleteCommand.class, new ClanDeleteCommandHandler());
|
ServerCommandManager.getInstance().registerCommandType(ClanDeleteCommand.class, new ClanDeleteCommandHandler());
|
||||||
ServerCommandManager.getInstance().registerCommandType(ClanLoadCommand.class, new ClanLoadCommandHandler());
|
ServerCommandManager.getInstance().registerCommandType(ClanLoadCommand.class, new ClanLoadCommandHandler());
|
||||||
|
|
||||||
StatsManager statsManager = new StatsManager(plugin, _clientManager);
|
|
||||||
AchievementManager achievementManager = new AchievementManager(statsManager, _clientManager, donationManager);
|
AchievementManager achievementManager = new AchievementManager(statsManager, _clientManager, donationManager);
|
||||||
ClassShopManager shopManager = new ClassShopManager(plugin, _classManager, skillManager, itemFactory, achievementManager, _clientManager);
|
ClassShopManager shopManager = new ClassShopManager(plugin, _classManager, skillManager, itemFactory, achievementManager, _clientManager);
|
||||||
_classShop = new ClassCombatShop(shopManager, _clientManager, donationManager, true, "Class Shop");
|
_classShop = new ClassCombatShop(shopManager, _clientManager, donationManager, true, "Class Shop");
|
||||||
@ -336,7 +333,6 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
|||||||
new ClanEnergyManager(plugin, this, clientManager, donationManager);
|
new ClanEnergyManager(plugin, this, clientManager, donationManager);
|
||||||
|
|
||||||
_playTracker = new Playtime(this, statsManager);
|
_playTracker = new Playtime(this, statsManager);
|
||||||
_pvpTimer = new PvpTimer(this, statsManager);
|
|
||||||
|
|
||||||
_tutorialManager = new mineplex.game.clans.legacytutorial.TutorialManager(plugin, _playTracker, _goldManager, taskManager, donationManager, preferencesManager, this, packetHandler);
|
_tutorialManager = new mineplex.game.clans.legacytutorial.TutorialManager(plugin, _playTracker, _goldManager, taskManager, donationManager, preferencesManager, this, packetHandler);
|
||||||
|
|
||||||
@ -1326,7 +1322,10 @@ public class ClansManager extends MiniClientPlugin<ClientClan>implements IRelati
|
|||||||
return _damageManager;
|
return _damageManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PvpTimer getPvpTimer() { return _pvpTimer; }
|
public boolean hasTimer(Player player)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public ClansBlacklist getBlacklist()
|
public ClansBlacklist getBlacklist()
|
||||||
{
|
{
|
||||||
|
@ -13,7 +13,6 @@ import mineplex.core.task.TaskManager;
|
|||||||
import mineplex.game.clans.clans.ClansManager;
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
import mineplex.game.clans.clans.ClansPlayerStats;
|
import mineplex.game.clans.clans.ClansPlayerStats;
|
||||||
import mineplex.game.clans.clans.playtime.command.PlayTimeCommand;
|
import mineplex.game.clans.clans.playtime.command.PlayTimeCommand;
|
||||||
import mineplex.game.clans.clans.playtime.command.cemde;
|
|
||||||
|
|
||||||
public class Playtime extends MiniClientPlugin<PlayingClient>
|
public class Playtime extends MiniClientPlugin<PlayingClient>
|
||||||
{
|
{
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
package mineplex.game.clans.clans.playtime.command;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
|
||||||
import mineplex.core.common.Rank;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.stats.StatsManager;
|
|
||||||
import mineplex.game.clans.clans.ClansPlayerStats;
|
|
||||||
import mineplex.game.clans.clans.pvptimer.PvpTimer;
|
|
||||||
|
|
||||||
public class cemde extends CommandBase<StatsManager>
|
|
||||||
{
|
|
||||||
PvpTimer _timer;
|
|
||||||
public cemde(StatsManager plugin, PvpTimer timer)
|
|
||||||
{
|
|
||||||
super(plugin, Rank.SNR_MODERATOR, "rstime");
|
|
||||||
_timer = timer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Execute(final Player caller, final String[] args)
|
|
||||||
{
|
|
||||||
Plugin.Get(caller).setStat(ClansPlayerStats.PLAY_TIME.id(), args.length == 0 ? 0 : Integer.parseInt(args[0]));
|
|
||||||
_timer.Get(caller).Skipped = false;
|
|
||||||
_timer.Get(caller).InformedTimes.clear();
|
|
||||||
|
|
||||||
UtilPlayer.message(caller, "Reset time.");
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,364 +0,0 @@
|
|||||||
package mineplex.game.clans.clans.pvptimer;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Sound;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
|
||||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
|
||||||
|
|
||||||
import mineplex.core.MiniClientPlugin;
|
|
||||||
import mineplex.core.account.CoreClientManager;
|
|
||||||
import mineplex.core.common.util.C;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilAction;
|
|
||||||
import mineplex.core.common.util.UtilAlg;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.UtilServer;
|
|
||||||
import mineplex.core.common.util.UtilTextMiddle;
|
|
||||||
import mineplex.core.common.util.UtilTime;
|
|
||||||
import mineplex.core.stats.StatsManager;
|
|
||||||
import mineplex.core.updater.UpdateType;
|
|
||||||
import mineplex.core.updater.event.UpdateEvent;
|
|
||||||
import mineplex.game.clans.clans.ClanTips.TipType;
|
|
||||||
import mineplex.game.clans.clans.ClansManager;
|
|
||||||
import mineplex.game.clans.clans.event.ClanTipEvent;
|
|
||||||
import mineplex.game.clans.clans.event.PlayerEnterTerritoryEvent;
|
|
||||||
import mineplex.game.clans.clans.playtime.command.cemde;
|
|
||||||
import mineplex.game.clans.clans.pvptimer.command.PvPTimerCommand;
|
|
||||||
import mineplex.game.clans.clans.pvptimer.repository.PvpTimerRepository;
|
|
||||||
import mineplex.game.clans.clans.pvptimer.repository.TimerClientToken;
|
|
||||||
import mineplex.game.clans.core.repository.ClanTerritory;
|
|
||||||
import mineplex.game.clans.spawn.Spawn;
|
|
||||||
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
|
|
||||||
import mineplex.minecraft.game.classcombat.event.FireballHitEntityEvent;
|
|
||||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
|
||||||
|
|
||||||
public class PvpTimer extends MiniClientPlugin<PvpTimerClient>
|
|
||||||
{
|
|
||||||
private final int[] DISPLAY_TIMES = {
|
|
||||||
5,
|
|
||||||
10,
|
|
||||||
30,
|
|
||||||
1 * 60,
|
|
||||||
2 * 60,
|
|
||||||
5 * 60,
|
|
||||||
10 * 60,
|
|
||||||
20 * 60
|
|
||||||
};
|
|
||||||
|
|
||||||
private PvpTimerRepository _repository;
|
|
||||||
private CoreClientManager _clientManager;
|
|
||||||
|
|
||||||
private ClansManager _clansManager;
|
|
||||||
|
|
||||||
private static long TIMER_LENGTH = 30 * 60;
|
|
||||||
|
|
||||||
public PvpTimer(ClansManager clans, StatsManager statsManager)
|
|
||||||
{
|
|
||||||
super("PvP Timer", clans.getPlugin());
|
|
||||||
_clansManager = clans;
|
|
||||||
|
|
||||||
_clientManager = clans.getClientManager();
|
|
||||||
|
|
||||||
_repository = new PvpTimerRepository(this, clans.getClientManager());
|
|
||||||
|
|
||||||
addCommand(new cemde(statsManager, this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addCommands()
|
|
||||||
{
|
|
||||||
addCommand(new PvPTimerCommand(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void disableFor(final Player caller)
|
|
||||||
{
|
|
||||||
Get(caller).Skipped = true;
|
|
||||||
caller.playSound(caller.getLocation(), Sound.ENDERDRAGON_GROWL, 1f, 0.75f);
|
|
||||||
|
|
||||||
_repository.Save(_clientManager.getAccountId(caller), Get(caller).Skipped, Get(caller).Elapsed);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void fireBow(EntityShootBowEvent event)
|
|
||||||
{
|
|
||||||
if (!(event.getEntity() instanceof Player))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasTimer((Player) event.getEntity()))
|
|
||||||
{
|
|
||||||
UtilPlayer.message(event.getEntity(), F.main("Clans", "You may not fire bows while on a PvP timer."));
|
|
||||||
UtilPlayer.message(event.getEntity(), C.cGoldB + "> " + C.cGold + "To permanently disable PvP Safety, type " + C.cGreen + "/pvp" + C.cGold + ".");
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onPlayerQuit(PlayerQuitEvent event)
|
|
||||||
{
|
|
||||||
runAsync(() -> _repository.Save(_clientManager.getAccountId(event.getPlayer()), Get(event.getPlayer()).Skipped, Get(event.getPlayer()).Elapsed + (int) (elapsed(event.getPlayer()) / 1000)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void outYouGo(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() == UpdateType.SLOWER)
|
|
||||||
{
|
|
||||||
UtilServer.getPlayersCollection().forEach(player -> {
|
|
||||||
PvpTimerClient client = Get(player);
|
|
||||||
|
|
||||||
runAsync(() -> {
|
|
||||||
_repository.Save(_clientManager.getAccountId(player), client.Skipped, client.Elapsed += (int) (elapsed(player) / 1000));
|
|
||||||
|
|
||||||
client.StartTime = System.currentTimeMillis();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.getType() == UpdateType.SEC)
|
|
||||||
{
|
|
||||||
for (Player player : Bukkit.getOnlinePlayers())
|
|
||||||
{
|
|
||||||
if (!hasTimer(player)) continue;
|
|
||||||
|
|
||||||
ClanTerritory territory = _clansManager.getClanUtility().getClaim(player.getLocation());
|
|
||||||
|
|
||||||
if (territory != null && territory.Owner.equals("Borderlands"))
|
|
||||||
{
|
|
||||||
UtilAction.velocity(player, UtilAlg.getTrajectory2d(player.getLocation(), Spawn.ORIGIN), 2.6, true, 0.5, .2, 1.35, true);
|
|
||||||
player.playSound(player.getLocation(), Sound.NOTE_BASS, 1.0f, 1.0f);
|
|
||||||
|
|
||||||
UtilPlayer.message(player, " ");
|
|
||||||
|
|
||||||
UtilPlayer.message(player, C.cDRedB + ">>" + C.cRed + " You are not permitted to enter the Borderlands while under PvP Safety.");
|
|
||||||
UtilPlayer.message(player, C.cGoldB + "> " + C.cGold + "To permanently disable PvP Safety, type " + C.cGreen + "/pvp" + C.cGold + ".");
|
|
||||||
|
|
||||||
UtilPlayer.message(player, " ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void territoryEnter(PlayerEnterTerritoryEvent event)
|
|
||||||
{
|
|
||||||
String from = event.getLastTerritory();
|
|
||||||
String to = event.getNewTerritory();
|
|
||||||
|
|
||||||
if (from == null && "Borderlands".equals(to)
|
|
||||||
|| to == null && "Borderlands".equals(from))
|
|
||||||
{
|
|
||||||
event.setSendMessage(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void clanTip(ClanTipEvent event)
|
|
||||||
{
|
|
||||||
event.setCancelled(hasTimer(event.getPlayer()) && event.getTip() == TipType.ENTER_BORDERLANDS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onPlayerJoin(PlayerJoinEvent event)
|
|
||||||
{
|
|
||||||
final Player player = event.getPlayer();
|
|
||||||
|
|
||||||
if (hasTimer(player))
|
|
||||||
{
|
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable() {
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
UtilTextMiddle.display(C.cGreen + "PvP Safety", C.cGray + "will end in " + UtilTime.MakeStr(getPvPTimerLeft(player) * 1000), 40, 70, 40, player);
|
|
||||||
|
|
||||||
UtilPlayer.message(player, C.cAqua + "You are currently safe from PvP because you are a new player. This safety will end in " + F.time(UtilTime.MakeStr(getPvPTimerLeft(player) * 1000)));
|
|
||||||
UtilPlayer.message(player, C.cAqua + "Until it ends, you are immune to, and are unable to deal PvP damage.");
|
|
||||||
UtilPlayer.message(player, C.cAqua + "To disable the PvP safety permanently, then type " + F.elem("/pvp") + ".");
|
|
||||||
}
|
|
||||||
}, 3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void inform(UpdateEvent event)
|
|
||||||
{
|
|
||||||
if (event.getType() == UpdateType.FAST)
|
|
||||||
{
|
|
||||||
GetValues().forEach(client -> {
|
|
||||||
if (client.Paused)
|
|
||||||
{
|
|
||||||
client.StartTime = System.currentTimeMillis();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.getType() == UpdateType.TWOSEC)
|
|
||||||
{
|
|
||||||
for (Player player : Bukkit.getOnlinePlayers())
|
|
||||||
{
|
|
||||||
if (hasTimer(player))
|
|
||||||
{
|
|
||||||
long time = getPvPTimerLeft(player);
|
|
||||||
PvpTimerClient client = Get(player);
|
|
||||||
|
|
||||||
if (time <= 2)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(player, F.main("Clans", "PvP Safety has ended!"));
|
|
||||||
UtilPlayer.message(player, F.main("Clans", "You are now completely open to attacks, and you can also attack others."));
|
|
||||||
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 0.2f, 0.75f);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int unit : DISPLAY_TIMES)
|
|
||||||
{
|
|
||||||
if (time <= unit && !client.InformedTimes.contains(Integer.valueOf(unit)))
|
|
||||||
{
|
|
||||||
if (!_clansManager.getTutorials().isInTutorial(player))
|
|
||||||
{
|
|
||||||
// Only inform if not in tutorial.
|
|
||||||
UtilPlayer.message(player, F.main("Clans", "PvP Safety will end in " + F.time(UtilTime.MakeStr(unit * 1000))));
|
|
||||||
UtilTextMiddle.display(C.cGreen + "Pvp Safety", C.cGray + "ending in " + UtilTime.MakeStr(unit * 1000), 20, 80, 20, player);
|
|
||||||
}
|
|
||||||
|
|
||||||
client.InformedTimes.add(Integer.valueOf(unit));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onSkill(SkillTriggerEvent event)
|
|
||||||
{
|
|
||||||
if (event.GetTargets() == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.GetTargets().size() == 1
|
|
||||||
&& event.GetTargets().get(0) instanceof Player
|
|
||||||
&& hasTimer((Player) event.GetTargets().get(0)))
|
|
||||||
{
|
|
||||||
event.SetCancelled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Iterator<Entity> iterator = event.GetTargets().iterator(); iterator.hasNext();)
|
|
||||||
{
|
|
||||||
Entity entity = iterator.next();
|
|
||||||
|
|
||||||
if (entity instanceof Player && hasTimer((Player) entity))
|
|
||||||
{
|
|
||||||
iterator.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onFireballHit(FireballHitEntityEvent event)
|
|
||||||
{
|
|
||||||
event.setCancelled(event.getHitEntity() instanceof Player && hasTimer((Player) event.getHitEntity()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
|
||||||
public void onPlayerAttack(CustomDamageEvent event)
|
|
||||||
{
|
|
||||||
if (event.GetDamageePlayer() == null || event.GetDamagerEntity(true) == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Player victim = event.GetDamageePlayer();
|
|
||||||
Player damager = event.GetDamagerPlayer(true);
|
|
||||||
|
|
||||||
boolean victimTimer = victim != null && hasTimer(victim);
|
|
||||||
boolean damagerTimer = damager != null && hasTimer(damager);
|
|
||||||
boolean bothMsg = false;
|
|
||||||
|
|
||||||
if (victimTimer)
|
|
||||||
{
|
|
||||||
if (damagerTimer)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(damager, F.main("Clans", "You and " + F.name(victim.getName()) + " are still protected from PvP. Type " + F.elem("/pvp") + " to disable."));
|
|
||||||
bothMsg = true;
|
|
||||||
}
|
|
||||||
else if (damager != null)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(damager, F.main("Clans", F.name(victim.getName()) + " is still protected from PvP."));
|
|
||||||
}
|
|
||||||
|
|
||||||
event.SetCancelled("Pvp Timer");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (damagerTimer)
|
|
||||||
{
|
|
||||||
if (victimTimer)
|
|
||||||
{
|
|
||||||
if (!bothMsg)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(damager, F.main("Clans", "You and " + F.name(victim.getName()) + " are still under PvP Safety. Type " + F.elem("/pvp") + " to disable."));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (damager != null)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(damager, F.main("Clans", "You are still under PvP Safety."));
|
|
||||||
}
|
|
||||||
|
|
||||||
event.SetCancelled("PvP Timer");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
|
||||||
public void ClientLoad(AsyncPlayerPreLoginEvent event)
|
|
||||||
{
|
|
||||||
_clientManager.getRepository().getAccountId(event.getUniqueId(), accountId -> {
|
|
||||||
TimerClientToken token = _repository.Get(accountId.intValue());
|
|
||||||
|
|
||||||
Get(event.getName()).Skipped = token.Skipped;
|
|
||||||
Get(event.getName()).Elapsed = token.Elapsed;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getPvPTimerLeft(Player player)
|
|
||||||
{
|
|
||||||
long time = Get(player).Elapsed + (elapsed(player) / 1000);
|
|
||||||
|
|
||||||
return (TIMER_LENGTH <= time ? 0 : TIMER_LENGTH - time);
|
|
||||||
}
|
|
||||||
|
|
||||||
public long elapsed(Player player)
|
|
||||||
{
|
|
||||||
return System.currentTimeMillis() - Get(player).StartTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasTimer(Player player)
|
|
||||||
{
|
|
||||||
return player != null && getPvPTimerLeft(player) > 0 && !Get(player).Skipped && !Get(player).Paused;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected PvpTimerClient AddPlayer(String player)
|
|
||||||
{
|
|
||||||
return new PvpTimerClient();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void pause(Player player)
|
|
||||||
{
|
|
||||||
Get(player).Paused = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void unpause(Player player)
|
|
||||||
{
|
|
||||||
Get(player).Paused = false;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
package mineplex.game.clans.clans.pvptimer;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import mineplex.core.task.TaskManager;
|
|
||||||
import mineplex.game.clans.clans.ClansPlayerTasks;
|
|
||||||
|
|
||||||
public class PvpTimerClient
|
|
||||||
{
|
|
||||||
public boolean Skipped;
|
|
||||||
public List<Integer> InformedTimes;
|
|
||||||
public long StartTime;
|
|
||||||
public int Elapsed;
|
|
||||||
public boolean Paused;
|
|
||||||
|
|
||||||
public PvpTimerClient()
|
|
||||||
{
|
|
||||||
StartTime = System.currentTimeMillis();
|
|
||||||
InformedTimes = new ArrayList<>();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,69 +0,0 @@
|
|||||||
package mineplex.game.clans.clans.pvptimer.command;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
|
||||||
import mineplex.core.common.Rank;
|
|
||||||
import mineplex.core.common.jsonchat.ClickEvent;
|
|
||||||
import mineplex.core.common.jsonchat.JsonMessage;
|
|
||||||
import mineplex.core.common.util.C;
|
|
||||||
import mineplex.core.common.util.F;
|
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
|
||||||
import mineplex.core.common.util.UtilTime;
|
|
||||||
import mineplex.game.clans.clans.pvptimer.PvpTimer;
|
|
||||||
|
|
||||||
public class PvPTimerCommand extends CommandBase<PvpTimer>
|
|
||||||
{
|
|
||||||
public PvPTimerCommand(PvpTimer plugin)
|
|
||||||
{
|
|
||||||
super(plugin, Rank.ALL, "pvptimer", "timer", "pvp");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void Execute(Player caller, String[] args)
|
|
||||||
{
|
|
||||||
if (args.length == 0)
|
|
||||||
{
|
|
||||||
if (Plugin.Get(caller).Skipped)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(caller, F.main("Clans", "You have permanently disabled PvP Safety."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
long pvpTimerLeft = Plugin.getPvPTimerLeft(caller);
|
|
||||||
|
|
||||||
if (pvpTimerLeft == 0)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(caller, F.main("Clans", "PvP Safety has already ended."));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UtilPlayer.message(caller, F.main("Clans", "You have " + F.time(UtilTime.MakeStr(pvpTimerLeft * 1000)) + " before PvP Safety runs out for you."));
|
|
||||||
new JsonMessage(F.main("Clans", "If you would like to permanently disable " + C.mBody + "PvP Safety, click "))
|
|
||||||
.extra("here")
|
|
||||||
.color("green")
|
|
||||||
.click(ClickEvent.RUN_COMMAND, "/pvptimer yesiconfirmthatiwouldliketodisablemypvptimerforever")
|
|
||||||
.extra(".")
|
|
||||||
.color("gray")
|
|
||||||
|
|
||||||
.sendToPlayer(caller);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (Plugin.Get(caller).Skipped)
|
|
||||||
{
|
|
||||||
UtilPlayer.message(caller, F.main("Clans", "You have already disabled PvP Safety."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("yesiconfirmthatiwouldliketodisablemypvptimerforever"))
|
|
||||||
{
|
|
||||||
Plugin.disableFor(caller);
|
|
||||||
UtilPlayer.message(caller, F.main("Clans", "You have disabled PvP Safety."));
|
|
||||||
UtilPlayer.message(caller, F.main("Clans", "You are now completely open to attacks, and you can also attack others."));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,83 +0,0 @@
|
|||||||
package mineplex.game.clans.clans.pvptimer.repository;
|
|
||||||
|
|
||||||
import mineplex.core.account.CoreClientManager;
|
|
||||||
import mineplex.core.common.util.EnclosedObject;
|
|
||||||
import mineplex.core.common.util.UUIDFetcher;
|
|
||||||
import mineplex.core.database.MinecraftRepository;
|
|
||||||
import mineplex.core.incognito.IncognitoManager;
|
|
||||||
import mineplex.game.clans.clans.pvptimer.PvpTimer;
|
|
||||||
import mineplex.serverdata.database.DBPool;
|
|
||||||
import mineplex.serverdata.database.column.ColumnInt;
|
|
||||||
|
|
||||||
public class PvpTimerRepository extends MinecraftRepository
|
|
||||||
{
|
|
||||||
private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS clansPvpTimer (accountId INT NOT NULL, timerElapsed INT NOT NULL DEFAULT '1', hasSkipped TINYINT(1) DEFAULT '0', PRIMARY KEY (accountId));";
|
|
||||||
private static final String GET_STATUS = "SELECT * FROM clansPvpTimer WHERE accountId = ?;";
|
|
||||||
private static final String INSERT_STATUS = "INSERT INTO clansPvpTimer (accountId, timerElapsed, hasSkipped) VALUES (?, ?, ?);";
|
|
||||||
private static final String UPDATE_STATUS = "UPDATE clansPvpTimer SET timerElapsed=?, hasSkipped=? WHERE accountId=?;";
|
|
||||||
|
|
||||||
private PvpTimer _pvpTimer;
|
|
||||||
|
|
||||||
private CoreClientManager _clientManager;
|
|
||||||
|
|
||||||
public PvpTimerRepository(PvpTimer pvpTimer, CoreClientManager clientManager)
|
|
||||||
{
|
|
||||||
super(pvpTimer.getPlugin(), DBPool.getAccount());
|
|
||||||
|
|
||||||
_clientManager = clientManager;
|
|
||||||
|
|
||||||
_pvpTimer = pvpTimer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Save(int accountId, boolean skipped, int timerElapsed)
|
|
||||||
{
|
|
||||||
// Prevent duplicate entries for individuals
|
|
||||||
executeQuery(GET_STATUS, result -> {
|
|
||||||
if (result.next())
|
|
||||||
executeUpdate(UPDATE_STATUS, new ColumnInt("timerElapsed", timerElapsed), new ColumnInt("hasSkipped", skipped ? 1 : 0), new ColumnInt("accountId", accountId));
|
|
||||||
else
|
|
||||||
executeUpdate(INSERT_STATUS, new ColumnInt("accountId", accountId), new ColumnInt("timerElapsed", timerElapsed), new ColumnInt("hasSkipped", skipped ? 1 : 0));
|
|
||||||
}, new ColumnInt("accountId", accountId));
|
|
||||||
}
|
|
||||||
|
|
||||||
public TimerClientToken Get(int accountId)
|
|
||||||
{
|
|
||||||
final TimerClientToken token = new TimerClientToken();
|
|
||||||
|
|
||||||
executeQuery(GET_STATUS, result -> {
|
|
||||||
if (result.next())
|
|
||||||
{
|
|
||||||
token.Elapsed = result.getInt("timerElapsed");
|
|
||||||
token.Skipped = result.getInt("hasSkipped") == 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
token.Elapsed = 1;
|
|
||||||
token.Skipped = false;
|
|
||||||
}
|
|
||||||
}, new ColumnInt("accountId", accountId));
|
|
||||||
|
|
||||||
return token;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TimerClientToken Get(String name)
|
|
||||||
{
|
|
||||||
EnclosedObject<Integer> accountId = new EnclosedObject<>();
|
|
||||||
|
|
||||||
_clientManager.getRepository().getAccountId(UUIDFetcher.getUUIDOf(name), id ->
|
|
||||||
accountId.Set(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
return Get(accountId.Get().intValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void initialize()
|
|
||||||
{
|
|
||||||
executeUpdate(CREATE_TABLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void update()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
package mineplex.game.clans.clans.pvptimer.repository;
|
|
||||||
|
|
||||||
public class TimerClientToken
|
|
||||||
{
|
|
||||||
public int Elapsed;
|
|
||||||
public boolean Skipped;
|
|
||||||
}
|
|
@ -269,7 +269,7 @@ public class SiegeManager extends MiniPlugin
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_clansManager.getPvpTimer().hasTimer(player))
|
if (_clansManager.hasTimer(player))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(player, F.main("Clans", "You cannot place a Cannon whilst protected from pvp."));
|
UtilPlayer.message(player, F.main("Clans", "You cannot place a Cannon whilst protected from pvp."));
|
||||||
return false;
|
return false;
|
||||||
|
@ -267,7 +267,7 @@ public class Outpost implements Listener
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
if(_outpostManager.getClansManager().getPvpTimer().hasTimer(event.getPlayer()))
|
if(_outpostManager.getClansManager().hasTimer(event.getPlayer()))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(event.getPlayer(), F.main("Clans", "You cannot activate an Outpost whilst protected from pvp."));
|
UtilPlayer.message(event.getPlayer(), F.main("Clans", "You cannot activate an Outpost whilst protected from pvp."));
|
||||||
return;
|
return;
|
||||||
@ -295,7 +295,7 @@ public class Outpost implements Listener
|
|||||||
if (event.getBlock().getLocation().equals(_core) && getState() == OutpostState.LIVE)
|
if (event.getBlock().getLocation().equals(_core) && getState() == OutpostState.LIVE)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(_outpostManager.getClansManager().getPvpTimer().hasTimer(event.getPlayer()))
|
if(_outpostManager.getClansManager().hasTimer(event.getPlayer()))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(event.getPlayer(), F.main("Clans", "You cannot destroy an Outpost whilst on protected from pvp."));
|
UtilPlayer.message(event.getPlayer(), F.main("Clans", "You cannot destroy an Outpost whilst on protected from pvp."));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -83,7 +83,7 @@ public class OutpostManager extends MiniPlugin
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_clansManager.getPvpTimer().hasTimer(player))
|
if(_clansManager.hasTimer(player))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(player, F.main("Clans", "You place an Outpost whilst protected from pvp."));
|
UtilPlayer.message(player, F.main("Clans", "You place an Outpost whilst protected from pvp."));
|
||||||
return false;
|
return false;
|
||||||
|
@ -82,7 +82,7 @@ public class Cannon extends SiegeWeapon
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_clans.getPvpTimer().hasTimer(player))
|
if(_clans.hasTimer(player))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(player, F.main("Clans", "You cannot fire a cannon whilst on PvPTimer"));
|
UtilPlayer.message(player, F.main("Clans", "You cannot fire a cannon whilst on PvPTimer"));
|
||||||
return false;
|
return false;
|
||||||
@ -118,7 +118,7 @@ public class Cannon extends SiegeWeapon
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_clans.getPvpTimer().hasTimer(player)) {
|
if(_clans.hasTimer(player)) {
|
||||||
UtilPlayer.message(player, F.main("Clans", "You cannot ride on a Cannon whilst on PvPTimer"));
|
UtilPlayer.message(player, F.main("Clans", "You cannot ride on a Cannon whilst on PvPTimer"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -165,7 +165,7 @@ public class Cannon extends SiegeWeapon
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_clans.getPvpTimer().hasTimer(player))
|
if (_clans.hasTimer(player))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(player, F.main("Clans", "You cannot fire a Cannon whilst protected from pvp."));
|
UtilPlayer.message(player, F.main("Clans", "You cannot fire a Cannon whilst protected from pvp."));
|
||||||
return false;
|
return false;
|
||||||
@ -201,7 +201,7 @@ public class Cannon extends SiegeWeapon
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_clans.getPvpTimer().hasTimer(player))
|
if(_clans.hasTimer(player))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(player, F.main("Clans", "You cannot ride on a Cannon whilst protected from pvp."));
|
UtilPlayer.message(player, F.main("Clans", "You cannot ride on a Cannon whilst protected from pvp."));
|
||||||
return false;
|
return false;
|
||||||
|
@ -52,7 +52,7 @@ public class MeridianScepter extends LegendaryItem
|
|||||||
{
|
{
|
||||||
if ((System.currentTimeMillis() - _lastBlock) < 98 && (System.currentTimeMillis() - _interactWait) >= 98)
|
if ((System.currentTimeMillis() - _lastBlock) < 98 && (System.currentTimeMillis() - _interactWait) >= 98)
|
||||||
{
|
{
|
||||||
if (ClansManager.getInstance().getPvpTimer().hasTimer(wielder))
|
if (ClansManager.getInstance().hasTimer(wielder))
|
||||||
{
|
{
|
||||||
UtilPlayer.message(wielder, F.main("Clans", "You are not allowed to fire the Meridian Scepter whilst under pvp protection."));
|
UtilPlayer.message(wielder, F.main("Clans", "You are not allowed to fire the Meridian Scepter whilst under pvp protection."));
|
||||||
return;
|
return;
|
||||||
@ -137,7 +137,7 @@ public class MeridianScepter extends LegendaryItem
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ClansManager.getInstance().getPvpTimer().hasTimer(closest))
|
if (ClansManager.getInstance().hasTimer(closest))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ public class ClansMainTutorial extends Tutorial
|
|||||||
UtilInv.Clear(player);
|
UtilInv.Clear(player);
|
||||||
|
|
||||||
ClansManager.getInstance().getItemMapManager().setMap(player);
|
ClansManager.getInstance().getItemMapManager().setMap(player);
|
||||||
ClansManager.getInstance().getPvpTimer().unpause(player);
|
//ClansManager.getInstance().getPvpTimer().unpause(player);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
ClansManager.getInstance().runAsync(() -> {
|
ClansManager.getInstance().runAsync(() -> {
|
||||||
@ -132,7 +132,7 @@ public class ClansMainTutorial extends Tutorial
|
|||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
player.getInventory().clear();
|
player.getInventory().clear();
|
||||||
|
|
||||||
ClansManager.getInstance().getPvpTimer().pause(player);
|
//ClansManager.getInstance().getPvpTimer().pause(player);
|
||||||
|
|
||||||
// Spawn Holograms
|
// Spawn Holograms
|
||||||
addHologram(player,
|
addHologram(player,
|
||||||
|
Loading…
Reference in New Issue
Block a user