Add /tpslimit Command #113
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/BauSystem#113
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "TPSLimiter" 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?
@ -0,0 +1,100 @@
package de.steamwar.bausystem.commands;
Fehlender AGPL-Header
@ -0,0 +21,4 @@
private long currentTime = System.currentTimeMillis();
public CommandTPSLimiter() {
Bukkit.getScheduler().runTaskTimer(BauSystem.getPlugin(), () -> {
Finde ich nicht so ganz elegant, dass das die ganze Zeit mitläuft. Besser wäre, sich ggf. den Task zu merken und ihn dann zu Stoppen/zu starten.
Wenn ich den Task cancel() dann würde natürlich der server kurzzeitig schneller als 20 tps laufen. Nur damit das klar ist.
@ -0,0 +23,4 @@
public CommandTPSLimiter() {
Bukkit.getScheduler().runTaskTimer(BauSystem.getPlugin(), () -> {
lastTime = currentTime;
currentTime = System.currentTimeMillis();
Millis dürfte für diesen Zweck zu ungenau sein, besser wären Nanosekunden
@ -0,0 +46,4 @@
world.getEntities().stream().filter(entity -> entity instanceof TNTPrimed).forEach(entity -> {
Location location = entity.getLocation();
world.spawnParticle(Particle.BARRIER, location.getX(), location.getY() + 0.49, location.getZ(), 1);
Besser wäre ein aussenden von Velocity 0-Paketen, das hier dürfte den Server stark belasten.
Wie soll ich das genau umsetzten?
Auch verschwindet das TNT nach 4 Sekunden (Clientseitig) sodass man es nicht mehr sieht!
@ -0,0 +86,4 @@
private void sendNewTPSLimitMessage(Player player) {
player.sendMessage(BauSystem.PREFIX + "TPS limit auf " + currentTPSLimit + " gesetzt.");
Bukkit.getOnlinePlayers().forEach(p -> p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText("§eTPS limit auf " + currentTPSLimit + " gesetzt.")));
player bekommt eine doppelte Nachricht, ich denke, die Nachricht in der ActionBar reicht aus.
@ -0,0 +90,4 @@
}
private void sendInvalidArgumentMessage(Player player) {
player.sendMessage(BauSystem.PREFIX + "Nur Zahlen zwischen 1 und 20, und 'default' erlaubt.");
§c
@ -76,0 +76,4 @@
if (CommandTPSLimiter.getCurrentTPSLimit() == 20) {
strings.add("§eTPS§8: §7" + TPSWatcher.getTPS());
} else {
strings.add("§eTPS§8: §7" + TPSWatcher.getTPS() + " §eLimit§8: §7" + CommandTPSLimiter.getCurrentTPSLimit());
Limit ist ein wenig lang (max. 15 Zeichen meines wissens nach). Besser wäre ggf. einfach TPS: 15.4/16
Lixfel könntest du dich mal an eine solche Implementierung setzen. Ich kriege es nicht wirklich richtig hin. Oder könntest du mir ein Ansatz geben, womit ich weiter käme.
Also die Idee ist ja, dass das TNT angezeigt wird. Das es Clientseitig nicht verschwindet. Das habe ich auch schon hinbekommen. Jedoch funktioniert nicht, dass die Motion richtig ist. Da würde ich ganz gerne mal Hilfe bekommen.
Ist nun fertig und getestet.
@ -0,0 +24,4 @@
import de.steamwar.bausystem.world.Welt;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import net.minecraft.server.v1_15_R1.*;
Nutzung von versionsspezifischen Teilen in versionsübergreifendem Codeteil
@ -0,0 +50,4 @@
public CommandTPSLimiter() {
}
Ist der überhaupt noch nötig?
Auch das ist nun fertig.