Nachdem ich mir die API von Minecraft angeschaut habe ist mir eine Idee gekommen wie man das duplizieren der Items einschränken könnte. Dazu bedürftes es allerdings etwas freier Performance. Diese würde man allerdings dadurch gewinnen, dass das professionelle und Ressourcen ziehende Dupen abebben würde.
Ein ähnliches Verfahren haben wir früher auch bei einem anderen Spiel benutzt um das duplizieren zu verhindern.
Man müsste ein entsprechendes Plugin schreiben, welches zusätzlich zu den normalen Gegenstandsinformationen eine UUID erzeugt, wenn der Gegenstand auf normalem Weg abgebaut, produziert oder durch das Gamemode-Interface generiert wird. Diese UUID wird zusätzlich abgespeichert in Verbindung mit der UUID des Erzeugers, des augenblicklichen Trägers und des Gegenstandsnamen / -ID. Also müsste auch jedesmal wenn jemand einen Gegenstand aufnimmt, zum Beispiel beim Handel die UUID des Trägers aktualisiert werden. Besser wäre es noch, einfach einen Eintrag hinzu zu fügen. Einen für das "fallen" lassen der positionieren und einen für das aufnehmen.
Anhand dieser Liste könnte man den Weg eines Items gut nachverfolgen.
Nun zum Punkt des duplizierens.... Alle anderen Funktionen erzeugen eben keine eigene neue UUID. Ein Duplizierter Gegenstand würde also entweder die gleiche UUID verwenden oder keine besitzen... Findet man dann also im Log mehrere gleiche Events des gleichen Typs mit gleicher ID, zum Beispiel mehrere male ein Gegenstand mit gleicher Gegenstands UUID aufgenommen wird, ohne dass dein Drop-Event dazwischen ist, weiß man, dass es sich um duplizierte Items handeln muss.
Ja ich weiß, dass diese Schreib- und Lese-Vorgänge Performance kosten, aber ich denke, dass es sich lohnen würde, wenn man es dadurch eindämmt.
Eine Überprüfung des Logs könnte man ebenfalls automatisieren und muss ja nicht zwingend in Echtzeit passieren, da der Schaden, welcher zum Beispiel über den Zeitraum einer Stunde oder halben Stunde doch recht begrenzt ist.