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);
      }
   }
}