PrefabEditSession class
Пакет: com.hypixel.hytale.builtin.buildertools.prefabeditor
Файл: com/hypixel/hytale/builtin/buildertools/prefabeditor/PrefabEditSession.java
implements: Resource<EntityStore>
Поля (17)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
return |
|
UUID |
var1 |
|
String |
var1 |
|
PrefabEditSessionManager |
var2 |
|
UUID |
var2 |
|
Transform |
var2 |
|
UUIDComponent |
var3 |
|
PrefabEditingMetadata |
var4 |
|
UUIDComponent |
var4 |
|
UUID |
var4 |
|
Player |
var5 |
|
PlayerRef |
var5 |
|
PrefabEditingMetadata |
var6 |
|
PlayerRef |
var6 |
|
Player |
var6 |
|
UUID |
var7 |
|
BlockSelection |
var8 |
Методы (14)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
void |
addPrefabvoid addPrefab(@Nonnull Path var1, @Nonnull Vector3i var2, @Nonnull Vector3i var3, @Nonnull Vector3i var4, @Nonnull Vector3i var5) |
static |
boolean |
boundsIntersectboolean boundsIntersect(@Nonnull Vector3i var0, @Nonnull Vector3i var1, @Nonnull Vector3i var2, @Nonnull Vector3i var3) |
public |
boolean |
clearSelectedPrefabboolean clearSelectedPrefab(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2) |
|
|
for for(PrefabEditingMetadata var5 : var1) |
public |
UUID |
getWorldArrivedFromUUID getWorldArrivedFrom() |
public |
UUID |
getWorldCreatorUUID getWorldCreator() |
public |
void |
hidePrefabAnchorsvoid hidePrefabAnchors(@Nonnull PacketHandler var1) |
|
|
if if(var1 != null) |
|
|
if if(var4 == null) |
public |
void |
markPrefabsDirtyAtPositionvoid markPrefabsDirtyAtPosition(@Nonnull Vector3i var1) |
public |
void |
markPrefabsDirtyInBoundsvoid markPrefabsDirtyInBounds(@Nonnull Vector3i var1, @Nonnull Vector3i var2) |
public |
void |
setSelectedPrefabvoid setSelectedPrefab(@Nonnull Ref<EntityStore> var1, @Nonnull PrefabEditingMetadata var2, @Nonnull ComponentAccessor<EntityStore> var3) |
public |
void |
setTransformArrivedFromvoid setTransformArrivedFrom(Transform var1) |
public |
void |
setWorldArrivedFromvoid setWorldArrivedFrom(UUID var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.prefabeditor;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
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.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Resource;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.math.codec.Vector3iArrayCodec;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolHideAnchors;
class="kw">import com.hypixel.hytale.protocol.packets.worldmap.MapMarker;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.io.PacketHandler;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabStore;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldmap.markers.MapMarkerBuilder;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
class="kw">import java.nio.file.Path;
class="kw">import java.util.Map;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;
class="kw">public class PrefabEditSession class="kw">implements Resource<EntityStore> {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<PrefabEditSession> CODEC = BuilderCodec.builder(PrefabEditSession.class, PrefabEditSession::new)
.append(new KeyedCodec<>("WorldName", Codec.STRING, true), (var0, var1) -> var0.worldName = var1, var0 -> var0.worldName)
.add()
.append(new KeyedCodec<>("WorldArrivedFrom", Codec.UUID_STRING, true), (var0, var1) -> var0.worldArrivedFrom = var1, var0 -> var0.worldArrivedFrom)
.add()
.append(
new KeyedCodec<>("TransformArrivedFrom", Transform.CODEC, true), (var0, var1) -> var0.transformArrivedFrom = var1, var0 -> var0.transformArrivedFrom
)
.add()
.append(new KeyedCodec<>("WorldCreatorUUID", Codec.UUID_STRING, true), (var0, var1) -> var0.worldCreator = var1, var0 -> var0.worldCreator)
.add()
.append(new KeyedCodec<>("SpawnPoint", new Vector3iArrayCodec(), true), (var0, var1) -> var0.spawnPoint = var1, var0 -> var0.spawnPoint)
.add()
.append(new KeyedCodec<>("LoadedPrefabMetadata", new ArrayCodec<>(PrefabEditingMetadata.CODEC, PrefabEditingMetadata[]::new), false), (var0, var1) -> {
for (PrefabEditingMetadata var5 : var1) {
var0.loadedPrefabMetadata.put(var5.getUuid(), var5);
}
}, var0 -> var0.loadedPrefabMetadata.values().toArray(PrefabEditingMetadata[]::new))
.add()
.afterDecode(var0 -> {
UUID var1 = var0.getWorldCreator();
if (var1 != null) {
PrefabEditSessionManager var2 = BuilderToolsPlugin.get().getPrefabEditSessionManager();
var2.populateActiveEditSession(var1, var0);
for (PrefabEditingMetadata var4 : var0.loadedPrefabMetadata.values()) {
var2.populatePrefabsBeingEdited(var4.getPrefabPath());
}
var2.scheduleAnchorEntityRecreation(var0);
}
})
.build();
class="kw">private String worldName;
class="kw">private UUID worldArrivedFrom;
@Nullable
class="kw">private Transform transformArrivedFrom;
class="kw">private UUID worldCreator;
@Nonnull
class="kw">private class="kw">final Map<UUID, PrefabEditingMetadata> loadedPrefabMetadata = new Object2ObjectOpenHashMap();
@Nonnull
class="kw">private class="kw">final Map<UUID, UUID> selectedPrefab = new Object2ObjectOpenHashMap();
@Nonnull
class="kw">private Vector3i spawnPoint = new Vector3i(0, 0, 0);
@Nonnull
class="kw">public class="kw">static ResourceType<EntityStore, PrefabEditSession> getResourceType() {
class="kw">return BuilderToolsPlugin.get().getPrefabEditSessionResourceType();
}
class="kw">private PrefabEditSession() {
}
class="kw">public PrefabEditSession(@Nonnull String var1, @Nonnull UUID var2, @Nonnull UUID var3, @Nonnull Transform var4) {
this.worldName = var1;
this.worldCreator = var2;
this.worldArrivedFrom = var3;
this.transformArrivedFrom = var4;
}
class="kw">public PrefabEditSession(@Nonnull PrefabEditSession var1) {
this.worldName = var1.worldName;
this.worldArrivedFrom = var1.worldArrivedFrom;
this.transformArrivedFrom = var1.transformArrivedFrom;
this.worldCreator = var1.worldCreator;
this.spawnPoint = var1.spawnPoint;
}
class="kw">public void addPrefab(@Nonnull Path var1, @Nonnull Vector3i var2, @Nonnull Vector3i var3, @Nonnull Vector3i var4, @Nonnull Vector3i var5) {
if (this.loadedPrefabMetadata.isEmpty()) {
this.spawnPoint.set(var3);
}
PrefabEditingMetadata var6 = new PrefabEditingMetadata(var1, var2, var3, var4, var5, Universe.get().getWorld(this.worldName));
this.loadedPrefabMetadata.put(var6.getUuid(), var6);
}
@Nullable
class="kw">public PrefabEditingMetadata updatePrefabBounds(@Nonnull UUID var1, @Nonnull Vector3i var2, @Nonnull Vector3i var3) {
PrefabEditingMetadata var4 = this.loadedPrefabMetadata.get(var1);
if (var4 == null) {
class="kw">return null;
}
var4.setMaxPoint(var3);
var4.setMinPoint(var2);
var4.setDirty(true);
class="kw">return var4;
}
class="kw">public void setSelectedPrefab(@Nonnull Ref<EntityStore> var1, @Nonnull PrefabEditingMetadata var2, @Nonnull ComponentAccessor<EntityStore> var3) {
UUIDComponent var4 = var3.getComponent(var1, UUIDComponent.getComponentType());
assert var4 != null;
Player var5 = var3.getComponent(var1, Player.getComponentType());
assert var5 != null;
PlayerRef var6 = var3.getComponent(var1, PlayerRef.getComponentType());
assert var6 != null;
UUID var7 = var4.getUuid();
if (this.selectedPrefab.get(var7) != null && this.selectedPrefab.get(var7).equals(var2.getUuid())) {
BlockSelection var8 = BuilderToolsPlugin.getState(var5, var6).getSelection();
if (var8 != null && var2.getMinPoint().equals(var8.getSelectionMin()) && var2.getMaxPoint().equals(var8.getSelectionMax())) {
class="kw">return;
}
}
this.selectedPrefab.put(var7, var2.getUuid());
var2.sendAnchorHighlightingPacket(var6.getPacketHandler());
BuilderToolsPlugin.addToQueue(var5, var6, (var1x, var2x, var3x) -> var2x.select(var2.getMinPoint(), var2.getMaxPoint(), null, var3x));
}
class="kw">public void hidePrefabAnchors(@Nonnull PacketHandler var1) {
var1.writeNoCache(new BuilderToolHideAnchors());
}
@Nullable
class="kw">public PrefabEditingMetadata getSelectedPrefab(@Nonnull UUID var1) {
UUID var2 = this.selectedPrefab.get(var1);
class="kw">return var2 == null ? null : this.loadedPrefabMetadata.get(var2);
}
class="kw">public boolean clearSelectedPrefab(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2) {
UUIDComponent var3 = var2.getComponent(var1, UUIDComponent.getComponentType());
assert var3 != null;
UUID var4 = var3.getUuid();
if (this.selectedPrefab.remove(var4) == null) {
class="kw">return false;
}
PlayerRef var5 = var2.getComponent(var1, PlayerRef.getComponentType());
assert var5 != null;
Player var6 = var2.getComponent(var1, Player.getComponentType());
assert var6 != null;
this.hidePrefabAnchors(var5.getPacketHandler());
BuilderToolsPlugin.addToQueue(var6, var5, (var0, var1x, var2x) -> var1x.deselect(var2x));
class="kw">return true;
}
@Nonnull
class="kw">public String getWorldName() {
class="kw">return this.worldName;
}
class="kw">public UUID getWorldArrivedFrom() {
class="kw">return this.worldArrivedFrom;
}
class="kw">public void setWorldArrivedFrom(UUID var1) {
this.worldArrivedFrom = var1;
}
@Nullable
class="kw">public Transform getTransformArrivedFrom() {
class="kw">return this.transformArrivedFrom;
}
class="kw">public void setTransformArrivedFrom(Transform var1) {
this.transformArrivedFrom = var1;
}
class="kw">public UUID getWorldCreator() {
class="kw">return this.worldCreator;
}
@Nonnull
class="kw">public Vector3i getSpawnPoint() {
class="kw">return this.spawnPoint;
}
@Nonnull
class="kw">public Map<UUID, PrefabEditingMetadata> getLoadedPrefabMetadata() {
class="kw">return this.loadedPrefabMetadata;
}
class="kw">public void markPrefabsDirtyAtPosition(@Nonnull Vector3i var1) {
for (PrefabEditingMetadata var3 : this.loadedPrefabMetadata.values()) {
if (var3.isLocationWithinPrefabBoundingBox(var1)) {
var3.setDirty(true);
}
}
}
class="kw">public void markPrefabsDirtyInBounds(@Nonnull Vector3i var1, @Nonnull Vector3i var2) {
for (PrefabEditingMetadata var4 : this.loadedPrefabMetadata.values()) {
if (boundsIntersect(var4.getMinPoint(), var4.getMaxPoint(), var1, var2)) {
var4.setDirty(true);
}
}
}
class="kw">private class="kw">static boolean boundsIntersect(@Nonnull Vector3i var0, @Nonnull Vector3i var1, @Nonnull Vector3i var2, @Nonnull Vector3i var3) {
class="kw">return var0.x <= var3.x && var1.x >= var2.x && var0.y <= var3.y && var1.y >= var2.y && var0.z <= var3.z && var1.z >= var2.z;
}
@Nonnull
class="kw">public MapMarker[] createPrefabMarkers() {
class="kw">return this.loadedPrefabMetadata.values().stream().map(PrefabEditSession::createPrefabMarker).toArray(MapMarker[]::new);
}
@Nonnull
class="kw">public class="kw">static MapMarker createPrefabMarker(@Nonnull PrefabEditingMetadata var0) {
String var1 = PrefabStore.stripPrefabSuffix(var0.getPrefabPath().getFileName().toString());
Transform var2 = new Transform(var0.getAnchorEntityPosition());
class="kw">return new MapMarkerBuilder("prefab-" + var0.getUuid(), "Prefab.png", var2).withCustomName(var1).build();
}
@Nonnull
class="kw">public PrefabEditSession clone() {
class="kw">return new PrefabEditSession(this);
}
}