SteamWar/FightSystem
Archiviert
13
1

Add Bow Damge and Fire #261

Manuell gemergt
Lixfel hat 14 Commits von record_extension nach master 2021-04-23 19:52:27 +02:00 zusammengeführt
Besitzer
Keine Beschreibung angegeben.
Chaoscaot hat 3 Commits 2021-04-12 23:34:31 +02:00 hinzugefügt
YoyoNow hat 2021-04-13 08:19:21 +02:00 Änderungen angefragt
@ -114,1 +146,4 @@
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityDamage(EntityDamageEvent e) {
if(e.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK || e.getCause() == EntityDamageEvent.DamageCause.FIRE ||e.getEntity().getFireTicks() > 0)
RecordSystem.setOnFire(e.getEntity(), false);
Besitzer

Warum wird hier das Entity gelöscht, wenn der Cause entweder EntityDamageEvent.DamageCause.FIRE_TICK oder EntityDamageEvent.DamageCause.FIRE oder der fireTick des entities > 0 ist? Kannst du das einmal erklären?

Warum wird hier das Entity gelöscht, wenn der Cause entweder EntityDamageEvent.DamageCause.FIRE_TICK oder EntityDamageEvent.DamageCause.FIRE oder der fireTick des entities > 0 ist? Kannst du das einmal erklären?
Autor
Besitzer

Das ist nicht gelöcht, dass ist eine Flag, die angibt ob das Feuer Permanent oder für 21 Ticks ist.

Das ist nicht gelöcht, dass ist eine Flag, die angibt ob das Feuer Permanent oder für 21 Ticks ist.
Chaoscaot markierte diese Unterhaltung als gelöst
@ -229,2 +276,4 @@
return fp == null || !fp.isLiving() || FightState.getFightState() == FightState.SPECTATE;
}
Besitzer

Wofür sind diese Änderungen?

Wofür sind diese Änderungen?
Chaoscaot markierte diese Unterhaltung als gelöst
@ -68,1 +67,3 @@
*
* BowSpanPacket (0x0A) + int EntityId + boolean start + int hand
* PlayerDamagePacket (0x0B) + int EntityId
* SetOnFire (0x0C) + int EntityId + boolean perma
Besitzer

Dieses Packet kommt mir nicht ganz richtig vor, FireTick ist doch eine sache, welche zufällig weggeht, somit ist es nicht deterministisch, also weiß ich nicht, ob das abspielen dieser nicht dann mal länger und mal kürzer ist, was nicht im Sinne des Packets sein dürfte.

Dieses Packet kommt mir nicht ganz richtig vor, FireTick ist doch eine sache, welche zufällig weggeht, somit ist es nicht deterministisch, also weiß ich nicht, ob das abspielen dieser nicht dann mal länger und mal kürzer ist, was nicht im Sinne des Packets sein dürfte.
Autor
Besitzer

Deshalb wird der FireTick auch, wenn die perma flag auf false ist, nur für 21 Ticks abgespielt, somit ist relativ genau, kann aber noch max. 1 Sekunde off sein.

