Merge pull request 'Fix double and tripple click of REntityServer' (#233) from FixMultiClick into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #233 Reviewed-by: Lixfel <lixfel@steamwar.de>
Dieser Commit ist enthalten in:
Commit
fa68eb7060
@ -33,6 +33,7 @@ import org.bukkit.event.Listener;
|
|||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -69,14 +70,22 @@ public class REntityServer implements Listener {
|
|||||||
private final HashMap<Player, Integer> viewDistance = new HashMap<>();
|
private final HashMap<Player, Integer> viewDistance = new HashMap<>();
|
||||||
|
|
||||||
private EntityActionListener callback = null;
|
private EntityActionListener callback = null;
|
||||||
|
private final Set<Player> playersThatClicked = Collections.synchronizedSet(new HashSet<>());
|
||||||
|
|
||||||
private final BiFunction<Player, Object, Object> filter = (player, packet) -> {
|
private final BiFunction<Player, Object, Object> filter = (player, packet) -> {
|
||||||
REntity entity = entityMap.get(useEntityTarget.get(packet));
|
REntity entity = entityMap.get(useEntityTarget.get(packet));
|
||||||
if (entity == null)
|
if (entity == null)
|
||||||
return packet;
|
return packet;
|
||||||
|
|
||||||
|
if (playersThatClicked.contains(player))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
playersThatClicked.add(player);
|
||||||
EntityAction action = getEntityAction.apply(useEntityAction.get(packet)) == 1 ? EntityAction.ATTACK : EntityAction.INTERACT;
|
EntityAction action = getEntityAction.apply(useEntityAction.get(packet)) == 1 ? EntityAction.ATTACK : EntityAction.INTERACT;
|
||||||
Bukkit.getScheduler().runTask(Core.getInstance(), () -> callback.onAction(player, entity, action));
|
Bukkit.getScheduler().runTask(Core.getInstance(), () -> {
|
||||||
|
playersThatClicked.remove(player);
|
||||||
|
callback.onAction(player, entity, action);
|
||||||
|
});
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren