mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-30 20:39:10 +00:00
初步重构网络管理结构
This commit is contained in:
@@ -10,7 +10,7 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
|
||||
import net.momirealms.craftengine.bukkit.plugin.injector.BlockGenerator;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.PacketConsumers;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.BukkitNetworkManager;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.bukkit.CraftBukkitReflections;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlocks;
|
||||
@@ -102,7 +102,7 @@ public final class BukkitBlockManager extends AbstractBlockManager {
|
||||
}
|
||||
this.stateId2ImmutableBlockStates = new ImmutableBlockState[this.customBlockCount];
|
||||
Arrays.fill(this.stateId2ImmutableBlockStates, EmptyBlock.INSTANCE.defaultState());
|
||||
this.resetPacketConsumers();
|
||||
this.resetPacketListeners();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -149,7 +149,7 @@ public final class BukkitBlockManager extends AbstractBlockManager {
|
||||
|
||||
@Override
|
||||
public void delayedLoad() {
|
||||
this.resetPacketConsumers();
|
||||
this.resetPacketListeners();
|
||||
super.delayedLoad();
|
||||
}
|
||||
|
||||
@@ -263,14 +263,14 @@ public final class BukkitBlockManager extends AbstractBlockManager {
|
||||
holder.bindValue(emptyBlock);
|
||||
}
|
||||
|
||||
private void resetPacketConsumers() {
|
||||
private void resetPacketListeners() {
|
||||
Map<Integer, Integer> finalMapping = new HashMap<>(this.blockAppearanceMapper);
|
||||
int stoneId = BlockStateUtils.blockStateToId(MBlocks.STONE$defaultState);
|
||||
for (int custom : this.internalId2StateId.values()) {
|
||||
finalMapping.put(custom, stoneId);
|
||||
}
|
||||
finalMapping.putAll(this.tempBlockAppearanceConvertor);
|
||||
PacketConsumers.initBlocks(finalMapping, RegistryUtils.currentBlockRegistrySize());
|
||||
BukkitNetworkManager.instance().registerBlockStatePacketListeners(finalMapping, RegistryUtils.currentBlockRegistrySize());
|
||||
}
|
||||
|
||||
private void initVanillaRegistry() {
|
||||
|
||||
@@ -20,12 +20,10 @@ import net.momirealms.craftengine.bukkit.plugin.command.BukkitSenderFactory;
|
||||
import net.momirealms.craftengine.bukkit.plugin.gui.BukkitGuiManager;
|
||||
import net.momirealms.craftengine.bukkit.plugin.injector.*;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.BukkitNetworkManager;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.PacketConsumers;
|
||||
import net.momirealms.craftengine.bukkit.plugin.scheduler.BukkitSchedulerAdapter;
|
||||
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
|
||||
import net.momirealms.craftengine.bukkit.sound.BukkitSoundManager;
|
||||
import net.momirealms.craftengine.bukkit.util.EventUtils;
|
||||
import net.momirealms.craftengine.bukkit.util.RegistryUtils;
|
||||
import net.momirealms.craftengine.bukkit.world.BukkitWorldManager;
|
||||
import net.momirealms.craftengine.core.item.ItemManager;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
@@ -146,8 +144,8 @@ public class BukkitCraftEngine extends CraftEngine {
|
||||
throw new InjectionException("Error initializing ProtectedFieldVisitor", e);
|
||||
}
|
||||
super.onPluginLoad();
|
||||
super.blockManager.init();
|
||||
super.networkManager = new BukkitNetworkManager(this);
|
||||
super.blockManager.init();
|
||||
super.itemManager = new BukkitItemManager(this);
|
||||
this.successfullyLoaded = true;
|
||||
super.compatibilityManager().onLoad();
|
||||
@@ -191,7 +189,6 @@ public class BukkitCraftEngine extends CraftEngine {
|
||||
BukkitItemBehaviors.init();
|
||||
BukkitHitBoxTypes.init();
|
||||
BukkitBlockEntityElementConfigs.init();
|
||||
PacketConsumers.initEntities(RegistryUtils.currentEntityTypeRegistrySize());
|
||||
super.packManager = new BukkitPackManager(this);
|
||||
super.senderFactory = new BukkitSenderFactory(this);
|
||||
super.recipeManager = new BukkitRecipeManager(this);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@ import net.kyori.adventure.text.Component;
|
||||
import net.momirealms.craftengine.bukkit.entity.data.BaseEntityData;
|
||||
import net.momirealms.craftengine.bukkit.entity.data.BlockDisplayEntityData;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.PacketConsumers;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.BukkitNetworkManager;
|
||||
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
|
||||
import net.momirealms.craftengine.bukkit.util.ComponentUtils;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
@@ -36,12 +36,7 @@ public class BlockDisplayPacketHandler implements EntityPacketHandler {
|
||||
if (entityDataId == BlockDisplayEntityData.DisplayedBlock.id()) {
|
||||
Object blockState = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem);
|
||||
int stateId = BlockStateUtils.blockStateToId(blockState);
|
||||
int newStateId;
|
||||
if (!user.clientModEnabled()) {
|
||||
newStateId = PacketConsumers.remap(stateId);
|
||||
} else {
|
||||
newStateId = PacketConsumers.remapMOD(stateId);
|
||||
}
|
||||
int newStateId= BukkitNetworkManager.instance().remapBlockState(stateId, user.clientModEnabled());
|
||||
if (newStateId == stateId) continue;
|
||||
Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem);
|
||||
packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(
|
||||
|
||||
@@ -41,7 +41,7 @@ public class CommonItemPacketHandler implements EntityPacketHandler {
|
||||
continue;
|
||||
}
|
||||
ItemStack itemStack = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsItemStack);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, (BukkitServerPlayer) user);
|
||||
Optional<ItemStack> optional = BukkitItemManager.instance().s2c(itemStack, user);
|
||||
if (optional.isEmpty()) continue;
|
||||
isChanged = true;
|
||||
itemStack = optional.get();
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.kyori.adventure.text.Component;
|
||||
import net.momirealms.craftengine.bukkit.entity.data.BaseEntityData;
|
||||
import net.momirealms.craftengine.bukkit.entity.data.EnderManData;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.PacketConsumers;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.BukkitNetworkManager;
|
||||
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
|
||||
import net.momirealms.craftengine.bukkit.util.ComponentUtils;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
@@ -38,12 +38,7 @@ public class EndermanPacketHandler implements EntityPacketHandler {
|
||||
Optional<Object> blockState = (Optional<Object>) FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem);
|
||||
if (blockState.isEmpty()) continue;
|
||||
int stateId = BlockStateUtils.blockStateToId(blockState.get());
|
||||
int newStateId;
|
||||
if (!user.clientModEnabled()) {
|
||||
newStateId = PacketConsumers.remap(stateId);
|
||||
} else {
|
||||
newStateId = PacketConsumers.remapMOD(stateId);
|
||||
}
|
||||
int newStateId = BukkitNetworkManager.instance().remapBlockState(stateId, user.clientModEnabled());
|
||||
if (newStateId == stateId) continue;
|
||||
Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem);
|
||||
packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.kyori.adventure.text.Component;
|
||||
import net.momirealms.craftengine.bukkit.entity.data.AbstractMinecartData;
|
||||
import net.momirealms.craftengine.bukkit.entity.data.BaseEntityData;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.PacketConsumers;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.BukkitNetworkManager;
|
||||
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
|
||||
import net.momirealms.craftengine.bukkit.util.ComponentUtils;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
@@ -79,12 +79,7 @@ public class MinecartPacketHandler implements EntityPacketHandler {
|
||||
Optional<Object> blockState = (Optional<Object>) FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem);
|
||||
if (blockState.isEmpty()) return null;
|
||||
int stateId = BlockStateUtils.blockStateToId(blockState.get());
|
||||
int newStateId;
|
||||
if (!user.clientModEnabled()) {
|
||||
newStateId = PacketConsumers.remap(stateId);
|
||||
} else {
|
||||
newStateId = PacketConsumers.remapMOD(stateId);
|
||||
}
|
||||
int newStateId = BukkitNetworkManager.instance().remapBlockState(stateId, user.clientModEnabled());
|
||||
if (newStateId == stateId) return null;
|
||||
Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem);
|
||||
return FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(
|
||||
@@ -100,12 +95,7 @@ public class MinecartPacketHandler implements EntityPacketHandler {
|
||||
public Object handle(NetWorkUser user, Object packedItem, int entityDataId) {
|
||||
if (entityDataId != AbstractMinecartData.DisplayBlock.id()) return null;
|
||||
int stateId = (int) FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem);
|
||||
int newStateId;
|
||||
if (!user.clientModEnabled()) {
|
||||
newStateId = PacketConsumers.remap(stateId);
|
||||
} else {
|
||||
newStateId = PacketConsumers.remapMOD(stateId);
|
||||
}
|
||||
int newStateId = BukkitNetworkManager.instance().remapBlockState(stateId, user.clientModEnabled());
|
||||
if (newStateId == stateId) return null;
|
||||
Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem);
|
||||
return FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(entityDataId, serializer, newStateId);
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.kyori.adventure.text.Component;
|
||||
import net.momirealms.craftengine.bukkit.entity.data.BaseEntityData;
|
||||
import net.momirealms.craftengine.bukkit.entity.data.PrimedTntData;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.PacketConsumers;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.BukkitNetworkManager;
|
||||
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
|
||||
import net.momirealms.craftengine.bukkit.util.ComponentUtils;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
@@ -36,12 +36,7 @@ public class PrimedTNTPacketHandler implements EntityPacketHandler {
|
||||
if (entityDataId == PrimedTntData.BlockState.id()) {
|
||||
Object blockState = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem);
|
||||
int stateId = BlockStateUtils.blockStateToId(blockState);
|
||||
int newStateId;
|
||||
if (!user.clientModEnabled()) {
|
||||
newStateId = PacketConsumers.remap(stateId);
|
||||
} else {
|
||||
newStateId = PacketConsumers.remapMOD(stateId);
|
||||
}
|
||||
int newStateId = BukkitNetworkManager.instance().remapBlockState(stateId, user.clientModEnabled());
|
||||
if (newStateId == stateId) continue;
|
||||
Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem);
|
||||
packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
package net.momirealms.craftengine.bukkit.plugin.network.id;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class PacketIdFinder {
|
||||
private static final Map<String, Map<String, Integer>> gamePacketIdsByName = new HashMap<>();
|
||||
private static final Map<String, Map<Class<?>, Integer>> gamePacketIdsByClazz = new HashMap<>();
|
||||
private static final int maxC2SPacketId;
|
||||
private static final int maxS2CPacketId;
|
||||
|
||||
static {
|
||||
try {
|
||||
if (VersionHelper.isOrAbove1_21()) {
|
||||
Object packetReport = CoreReflections.constructor$PacketReport.newInstance((Object) null);
|
||||
JsonElement jsonElement = (JsonElement) CoreReflections.method$PacketReport$serializePackets.invoke(packetReport);
|
||||
JsonElement play = jsonElement.getAsJsonObject().get("play");
|
||||
for (Map.Entry<String, JsonElement> entry : play.getAsJsonObject().entrySet()) {
|
||||
Map<String, Integer> ids = new HashMap<>();
|
||||
gamePacketIdsByName.put(entry.getKey(), ids);
|
||||
for (var entry2 : entry.getValue().getAsJsonObject().entrySet()) {
|
||||
ids.put(entry2.getKey(), entry2.getValue().getAsJsonObject().get("protocol_id").getAsInt());
|
||||
}
|
||||
}
|
||||
} else if (VersionHelper.isOrAbove1_20_5()) {
|
||||
gamePacketIdsByName.putAll(FastNMS.INSTANCE.gamePacketIdsByName());
|
||||
} else {
|
||||
gamePacketIdsByClazz.putAll(FastNMS.INSTANCE.gamePacketIdsByClazz());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().warn("Failed to get packets", e);
|
||||
}
|
||||
maxS2CPacketId = calculateMaxId("clientbound");
|
||||
maxC2SPacketId = calculateMaxId("serverbound");
|
||||
}
|
||||
|
||||
private static int calculateMaxId(String direction) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
return gamePacketIdsByName.getOrDefault(direction, Collections.emptyMap()).size();
|
||||
} else {
|
||||
return gamePacketIdsByClazz.getOrDefault(direction, Collections.emptyMap()).size();
|
||||
}
|
||||
}
|
||||
|
||||
public static int c2sGamePackets() {
|
||||
return maxC2SPacketId;
|
||||
}
|
||||
|
||||
public static int s2cGamePackets() {
|
||||
return maxS2CPacketId;
|
||||
}
|
||||
|
||||
public static int clientboundByName(String packetName) {
|
||||
return gamePacketIdsByName.get("clientbound").getOrDefault(packetName, -1);
|
||||
}
|
||||
|
||||
public static int clientboundByClazz(Class<?> clazz) {
|
||||
return gamePacketIdsByClazz.get("clientbound").getOrDefault(clazz, -1);
|
||||
}
|
||||
|
||||
public static int serverboundByName(String packetName) {
|
||||
return gamePacketIdsByName.get("serverbound").getOrDefault(packetName, -1);
|
||||
}
|
||||
|
||||
public static int serverboundByClazz(Class<?> clazz) {
|
||||
return gamePacketIdsByClazz.get("serverbound").getOrDefault(clazz, -1);
|
||||
}
|
||||
}
|
||||
@@ -2,181 +2,183 @@ package net.momirealms.craftengine.bukkit.plugin.network.id;
|
||||
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.PacketIds;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections;
|
||||
import net.momirealms.craftengine.core.plugin.network.PacketFlow;
|
||||
|
||||
public class PacketIds1_20 implements PacketIds {
|
||||
|
||||
@Override
|
||||
public int clientboundBlockUpdatePacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundBlockUpdatePacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundBlockUpdatePacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSectionBlocksUpdatePacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSectionBlocksUpdatePacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSectionBlocksUpdatePacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundLevelParticlesPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundLevelParticlesPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundLevelParticlesPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundLevelEventPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundLevelEventPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundLevelEventPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundAddEntityPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundAddEntityPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundAddEntityPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundOpenScreenPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundOpenScreenPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundOpenScreenPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSoundPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSoundPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSoundPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundRemoveEntitiesPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundRemoveEntitiesPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundRemoveEntitiesPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetEntityDataPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetEntityDataPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetEntityDataPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetTitleTextPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetTitleTextPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetTitleTextPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetSubtitleTextPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetSubtitleTextPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetSubtitleTextPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetActionBarTextPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetActionBarTextPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetActionBarTextPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundBossEventPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundBossEventPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundBossEventPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSystemChatPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSystemChatPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSystemChatPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundTabListPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundTabListPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundTabListPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetPlayerTeamPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetPlayerTeamPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetPlayerTeamPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetObjectivePacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetObjectivePacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetObjectivePacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundLevelChunkWithLightPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundLevelChunkWithLightPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundLevelChunkWithLightPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundPlayerInfoUpdatePacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundPlayerInfoUpdatePacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundPlayerInfoUpdatePacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetScorePacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetScorePacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetScorePacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundContainerSetContentPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundContainerSetContentPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundContainerSetContentPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundContainerSetSlotPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundContainerSetSlotPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundContainerSetSlotPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetCursorItemPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetCursorItemPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetCursorItemPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetEquipmentPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetEquipmentPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetEquipmentPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetPlayerInventoryPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundSetPlayerInventoryPacket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundContainerClickPacket() {
|
||||
return PacketIdFinder.serverboundByClazz(NetworkReflections.clazz$ServerboundContainerClickPacket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundSetCreativeModeSlotPacket() {
|
||||
return PacketIdFinder.serverboundByClazz(NetworkReflections.clazz$ServerboundSetCreativeModeSlotPacket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundBlockEventPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundBlockEventPacket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundInteractPacket() {
|
||||
return PacketIdFinder.serverboundByClazz(NetworkReflections.clazz$ServerboundInteractPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundSetPlayerInventoryPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundRecipeBookAddPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundRecipeBookAddPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundRecipeBookAddPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundPlaceGhostRecipePacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundPlaceGhostRecipePacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundPlaceGhostRecipePacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundUpdateRecipesPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundUpdateRecipesPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundUpdateRecipesPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundUpdateAdvancementsPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundUpdateAdvancementsPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundUpdateAdvancementsPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundForgetLevelChunkPacket() {
|
||||
return PacketIdFinder.clientboundByClazz(NetworkReflections.clazz$ClientboundForgetLevelChunkPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundForgetLevelChunkPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundBlockEventPacket() {
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundBlockEventPacket, PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundContainerClickPacket() {
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ServerboundContainerClickPacket, PacketFlow.SERVERBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundSetCreativeModeSlotPacket() {
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ServerboundSetCreativeModeSlotPacket, PacketFlow.SERVERBOUND);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int serverboundInteractPacket() {
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ServerboundInteractPacket, PacketFlow.SERVERBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundCustomPayloadPacket() {
|
||||
return PacketIdFinder.serverboundByClazz(NetworkReflections.clazz$ServerboundCustomPayloadPacket);
|
||||
return PlayPacketIdHelper.byClazz(NetworkReflections.clazz$ServerboundCustomPayloadPacket, PacketFlow.SERVERBOUND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,181 +1,182 @@
|
||||
package net.momirealms.craftengine.bukkit.plugin.network.id;
|
||||
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.PacketIds;
|
||||
import net.momirealms.craftengine.core.plugin.network.PacketFlow;
|
||||
|
||||
public class PacketIds1_20_5 implements PacketIds {
|
||||
|
||||
@Override
|
||||
public int clientboundBlockUpdatePacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:block_update");
|
||||
return PlayPacketIdHelper.byName("minecraft:block_update", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSectionBlocksUpdatePacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:section_blocks_update");
|
||||
return PlayPacketIdHelper.byName("minecraft:section_blocks_update", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundLevelParticlesPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:level_particles");
|
||||
return PlayPacketIdHelper.byName("minecraft:level_particles", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundLevelEventPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:level_event");
|
||||
return PlayPacketIdHelper.byName("minecraft:level_event", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundAddEntityPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:add_entity");
|
||||
return PlayPacketIdHelper.byName("minecraft:add_entity", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundOpenScreenPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:open_screen");
|
||||
return PlayPacketIdHelper.byName("minecraft:open_screen", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSoundPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:sound");
|
||||
return PlayPacketIdHelper.byName("minecraft:sound", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundRemoveEntitiesPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:remove_entities");
|
||||
return PlayPacketIdHelper.byName("minecraft:remove_entities", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetEntityDataPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_entity_data");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_entity_data", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetTitleTextPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_title_text");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_title_text", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetSubtitleTextPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_subtitle_text");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_subtitle_text", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetActionBarTextPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_action_bar_text");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_action_bar_text", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundBossEventPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:boss_event");
|
||||
return PlayPacketIdHelper.byName("minecraft:boss_event", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSystemChatPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:system_chat");
|
||||
return PlayPacketIdHelper.byName("minecraft:system_chat", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundTabListPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:tab_list");
|
||||
return PlayPacketIdHelper.byName("minecraft:tab_list", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetPlayerTeamPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_player_team");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_player_team", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetObjectivePacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_objective");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_objective", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundLevelChunkWithLightPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:level_chunk_with_light");
|
||||
return PlayPacketIdHelper.byName("minecraft:level_chunk_with_light", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundPlayerInfoUpdatePacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:player_info_update");
|
||||
return PlayPacketIdHelper.byName("minecraft:player_info_update", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetScorePacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_score");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_score", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundContainerSetContentPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:container_set_content");
|
||||
return PlayPacketIdHelper.byName("minecraft:container_set_content", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundContainerSetSlotPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:container_set_slot");
|
||||
return PlayPacketIdHelper.byName("minecraft:container_set_slot", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetCursorItemPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_cursor_item");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_cursor_item", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetEquipmentPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_equipment");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_equipment", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundSetPlayerInventoryPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:set_player_inventory");
|
||||
return PlayPacketIdHelper.byName("minecraft:set_player_inventory", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundBlockEventPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:block_event");
|
||||
return PlayPacketIdHelper.byName("minecraft:block_event", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundRecipeBookAddPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:recipe_book_add");
|
||||
return PlayPacketIdHelper.byName("minecraft:recipe_book_add", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundPlaceGhostRecipePacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:place_ghost_recipe");
|
||||
return PlayPacketIdHelper.byName("minecraft:place_ghost_recipe", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundUpdateRecipesPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:update_recipes");
|
||||
return PlayPacketIdHelper.byName("minecraft:update_recipes", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundUpdateAdvancementsPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:update_advancements");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundContainerClickPacket() {
|
||||
return PacketIdFinder.serverboundByName("minecraft:container_click");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundSetCreativeModeSlotPacket() {
|
||||
return PacketIdFinder.serverboundByName("minecraft:set_creative_mode_slot");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundInteractPacket() {
|
||||
return PacketIdFinder.serverboundByName("minecraft:interact");
|
||||
return PlayPacketIdHelper.byName("minecraft:update_advancements", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundForgetLevelChunkPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:forget_level_chunk");
|
||||
return PlayPacketIdHelper.byName("minecraft:forget_level_chunk", PacketFlow.CLIENTBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundContainerClickPacket() {
|
||||
return PlayPacketIdHelper.byName("minecraft:container_click", PacketFlow.SERVERBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundSetCreativeModeSlotPacket() {
|
||||
return PlayPacketIdHelper.byName("minecraft:set_creative_mode_slot", PacketFlow.SERVERBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundInteractPacket() {
|
||||
return PlayPacketIdHelper.byName("minecraft:interact", PacketFlow.SERVERBOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundCustomPayloadPacket() {
|
||||
return PacketIdFinder.serverboundByName("custom_payload");
|
||||
return PlayPacketIdHelper.byName("custom_payload", PacketFlow.SERVERBOUND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package net.momirealms.craftengine.bukkit.plugin.network.id;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.plugin.network.PacketFlow;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class PlayPacketIdHelper {
|
||||
// 1.20.5-latest
|
||||
private static final Map<PacketFlow, Map<String, Integer>> byName = new EnumMap<>(PacketFlow.class);
|
||||
// 1.20-1.20.4
|
||||
private static final Map<PacketFlow, Map<Class<?>, Integer>> byClazz = new EnumMap<>(PacketFlow.class);
|
||||
|
||||
static {
|
||||
try {
|
||||
if (VersionHelper.isOrAbove1_21()) {
|
||||
Object packetReport = CoreReflections.constructor$PacketReport.newInstance((Object) null);
|
||||
JsonObject packetReportData = ((JsonElement) CoreReflections.method$PacketReport$serializePackets.invoke(packetReport)).getAsJsonObject();
|
||||
JsonObject playData = packetReportData.get("play").getAsJsonObject();
|
||||
for (Map.Entry<String, JsonElement> entry : playData.entrySet()) {
|
||||
Map<String, Integer> ids = new HashMap<>();
|
||||
byName.put(PacketFlow.valueOf(entry.getKey().toUpperCase(Locale.ROOT)), ids);
|
||||
for (var entry2 : entry.getValue().getAsJsonObject().entrySet()) {
|
||||
ids.put(entry2.getKey(), entry2.getValue().getAsJsonObject().get("protocol_id").getAsInt());
|
||||
}
|
||||
}
|
||||
} else if (VersionHelper.isOrAbove1_20_5()) {
|
||||
for (Map.Entry<String, Map<String, Integer>> entry : FastNMS.INSTANCE.gamePacketIdsByName().entrySet()) {
|
||||
byName.put(PacketFlow.valueOf(entry.getKey().toUpperCase(Locale.ROOT)), entry.getValue());
|
||||
}
|
||||
} else {
|
||||
for (Map.Entry<String, Map<Class<?>, Integer>> entry : FastNMS.INSTANCE.gamePacketIdsByClazz().entrySet()) {
|
||||
byClazz.put(PacketFlow.valueOf(entry.getKey().toUpperCase(Locale.ROOT)), entry.getValue());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().warn("Failed to init packet registry", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static int count(PacketFlow direction) {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
return byName.getOrDefault(direction, Collections.emptyMap()).size();
|
||||
} else {
|
||||
return byClazz.getOrDefault(direction, Collections.emptyMap()).size();
|
||||
}
|
||||
}
|
||||
|
||||
public static int byName(String packetName, PacketFlow direction) {
|
||||
return byName.get(direction).getOrDefault(packetName, -1);
|
||||
}
|
||||
|
||||
public static int byClazz(Class<?> clazz, PacketFlow direction) {
|
||||
return byClazz.get(direction).getOrDefault(clazz, -1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package net.momirealms.craftengine.bukkit.plugin.network.listener;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.network.ByteBufPacketEvent;
|
||||
import net.momirealms.craftengine.core.plugin.network.NetWorkUser;
|
||||
|
||||
public interface ByteBufferPacketListener {
|
||||
|
||||
default void onPacketReceive(NetWorkUser user, ByteBufPacketEvent event) {
|
||||
}
|
||||
|
||||
default void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package net.momirealms.craftengine.bukkit.plugin.network.listener;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.network.NMSPacketEvent;
|
||||
import net.momirealms.craftengine.core.plugin.network.NetWorkUser;
|
||||
|
||||
public interface NMSPacketListener {
|
||||
|
||||
default void onPacketReceive(NetWorkUser user, NMSPacketEvent event, Object packet) {
|
||||
}
|
||||
|
||||
default void onPacketSend(NetWorkUser user, NMSPacketEvent event, Object packet) {
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,8 @@ public interface NetworkManager extends Manageable {
|
||||
|
||||
Channel getChannel(Player player);
|
||||
|
||||
int remapBlockState(int stateId, boolean enableMod);
|
||||
|
||||
Player[] onlineUsers();
|
||||
|
||||
default void sendPacket(@NotNull NetWorkUser player, Object packet) {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package net.momirealms.craftengine.core.plugin.network;
|
||||
|
||||
public enum PacketFlow {
|
||||
SERVERBOUND,
|
||||
CLIENTBOUND;
|
||||
}
|
||||
@@ -60,9 +60,9 @@ authlib_version=6.0.58
|
||||
concurrent_util_version=0.0.3
|
||||
|
||||
# Proxy settings
|
||||
#systemProp.socks.proxyHost=127.0.0.1
|
||||
#systemProp.socks.proxyPort=7890
|
||||
#systemProp.http.proxyHost=127.0.0.1
|
||||
#systemProp.http.proxyPort=7890
|
||||
#systemProp.https.proxyHost=127.0.0.1
|
||||
#systemProp.https.proxyPort=7890
|
||||
systemProp.socks.proxyHost=127.0.0.1
|
||||
systemProp.socks.proxyPort=7890
|
||||
systemProp.http.proxyHost=127.0.0.1
|
||||
systemProp.http.proxyPort=7890
|
||||
systemProp.https.proxyHost=127.0.0.1
|
||||
systemProp.https.proxyPort=7890
|
||||
Reference in New Issue
Block a user