LightingInvalidateCommand class
Пакет: com.hypixel.hytale.server.core.command.commands.utility.lighting
Файл: com/hypixel/hytale/server/core/command/commands/utility/lighting/LightingInvalidateCommand.java
extends: AbstractWorldCommand
Поля (19)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
return |
|
|
return |
|
|
return |
|
long |
var10 |
|
int |
var12 |
|
int |
var13 |
|
Ref |
var14 |
|
Store |
var15 |
|
BlockChunk |
var16 |
|
int |
var17 |
|
BlockSection |
var18 |
|
Vector3i |
var19 |
|
Message |
var20 |
|
ChunkLightingManager |
var4 |
|
ChunkStore |
var5 |
|
Ref |
var6 |
|
Store |
var7 |
|
TransformComponent |
var8 |
|
Vector3d |
var9 |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
super super("invalidate", "server.commands.invalidatelighting.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.utility.lighting;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.lighting.ChunkLightingManager;
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 javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;
class="kw">public class LightingInvalidateCommand class="kw">extends AbstractWorldCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_INVALIDATED_LIGHTING = Message.translation("server.commands.invalidatedlighting");
@Nonnull
class="kw">private class="kw">final FlagArg oneFlag = this.withFlagArg("one", "server.commands.invalidatelighting.one.desc");
class="kw">public LightingInvalidateCommand() {
super("invalidate", "server.commands.invalidatelighting.desc");
}
@Override
class="kw">protected void execute(@Nonnull CommandContext var1, @Nonnull World var2, @Nonnull Store<EntityStore> var3) {
ChunkLightingManager var4 = var2.getChunkLighting();
ChunkStore var5 = var2.getChunkStore();
if (this.oneFlag.get(var1)) {
if (!var1.isPlayer()) {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
class="kw">return;
}
Ref var6 = var1.senderAsPlayerRef();
if (var6 == null || !var6.isValid()) {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
class="kw">return;
}
Store var7 = var6.getStore();
TransformComponent var8 = var7.getComponent(var6, TransformComponent.getComponentType());
assert var8 != null;
Vector3d var9 = var8.getPosition();
long var10 = ChunkUtil.indexChunkFromBlock((int)var9.x(), (int)var9.z());
int var12 = ChunkUtil.xOfChunkIndex(var10);
int var13 = ChunkUtil.zOfChunkIndex(var10);
Ref var14 = var5.getChunkReference(var10);
if (var14 == null || !var14.isValid()) {
Message var20 = Message.translation("server.commands.errors.chunkNotLoaded")
.param("chunkX", var12)
.param("chunkZ", var13)
.param("world", var2.getName());
var1.sendMessage(var20);
class="kw">return;
}
Store var15 = var5.getStore();
BlockChunk var16 = var15.getComponent(var14, BlockChunk.getComponentType());
assert var16 != null;
int var17 = MathUtil.floor(var9.y()) >> 5;
BlockSection var18 = var16.getSectionAtBlockY(var17);
var18.invalidateLocalLight();
var16.invalidateChunkSection(var17);
Vector3i var19 = new Vector3i(var16.getX(), var17, var16.getZ());
var4.addToQueue(var19);
var1.sendMessage(Message.translation("server.commands.invalidatelighting.success").param("chunkPosition", var19.toString()));
} else {
var4.invalidateLoadedChunks();
var1.sendMessage(MESSAGE_COMMANDS_INVALIDATED_LIGHTING);
}
}
}