PointToolPacketHandler class

Пакет: com.hypixel.hytale.builtin.points

Файл: com/hypixel/hytale/builtin/points/PointToolPacketHandler.java

implements: SubPacketHandler

Поля (39)

МодификаторыТипИмя
final int MaxBatchSize
break
LinkedHashSet var1
String var10
String var10
String var11
PointEntry var12
PointEntry var12
PointToolCreateResponse var13
PointEntry var13
String var14
PointEntry var15
PointToolCreateResponse var16
Player var3
BuilderToolsPlugin.BuilderState var4
BuilderToolsPlugin.BuilderState var4
PointManager var6
PointManager var6
PointManager var6
PointManager var6
PointManager var6
PointManager var6
PointManager var6
PointManager var6
PointManager var6
UUID var7
String var7
PointEntry var7
PointEntry var7
List var7
List var7
PointEntry var7
PointEntry var7
Vector3d var8
List var8
ArrayList var8
Vector3f var9
Vector3d var9
List var9

Методы (38)

МодификаторыВозвратСигнатура
static void ensureViewingvoid ensureViewing(@Nonnull PlayerRef var0, @Nonnull PointManager var1)
abstract ensureViewing ensureViewing(var2, var6)
for for(String var5 : var0)
for for(String var11 : var7)
for for(String var12 : var7)
private void handleCreatevoid handleCreate(@Nonnull PointToolCreate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleDeletevoid handleDelete(@Nonnull PointToolDelete var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleDuplicatevoid handleDuplicate(@Nonnull PointToolDuplicate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleEquipvoid handleEquip(@Nonnull PointToolEquip var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleMovevoid handleMove(@Nonnull PointToolMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleMultiMovevoid handleMultiMove(@Nonnull PointToolMultiMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleRotatevoid handleRotate(@Nonnull PointToolRotate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSelectvoid handleSelect(@Nonnull PointToolSelect var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSetShapevoid handleSetShape(@Nonnull PointToolSetShape var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
static boolean hasPermissionboolean hasPermission(@Nonnull PlayerRef var0)
if if(var0 != null && var0.length != 0)
if if(var5 != null)
if if(var4 != null)
if if(var4 != null)
if if(var6 != null)
if if(var1.active)
if if(var6 != null)
if if(var6 != null)
if if(var7 != null)
if if(var6 != null)
if if(var7 != null)
if if(var6 != null)
if if(var12 != null)
if if(var6 != null)
if if(var13 != null)
if if(var6 != null)
if if(var7 != null)
if if(var6 != null)
if if(var6 != null)
static void recordHistoryvoid recordHistory(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2, @Nonnull SelectionSnapshot<?> var3)
static void recordHistoryvoid recordHistory(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2, @Nonnull List<SelectionSnapshot<?>> var3)
abstract recordHistory recordHistory(var5, var3, var2, var8)
abstract recordHistory recordHistory(var5, var3, var2, var9)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.points;

class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.buildertools.snapshot.SelectionSnapshot;
class="kw">import com.hypixel.hytale.builtin.points.manager.PointEntry;
class="kw">import com.hypixel.hytale.builtin.points.manager.PointManager;
class="kw">import com.hypixel.hytale.builtin.points.snapshot.PointSnapshot;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolCreate;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolCreateResponse;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolDelete;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolDuplicate;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolEquip;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolMove;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolMultiMove;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolRotate;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolSelect;
class="kw">import com.hypixel.hytale.protocol.packets.player.PointToolSetShape;
class="kw">import com.hypixel.hytale.protocol.packets.player.UpdatePointDisplay;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.io.handlers.IPacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.handlers.IWorldPacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.handlers.SubPacketHandler;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
class="kw">import com.hypixel.hytale.server.core.permissions.PermissionsModule;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.ArrayList;
class="kw">import java.util.HashMap;
class="kw">import java.util.LinkedHashSet;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;

class="kw">public class PointToolPacketHandler class="kw">implements SubPacketHandler {
   class="kw">private class="kw">static class="kw">final int MaxBatchSize = 4096;
   @Nonnull
   class="kw">private class="kw">final IPacketHandler packetHandler;

   class="kw">public PointToolPacketHandler(@Nonnull IPacketHandler var1) {
      this.packetHandler = var1;
   }

   class="kw">private class="kw">static boolean hasPermission(@Nonnull PlayerRef var0) {
      class="kw">return PermissionsModule.get().hasPermission(var0.getUuid(), HytalePermissions.BUILDER_TOOLS_EDITOR);
   }

   class="kw">private class="kw">static void ensureViewing(@Nonnull PlayerRef var0, @Nonnull PointManager var1) {
      var1.addViewer(var0.getUuid(), PointManager.ViewSource.TOOL);
   }

   @Nonnull
   class="kw">private class="kw">static List<String> sanitizeBatch(@Nullable String[] var0) {
      if (var0 != null && var0.length != 0) {
         LinkedHashSet var1 = new LinkedHashSet<>();

         for (String var5 : var0) {
            if (var5 != null) {
               var1.add(var5);
               if (var1.size() >= 4096) {
                  break;
               }
            }
         }

         class="kw">return List.copyOf(var1);
      } else {
         class="kw">return List.of();
      }
   }

   @Nullable
   class="kw">private class="kw">static BuilderToolsPlugin.BuilderState getBuilderState(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2) {
      Player var3 = var0.getComponent(var1, Player.getComponentType());
      class="kw">return var3 == null ? null : BuilderToolsPlugin.getState(var3, var2);
   }

   class="kw">private class="kw">static void recordHistory(
      @Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2, @Nonnull SelectionSnapshot<?> var3
   ) {
      BuilderToolsPlugin.BuilderState var4 = getBuilderState(var0, var1, var2);
      if (var4 != null) {
         var4.pushPointHistory(var3);
      }
   }

   class="kw">private class="kw">static void recordHistory(
      @Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2, @Nonnull List<SelectionSnapshot<?>> var3
   ) {
      if (!var3.isEmpty()) {
         BuilderToolsPlugin.BuilderState var4 = getBuilderState(var0, var1, var2);
         if (var4 != null) {
            var4.pushPointHistory(var3);
         }
      }
   }

   @Override
   class="kw">public void registerHandlers() {
      IWorldPacketHandler.registerHandler(this.packetHandler, 516, this::handleEquip, PointToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 510, this::handleCreate, PointToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 511, this::handleMove, PointToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 512, this::handleRotate, PointToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 513, this::handleMultiMove, PointToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 514, this::handleDuplicate, PointToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 515, this::handleDelete, PointToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 517, this::handleSelect, PointToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 523, this::handleSetShape, PointToolPacketHandler::hasPermission);
   }

   class="kw">private void handleEquip(
      @Nonnull PointToolEquip var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      PointManager var6 = var5.getResource(PointsPlugin.get().getManagerResourceType());
      if (var6 != null) {
         UUID var7 = var2.getUuid();
         if (var1.active) {
            var6.addViewer(var7, PointManager.ViewSource.TOOL);
            var6.sendPointDisplay(var2);
         } else {
            var6.removeViewer(var7, PointManager.ViewSource.TOOL);
            if (!var6.isViewing(var7)) {
               var2.getPacketHandler().write(new UpdatePointDisplay());
            }
         }
      }
   }

   class="kw">private void handleCreate(
      @Nonnull PointToolCreate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      PointManager var6 = var5.getResource(PointsPlugin.get().getManagerResourceType());
      if (var6 != null) {
         ensureViewing(var2, var6);
         String var7 = var4.getName().toLowerCase(Locale.ROOT);
         Vector3d var8 = new Vector3d(var1.position.x(), var1.position.y(), var1.position.z());
         Vector3f var9 = new Vector3f(var1.rotation.x(), var1.rotation.y(), var1.rotation.z());
         String var10 = var6.generateUniquePointId();
         String var11 = var1.name != null && !var1.name.isBlank() ? var1.name.trim() : null;
         PointEntry var12 = new PointEntry(var10, var7, var8, var9, var11, true);
         var12.setShape(var1.shape);
         var6.register(var10, var12);
         var6.notifyViewersAdd(var12);
         recordHistory(var5, var3, var2, PointSnapshot.ofCreate(var12));
         PointToolCreateResponse var13 = new PointToolCreateResponse();
         var13.pointId = var10;
         var13.pointIds = new String[]{var10};
         var2.getPacketHandler().write(var13);
      }
   }

   class="kw">private void handleMove(
      @Nonnull PointToolMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      PointManager var6 = var5.getResource(PointsPlugin.get().getManagerResourceType());
      if (var6 != null) {
         ensureViewing(var2, var6);
         PointEntry var7 = var6.getPoint(var1.pointId);
         if (var7 != null) {
            recordHistory(var5, var3, var2, PointSnapshot.ofMutate(var7));
            var7.setPosition(new Vector3d(var1.newPosition.x(), var1.newPosition.y(), var1.newPosition.z()));
            var6.markSpatialDirty();
            var6.notifyViewersAdd(var7);
         }
      }
   }

   class="kw">private void handleRotate(
      @Nonnull PointToolRotate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      PointManager var6 = var5.getResource(PointsPlugin.get().getManagerResourceType());
      if (var6 != null) {
         ensureViewing(var2, var6);
         PointEntry var7 = var6.getPoint(var1.pointId);
         if (var7 != null) {
            recordHistory(var5, var3, var2, PointSnapshot.ofMutate(var7));
            var7.setRotation(new Vector3f(var1.newRotation.x(), var1.newRotation.y(), var1.newRotation.z()));
            var6.notifyViewersAdd(var7);
         }
      }
   }

   class="kw">private void handleMultiMove(
      @Nonnull PointToolMultiMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      PointManager var6 = var5.getResource(PointsPlugin.get().getManagerResourceType());
      if (var6 != null) {
         ensureViewing(var2, var6);
         List var7 = sanitizeBatch(var1.pointIds);
         if (!var7.isEmpty()) {
            List var8 = new ArrayList<>();
            Vector3d var9 = new Vector3d(var1.moveDelta.x(), var1.moveDelta.y(), var1.moveDelta.z());

            for (String var11 : var7) {
               PointEntry var12 = var6.getPoint(var11);
               if (var12 != null) {
                  var8.add(PointSnapshot.ofMutate(var12));
                  var12.setPosition(new Vector3d(var12.getPosition()).add(var9));
                  var6.notifyViewersAdd(var12);
               }
            }

            var6.markSpatialDirty();
            recordHistory(var5, var3, var2, var8);
         }
      }
   }

   class="kw">private void handleDuplicate(
      @Nonnull PointToolDuplicate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      PointManager var6 = var5.getResource(PointsPlugin.get().getManagerResourceType());
      if (var6 != null) {
         ensureViewing(var2, var6);
         List var7 = sanitizeBatch(var1.pointIds);
         if (!var7.isEmpty()) {
            ArrayList var8 = new ArrayList<>();
            List var9 = new ArrayList<>();
            String var10 = var4.getName().toLowerCase(Locale.ROOT);

            for (String var12 : var7) {
               PointEntry var13 = var6.getPoint(var12);
               if (var13 != null) {
                  String var14 = var6.generateUniquePointId();
                  PointEntry var15 = new PointEntry(
                     var14, var10, new Vector3d(var13.getPosition()), new Vector3f(var13.getRotation()), var13.getName(), var13.isEnabled()
                  );
                  var15.setShape(var13.getShape());
                  if (!var13.getRawTags().isEmpty()) {
                     var15.setTags(new HashMap<>(var13.getRawTags()));
                  }

                  var6.register(var14, var15);
                  var6.notifyViewersAdd(var15);
                  var9.add(PointSnapshot.ofCreate(var15));
                  var8.add(var14);
               }
            }

            if (!var8.isEmpty()) {
               var6.markSpatialDirty();
               recordHistory(var5, var3, var2, var9);
               PointToolCreateResponse var16 = new PointToolCreateResponse();
               var16.pointId = var8.getFirst();
               var16.pointIds = var8.toArray(String[]::new);
               var2.getPacketHandler().write(var16);
            }
         }
      }
   }

   class="kw">private void handleDelete(
      @Nonnull PointToolDelete var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      PointManager var6 = var5.getResource(PointsPlugin.get().getManagerResourceType());
      if (var6 != null) {
         ensureViewing(var2, var6);
         PointEntry var7 = var6.getPoint(var1.pointId);
         if (var7 != null) {
            recordHistory(var5, var3, var2, PointSnapshot.ofDelete(var7));
            var6.unregister(var1.pointId);
            var6.notifyViewersRemove(var1.pointId);
         }
      }
   }

   class="kw">private void handleSelect(
      @Nonnull PointToolSelect var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      PointManager var6 = var5.getResource(PointsPlugin.get().getManagerResourceType());
      if (var6 != null) {
         var6.setPlayerSelection(var2.getUuid(), var1.pointId);
      }
   }

   class="kw">private void handleSetShape(
      @Nonnull PointToolSetShape var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      PointManager var6 = var5.getResource(PointsPlugin.get().getManagerResourceType());
      if (var6 != null) {
         ensureViewing(var2, var6);
         PointEntry var7 = var6.getPoint(var1.pointId);
         if (var7 != null && var7.getShape() != var1.shape) {
            recordHistory(var5, var3, var2, PointSnapshot.ofMutate(var7));
            var7.setShape(var1.shape);
            var7.setPosition(new Vector3d(var1.newPosition.x(), var1.newPosition.y(), var1.newPosition.z()));
            var6.markSpatialDirty();
            var6.notifyViewersAdd(var7);
         }
      }
   }
}