EntityRemovalSystem class
Пакет: com.hypixel.hytale.server.core.entity
Файл: com/hypixel/hytale/server/core/entity/EntityRemovalSystem.java
extends: RefSystem<EntityStore>
Поля (7)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Ref |
var10 |
|
Dirty |
var11 |
|
CompletableFuture |
var12 |
|
CompletableFuture |
var13 |
|
ChunkStore |
var5 |
|
UUIDComponent |
var8 |
|
UUID |
var9 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var2 == RemoveReason.REMOVE || var2 == RemoveReason.BUILDER_TOOLS_UNDO) |
|
|
if if(var2x != null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.entity;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.IChunkSaver;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">public class EntityRemovalSystem class="kw">extends RefSystem<EntityStore> {
@Nonnull
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
@Nonnull
class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(
UUIDComponent.getComponentType(), Query.not(EntityStore.REGISTRY.getNonSerializedComponentType()), Query.not(Player.getComponentType())
);
class="kw">public EntityRemovalSystem() {
}
@Nonnull
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return QUERY;
}
@Override
class="kw">public void onEntityAdded(
@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
}
@Override
class="kw">public void onEntityRemove(
@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
if (var2 == RemoveReason.REMOVE || var2 == RemoveReason.BUILDER_TOOLS_UNDO) {
ChunkStore var5 = var3.getExternalData().getWorld().getChunkStore();
if (var5.getSaver() class="kw">instanceof IChunkSaver.Cubic var7) {
UUIDComponent var8 = var4.getComponent(var1, UUIDComponent.getComponentType());
assert var8 != null;
UUID var9 = var8.getUuid();
Ref var10 = var3.getExternalData().getRefFromUUID(var9);
if (var10 != null && !var10.equals(var1)) {
LOGGER.at(Level.FINE).log("Skipping persisted entity removal for %s: the UUID maps to another live entity", var9);
} else {
Dirty var11 = var4.getComponent(var1, Dirty.getComponentType());
CompletableFuture var12 = var11 == null ? null : var11.getSavingFuture();
CompletableFuture var13 = var12 == null
? var7.removeEntity(var9)
: var12.<Object>handle((var0, var1x) -> null).thenCompose(var2x -> var7.removeEntity(var9));
var5.getStore().getResource(ChunkStore.SAVE_RESOURCE).pushSavingFuture(var13);
var13.whenComplete((var1x, var2x) -> {
if (var2x != null) {
((HytaleLogger.Api)LOGGER.at(Level.SEVERE).withCause(var2x)).log("Failed to remove persisted entity %s:", var9);
}
});
}
}
}
}
}