diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java
new file mode 100644
index 0000000000..4a096cf14e
--- /dev/null
+++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java
@@ -0,0 +1,36 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * This program 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.
+ *
+ * This program 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 .
+ */
+package org.l2jmobius.gameserver.model.actor.request;
+
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+
+/**
+ * @author Mobius
+ */
+public class RewardRequest extends AbstractRequest
+{
+ public RewardRequest(PlayerInstance player)
+ {
+ super(player);
+ }
+
+ @Override
+ public boolean isUsing(int objectId)
+ {
+ return false;
+ }
+}
diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
index 39022df25e..2ac869c527 100644
--- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
+++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
@@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.pledgeV2;
import java.util.Collection;
+import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.actor.request.RewardRequest;
+import org.l2jmobius.gameserver.network.Disconnection;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV2.ExPledgeMissionInfo;
@@ -50,14 +53,26 @@ public class RequestExPledgeMissionReward implements IClientIncomingPacket
return;
}
- final Collection reward = DailyMissionData.getInstance().getDailyMissionData(_id);
- if ((reward == null) || reward.isEmpty())
+ if (player.hasRequest(RewardRequest.class))
{
+ LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName());
+ Disconnection.of(player).defaultSequence(true);
return;
}
- reward.stream().filter(o -> o.isDisplayable(player)).forEach(r -> r.requestReward(player));
- client.sendPacket(new ExPledgeMissionRewardCount(player));
- client.sendPacket(new ExPledgeMissionInfo(player));
+ player.addRequest(new RewardRequest(player));
+
+ final Collection reward = DailyMissionData.getInstance().getDailyMissionData(_id);
+ if ((reward != null) && !reward.isEmpty())
+ {
+ reward.stream().filter(o -> o.isDisplayable(player)).forEach(r -> r.requestReward(player));
+ client.sendPacket(new ExPledgeMissionRewardCount(player));
+ client.sendPacket(new ExPledgeMissionInfo(player));
+ }
+
+ ThreadPool.schedule(() ->
+ {
+ player.removeRequest(RewardRequest.class);
+ }, 50);
}
}
diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java
new file mode 100644
index 0000000000..4a096cf14e
--- /dev/null
+++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java
@@ -0,0 +1,36 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * This program 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.
+ *
+ * This program 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 .
+ */
+package org.l2jmobius.gameserver.model.actor.request;
+
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+
+/**
+ * @author Mobius
+ */
+public class RewardRequest extends AbstractRequest
+{
+ public RewardRequest(PlayerInstance player)
+ {
+ super(player);
+ }
+
+ @Override
+ public boolean isUsing(int objectId)
+ {
+ return false;
+ }
+}
diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
index 39022df25e..2ac869c527 100644
--- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
+++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
@@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.pledgeV2;
import java.util.Collection;
+import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.actor.request.RewardRequest;
+import org.l2jmobius.gameserver.network.Disconnection;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV2.ExPledgeMissionInfo;
@@ -50,14 +53,26 @@ public class RequestExPledgeMissionReward implements IClientIncomingPacket
return;
}
- final Collection reward = DailyMissionData.getInstance().getDailyMissionData(_id);
- if ((reward == null) || reward.isEmpty())
+ if (player.hasRequest(RewardRequest.class))
{
+ LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName());
+ Disconnection.of(player).defaultSequence(true);
return;
}
- reward.stream().filter(o -> o.isDisplayable(player)).forEach(r -> r.requestReward(player));
- client.sendPacket(new ExPledgeMissionRewardCount(player));
- client.sendPacket(new ExPledgeMissionInfo(player));
+ player.addRequest(new RewardRequest(player));
+
+ final Collection reward = DailyMissionData.getInstance().getDailyMissionData(_id);
+ if ((reward != null) && !reward.isEmpty())
+ {
+ reward.stream().filter(o -> o.isDisplayable(player)).forEach(r -> r.requestReward(player));
+ client.sendPacket(new ExPledgeMissionRewardCount(player));
+ client.sendPacket(new ExPledgeMissionInfo(player));
+ }
+
+ ThreadPool.schedule(() ->
+ {
+ player.removeRequest(RewardRequest.class);
+ }, 50);
}
}
diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java
new file mode 100644
index 0000000000..4a096cf14e
--- /dev/null
+++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java
@@ -0,0 +1,36 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * This program 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.
+ *
+ * This program 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 .
+ */
+package org.l2jmobius.gameserver.model.actor.request;
+
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+
+/**
+ * @author Mobius
+ */
+public class RewardRequest extends AbstractRequest
+{
+ public RewardRequest(PlayerInstance player)
+ {
+ super(player);
+ }
+
+ @Override
+ public boolean isUsing(int objectId)
+ {
+ return false;
+ }
+}
diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
index 39022df25e..2ac869c527 100644
--- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
+++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
@@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.pledgeV2;
import java.util.Collection;
+import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.actor.request.RewardRequest;
+import org.l2jmobius.gameserver.network.Disconnection;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV2.ExPledgeMissionInfo;
@@ -50,14 +53,26 @@ public class RequestExPledgeMissionReward implements IClientIncomingPacket
return;
}
- final Collection reward = DailyMissionData.getInstance().getDailyMissionData(_id);
- if ((reward == null) || reward.isEmpty())
+ if (player.hasRequest(RewardRequest.class))
{
+ LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName());
+ Disconnection.of(player).defaultSequence(true);
return;
}
- reward.stream().filter(o -> o.isDisplayable(player)).forEach(r -> r.requestReward(player));
- client.sendPacket(new ExPledgeMissionRewardCount(player));
- client.sendPacket(new ExPledgeMissionInfo(player));
+ player.addRequest(new RewardRequest(player));
+
+ final Collection reward = DailyMissionData.getInstance().getDailyMissionData(_id);
+ if ((reward != null) && !reward.isEmpty())
+ {
+ reward.stream().filter(o -> o.isDisplayable(player)).forEach(r -> r.requestReward(player));
+ client.sendPacket(new ExPledgeMissionRewardCount(player));
+ client.sendPacket(new ExPledgeMissionInfo(player));
+ }
+
+ ThreadPool.schedule(() ->
+ {
+ player.removeRequest(RewardRequest.class);
+ }, 50);
}
}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java
new file mode 100644
index 0000000000..4a096cf14e
--- /dev/null
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java
@@ -0,0 +1,36 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * This program 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.
+ *
+ * This program 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 .
+ */
+package org.l2jmobius.gameserver.model.actor.request;
+
+import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+
+/**
+ * @author Mobius
+ */
+public class RewardRequest extends AbstractRequest
+{
+ public RewardRequest(PlayerInstance player)
+ {
+ super(player);
+ }
+
+ @Override
+ public boolean isUsing(int objectId)
+ {
+ return false;
+ }
+}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
index 39022df25e..2ac869c527 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/pledgeV2/RequestExPledgeMissionReward.java
@@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.pledgeV2;
import java.util.Collection;
+import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.actor.request.RewardRequest;
+import org.l2jmobius.gameserver.network.Disconnection;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV2.ExPledgeMissionInfo;
@@ -50,14 +53,26 @@ public class RequestExPledgeMissionReward implements IClientIncomingPacket
return;
}
- final Collection reward = DailyMissionData.getInstance().getDailyMissionData(_id);
- if ((reward == null) || reward.isEmpty())
+ if (player.hasRequest(RewardRequest.class))
{
+ LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName());
+ Disconnection.of(player).defaultSequence(true);
return;
}
- reward.stream().filter(o -> o.isDisplayable(player)).forEach(r -> r.requestReward(player));
- client.sendPacket(new ExPledgeMissionRewardCount(player));
- client.sendPacket(new ExPledgeMissionInfo(player));
+ player.addRequest(new RewardRequest(player));
+
+ final Collection reward = DailyMissionData.getInstance().getDailyMissionData(_id);
+ if ((reward != null) && !reward.isEmpty())
+ {
+ reward.stream().filter(o -> o.isDisplayable(player)).forEach(r -> r.requestReward(player));
+ client.sendPacket(new ExPledgeMissionRewardCount(player));
+ client.sendPacket(new ExPledgeMissionInfo(player));
+ }
+
+ ThreadPool.schedule(() ->
+ {
+ player.removeRequest(RewardRequest.class);
+ }, 50);
}
}