GithubHelp home page GithubHelp logo

alexanderritter02 / varo-plugin Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 342 KB

Hier können Fehler im Varo-Plugin gemeldet werden. Außerdem auch Verbesserungsvorschläge

License: BSD 3-Clause "New" or "Revised" License

Java 100.00%
minecraft spigot plugin bukkit mc craftbukkit varo pvp

varo-plugin's People

Contributors

alexanderritter02 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

jugendhacker

varo-plugin's Issues

Track how many kills a player gets

The suggestion
Count how and which players were killed by a participant.
Save it in players.yml for later access:

069a79f4-44e9-4726-a5be-fca90e38aaf5:
  kills:
    - Player 1
    - Player 2
    - Player 3

This is needed for the end discord message in #13.

java.lang.IllegalArgumentException: Team names can be too long for scoreboards

Describe the bug
When a team name is longer than 16 characters, you will receive an error:
java.lang.IllegalArgumentException: Team name 'MountEverestHustle' is longer than the limit of 16 characters
when executing several essential commands like /varo.start. The scoreboard for the team never registers.

Error
[19:55:34] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'varo.start' in plugin Varo v2.2.0-alpha-ff5d7de
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_251]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_251]
	at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_251]
Caused by: java.lang.IllegalArgumentException: Team name 'MountEverestHustle' is longer than the limit of 16 characters
	at org.apache.commons.lang.Validate.isTrue(Validate.java:136) ~[minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at org.bukkit.craftbukkit.v1_8_R3.scoreboard.CraftScoreboard.registerNewTeam(CraftScoreboard.java:139) ~[minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	at de.alexanderritter.varo.ingame.VaroPlayer.setupScoreboard(VaroPlayer.java:201) ~[?:?]
	at de.alexanderritter.varo.main.Varo.reloadIngamePlayers(Varo.java:216) ~[?:?]
	at de.alexanderritter.varo.commands.CMDstart.onCommand(CMDstart.java:65) ~[?:?]
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[minecraft_server.jar:git-Spigot-db6de12-18fbb24]
	... 15 more

Reproduction steps

  1. Register a team longer than 16 characters (e.g. MountEverestHustle)
  2. Execute /varo.start

❌ See error

Expected behaviour
As the 16 character limit is a Minecraft limitation:

  1. Either prevent registering of too long team names.
  2. Shorten the teamname for the scoreboard and cut it off.

Spectators are visible sometimes

Describe the bug
For some unknown reason, spectating players are sometimes visible to normal players.
They can still fly and have all spectating abilities.

Need to investigate

  • Is this a spigot issue?
  • May be related to switching dimensions

[config.yml] Mehrere Koordinatenposts pro Woche

Der Vorschlag
Man soll an mehr als einem Tag pro Woche die Koordinaten automatisch posten lassen können. In der config.yml soll man alle Koordinatenposts als Liste eingeben:

coord-post:
  - Tuesday, 20
  - Friday, 14
  - ...

Verschiedene Optionen mit ENUMS leserlicher machen

Bezieht sich dein Vorschlag auf ein Problem?
Die Option bordermode: hat 0, 1 und 2 als Einstellungsmöglichkeit.
Es ist schwer, zu erkennen, was diese bedeuten. Auch im Code selbst ist das schlecht für die Leserlichkeit.

Der Vorschlag
Verwende sogennante Enums für bestimmte Optionen:

  • Für Bordermode: KILL, EDGE, SPAWN
  • Für die kommenden HUD-Optionen aus #7

Alternativen

  • Verwende Strings - verbrauchen mehr RAM
  • Erklärung für die Zahlen - trotzdem im Code nicht übersichtlich & nicht auf den ersten Blick

Teams sollen nebeneinander spawnen

Bezieht sich dein Vorschlag auf ein Problem?
Beim Start vom Varo werden die Spieler rein zufällig auf den Spawnplattfomen verteilt.
Dies führt dazu, dass man eventuell weit entfernt voneinander ist.

Vorschlag
Spawne alle Spieler eines Teams nebeneinander. Also z.B.:

  1. Team grün
  2. Team grün
  3. Blau
  4. Blau
    usw.

Upgrading-Logik für config.yml

Bezieht sich dein Vorschlag auf ein Problem?
Zurzeit muss die config.yml neu generiert werden, wenn Einstellungen bei einem Plugin-Update verändert wurden oder nicht mehr existieren.
Bei #17 würden z.B. alle alten Bordereinstellungen verloren gehen.

Der Vorschlag
Speichere in der config.yml die Version des Plugins:

plugin:
  version: 1.8

Beim Serverstart soll die Version überprüft werden und falls diese kleiner ist als die, die gerade läuft:

  • Update die Einstellungen entsprechend, sodass nichts verloren geht
  • Setzte neuen Wert für plugin.version

Add /strike command

Is your feature request related to a problem?
Handing out strikes manually is a tedious process including downloading playerdata.

The suggestion
A command /varo.strike <player> <reason> which saves the strikes to the player.yml and automatically punishes the player:

uuid:
  strikes:
    - built a trap at spawn
    - violated rule 2

Punishments may be configurable at some point (see #28 ), but currently are:

  1. Coordinate post
  2. Inventory clear
  3. Disqualification/Kill

Further information
Needed for the end display in #13.

Admin Hinzufügen wird an den ganzen Server gebroadcastet

Was ist das Problem?
Die Nachricht, dass ein Spieler zu einem Admin gemacht wurde, wird an alle Spieler, die online sind, gesendet.

Reproduktion

  1. Gehe auf den Server
  2. Benutze /maintainence <Spieler> in der Konsole

❌ Du (und alle anderen Spieler) bekommen die Nachricht, dass zum Admin gemacht wurde.

Was hätte normalerweise passieren sollen
Die Nachricht hätte nur dem Sender angezeigt werden sollen.

Screenshots
admin_broadcast

Schwierigkeitsgrad wird vom Plugin überschrieben

Was ist das Problem?
/varo.start setzt die Difficulty auf Normal, egal was der Server zuvor hatte.

Reproduktion

  1. Stelle den Schwierigkeitsgrad des Servers auf Einfach
  2. Starte das Varo

❌ Der Schwierigkeitsgrad ist nun auf Normal.

Was hätte normalerweise passieren sollen
Das Plugin hätte die vom Server eingestellte Schwierigkeits respektieren und beibehalten sollen.

Weiterer Kontext
Das habe ich ursprünglich absichtlich hinzugefügt:
https://github.com/AlexanderRitter02/varo-issues/blob/693b85a7b61063e173f252fe495f722465b01508/src/main/java/de/alexanderritter/varo/main/Varo.java#L238

Position von temporärem Admin wird bei /reload neu gespeichert

Was ist das Problem?
Ist ein Spieler im Admin-Modus während einem Reload auf dem Server, so wird seine Position neu gespeichert.
Loggt er sich aus, wird er dorthin teleportiert anstatt an die Originalposition vor dem Reload.

Reproduktion

  1. /maintainence <Spieler>
  2. Gehe mit dem Spieler auf den Server. Du bist nun im Admin-Modus.
  3. Fliege in die Leere
  4. Benutze /reload
  5. Logge dich aus und wieder ein

❌ Du spawnst in der Leere und nicht dort, wo du vor dem Admin-Modus warst.

Was hätte normalerweise passieren sollen
Der Spieler wird an den Ort zurückteleportiert, an dem er war, bevor er Admin wurde.

Weiterer Kontext
Bei einem Serverreload wird für alle Spieler ein PlayerJoinEvent getriggert. Dort wird für Admins auch die Position abgespeichert.

Upon death you don't receive a spectator compass

Describe the bug
When a player dies, he respawns but doesn't receive a compass to teleport to other players for spectating.
He has to relog to get the compass.

Reproduction steps

  1. /kill yourself
  2. Look at your inventory

❌ There is no compass

Expected behaviour
To immediately get a compass for easy spectating.

Setting whether spectators need to have a team member online to join

Is your feature request related to a problem?
Currently if you are dead and your team mate is still alive, you are prohibited from joining the server if he isn't online (measure against afk cheating).
This makes you unable to watch fights between other teams.

The suggestion
Add a config.yml option that lets the server master decide whether players should be allowed to spectate if their teammate isn't online.

spectating:
  only-while-team-online: true

Worldborder shrinking message gets sent twice

Describe the bug
The worldborder shrinking message gets displayed for every world, resulting in it getting sent twice/thrice.

[Varo] Worldborder is shrinking from 5721.887255898941 to 5702.259156725387 in the next hour
[Varo] Worldborder is shrinking from 5721.887245890787 to 5702.259146717233 in the next hour

Expected behavior
Message is only sent one time. Can also be merged with the shrink per hour message.

Spieler werden gekickt, wenn spawn-teams-together: true

Was ist das Problem?
Es wurden alle Spieler gekickt bei varo.start.

Da die Funktion relativ neu ist, muss ich das Problem genauer untersuchen.
Vor allem wann genau tritt es auf, da es z.B. beim Testen nicht so war.

Weiterer Kontext
Hängt damit zusammen, dass der VaroPlayer noch nicht initialisiert ist zu Beginn.

Limit sessions per day

Is your feature request related to a problem?
Theoretically you can use up all your sessions on only one day. This may lead to advantages against normal players and far more importantly prevents meeting and fighting other teams.

Your suggestion
An option to limit the sessions per day. If it is set to 0, sessions will be unlimited.

sessions-per-day: 5

Alternatives
Just make a rule on how many sessions are allowed to be played per day.

Potion settings

Is this related to a problem?
Potions are hardcoded and would be hard to block even after implementation of #20, because there are too many potion variations with different ids.
This is especially problematic e.g. if one tried to block all splash potions.

The suggestion
A seperate option in config.yml, that allows to:

  1. Deactivate potions completely
  2. Deactivate splash potions
  3. Disallow specific potions in human readable format (strength instead of 8201).
    In doing so, the amplified and long-duration variant of the potion should be disallowed too.

Default

potions:
  enabled: true
  splash-potions: false
  disabled-potions:
     - strength
     - invisibility
     - regeneration
  

Beispiel-Vorschlag

Bezieht sich dein Vorschlag auf ein Problem?
Wenn jemand hierher kommt, sieht er eine leere Liste und keine vorherigen Reports.

Der Vorschlag
Erstelle dieses Beispiel

Alternativen
Nein.

/varo.reload to reload players.yml and config.yml

Is this related to a problem?
To change configuration settings, the server must be stopped and restarted. This is a tedious process.

Der Vorschlag
A command /varo.reload that re-reads config.yml+player.yml from the file system and loads it into the plugin.

Hinweis
Internal things under plugin: shouldn't be reloaded.

Verkünde Gewinner, nachdem alle anderen Spieler tot sind

Bezieht sich dein Vorschlag auf ein Problem?
Dem Gewinner-Team sollte etwas Ruhm und Ehre gezeigt werden.
Zurzeit werden jedoch keine Gewinner verkündet und das Varo endet auch nicht automatisch.

Der Vorschlag
Sobald alle Teams gestorben sind außer eines:

  • Beende das Varo
  • Verkünde das Team im Chat und auf Discord.

In den Sessions wird die Zeit bei über 15 Minuten nicht im Chat angekündigt

Was ist das Problem?
Sind die Sessions länger als 15 Minuten, so wird z.B. bei 20 verbleibenden Minuten die Nachricht: "Du hast noch 20 Minuten" nicht angezeigt, wie bei 10 oder 5 Minuten.

Reproduktion
Schritte, damit der Fehler ensteht:

  1. Mache die Sessions 21 Minuten lang
  2. Warte bis zu 20 verbleibenden Minuten

❌ Es kommt keine Nachricht im Chat

Was hätte normalerweise passieren sollen
Jede 5 Minuten sollen im Chat die verbleibenden Minuten angekündigt werden.

Weiterer Kontext
Das ist insbesondere wichtig, wenn man nur Chat als HUD-Option verwendet.

[Border] Vereine config.yml Optionen

Der Vorschlag
Da die Border so viele Einstellungen hat, vereine diese als Suboptionen in der config.yml.

border:
  mode: EDGE
  shrink-time: 672
  radius: 5000
  end-radius: 250

HUD-Optionen: Wo soll es angezeigt werden?

Bezieht sich dein Vorschlag auf ein Problem?
Manche Leute stört es, dass sie die Zeit und den Teamnamen rechts im Scoreboard haben.

Der Vorschlag

Eine Option, mit der man die Anzeige von Zeit, Team und Sessions switchen kann zwischen:

  • Anzeigetafel (Scoreboard)
    Wird an der Seite angezeigt, der Standard.
    HUD_scoreboard

  • Actionbar
    Wird über der Hotbar angezeigt.

  • Ausgeschaltet (nur Chat)
    Hier werden Sessions und Team nicht angezeigt, nur Zeit-Warnungen im Chat.
    HUD_chat_only

Befehl

Über den Befehl varo.hud <scoreboard | actionbar | off> soll das für und von jeden Spieler individuell einstellbar sein.

Befehl, um Spawn anzuzeigen

Bezieht sich dein Vorschlag auf ein Problem?
Ist der Spawn nicht bei x=0 z=0 ist es für Spieler schwierig bis unmöglich, in die Mitte zu finden.

Der Vorschlag

Entweder:
Einen Befehl, den jeder Spieler ausführen kann und der die Koordinaten des Spawns anzeigt.

Oder:
Die Koordinaten der Mitte werden zusätzlich mit /border angezeigt

[Border] Setze Mitte automatisch zu Weltspawn

Bezieht sich dein Vorschlag auf ein Problem?
Wenn man vergisst, worldborder center <x> <z> am Spawn zu machen, ist die Border verschoben.

Der Vorschlag
Beim Varostart soll die Bordermitte vom Plugin auf den Worldspawn gesetzt werden.

/kill funktioniert nicht vor Varostart

Was ist das Problem?
Jeglicher Schaden vor Beginn des Varos wird geblockt. Dazu gehört auch /kill, d.h. selbst der Admin hat Probleme, seine Spieler zu kontrollieren.

Reproduktion

  1. Vor dem Start des Varos
  2. Benutze /kill
    ❌ Du stirbst nicht

Weiterer Kontext
Schaden wird in BeforeVaroListener.javageblockt

Delete illegal items

Is your feature request related to a problem?
No I don't think so

The suggestion
Currently if you disable enchanted golden apples for example people are still able to get them via chest they found in mines or so. I know they are not able to use them, but I think it would be nice if they directly get removed from their inventory.

Alternatives
They maybe could be already removed if a chest is opened or so, but this might nor work very well if you get them via a hopper etc. A second alternative would be to remove all of them when a chunk is loaded, but this will have huge performance impacts as far as I know.

Setting for forbidden items

Is your request related to a problem?
Disallowed items like for example enchanted golden apples are hard-coded, meaning they can only be changed by compiling the plugin yourself.

The suggestion
An option in config.yml where you can specify a list of forbidden items.
The name of the items corresponds to the standar Bukkit Material and item durability should just be a number behind the name.

disallowed-items:
  - GOLDEN_APPLE 1
  - HOPPER_MINECART
  - EYE_OF_ENDER

Potions are going to be implemented as a seperate option, as they work differently

Alternatives
An ingame command to add the items. Sounds like too much effort.

[Border] Option für das Zusammenziehen

Der Vorschlag
Eine Option, mit der man das Kleinerwerden der Border ausmachen kann und sie statisch auf den eingestellten Wert festlegt.

Standard

border:
   shrinking: true
   radius: 5000

Make strike punishments configurable

Is your feature request related to a problem?
For some players current strike punishments may be too severe or they want to allow less/more strikes until a ban.
Currently they can disable automatic punishments, but configuring the automation themselves would be better.

The suggestion
Add options to config.yml to execute commands when a strike hits, however make sure that it happens when the player is online. Have a string for the playername {$player} that gets replaced.

Additionally have some default options for coordinate post, inventory clear and disqualification.

strikes:
  - {$coord-post}
  - {$inv-clear}
  - /yourcommand {$player}
  - {$disqualified}

[Border] Option zum Deaktivieren

Der Vorschlag
Eine Option, die die Worldborder komplett ausmacht und auf die standardmäßigen 30 Millionen Blöcke setzt.

Standard

border:
   enabled: true

Exklusionsrolle für Admins

Bezieht sich dein Vorschlag auf ein Problem?
Wenn man was nachschauen und überprüfen muss, dann verliert man Zeit von seiner Session, obwohl man eigentlich gar nicht spielt.

Der Vorschlag
Eine Rolle für Varoplayer, die sämtliche Aktionen temporär stoppt und für die Serverwartung gedacht ist.
Soll über Discord hinzugefügt werden können, z. B.:

  • !c maintainence <Spieler> - temporär, sollte generell genutzt werden
  • !c maintainence <Spieler> forever - für Admins, die nicht am Spiel teilnehmen

Ablauf

  1. Füge Rolle hinzu
  2. Beim Joinen wird die Position des Spielers gespeichert
  3. Er wird in den Zuschauermodus gesetzt und zum Spawn teleportiert
  4. Keinerlei Aktionen wie Zeit etc. sollen für ihn laufen
  5. Nach dem Leaven wird die Rolle entfernt und er loggt sich beim nächsten Mal als VaroPlayer an seiner Originalposition ein

Admins don't join silently

Describe the bug
When an admin (created through /maintainence command) joins the server, the join message can be seen both ingame and on Discord.

Reproduction steps

  1. Execute /maintainence <your-player>
  2. Join the server

❌ See Discord join message

Expected behaviour
Don't send join/leave messages for admins as is currently already done for dead players.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.