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