Deshalb wird der FireTick auch, wenn die perma flag auf false ist, nur für 21 Ticks abgespielt, somit ist relativ genau, kann aber noch max. 1 Sekunde off sein.
Lixfel markierte diese Unterhaltung als gelöst
@ -172,6 +175,27 @@ public class RecordSystem {
spawnEntity(e);
}
public static synchronized void bowSpan(Entity e, boolean start, int hand) {
Besitzer

Das BowSpan hat doch mehrere stadien, reicht da einfach ein boolean für? Und wie ist das mit der Hand wofür genau brauchst du diese, weil du weißt doch den slot, den du gerade hälst.

Würde hier nicht einfach ein Boolean reichen, für mainHand?

Das BowSpan hat doch mehrere stadien, reicht da einfach ein boolean für? Und wie ist das mit der Hand wofür genau brauchst du diese, weil du weißt doch den slot, den du gerade hälst. Würde hier nicht einfach ein Boolean reichen, für mainHand?
Autor
Besitzer

Die "Stadien" die das Bogen Spannen hat werden Client Seitig berechnet.

Die "Stadien" die das Bogen Spannen hat werden Client Seitig berechnet.
Lixfel markierte diese Unterhaltung als gelöst
Chaoscaot hat 1 Commit 2021-04-13 10:12:27 +02:00 hinzugefügt
Chaoscaot hat ein Review von YoyoNow 2021-04-13 10:13:54 +02:00 angefragt
Chaoscaot hat 1 Commit 2021-04-13 11:03:21 +02:00 hinzugefügt
Lixfel hat 2021-04-13 13:19:06 +02:00 Änderungen angefragt
@ -73,1 +76,4 @@
}.register();
//Bow Listener
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Client.BLOCK_PLACE) {
Besitzer

Unsauber, das hier zu Registrieren. Ggf. wäre es sinnvoll, einen PacketAdapterStateDependent neu einzuführen, ansonsten das bitte hier als StateDependent registrieren (und wieder entregistrieren).

Dann läuft das nicht mit, wenn es nicht benötigt wird.
Falls du eine Idee brauchst, wie das geht, schau mal im TechHider nach.

Unsauber, das hier zu Registrieren. Ggf. wäre es sinnvoll, einen PacketAdapterStateDependent neu einzuführen, ansonsten das bitte hier als StateDependent registrieren (und wieder entregistrieren). Dann läuft das nicht mit, wenn es nicht benötigt wird. Falls du eine Idee brauchst, wie das geht, schau mal im TechHider nach.
Chaoscaot markierte diese Unterhaltung als gelöst
@ -74,0 +84,4 @@
Player p = event.getPlayer();
if(!((hand == EnumWrappers.Hand.MAIN_HAND && p.getInventory().getItemInMainHand().getType() == Material.BOW) ||
(hand == EnumWrappers.Hand.OFF_HAND && p.getInventory().getItemInOffHand().getType() == Material.BOW)))
Besitzer

Bogen kann nur gespannt werden, wenn der Bogen in der Haupthand ist. Armbrüste könnten ggf. noch problematisch sein, genauso weiß ich nicht, ob das Material genau so seit der 1.8 hieß.

Bogen kann nur gespannt werden, wenn der Bogen in der Haupthand ist. Armbrüste könnten ggf. noch problematisch sein, genauso weiß ich nicht, ob das Material genau so seit der 1.8 hieß.
Chaoscaot markierte diese Unterhaltung als gelöst
@ -74,0 +87,4 @@
(hand == EnumWrappers.Hand.OFF_HAND && p.getInventory().getItemInOffHand().getType() == Material.BOW)))
return;
RecordSystem.bowSpan(p, true, hand != EnumWrappers.Hand.MAIN_HAND);
Besitzer

Bögen können immer nur in der MainHand gespannt werden.

