Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.sf.l2j.gameserver.custom.events.mines;
- import net.sf.l2j.commons.concurrent.ThreadPool;
- import net.sf.l2j.commons.lang.StringUtil;
- import net.sf.l2j.gameserver.model.actor.instance.Player;
- import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
- import net.sf.l2j.gameserver.util.Broadcast;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.Future;
- public class MinesEvent{
- private final List<Player> _players = new ArrayList<>();
- protected Future<?> _startTask = null;
- protected int _countdown = 30;
- private mineState _state;
- //add the item to give for reward
- private final static int _rewardItemID = 0;
- //add the quantity of reward items
- private final static int _itemQuantity = 0;
- public MinesEvent(){
- }
- public enum mineState {
- STARTED,
- STOPPED,
- CLOSED
- }
- public static MinesEvent getInstance()
- {
- return MinesEvent.SingletonHolder._instance;
- }
- public void start() {
- _state = mineState.STARTED;
- _countdown = 30;
- showToAll();
- _startTask = ThreadPool.scheduleAtFixedRate(new Duration(), 1000, 1000);
- }
- public void stop() {
- if(_startTask != null) {
- _state = mineState.STOPPED;
- _startTask.cancel(true);
- _startTask = null;
- _players.clear();
- }
- }
- public void showToAll(){
- switch(_state) {
- case STARTED:
- for (Player plxr : _players) {
- Mines newMine = MinesManager.getInstance().getMine(plxr.getObjectId());
- newMine.minesWindow(plxr);
- }
- break;
- case CLOSED:
- for (Player plxr : _players) {
- finishWindow(plxr);
- }
- break;
- }
- }
- public void finishWindow(Player player){
- final StringBuilder sb = new StringBuilder();
- StringUtil.append(sb, "<br><br>Event is Over.");
- NpcHtmlMessage html = new NpcHtmlMessage(0);
- html.setFile("data/html/mods/Events/mines/minesMW.htm");
- html.replace("%mines%", sb.toString());
- player.sendPacket(html);
- }
- public void addPlayer(Player player) {
- Mines newMine = new Mines();
- MinesManager.getInstance().addNewMine(player,newMine,player.getObjectId());
- player.sendMessage("[Mines]: You successfully registered to the event.");
- _players.add(player);
- }
- public void removePlayer(Player player) {
- _players.remove(player);
- player.sendMessage("[Mines]: You successfully removed yourself from event.");
- }
- public void soloRewards(Player player) {
- player.getInventory().addItem("Mines Reward", _rewardItemID, _itemQuantity, player, player);
- }
- public void reset(){
- Broadcast.announceToOnlinePlayers("[Mines] Finished.", true);
- _state = mineState.CLOSED;
- showToAll();
- _players.clear();
- }
- public class Duration implements Runnable
- {
- @Override
- public void run()
- {
- if (_countdown < 0)
- {
- _startTask.cancel(true);
- _startTask = null;
- }
- switch (_countdown)
- {
- case 1200:
- case 900:
- case 600:
- case 300:
- case 240:
- case 180:
- case 120:
- case 60:
- int tempTimer = _countdown / 60;
- Broadcast.announceToOnlinePlayers("[Mines] Time left ["+tempTimer+"] minute(s)", true);
- break;
- case 30:
- case 15:
- case 10:
- case 5:
- case 1:
- Broadcast.announceToOnlinePlayers("[Mines] Time left ["+_countdown+"] second(s)", true);
- break;
- case 0:
- reset();
- break;
- }
- _countdown--;
- }
- }
- public int getTotalPlayers(){
- return _players.size();
- }
- private static class SingletonHolder
- {
- protected static final MinesEvent _instance = new MinesEvent();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement