TurnOffTeleportersSystem class
Пакет: com.hypixel.hytale.builtin.adventure.teleporter.system
Файл: com/hypixel/hytale/builtin/adventure/teleporter/system/TurnOffTeleportersSystem.java
extends: RefSystem<ChunkStore>
Поля (18)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
Query<ChunkStore> |
QUERY |
|
Store |
var1 |
|
BlockType |
var10 |
|
String |
var11 |
|
Warp |
var12 |
|
String |
var13 |
|
String |
var14 |
|
AndQuery |
var2 |
|
Teleporter |
var2 |
|
Ref |
var3 |
|
BlockModule.BlockStateInfo |
var3 |
|
Ref |
var3 |
|
BlockSection |
var4 |
|
ChunkSection |
var5 |
|
int |
var6 |
|
int |
var7 |
|
int |
var8 |
|
int |
var9 |
Методы (12)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
for for(int var2 = 0; var2 < var0x.size() |
|
|
if if(var2 == AddReason.LOAD) |
|
|
if if(var2 == RemoveReason.REMOVE) |
|
|
if if(var4 != null) |
|
|
if if(var5 != null) |
|
|
if if(var10 != null) |
|
|
if if(var12 == null) |
static |
void |
updatePortalBlockInWorldvoid updatePortalBlockInWorld(Ref<ChunkStore> var0, ComponentAccessor<ChunkStore> var1) |
static |
void |
updatePortalBlockInWorldvoid updatePortalBlockInWorld(ComponentAccessor<ChunkStore> var0, Teleporter var1, BlockModule.BlockStateInfo var2) |
abstract |
|
updatePortalBlockInWorld updatePortalBlockInWorld(var3, var1x) |
abstract |
|
updatePortalBlockInWorld updatePortalBlockInWorld(var1, var2, var3) |
static |
void |
updatePortalBlocksInWorldvoid updatePortalBlocksInWorld(World var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.teleporter.system;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.component.Teleporter;
class="kw">import com.hypixel.hytale.builtin.teleport.TeleportPlugin;
class="kw">import com.hypixel.hytale.builtin.teleport.Warp;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
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.AndQuery;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockOperations;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
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.Locale;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.checkerframework.checker.nullness.compatqual.NullableDecl;
class="kw">public class TurnOffTeleportersSystem class="kw">extends RefSystem<ChunkStore> {
class="kw">public class="kw">static class="kw">final Query<ChunkStore> QUERY = Query.and(Teleporter.getComponentType(), BlockModule.BlockStateInfo.getComponentType());
class="kw">public TurnOffTeleportersSystem() {
}
@Override
class="kw">public void onEntityAdded(@Nonnull Ref<ChunkStore> var1, @Nonnull AddReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4) {
if (var2 == AddReason.LOAD) {
updatePortalBlocksInWorld(var3.getExternalData().getWorld());
}
}
@Override
class="kw">public void onEntityRemove(
@Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
) {
if (var2 == RemoveReason.REMOVE) {
updatePortalBlocksInWorld(var3.getExternalData().getWorld());
}
}
class="kw">public class="kw">static void updatePortalBlocksInWorld(World var0) {
Store var1 = var0.getChunkStore().getStore();
AndQuery var2 = Query.and(Teleporter.getComponentType(), BlockModule.BlockStateInfo.getComponentType());
var1.forEachChunk(var2, (var0x, var1x) -> {
for (int var2 = 0; var2 < var0x.size(); var2++) {
Ref var3 = var0x.getReferenceTo(var2);
updatePortalBlockInWorld(var3, var1x);
}
});
}
class="kw">private class="kw">static void updatePortalBlockInWorld(Ref<ChunkStore> var0, ComponentAccessor<ChunkStore> var1) {
if (var0.isValid()) {
Teleporter var2 = var1.getComponent(var0, Teleporter.getComponentType());
BlockModule.BlockStateInfo var3 = var1.getComponent(var0, BlockModule.BlockStateInfo.getComponentType());
updatePortalBlockInWorld(var1, var2, var3);
}
}
class="kw">public class="kw">static void updatePortalBlockInWorld(ComponentAccessor<ChunkStore> var0, Teleporter var1, BlockModule.BlockStateInfo var2) {
Ref var3 = var2.getSectionRef();
if (var3.isValid()) {
BlockSection var4 = var0.getComponent(var3, BlockSection.getComponentType());
if (var4 != null) {
ChunkSection var5 = var0.getComponent(var3, ChunkSection.getComponentType());
if (var5 != null) {
int var6 = var2.getIndex();
int var7 = ChunkUtil.worldCoordFromLocalCoord(var5.getX(), ChunkUtil.xFromIndex(var6));
int var8 = ChunkUtil.worldCoordFromLocalCoord(var5.getY(), ChunkUtil.yFromIndex(var6));
int var9 = ChunkUtil.worldCoordFromLocalCoord(var5.getZ(), ChunkUtil.zFromIndex(var6));
BlockType var10 = BlockType.getAssetMap().getAsset(var4.get(var6));
if (var10 != null) {
String var11 = var1.getWarp();
Warp var12 = var11 == null ? null : TeleportPlugin.get().getWarps().get(var11.toLowerCase(Locale.ROOT));
String var13 = var10.getStateForBlock(var10);
String var14 = var12 == null ? "class="kw">default" : "Active";
if (!var14.equals(var13)) {
BlockOperations.setBlockInteractionState(var0.getExternalData(), var3, var7, var8, var9, var10, var14, false);
var2.markNeedsSaving(var0);
}
if (var12 == null) {
var1.setWarp(null);
var2.markNeedsSaving(var0);
}
}
}
}
}
}
@NullableDecl
@Override
class="kw">public Query<ChunkStore> getQuery() {
class="kw">return QUERY;
}
}