Support upcoming new tick freeze implementation #169

Geschlossen
2023-04-13 10:17:46 +02:00 von Lixfel geöffnet · 0 Kommentare
Besitzer
  • Entities have to be resent/fixed (excerpt from old tick freeze paper implementation:
    // SteamWar start
    private boolean sendEntityPackets(Entity entity) {
        //TODO move to BauSystem (spawn and all existing)
        if (currentlyFrozen && !(entity instanceof ItemEntity)) {
            ClientboundSetEntityMotionPacket packetPlayOutEntityVelocity = new ClientboundSetEntityMotionPacket(entity.getId(), new Vec3(0, 0, 0));
            ClientboundTeleportEntityPacket packetPlayOutEntityTeleport = new ClientboundTeleportEntityPacket(entity);
            if (entity instanceof PrimedTnt) {
                PrimedTnt entityTNTPrimed = new PrimedTnt(EntityType.TNT, this);
                entityTNTPrimed.setNoGravity(true);
                entityTNTPrimed.setPos(entity.getX(), entity.getY(), entity.getZ());
                entityTNTPrimed.setFuse(((PrimedTnt) entity).getFuse());
                entityTNTPrimed.setFuse(entityTNTPrimed.getFuse() - (entityTNTPrimed.getFuse() % 5 == 1 ? 1 : 0));
            }
            players.forEach(player -> {
                player.connection.send(packetPlayOutEntityVelocity);
                player.connection.send(packetPlayOutEntityTeleport);
            });

            List<SynchedEntityData.DataValue<?>> nonDefaultValues = entity.getEntityData().getNonDefaultValues();
            if(nonDefaultValues != null) {
                ClientboundSetEntityDataPacket packetPlayOutEntityMetadata = new ClientboundSetEntityDataPacket(entity.getId(), nonDefaultValues);
                players.forEach(player -> player.connection.send(packetPlayOutEntityMetadata));
            }
            return true;
        }
        if (lastFreezed && !(entity instanceof ItemEntity)) {
            ClientboundSetEntityMotionPacket packetPlayOutEntityVelocity = new ClientboundSetEntityMotionPacket(entity);
            ClientboundTeleportEntityPacket packetPlayOutEntityTeleport = new ClientboundTeleportEntityPacket(entity);

            players.forEach(player -> {
                player.connection.send(packetPlayOutEntityVelocity);
                player.connection.send(packetPlayOutEntityTeleport);
            });

            List<SynchedEntityData.DataValue<?>> nonDefaultValues = entity.getEntityData().getNonDefaultValues();
            if(nonDefaultValues != null) {
                ClientboundSetEntityDataPacket packetPlayOutEntityMetadata = new ClientboundSetEntityDataPacket(entity.getId(), nonDefaultValues);
                players.forEach(player -> player.connection.send(packetPlayOutEntityMetadata));
            }
        }
        return false;
    }
    // SteamWar end
- [ ] Entities have to be resent/fixed (excerpt from old tick freeze paper implementation: ``` // SteamWar start private boolean sendEntityPackets(Entity entity) { //TODO move to BauSystem (spawn and all existing) if (currentlyFrozen && !(entity instanceof ItemEntity)) { ClientboundSetEntityMotionPacket packetPlayOutEntityVelocity = new ClientboundSetEntityMotionPacket(entity.getId(), new Vec3(0, 0, 0)); ClientboundTeleportEntityPacket packetPlayOutEntityTeleport = new ClientboundTeleportEntityPacket(entity); if (entity instanceof PrimedTnt) { PrimedTnt entityTNTPrimed = new PrimedTnt(EntityType.TNT, this); entityTNTPrimed.setNoGravity(true); entityTNTPrimed.setPos(entity.getX(), entity.getY(), entity.getZ()); entityTNTPrimed.setFuse(((PrimedTnt) entity).getFuse()); entityTNTPrimed.setFuse(entityTNTPrimed.getFuse() - (entityTNTPrimed.getFuse() % 5 == 1 ? 1 : 0)); } players.forEach(player -> { player.connection.send(packetPlayOutEntityVelocity); player.connection.send(packetPlayOutEntityTeleport); }); List<SynchedEntityData.DataValue<?>> nonDefaultValues = entity.getEntityData().getNonDefaultValues(); if(nonDefaultValues != null) { ClientboundSetEntityDataPacket packetPlayOutEntityMetadata = new ClientboundSetEntityDataPacket(entity.getId(), nonDefaultValues); players.forEach(player -> player.connection.send(packetPlayOutEntityMetadata)); } return true; } if (lastFreezed && !(entity instanceof ItemEntity)) { ClientboundSetEntityMotionPacket packetPlayOutEntityVelocity = new ClientboundSetEntityMotionPacket(entity); ClientboundTeleportEntityPacket packetPlayOutEntityTeleport = new ClientboundTeleportEntityPacket(entity); players.forEach(player -> { player.connection.send(packetPlayOutEntityVelocity); player.connection.send(packetPlayOutEntityTeleport); }); List<SynchedEntityData.DataValue<?>> nonDefaultValues = entity.getEntityData().getNonDefaultValues(); if(nonDefaultValues != null) { ClientboundSetEntityDataPacket packetPlayOutEntityMetadata = new ClientboundSetEntityDataPacket(entity.getId(), nonDefaultValues); players.forEach(player -> player.connection.send(packetPlayOutEntityMetadata)); } } return false; } // SteamWar end ```
YoyoNow hat diesen Issue 2023-04-14 19:00:18 +02:00 geschlossen
Anmelden, um an der Diskussion teilzunehmen.
Kein Meilenstein
Kein Projekt
Niemand zuständig
1 Beteiligte
Nachrichten
Fällig am
Das Fälligkeitsdatum ist ungültig oder außerhalb des zulässigen Bereichs. Bitte verwende das Format „jjjj-mm-tt“.

Kein Fälligkeitsdatum gesetzt.

Abhängigkeiten

Keine Abhängigkeiten gesetzt.

Referenz: SteamWar/BauSystem2.0#169
Keine Beschreibung angegeben.