Add click callback for REntityServer #227
Keine Reviewer
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
2 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/SpigotCore#227
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "REntityCallback" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
@ -45,0 +49,4 @@
private static final Reflection.FieldAccessor<Integer> useEntityTarget = Reflection.getField(useEntity, int.class, 0);
private static final Reflection.FieldAccessor<Integer> useEntityAction = Reflection.getField(useEntity, int.class, 1);
private final HashMap<Integer, REntity> entityMap = new HashMap<>();
Entweder ConcurrentHashMap oder synchronized-Blöcke (ansonsten werden ConcurrentModificationExceptions fliegen)
@ -50,0 +60,4 @@
private BiFunction<Player, Object, Object> filter = (player, packet) -> {
if (callback == null) return packet;
int target = useEntityTarget.get(packet);
if (!entityMap.containsKey(target)) return packet;
statt containsKey...get direkt ein get und dann ein Null-Check bitte.
@ -50,0 +63,4 @@
if (!entityMap.containsKey(target)) return packet;
REntity entity = entityMap.get(target);
int action = useEntityAction.get(packet);
Du könntest schon hier direkt mit trinary eine EntityAction draus machen (und dir dann das if und final sparen)
@ -50,0 +67,4 @@
if (action == 2) action = 0;
int finalAction = action;
Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> {
Bitte direkt runTask draus machen.
@ -50,2 +75,4 @@
public REntityServer() {
Core.getInstance().getServer().getPluginManager().registerEvents(this, Core.getInstance());
TinyProtocol.instance.addFilter(useEntity, filter);
Ich würde das erst machen, wenn das erste mal das Callback gesetzt wird (null-Check)
@ -64,6 +95,7 @@ public class REntityServer implements Listener {
}
public void close() {
TinyProtocol.instance.removeFilter(useEntity, filter);
Ebenso hier abhängig machen, ob überhaupt ein Filter existiert (performance)