RespawnBlock class
Пакет: com.hypixel.hytale.server.core.universe.world.meta.state
Файл: com/hypixel/hytale/server/core/universe/world/meta/state/RespawnBlock.java
implements: Component<ChunkStore>
Поля (17)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<RespawnBlock> |
CODEC |
|
public static final ComponentType<ChunkStore, BlockModule.BlockStateInfo> |
COMPONENT_TYPE_BLOCK_STATE_INFO |
|
public static final ComponentType<ChunkStore, RespawnBlock> |
COMPONENT_TYPE_RESPAWN_BLOCK |
|
private static final HytaleLogger |
LOGGER |
|
public static final Query<ChunkStore> |
QUERY |
|
|
return |
|
World |
var10 |
|
PlayerWorldData |
var11 |
|
PlayerRespawnPointData[] |
var12 |
|
ChunkSection |
var13 |
|
Vector3i |
var14 |
|
PlayerRespawnPointData |
var16 |
|
RespawnBlock |
var5 |
|
BlockModule.BlockStateInfo |
var6 |
|
PlayerRef |
var7 |
|
Player |
var8 |
|
Ref |
var9 |
Методы (12)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
OnRemovepublic OnRemove() |
|
|
for for(int var15 = 0; var15 < var12.length; var15++) |
static |
ComponentType<ChunkStore, RespawnBlock> |
getComponentTypeComponentType<ChunkStore, RespawnBlock> getComponentType() |
|
public Query<ChunkStore> |
getQuerypublic Query<ChunkStore> getQuery() |
|
|
if if(var2 != RemoveReason.UNLOAD) |
|
|
if if(var5.ownerUUID != null) |
|
|
if if(var7 == null) |
|
|
if if(var8 == null) |
|
|
if if(var12 == null) |
|
public void |
onEntityAddedpublic void onEntityAdded(@Nonnull Ref<ChunkStore> var1, @Nonnull AddReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4) |
|
public void |
onEntityRemovepublic void onEntityRemove(@Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4) |
public |
void |
setOwnerUUIDvoid setOwnerUUID(@Nullable UUID var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.meta.state;
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.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentType;
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.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.data.PlayerRespawnPointData;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.data.PlayerWorldData;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
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.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.ChunkSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.UUID;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;
class="kw">public class RespawnBlock class="kw">implements Component<ChunkStore> {
class="kw">public class="kw">static class="kw">final BuilderCodec<RespawnBlock> CODEC = BuilderCodec.builder(RespawnBlock.class, RespawnBlock::new)
.append(new KeyedCodec<>("OwnerUUID", Codec.UUID_BINARY), (var0, var1) -> var0.ownerUUID = var1, var0 -> var0.ownerUUID)
.add()
.build();
@Nullable
class="kw">private UUID ownerUUID;
class="kw">public class="kw">static ComponentType<ChunkStore, RespawnBlock> getComponentType() {
class="kw">return BlockModule.get().getRespawnBlockComponentType();
}
class="kw">public RespawnBlock() {
}
class="kw">public RespawnBlock(@Nullable UUID var1) {
this.ownerUUID = var1;
}
@Nullable
class="kw">public UUID getOwnerUUID() {
class="kw">return this.ownerUUID;
}
class="kw">public void setOwnerUUID(@Nullable UUID var1) {
this.ownerUUID = var1;
}
@Nullable
@Override
class="kw">public Component<ChunkStore> clone() {
class="kw">return new RespawnBlock(this.ownerUUID);
}
class="kw">public class="kw">static class OnRemove class="kw">extends RefSystem<ChunkStore> {
@Nonnull
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
class="kw">public class="kw">static class="kw">final ComponentType<ChunkStore, RespawnBlock> COMPONENT_TYPE_RESPAWN_BLOCK = RespawnBlock.getComponentType();
class="kw">public class="kw">static class="kw">final ComponentType<ChunkStore, BlockModule.BlockStateInfo> COMPONENT_TYPE_BLOCK_STATE_INFO = BlockModule.BlockStateInfo.getComponentType();
@Nonnull
class="kw">public class="kw">static class="kw">final Query<ChunkStore> QUERY = Query.and(COMPONENT_TYPE_RESPAWN_BLOCK, COMPONENT_TYPE_BLOCK_STATE_INFO);
class="kw">public OnRemove() {
}
@Override
class="kw">public void onEntityAdded(
@Nonnull Ref<ChunkStore> var1, @Nonnull AddReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
) {
}
@Override
class="kw">public void onEntityRemove(
@Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
) {
if (var2 != RemoveReason.UNLOAD) {
RespawnBlock var5 = var4.getComponent(var1, COMPONENT_TYPE_RESPAWN_BLOCK);
assert var5 != null;
if (var5.ownerUUID != null) {
BlockModule.BlockStateInfo var6 = var4.getComponent(var1, COMPONENT_TYPE_BLOCK_STATE_INFO);
assert var6 != null;
PlayerRef var7 = Universe.get().getPlayer(var5.ownerUUID);
if (var7 == null) {
LOGGER.at(Level.WARNING).log("Failed to fetch player ref during removal of respawn block entity.");
} else {
Player var8 = var7.getComponent(Player.getComponentType());
if (var8 == null) {
LOGGER.at(Level.WARNING).log("Failed to fetch player component during removal of respawn block entity.");
} else {
Ref var9 = var6.getSectionRef();
if (var9.isValid()) {
World var10 = var4.getExternalData().getWorld();
PlayerWorldData var11 = var8.getPlayerConfigData().getPerWorldData(var10.getName());
PlayerRespawnPointData[] var12 = var11.getRespawnPoints();
if (var12 == null) {
LOGGER.at(Level.WARNING)
.log("Failed to find valid respawn points for player %s during removal of respawn block entity.", var5.ownerUUID);
} else {
ChunkSection var13 = var4.getComponent(var9, ChunkSection.getComponentType());
assert var13 != null;
Vector3i var14 = new Vector3i(
ChunkUtil.worldCoordFromLocalCoord(var13.getX(), ChunkUtil.xFromIndex(var6.getIndex())),
ChunkUtil.worldCoordFromLocalCoord(var13.getY(), ChunkUtil.yFromIndex(var6.getIndex())),
ChunkUtil.worldCoordFromLocalCoord(var13.getZ(), ChunkUtil.zFromIndex(var6.getIndex()))
);
for (int var15 = 0; var15 < var12.length; var15++) {
PlayerRespawnPointData var16 = var12[var15];
if (var16.getBlockPosition().equals(var14)) {
LOGGER.at(Level.INFO)
.log("Removing respawn point for player %s at position %s due to respawn block removal.", var5.ownerUUID, var14);
var11.setRespawnPoints(ArrayUtil.remove(var12, var15));
class="kw">return;
}
}
}
}
}
}
}
}
}
@Nullable
@Override
class="kw">public Query<ChunkStore> getQuery() {
class="kw">return QUERY;
}
}
}