PlayerConfigData class

Пакет: com.hypixel.hytale.server.core.entity.entities.player.data

Файл: com/hypixel/hytale/server/core/entity/entities/player/data/PlayerConfigData.java

Поля (12)

МодификаторыТипИмя
Map var10
Set var2
BlockMigration var3
var3
Iterator var3
Function var4
var4
var4
String var4
Set var5
Set var6
int var9

Методы (19)

МодификаторыВозвратСигнатура
public void cleanupvoid cleanup(@Nonnull Universe var1)
public boolean consumeHasChangedboolean consumeHasChanged()
for for(String var8 : var5)
public int getBlockIdVersionint getBlockIdVersion()
public String getPresetString getPreset()
public String getWorldString getWorld()
if if(var4 == null)
if if(var4 != null)
public void markChangedvoid markChanged()
public void setActiveObjectiveUUIDsvoid setActiveObjectiveUUIDs(@Nonnull Set<UUID> var1)
public void setBlockIdVersionvoid setBlockIdVersion(int var1)
public void setDiscoveredInstancesvoid setDiscoveredInstances(@Nonnull Set<UUID> var1)
public void setDiscoveredZonesvoid setDiscoveredZones(@Nonnull Set<String> var1)
public void setKnownRecipesvoid setKnownRecipes(@Nonnull Set<String> var1)
public void setPerWorldDatavoid setPerWorldData(@Nonnull Map<String, PlayerWorldData> var1)
public void setPresetvoid setPreset(@Nonnull String var1)
public void setReputationDatavoid setReputationData(@Nonnull Object2IntMap<String> var1)
public void setWorldvoid setWorld(@Nonnull String var1)
while while(var3 != null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.entity.entities.player.data;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.MapCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.Object2IntMapCodec;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockMigration;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMaps;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
class="kw">import java.util.Collections;
class="kw">import java.util.HashSet;
class="kw">import java.util.Iterator;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import java.util.concurrent.atomic.AtomicBoolean;
class="kw">import java.util.function.Function;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class="kw">final class PlayerConfigData {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<PlayerConfigData> CODEC = BuilderCodec.builder(PlayerConfigData.class, PlayerConfigData::new)
      .addField(new KeyedCodec<>("BlockIdVersion", Codec.INTEGER), (var0, var1) -> var0.blockIdVersion = var1, var0 -> var0.blockIdVersion)
      .addField(new KeyedCodec<>("World", Codec.STRING), (var0, var1) -> var0.world = var1, var0 -> var0.world)
      .addField(new KeyedCodec<>("Preset", Codec.STRING), (var0, var1) -> var0.preset = var1, var0 -> var0.preset)
      .addField(new KeyedCodec<>("KnownRecipes", new ArrayCodec<>(Codec.STRING, String[]::new)), (var0, var1) -> {
         var0.knownRecipes = Set.of(var1);
         var0.unmodifiableKnownRecipes = Collections.unmodifiableSet(var0.knownRecipes);
      }, var0 -> var0.knownRecipes.toArray(String[]::new))
      .addField(new KeyedCodec<>("PerWorldData", new MapCodec<>(PlayerWorldData.CODEC, ConcurrentHashMap::new, false)), (var0, var1) -> {
         var0.perWorldData = var1;
         var0.unmodifiablePerWorldData = Collections.unmodifiableMap(var1);
      }, var0 -> var0.perWorldData)
      .addField(new KeyedCodec<>("DiscoveredZones", Codec.STRING_ARRAY), (var0, var1) -> {
         var0.discoveredZones = Set.of(var1);
         var0.unmodifiableDiscoveredZones = Collections.unmodifiableSet(var0.discoveredZones);
      }, var0 -> var0.discoveredZones.toArray(String[]::new))
      .addField(new KeyedCodec<>("DiscoveredInstances", new ArrayCodec<>(Codec.UUID_BINARY, UUID[]::new)), (var0, var1) -> {
         var0.discoveredInstances = Set.of(var1);
         var0.unmodifiableDiscoveredInstances = Collections.unmodifiableSet(var0.discoveredInstances);
      }, var0 -> var0.discoveredInstances.toArray(UUID[]::new))
      .addField(new KeyedCodec<>("ReputationData", new Object2IntMapCodec<>(Codec.STRING, Object2IntOpenHashMap::new, false)), (var0, var1) -> {
         var0.reputationData = var1;
         var0.unmodifiableReputationData = Object2IntMaps.unmodifiable(var1);
      }, var0 -> var0.reputationData)
      .addField(
         new KeyedCodec<>("ActiveObjectiveUUIDs", new ArrayCodec<>(Codec.UUID_BINARY, UUID[]::new)),
         (var0, var1) -> Collections.addAll(var0.activeObjectiveUUIDs, var1),
         var0 -> var0.activeObjectiveUUIDs.toArray(UUID[]::new)
      )
      .afterDecode(var0 -> {
         for (PlayerWorldData var2 : var0.perWorldData.values()) {
            var2.setPlayerConfigData(var0);
         }

         int var9 = var0.getBlockIdVersion();
         Map var10 = BlockMigration.getAssetMap().getAssetMap();
         BlockMigration var3 = var10.get(var9);
         Function var4 = null;

         while (var3 != null) {
            if (var4 == null) {
               var4 = var3::getMigration;
            } else {
               var4 = var4.andThen(var3::getMigration);
            }

            var3 = var10.get(++var9);
         }

         var0.setBlockIdVersion(var9);
         if (var4 != null) {
            Set var5 = var0.getKnownRecipes();
            if (!var5.isEmpty()) {
               Set var6 = new HashSet<>();

               for (String var8 : var5) {
                  var6.add(var4.apply(var8));
               }

               var0.setKnownRecipes(var6);
            }
         }
      })
      .build();
   @Nonnull
   class="kw">private class="kw">final class="kw">transient AtomicBoolean hasChanged = new AtomicBoolean();
   class="kw">private int blockIdVersion = 1;
   class="kw">private String world;
   class="kw">private String preset;
   @Nonnull
   class="kw">private Set<String> knownRecipes = new HashSet<>();
   @Nonnull
   class="kw">private Set<String> unmodifiableKnownRecipes = Collections.unmodifiableSet(this.knownRecipes);
   class="kw">private Map<String, PlayerWorldData> perWorldData = new ConcurrentHashMap<>();
   @Nonnull
   class="kw">private Map<String, PlayerWorldData> unmodifiablePerWorldData = Collections.unmodifiableMap(this.perWorldData);
   @Nonnull
   class="kw">private Set<String> discoveredZones = new HashSet<>();
   @Nonnull
   class="kw">private Set<String> unmodifiableDiscoveredZones = Collections.unmodifiableSet(this.discoveredZones);
   @Nonnull
   class="kw">private Set<UUID> discoveredInstances = new HashSet<>();
   @Nonnull
   class="kw">private Set<UUID> unmodifiableDiscoveredInstances = Collections.unmodifiableSet(this.discoveredInstances);
   class="kw">private Object2IntMap<String> reputationData = new Object2IntOpenHashMap();
   @Nonnull
   class="kw">private Object2IntMap<String> unmodifiableReputationData = Object2IntMaps.unmodifiable(this.reputationData);
   @Nonnull
   class="kw">private Set<UUID> activeObjectiveUUIDs = ConcurrentHashMap.newKeySet();
   @Nonnull
   class="kw">private Set<UUID> unmodifiableActiveObjectiveUUIDs = Collections.unmodifiableSet(this.activeObjectiveUUIDs);
   class="kw">public class="kw">final Vector3d lastSavedPosition = new Vector3d();
   class="kw">public class="kw">final Rotation3f lastSavedRotation = new Rotation3f();

   class="kw">public PlayerConfigData() {
   }

   class="kw">public int getBlockIdVersion() {
      class="kw">return this.blockIdVersion;
   }

   class="kw">public void setBlockIdVersion(int var1) {
      this.blockIdVersion = var1;
   }

   class="kw">public String getWorld() {
      class="kw">return this.world;
   }

   class="kw">public void setWorld(@Nonnull String var1) {
      this.world = var1;
      this.markChanged();
   }

   class="kw">public String getPreset() {
      class="kw">return this.preset;
   }

   class="kw">public void setPreset(@Nonnull String var1) {
      this.preset = var1;
      this.markChanged();
   }

   @Nonnull
   class="kw">public Set<String> getKnownRecipes() {
      class="kw">return this.unmodifiableKnownRecipes;
   }

   class="kw">public void setKnownRecipes(@Nonnull Set<String> var1) {
      this.knownRecipes = var1;
      this.unmodifiableKnownRecipes = Collections.unmodifiableSet(var1);
      this.markChanged();
   }

   @Nonnull
   class="kw">public Map<String, PlayerWorldData> getPerWorldData() {
      class="kw">return this.unmodifiablePerWorldData;
   }

   @Nonnull
   class="kw">public PlayerWorldData getPerWorldData(@Nonnull String var1) {
      class="kw">return this.perWorldData.computeIfAbsent(var1, var1x -> new PlayerWorldData(this));
   }

   class="kw">public void setPerWorldData(@Nonnull Map<String, PlayerWorldData> var1) {
      this.perWorldData = var1;
      this.unmodifiablePerWorldData = Collections.unmodifiableMap(var1);
      this.markChanged();
   }

   @Nonnull
   class="kw">public Set<String> getDiscoveredZones() {
      class="kw">return this.unmodifiableDiscoveredZones;
   }

   class="kw">public void setDiscoveredZones(@Nonnull Set<String> var1) {
      this.discoveredZones = var1;
      this.unmodifiableDiscoveredZones = Collections.unmodifiableSet(var1);
      this.markChanged();
   }

   @Nonnull
   class="kw">public Set<UUID> getDiscoveredInstances() {
      class="kw">return this.unmodifiableDiscoveredInstances;
   }

   class="kw">public void setDiscoveredInstances(@Nonnull Set<UUID> var1) {
      this.discoveredInstances = var1;
      this.unmodifiableDiscoveredInstances = Collections.unmodifiableSet(var1);
      this.markChanged();
   }

   @Nonnull
   class="kw">public Object2IntMap<String> getReputationData() {
      class="kw">return this.unmodifiableReputationData;
   }

   class="kw">public void setReputationData(@Nonnull Object2IntMap<String> var1) {
      this.reputationData = var1;
      this.unmodifiableReputationData = Object2IntMaps.unmodifiable(var1);
      this.markChanged();
   }

   @Nonnull
   class="kw">public Set<UUID> getActiveObjectiveUUIDs() {
      class="kw">return this.unmodifiableActiveObjectiveUUIDs;
   }

   class="kw">public void setActiveObjectiveUUIDs(@Nonnull Set<UUID> var1) {
      this.activeObjectiveUUIDs.clear();
      this.activeObjectiveUUIDs.addAll(var1);
      this.markChanged();
   }

   class="kw">public void markChanged() {
      this.hasChanged.set(true);
   }

   class="kw">public boolean consumeHasChanged() {
      class="kw">return this.hasChanged.getAndSet(false);
   }

   class="kw">public void cleanup(@Nonnull Universe var1) {
      Set var2 = this.perWorldData.keySet();
      Iterator var3 = var2.iterator();

      while (var3.hasNext()) {
         String var4 = var3.next();
         if (var4.startsWith("instance-") && var1.getWorld(var4) == null) {
            var3.remove();
         }
      }
   }
}