I just made a quick code to give you the idea. don't come back asking me to adapt or anything.
/*
* Copyright (C) 2004-2018 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package DailyReward;
import java.util.Arrays;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.holders.ItemHolder;
/**
* @author Kara`
*/
public class DailyReward
{
final static int REWARD_HOUR = 17;
final static int REWARD_MINUTE = 0;
final static ItemHolder[] REWARD =
{
new ItemHolder(57, 100),
new ItemHolder(6393, 100)
};
public DailyReward()
{
init();
}
private void init()
{
Calendar now = Calendar.getInstance();
Calendar target = Calendar.getInstance();
target.set(Calendar.HOUR_OF_DAY, REWARD_HOUR);
target.set(Calendar.MINUTE, REWARD_MINUTE);
if (target.before(now))
{
target.add(Calendar.HOUR_OF_DAY, 24);
}
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() ->
{
L2World.getInstance().getPlayers().forEach(s -> giveReward(s));
}, target.getTimeInMillis() - System.currentTimeMillis(), TimeUnit.HOURS.toMillis(24));
}
public void giveReward(L2PcInstance player)
{
Arrays.asList(REWARD).forEach(s -> player.addItem("reward", s, player, true));
player.sendMessage("You have been rewarded.");
}
public static DailyReward getInstance()
{
return SingletonHolder._instance;
}
private static class SingletonHolder
{
protected static final DailyReward _instance = new DailyReward();
}
}