PointSnapshot class

Пакет: com.hypixel.hytale.builtin.points.snapshot

Файл: com/hypixel/hytale/builtin/points/snapshot/PointSnapshot.java

implements: SelectionSnapshot<PointSnapshot>

Поля (13)

МодификаторыТипИмя
CREATE, DELETE, MUTATE
yield null
yield null
yield null
final PointSnapshot.SnapshotType type
PointSnapshot var10
yield var10
PointManager var5
PointEntry var6
PointSnapshot var7
yield var7
PointEntry var8
PointEntry var9

Методы (17)

МодификаторыВозвратСигнатура
SnapshotType SnapshotType()
static PointSnapshot captureStatePointSnapshot captureState(@Nonnull PointSnapshot.SnapshotType var0, @Nonnull PointEntry var1)
abstract return captureStatereturn captureState(PointSnapshot.SnapshotType.DELETE, var0)
abstract return captureStatereturn captureState(PointSnapshot.SnapshotType.MUTATE, var0)
if if(var5 == null)
if if(var9 == null)
if if(this.position != null && this.rotation != null)
if if(this.rawTags != null)
if if(var6 == null)
if if(this.position != null)
if if(this.rotation != null)
if if(this.rawTags != null)
static PointSnapshot ofCreatePointSnapshot ofCreate(@Nonnull PointEntry var0)
abstract yield ofCreateyield ofCreate(var8)
static PointSnapshot ofDeletePointSnapshot ofDelete(@Nonnull PointEntry var0)
static PointSnapshot ofMutatePointSnapshot ofMutate(@Nonnull PointEntry var0)
return switchreturn switch(this.type)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.points.snapshot;

class="kw">import com.hypixel.hytale.builtin.buildertools.snapshot.SelectionSnapshot;
class="kw">import com.hypixel.hytale.builtin.points.PointsPlugin;
class="kw">import com.hypixel.hytale.builtin.points.manager.PointEntry;
class="kw">import com.hypixel.hytale.builtin.points.manager.PointManager;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointShapeType;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.Collections;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;

class="kw">public class PointSnapshot class="kw">implements SelectionSnapshot<PointSnapshot> {
   class="kw">private class="kw">final PointSnapshot.SnapshotType type;
   class="kw">private class="kw">final String pointId;
   class="kw">private class="kw">final String worldName;
   @Nullable
   class="kw">private class="kw">final Vector3d position;
   @Nullable
   class="kw">private class="kw">final Vector3f rotation;
   @Nullable
   class="kw">private class="kw">final String name;
   class="kw">private class="kw">final boolean enabled;
   @Nonnull
   class="kw">private class="kw">final PointShapeType shape;
   @Nullable
   class="kw">private class="kw">final Map<String, String> rawTags;

   class="kw">private PointSnapshot(
      @Nonnull PointSnapshot.SnapshotType var1,
      @Nonnull String var2,
      @Nonnull String var3,
      @Nullable Vector3d var4,
      @Nullable Vector3f var5,
      @Nullable String var6,
      boolean var7,
      @Nonnull PointShapeType var8,
      @Nullable Map<String, String> var9
   ) {
      this.type = var1;
      this.pointId = var2;
      this.worldName = var3;
      this.position = var4;
      this.rotation = var5;
      this.name = var6;
      this.enabled = var7;
      this.shape = var8;
      this.rawTags = var9;
   }

   class="kw">public class="kw">static PointSnapshot ofCreate(@Nonnull PointEntry var0) {
      class="kw">return new PointSnapshot(PointSnapshot.SnapshotType.CREATE, var0.getId(), var0.getWorldName(), null, null, null, true, PointShapeType.Block, null);
   }

   class="kw">public class="kw">static PointSnapshot ofDelete(@Nonnull PointEntry var0) {
      class="kw">return captureState(PointSnapshot.SnapshotType.DELETE, var0);
   }

   class="kw">public class="kw">static PointSnapshot ofMutate(@Nonnull PointEntry var0) {
      class="kw">return captureState(PointSnapshot.SnapshotType.MUTATE, var0);
   }

   class="kw">private class="kw">static PointSnapshot captureState(@Nonnull PointSnapshot.SnapshotType var0, @Nonnull PointEntry var1) {
      class="kw">return new PointSnapshot(
         var0,
         var1.getId(),
         var1.getWorldName(),
         new Vector3d(var1.getPosition()),
         new Vector3f(var1.getRotation()),
         var1.getName(),
         var1.isEnabled(),
         var1.getShape(),
         copyTags(var1.getRawTags())
      );
   }

   @Nonnull
   class="kw">private class="kw">static Map<String, String> copyTags(@Nonnull Map<String, String> var0) {
      class="kw">return var0.isEmpty() ? Collections.emptyMap() : new HashMap<>(var0);
   }

   @Nullable
   class="kw">public PointSnapshot restore(@Nonnull Ref<EntityStore> var1, PlayerRef var2, World var3, ComponentAccessor<EntityStore> var4) {
      PointManager var5 = PointsPlugin.get().getManagerForWorld(this.worldName);
      if (var5 == null) {
         class="kw">return null;
      }

      class="kw">return class="kw">switch (this.type) {
         case CREATE -> {
            PointEntry var9 = var5.getPoint(this.pointId);
            if (var9 == null) {
               yield null;
            } else {
               PointSnapshot var10 = ofDelete(var9);
               var5.unregister(this.pointId);
               var5.notifyViewersRemove(this.pointId);
               yield var10;
            }
         }
         case DELETE -> {
            if (this.position != null && this.rotation != null) {
               PointEntry var8 = new PointEntry(this.pointId, this.worldName, new Vector3d(this.position), new Vector3f(this.rotation), this.name, this.enabled);
               var8.setShape(this.shape);
               if (this.rawTags != null) {
                  var8.setTags(copyTags(this.rawTags));
               }

               var5.register(this.pointId, var8);
               var5.notifyViewersAdd(var8);
               yield ofCreate(var8);
            } else {
               yield null;
            }
         }
         case MUTATE -> {
            PointEntry var6 = var5.getPoint(this.pointId);
            if (var6 == null) {
               yield null;
            } else {
               PointSnapshot var7 = ofMutate(var6);
               if (this.position != null) {
                  var6.setPosition(new Vector3d(this.position));
               }

               if (this.rotation != null) {
                  var6.setRotation(new Vector3f(this.rotation));
               }

               var6.setName(this.name);
               var6.setEnabled(this.enabled);
               var6.setShape(this.shape);
               if (this.rawTags != null) {
                  var6.setTags(copyTags(this.rawTags));
               }

               var5.markSpatialDirty();
               var5.notifyViewersAdd(var6);
               yield var7;
            }
         }
      };
   }

   class="kw">public enum SnapshotType {
      CREATE,
      DELETE,
      MUTATE;

      SnapshotType() {
      }
   }
}