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();
}
}
}
}