Bögen können immer nur in der MainHand gespannt werden.
Chaoscaot markierte diese Unterhaltung als gelöst
@ -113,2 +145,4 @@
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityDamage(EntityDamageEvent e) {
if(e.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK || e.getCause() == EntityDamageEvent.DamageCause.FIRE ||e.getEntity().getFireTicks() > 0)
Besitzer

Bitte das ganze erst nach den Prüfungen senden, wenn klar ist, dass dieser Spieler/Entity überhaupt gesendet wird!

Bitte das ganze erst nach den Prüfungen senden, wenn klar ist, dass dieser Spieler/Entity überhaupt gesendet wird!
Chaoscaot markierte diese Unterhaltung als gelöst
@ -172,6 +175,27 @@ public class RecordSystem {
spawnEntity(e);
}
public static synchronized void bowSpan(Entity e, boolean start, boolean offHand) {
Besitzer

Bögen kann man nur in der MainHand spannen? (Meines wissens nach?)

Bögen kann man nur in der MainHand spannen? (Meines wissens nach?)
Chaoscaot markierte diese Unterhaltung als gelöst
@ -175,0 +189,4 @@
Recorder.flush();
}
public static synchronized void setOnFire(Entity e, boolean perma) {
Besitzer

Gibt es überhaupt permafeuer, wenn ja, wo?

Gibt es überhaupt permafeuer, wenn ja, wo?
Chaoscaot markierte diese Unterhaltung als gelöst
Chaoscaot hat 1 Commit 2021-04-13 19:52:37 +02:00 hinzugefügt
Chaoscaot hat 1 Commit 2021-04-13 19:56:14 +02:00 hinzugefügt
Chaoscaot hat 1 Commit 2021-04-13 19:59:04 +02:00 hinzugefügt
Chaoscaot hat 1 Commit 2021-04-13 21:30:27 +02:00 hinzugefügt
YoyoNow hat 2021-04-14 10:33:57 +02:00 Änderungen angefragt
@ -71,6 +101,17 @@ public class Recording implements Listener {
despawnTNT();
}
}.register();
new StateDependent(Config.recording(), FightState.All) {
Besitzer

Warum willst du den Bogen Listener immer haben? Ist das nicht etwas unnütz, weil wann genau im Fight hat man einen Bogen? Ich glaube nur im prepare und im Fight selber. Also kann man das hier doch nocht optimieren?

Warum willst du den Bogen Listener immer haben? Ist das nicht etwas unnütz, weil wann genau im Fight hat man einen Bogen? Ich glaube nur im prepare und im Fight selber. Also kann man das hier doch nocht optimieren?
Chaoscaot markierte diese Unterhaltung als gelöst
@ -115,0 +158,4 @@
return;
if(e.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK || e.getCause() == EntityDamageEvent.DamageCause.FIRE)
RecordSystem.setOnFire(e.getEntity(), false);
Besitzer

Warum setzt du das Entity erst onFire und checkest dann erst, ob es zu senden ist. Das sollte man doch nur, wenn es gesendet werden muss!

Warum setzt du das Entity erst onFire und checkest dann erst, ob es zu senden ist. Das sollte man doch nur, wenn es gesendet werden muss!
Chaoscaot markierte diese Unterhaltung als gelöst
@ -115,0 +173,4 @@
if(e.getEntityType() != EntityType.PLAYER)
return;
RecordSystem.setOnFire(e.getEntity(), false);
Besitzer

Hier ignorierst du ob der Spieler zu senden ist?

Hier ignorierst du ob der Spieler zu senden ist?
Chaoscaot markierte diese Unterhaltung als gelöst
Chaoscaot hat 1 Commit 2021-04-14 12:44:45 +02:00 hinzugefügt
Lixfel hat 2021-04-14 20:31:44 +02:00 Änderungen angefragt
@ -385,3 +385,3 @@
}
public static boolean recording(){
return mode == ArenaMode.EVENT;
return true;//mode == ArenaMode.EVENT;
Besitzer

Nope!

Nope!
Chaoscaot markierte diese Unterhaltung als gelöst
@ -55,0 +67,4 @@
return;
RecordSystem.bowSpan(p, true, hand != EnumWrappers.Hand.MAIN_HAND);
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Client.BLOCK_DIG) {
Besitzer

ARRRGG! Nicht für jedes Paket einen PacketListener registrieren! Bitte nicht! (Musst halt ein Set einbauen, wer gerade den Bogen gezogen hat, aber das bitte nicht!

ARRRGG! Nicht für jedes Paket einen PacketListener registrieren! Bitte nicht! (Musst halt ein Set einbauen, wer gerade den Bogen gezogen hat, aber das bitte nicht!
Chaoscaot markierte diese Unterhaltung als gelöst
Chaoscaot hat 1 Commit 2021-04-14 20:36:53 +02:00 hinzugefügt
Chaoscaot hat 1 Commit 2021-04-14 20:40:05 +02:00 hinzugefügt
Chaoscaot hat ein Review von Lixfel 2021-04-14 20:40:32 +02:00 angefragt
Chaoscaot hat 1 Commit 2021-04-14 20:40:38 +02:00 hinzugefügt
Lixfel hat die Änderungen 2021-04-17 17:42:01 +02:00 genehmigt
Lixfel hat 1 Commit 2021-04-23 18:23:08 +02:00 hinzugefügt
Lixfel hat Commit d81259fac9 in master 2021-04-23 19:52:27 +02:00 manuell gemerged
Lixfel löschte die Branch record_extension 2021-04-23 19:52:41 +02:00
Dieses Repo ist archiviert. Du kannst Pull-Requests nicht kommentieren.
Keine Beschreibung angegeben.