├── .editorconfig ├── .github └── workflows │ ├── build.yml │ └── deploy.yml ├── .gitignore ├── LICENSE.txt ├── README.md ├── build.gradle.kts ├── buildSrc ├── build.gradle.kts ├── settings.gradle.kts └── src │ └── main │ └── kotlin │ ├── LibsAccessor.kt │ ├── mcprotocollib.base-conventions.gradle.kts │ └── mcprotocollib.publish-conventions.gradle.kts ├── example ├── build.gradle.kts └── src │ └── main │ └── java │ └── org │ └── geysermc │ └── mcprotocollib │ ├── auth │ └── example │ │ └── MinecraftAuthTest.java │ ├── network │ └── example │ │ ├── ClientSessionListener.java │ │ ├── PingPacket.java │ │ ├── PingServerTest.java │ │ ├── ServerListener.java │ │ ├── ServerSessionListener.java │ │ └── TestProtocol.java │ └── protocol │ └── example │ └── MinecraftProtocolTest.java ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── jitpack.yml ├── lombok.config ├── protocol ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── geysermc │ │ │ └── mcprotocollib │ │ │ ├── auth │ │ │ ├── GameProfile.java │ │ │ ├── SessionService.java │ │ │ └── util │ │ │ │ ├── HTTPUtils.java │ │ │ │ ├── TextureUrlChecker.java │ │ │ │ ├── UUIDUtils.java │ │ │ │ └── UndashedUUIDAdapter.java │ │ │ ├── network │ │ │ ├── BuiltinFlags.java │ │ │ ├── ClientSession.java │ │ │ ├── Flag.java │ │ │ ├── NetworkConstants.java │ │ │ ├── ProxyInfo.java │ │ │ ├── Server.java │ │ │ ├── ServerSession.java │ │ │ ├── Session.java │ │ │ ├── codec │ │ │ │ ├── PacketDefinition.java │ │ │ │ └── PacketSerializer.java │ │ │ ├── compression │ │ │ │ ├── CompressionConfig.java │ │ │ │ ├── PacketCompression.java │ │ │ │ └── ZlibCompression.java │ │ │ ├── crypt │ │ │ │ ├── AESEncryption.java │ │ │ │ ├── EncryptionConfig.java │ │ │ │ └── PacketEncryption.java │ │ │ ├── event │ │ │ │ ├── server │ │ │ │ │ ├── ServerAdapter.java │ │ │ │ │ ├── ServerBoundEvent.java │ │ │ │ │ ├── ServerClosedEvent.java │ │ │ │ │ ├── ServerClosingEvent.java │ │ │ │ │ ├── ServerEvent.java │ │ │ │ │ ├── ServerListener.java │ │ │ │ │ ├── SessionAddedEvent.java │ │ │ │ │ └── SessionRemovedEvent.java │ │ │ │ └── session │ │ │ │ │ ├── ConnectedEvent.java │ │ │ │ │ ├── DisconnectedEvent.java │ │ │ │ │ ├── DisconnectingEvent.java │ │ │ │ │ ├── PacketErrorEvent.java │ │ │ │ │ ├── PacketSendingEvent.java │ │ │ │ │ ├── SessionAdapter.java │ │ │ │ │ ├── SessionEvent.java │ │ │ │ │ └── SessionListener.java │ │ │ ├── factory │ │ │ │ └── ClientNetworkSessionFactory.java │ │ │ ├── helper │ │ │ │ ├── NettyHelper.java │ │ │ │ └── TransportHelper.java │ │ │ ├── netty │ │ │ │ ├── AutoReadFlowControlHandler.java │ │ │ │ ├── BundlerUnpackerDecoder.java │ │ │ │ ├── DefaultPacketHandlerExecutor.java │ │ │ │ ├── FlushHandler.java │ │ │ │ ├── MinecraftChannelInitializer.java │ │ │ │ ├── PacketCodec.java │ │ │ │ ├── PacketCompressionCodec.java │ │ │ │ ├── PacketEncryptorCodec.java │ │ │ │ └── PacketSizerCodec.java │ │ │ ├── packet │ │ │ │ ├── DefaultPacketHeader.java │ │ │ │ ├── Packet.java │ │ │ │ ├── PacketHeader.java │ │ │ │ ├── PacketProtocol.java │ │ │ │ └── PacketRegistry.java │ │ │ ├── server │ │ │ │ ├── AbstractServer.java │ │ │ │ └── NetworkServer.java │ │ │ └── session │ │ │ │ ├── ClientNetworkSession.java │ │ │ │ ├── NetworkSession.java │ │ │ │ └── ServerNetworkSession.java │ │ │ └── protocol │ │ │ ├── ClientListener.java │ │ │ ├── MinecraftConstants.java │ │ │ ├── MinecraftProtocol.java │ │ │ ├── ServerListener.java │ │ │ ├── ServerLoginHandler.java │ │ │ ├── codec │ │ │ ├── MinecraftCodec.java │ │ │ ├── MinecraftPacket.java │ │ │ ├── MinecraftPacketRegistry.java │ │ │ ├── MinecraftPacketSerializer.java │ │ │ ├── MinecraftTypes.java │ │ │ ├── NbtComponentSerializer.java │ │ │ ├── PacketCodec.java │ │ │ └── PacketFactory.java │ │ │ ├── data │ │ │ ├── DefaultComponentSerializer.java │ │ │ ├── ProtocolState.java │ │ │ ├── UnexpectedEncryptionException.java │ │ │ ├── game │ │ │ │ ├── ArgumentSignature.java │ │ │ │ ├── BossBarAction.java │ │ │ │ ├── BossBarColor.java │ │ │ │ ├── BossBarDivision.java │ │ │ │ ├── ClientCommand.java │ │ │ │ ├── Holder.java │ │ │ │ ├── KnownPack.java │ │ │ │ ├── PlayerListEntry.java │ │ │ │ ├── PlayerListEntryAction.java │ │ │ │ ├── RegistryEntry.java │ │ │ │ ├── RemoteDebugSampleType.java │ │ │ │ ├── ResourcePackStatus.java │ │ │ │ ├── ServerLink.java │ │ │ │ ├── ServerLinkType.java │ │ │ │ ├── UnlockRecipesAction.java │ │ │ │ ├── advancement │ │ │ │ │ └── Advancement.java │ │ │ │ ├── chat │ │ │ │ │ ├── BuiltinChatType.java │ │ │ │ │ ├── ChatCompletionAction.java │ │ │ │ │ ├── ChatFilterType.java │ │ │ │ │ ├── ChatType.java │ │ │ │ │ ├── ChatTypeDecoration.java │ │ │ │ │ ├── MessageSignature.java │ │ │ │ │ └── numbers │ │ │ │ │ │ ├── BlankFormat.java │ │ │ │ │ │ ├── FixedFormat.java │ │ │ │ │ │ ├── NumberFormat.java │ │ │ │ │ │ └── StyledFormat.java │ │ │ │ ├── chunk │ │ │ │ │ ├── BitStorage.java │ │ │ │ │ ├── ChunkBiomeData.java │ │ │ │ │ ├── ChunkSection.java │ │ │ │ │ ├── DataPalette.java │ │ │ │ │ └── palette │ │ │ │ │ │ ├── GlobalPalette.java │ │ │ │ │ │ ├── ListPalette.java │ │ │ │ │ │ ├── MapPalette.java │ │ │ │ │ │ ├── Palette.java │ │ │ │ │ │ ├── PaletteType.java │ │ │ │ │ │ └── SingletonPalette.java │ │ │ │ ├── command │ │ │ │ │ ├── CommandNode.java │ │ │ │ │ ├── CommandParser.java │ │ │ │ │ ├── CommandType.java │ │ │ │ │ ├── SuggestionType.java │ │ │ │ │ └── properties │ │ │ │ │ │ ├── CommandProperties.java │ │ │ │ │ │ ├── DoubleProperties.java │ │ │ │ │ │ ├── EntityProperties.java │ │ │ │ │ │ ├── FloatProperties.java │ │ │ │ │ │ ├── IntegerProperties.java │ │ │ │ │ │ ├── LongProperties.java │ │ │ │ │ │ ├── RangeProperties.java │ │ │ │ │ │ ├── ResourceProperties.java │ │ │ │ │ │ ├── ScoreHolderProperties.java │ │ │ │ │ │ ├── StringProperties.java │ │ │ │ │ │ └── TimeProperties.java │ │ │ │ ├── entity │ │ │ │ │ ├── Effect.java │ │ │ │ │ ├── EntityEvent.java │ │ │ │ │ ├── EquipmentSlot.java │ │ │ │ │ ├── MinecartStep.java │ │ │ │ │ ├── RotationOrigin.java │ │ │ │ │ ├── attribute │ │ │ │ │ │ ├── Attribute.java │ │ │ │ │ │ ├── AttributeModifier.java │ │ │ │ │ │ ├── AttributeType.java │ │ │ │ │ │ └── ModifierOperation.java │ │ │ │ │ ├── metadata │ │ │ │ │ │ ├── ArmadilloState.java │ │ │ │ │ │ ├── BooleanMetadataType.java │ │ │ │ │ │ ├── ByteMetadataType.java │ │ │ │ │ │ ├── EntityMetadata.java │ │ │ │ │ │ ├── Equipment.java │ │ │ │ │ │ ├── FloatMetadataType.java │ │ │ │ │ │ ├── GlobalPos.java │ │ │ │ │ │ ├── IntMetadataType.java │ │ │ │ │ │ ├── LongMetadataType.java │ │ │ │ │ │ ├── MetadataType.java │ │ │ │ │ │ ├── MetadataTypes.java │ │ │ │ │ │ ├── OptionalIntMetadataType.java │ │ │ │ │ │ ├── PaintingVariant.java │ │ │ │ │ │ ├── Pose.java │ │ │ │ │ │ ├── SnifferState.java │ │ │ │ │ │ ├── VillagerData.java │ │ │ │ │ │ ├── WolfVariant.java │ │ │ │ │ │ └── type │ │ │ │ │ │ │ ├── BooleanEntityMetadata.java │ │ │ │ │ │ │ ├── ByteEntityMetadata.java │ │ │ │ │ │ │ ├── FloatEntityMetadata.java │ │ │ │ │ │ │ ├── IntEntityMetadata.java │ │ │ │ │ │ │ ├── LongEntityMetadata.java │ │ │ │ │ │ │ └── ObjectEntityMetadata.java │ │ │ │ │ ├── object │ │ │ │ │ │ ├── Direction.java │ │ │ │ │ │ ├── FallingBlockData.java │ │ │ │ │ │ ├── GenericObjectData.java │ │ │ │ │ │ ├── MinecartType.java │ │ │ │ │ │ ├── ObjectData.java │ │ │ │ │ │ ├── ProjectileData.java │ │ │ │ │ │ └── WardenData.java │ │ │ │ │ ├── player │ │ │ │ │ │ ├── Animation.java │ │ │ │ │ │ ├── BlockBreakStage.java │ │ │ │ │ │ ├── GameMode.java │ │ │ │ │ │ ├── Hand.java │ │ │ │ │ │ ├── HandPreference.java │ │ │ │ │ │ ├── InteractAction.java │ │ │ │ │ │ ├── PlayerAction.java │ │ │ │ │ │ ├── PlayerSpawnInfo.java │ │ │ │ │ │ ├── PlayerState.java │ │ │ │ │ │ └── PositionElement.java │ │ │ │ │ └── type │ │ │ │ │ │ ├── EntityType.java │ │ │ │ │ │ └── PaintingType.java │ │ │ │ ├── inventory │ │ │ │ │ ├── AdvancementTabAction.java │ │ │ │ │ ├── ClickItemAction.java │ │ │ │ │ ├── ContainerAction.java │ │ │ │ │ ├── ContainerActionType.java │ │ │ │ │ ├── ContainerType.java │ │ │ │ │ ├── CraftingBookStateType.java │ │ │ │ │ ├── CreativeGrabAction.java │ │ │ │ │ ├── DropItemAction.java │ │ │ │ │ ├── FillStackAction.java │ │ │ │ │ ├── MoveToHotbarAction.java │ │ │ │ │ ├── ShiftClickItemAction.java │ │ │ │ │ ├── SpreadItemAction.java │ │ │ │ │ ├── UpdateStructureBlockAction.java │ │ │ │ │ ├── UpdateStructureBlockMode.java │ │ │ │ │ ├── VillagerTrade.java │ │ │ │ │ └── property │ │ │ │ │ │ ├── AnvilProperty.java │ │ │ │ │ │ ├── BrewingStandProperty.java │ │ │ │ │ │ ├── ContainerProperty.java │ │ │ │ │ │ ├── EnchantmentTableProperty.java │ │ │ │ │ │ └── FurnaceProperty.java │ │ │ │ ├── item │ │ │ │ │ ├── ItemStack.java │ │ │ │ │ └── component │ │ │ │ │ │ ├── AdventureModePredicate.java │ │ │ │ │ │ ├── ArmorTrim.java │ │ │ │ │ │ ├── BannerPatternLayer.java │ │ │ │ │ │ ├── BeehiveOccupant.java │ │ │ │ │ │ ├── BlockStateProperties.java │ │ │ │ │ │ ├── BooleanComponentType.java │ │ │ │ │ │ ├── Consumable.java │ │ │ │ │ │ ├── ConsumeEffect.java │ │ │ │ │ │ ├── CustomModelData.java │ │ │ │ │ │ ├── DataComponent.java │ │ │ │ │ │ ├── DataComponentType.java │ │ │ │ │ │ ├── DataComponentTypes.java │ │ │ │ │ │ ├── DataComponents.java │ │ │ │ │ │ ├── DyedItemColor.java │ │ │ │ │ │ ├── Equippable.java │ │ │ │ │ │ ├── Filterable.java │ │ │ │ │ │ ├── Fireworks.java │ │ │ │ │ │ ├── FoodProperties.java │ │ │ │ │ │ ├── HolderSet.java │ │ │ │ │ │ ├── Instrument.java │ │ │ │ │ │ ├── IntComponentType.java │ │ │ │ │ │ ├── ItemAttributeModifiers.java │ │ │ │ │ │ ├── ItemEnchantments.java │ │ │ │ │ │ ├── ItemTypes.java │ │ │ │ │ │ ├── JukeboxPlayable.java │ │ │ │ │ │ ├── LodestoneTracker.java │ │ │ │ │ │ ├── MobEffectDetails.java │ │ │ │ │ │ ├── MobEffectInstance.java │ │ │ │ │ │ ├── PotionContents.java │ │ │ │ │ │ ├── SuspiciousStewEffect.java │ │ │ │ │ │ ├── ToolData.java │ │ │ │ │ │ ├── Unbreakable.java │ │ │ │ │ │ ├── Unit.java │ │ │ │ │ │ ├── UseCooldown.java │ │ │ │ │ │ ├── WritableBookContent.java │ │ │ │ │ │ ├── WrittenBookContent.java │ │ │ │ │ │ └── type │ │ │ │ │ │ ├── BooleanDataComponent.java │ │ │ │ │ │ ├── IntDataComponent.java │ │ │ │ │ │ └── ObjectDataComponent.java │ │ │ │ ├── level │ │ │ │ │ ├── LightUpdateData.java │ │ │ │ │ ├── block │ │ │ │ │ │ ├── BlockChangeEntry.java │ │ │ │ │ │ ├── BlockEntityInfo.java │ │ │ │ │ │ ├── BlockEntityType.java │ │ │ │ │ │ ├── CommandBlockMode.java │ │ │ │ │ │ ├── ExplosionInteraction.java │ │ │ │ │ │ ├── StructureMirror.java │ │ │ │ │ │ ├── StructureRotation.java │ │ │ │ │ │ ├── WobbleStyle.java │ │ │ │ │ │ └── value │ │ │ │ │ │ │ ├── BeaconValueType.java │ │ │ │ │ │ │ ├── BellValue.java │ │ │ │ │ │ │ ├── BellValueType.java │ │ │ │ │ │ │ ├── BlockValue.java │ │ │ │ │ │ │ ├── BlockValueType.java │ │ │ │ │ │ │ ├── ChestValue.java │ │ │ │ │ │ │ ├── ChestValueType.java │ │ │ │ │ │ │ ├── DecoratedPotValue.java │ │ │ │ │ │ │ ├── DecoratedPotValueType.java │ │ │ │ │ │ │ ├── EndGatewayValue.java │ │ │ │ │ │ │ ├── EndGatewayValueType.java │ │ │ │ │ │ │ ├── GenericBlockValue.java │ │ │ │ │ │ │ ├── GenericBlockValueType.java │ │ │ │ │ │ │ ├── MobSpawnerValue.java │ │ │ │ │ │ │ ├── MobSpawnerValueType.java │ │ │ │ │ │ │ ├── NoteBlockValue.java │ │ │ │ │ │ │ ├── NoteBlockValueType.java │ │ │ │ │ │ │ ├── PistonValue.java │ │ │ │ │ │ │ └── PistonValueType.java │ │ │ │ │ ├── event │ │ │ │ │ │ ├── BonemealGrowEventData.java │ │ │ │ │ │ ├── BreakBlockEventData.java │ │ │ │ │ │ ├── BreakPotionEventData.java │ │ │ │ │ │ ├── ComposterEventData.java │ │ │ │ │ │ ├── DragonFireballEventData.java │ │ │ │ │ │ ├── ElectricSparkData.java │ │ │ │ │ │ ├── FireExtinguishData.java │ │ │ │ │ │ ├── LevelEvent.java │ │ │ │ │ │ ├── LevelEventData.java │ │ │ │ │ │ ├── LevelEventType.java │ │ │ │ │ │ ├── RecordEventData.java │ │ │ │ │ │ ├── SculkBlockChargeEventData.java │ │ │ │ │ │ ├── SmokeEventData.java │ │ │ │ │ │ ├── TrialSpawnerDetectEventData.java │ │ │ │ │ │ ├── UnknownLevelEvent.java │ │ │ │ │ │ └── UnknownLevelEventData.java │ │ │ │ │ ├── map │ │ │ │ │ │ ├── MapData.java │ │ │ │ │ │ ├── MapIcon.java │ │ │ │ │ │ └── MapIconType.java │ │ │ │ │ ├── notify │ │ │ │ │ │ ├── DemoMessageValue.java │ │ │ │ │ │ ├── ElderGuardianEffectValue.java │ │ │ │ │ │ ├── EnterCreditsValue.java │ │ │ │ │ │ ├── GameEvent.java │ │ │ │ │ │ ├── GameEventValue.java │ │ │ │ │ │ ├── LimitedCraftingValue.java │ │ │ │ │ │ ├── RainStrengthValue.java │ │ │ │ │ │ ├── RespawnScreenValue.java │ │ │ │ │ │ └── ThunderStrengthValue.java │ │ │ │ │ ├── particle │ │ │ │ │ │ ├── BlockParticleData.java │ │ │ │ │ │ ├── DustColorTransitionParticleData.java │ │ │ │ │ │ ├── DustParticleData.java │ │ │ │ │ │ ├── EntityEffectParticleData.java │ │ │ │ │ │ ├── ItemParticleData.java │ │ │ │ │ │ ├── Particle.java │ │ │ │ │ │ ├── ParticleData.java │ │ │ │ │ │ ├── ParticleType.java │ │ │ │ │ │ ├── SculkChargeParticleData.java │ │ │ │ │ │ ├── ShriekParticleData.java │ │ │ │ │ │ ├── TrailParticleData.java │ │ │ │ │ │ ├── VibrationParticleData.java │ │ │ │ │ │ └── positionsource │ │ │ │ │ │ │ ├── BlockPositionSource.java │ │ │ │ │ │ │ ├── EntityPositionSource.java │ │ │ │ │ │ │ ├── PositionSource.java │ │ │ │ │ │ │ └── PositionSourceType.java │ │ │ │ │ └── sound │ │ │ │ │ │ ├── BuiltinSound.java │ │ │ │ │ │ ├── CustomSound.java │ │ │ │ │ │ ├── Sound.java │ │ │ │ │ │ └── SoundCategory.java │ │ │ │ ├── recipe │ │ │ │ │ ├── CraftingBookCategory.java │ │ │ │ │ ├── Ingredient.java │ │ │ │ │ └── display │ │ │ │ │ │ ├── FurnaceRecipeDisplay.java │ │ │ │ │ │ ├── RecipeDisplay.java │ │ │ │ │ │ ├── RecipeDisplayEntry.java │ │ │ │ │ │ ├── RecipeDisplayType.java │ │ │ │ │ │ ├── ShapedCraftingRecipeDisplay.java │ │ │ │ │ │ ├── ShapelessCraftingRecipeDisplay.java │ │ │ │ │ │ ├── SmithingRecipeDisplay.java │ │ │ │ │ │ ├── StonecutterRecipeDisplay.java │ │ │ │ │ │ └── slot │ │ │ │ │ │ ├── AnyFuelSlotDisplay.java │ │ │ │ │ │ ├── CompositeSlotDisplay.java │ │ │ │ │ │ ├── EmptySlotDisplay.java │ │ │ │ │ │ ├── ItemSlotDisplay.java │ │ │ │ │ │ ├── ItemStackSlotDisplay.java │ │ │ │ │ │ ├── RecipeSlotType.java │ │ │ │ │ │ ├── SlotDisplay.java │ │ │ │ │ │ ├── SmithingTrimDemoSlotDisplay.java │ │ │ │ │ │ ├── TagSlotDisplay.java │ │ │ │ │ │ └── WithRemainderSlotDisplay.java │ │ │ │ ├── scoreboard │ │ │ │ │ ├── CollisionRule.java │ │ │ │ │ ├── NameTagVisibility.java │ │ │ │ │ ├── ObjectiveAction.java │ │ │ │ │ ├── ScoreType.java │ │ │ │ │ ├── ScoreboardPosition.java │ │ │ │ │ ├── TeamAction.java │ │ │ │ │ └── TeamColor.java │ │ │ │ ├── setting │ │ │ │ │ ├── ChatVisibility.java │ │ │ │ │ ├── Difficulty.java │ │ │ │ │ ├── ParticleStatus.java │ │ │ │ │ └── SkinPart.java │ │ │ │ └── statistic │ │ │ │ │ ├── BreakBlockStatistic.java │ │ │ │ │ ├── BreakItemStatistic.java │ │ │ │ │ ├── CraftItemStatistic.java │ │ │ │ │ ├── CustomStatistic.java │ │ │ │ │ ├── DropItemStatistic.java │ │ │ │ │ ├── KillEntityStatistic.java │ │ │ │ │ ├── KilledByEntityStatistic.java │ │ │ │ │ ├── PickupItemStatistic.java │ │ │ │ │ ├── Statistic.java │ │ │ │ │ ├── StatisticCategory.java │ │ │ │ │ ├── StatisticFormat.java │ │ │ │ │ └── UseItemStatistic.java │ │ │ ├── handshake │ │ │ │ └── HandshakeIntent.java │ │ │ └── status │ │ │ │ ├── PlayerInfo.java │ │ │ │ ├── ServerStatusInfo.java │ │ │ │ ├── VersionInfo.java │ │ │ │ └── handler │ │ │ │ ├── ServerInfoBuilder.java │ │ │ │ ├── ServerInfoHandler.java │ │ │ │ └── ServerPingTimeHandler.java │ │ │ └── packet │ │ │ ├── common │ │ │ ├── clientbound │ │ │ │ ├── ClientboundCustomPayloadPacket.java │ │ │ │ ├── ClientboundCustomReportDetailsPacket.java │ │ │ │ ├── ClientboundDisconnectPacket.java │ │ │ │ ├── ClientboundKeepAlivePacket.java │ │ │ │ ├── ClientboundPingPacket.java │ │ │ │ ├── ClientboundResourcePackPopPacket.java │ │ │ │ ├── ClientboundResourcePackPushPacket.java │ │ │ │ ├── ClientboundServerLinksPacket.java │ │ │ │ ├── ClientboundStoreCookiePacket.java │ │ │ │ ├── ClientboundTransferPacket.java │ │ │ │ └── ClientboundUpdateTagsPacket.java │ │ │ └── serverbound │ │ │ │ ├── ServerboundClientInformationPacket.java │ │ │ │ ├── ServerboundCustomPayloadPacket.java │ │ │ │ ├── ServerboundKeepAlivePacket.java │ │ │ │ ├── ServerboundPongPacket.java │ │ │ │ └── ServerboundResourcePackPacket.java │ │ │ ├── configuration │ │ │ ├── clientbound │ │ │ │ ├── ClientboundFinishConfigurationPacket.java │ │ │ │ ├── ClientboundRegistryDataPacket.java │ │ │ │ ├── ClientboundResetChatPacket.java │ │ │ │ ├── ClientboundSelectKnownPacks.java │ │ │ │ └── ClientboundUpdateEnabledFeaturesPacket.java │ │ │ └── serverbound │ │ │ │ ├── ServerboundFinishConfigurationPacket.java │ │ │ │ └── ServerboundSelectKnownPacks.java │ │ │ ├── cookie │ │ │ ├── clientbound │ │ │ │ └── ClientboundCookieRequestPacket.java │ │ │ └── serverbound │ │ │ │ └── ServerboundCookieResponsePacket.java │ │ │ ├── handshake │ │ │ └── serverbound │ │ │ │ └── ClientIntentionPacket.java │ │ │ ├── ingame │ │ │ ├── clientbound │ │ │ │ ├── ClientboundAwardStatsPacket.java │ │ │ │ ├── ClientboundBossEventPacket.java │ │ │ │ ├── ClientboundBundlePacket.java │ │ │ │ ├── ClientboundChangeDifficultyPacket.java │ │ │ │ ├── ClientboundCommandSuggestionsPacket.java │ │ │ │ ├── ClientboundCommandsPacket.java │ │ │ │ ├── ClientboundCooldownPacket.java │ │ │ │ ├── ClientboundCustomChatCompletionsPacket.java │ │ │ │ ├── ClientboundDebugSamplePacket.java │ │ │ │ ├── ClientboundDeleteChatPacket.java │ │ │ │ ├── ClientboundDelimiterPacket.java │ │ │ │ ├── ClientboundDisguisedChatPacket.java │ │ │ │ ├── ClientboundLoginPacket.java │ │ │ │ ├── ClientboundPlayerChatPacket.java │ │ │ │ ├── ClientboundPlayerInfoRemovePacket.java │ │ │ │ ├── ClientboundPlayerInfoUpdatePacket.java │ │ │ │ ├── ClientboundRecipeBookAddPacket.java │ │ │ │ ├── ClientboundRecipeBookRemovePacket.java │ │ │ │ ├── ClientboundRecipeBookSettingsPacket.java │ │ │ │ ├── ClientboundRespawnPacket.java │ │ │ │ ├── ClientboundSelectAdvancementsTabPacket.java │ │ │ │ ├── ClientboundServerDataPacket.java │ │ │ │ ├── ClientboundSetCameraPacket.java │ │ │ │ ├── ClientboundSoundEntityPacket.java │ │ │ │ ├── ClientboundStartConfigurationPacket.java │ │ │ │ ├── ClientboundStopSoundPacket.java │ │ │ │ ├── ClientboundSystemChatPacket.java │ │ │ │ ├── ClientboundTabListPacket.java │ │ │ │ ├── ClientboundTickingStatePacket.java │ │ │ │ ├── ClientboundTickingStepPacket.java │ │ │ │ ├── ClientboundUpdateAdvancementsPacket.java │ │ │ │ ├── ClientboundUpdateRecipesPacket.java │ │ │ │ ├── entity │ │ │ │ │ ├── ClientboundAnimatePacket.java │ │ │ │ │ ├── ClientboundDamageEventPacket.java │ │ │ │ │ ├── ClientboundEntityEventPacket.java │ │ │ │ │ ├── ClientboundEntityPositionSyncPacket.java │ │ │ │ │ ├── ClientboundHurtAnimationPacket.java │ │ │ │ │ ├── ClientboundMoveEntityPosPacket.java │ │ │ │ │ ├── ClientboundMoveEntityPosRotPacket.java │ │ │ │ │ ├── ClientboundMoveEntityRotPacket.java │ │ │ │ │ ├── ClientboundMoveMinecartPacket.java │ │ │ │ │ ├── ClientboundMoveVehiclePacket.java │ │ │ │ │ ├── ClientboundProjectilePowerPacket.java │ │ │ │ │ ├── ClientboundRemoveEntitiesPacket.java │ │ │ │ │ ├── ClientboundRemoveMobEffectPacket.java │ │ │ │ │ ├── ClientboundRotateHeadPacket.java │ │ │ │ │ ├── ClientboundSetEntityDataPacket.java │ │ │ │ │ ├── ClientboundSetEntityLinkPacket.java │ │ │ │ │ ├── ClientboundSetEntityMotionPacket.java │ │ │ │ │ ├── ClientboundSetEquipmentPacket.java │ │ │ │ │ ├── ClientboundSetPassengersPacket.java │ │ │ │ │ ├── ClientboundTakeItemEntityPacket.java │ │ │ │ │ ├── ClientboundTeleportEntityPacket.java │ │ │ │ │ ├── ClientboundUpdateAttributesPacket.java │ │ │ │ │ ├── ClientboundUpdateMobEffectPacket.java │ │ │ │ │ ├── player │ │ │ │ │ │ ├── ClientboundBlockChangedAckPacket.java │ │ │ │ │ │ ├── ClientboundPlayerAbilitiesPacket.java │ │ │ │ │ │ ├── ClientboundPlayerCombatEndPacket.java │ │ │ │ │ │ ├── ClientboundPlayerCombatEnterPacket.java │ │ │ │ │ │ ├── ClientboundPlayerCombatKillPacket.java │ │ │ │ │ │ ├── ClientboundPlayerLookAtPacket.java │ │ │ │ │ │ ├── ClientboundPlayerPositionPacket.java │ │ │ │ │ │ ├── ClientboundPlayerRotationPacket.java │ │ │ │ │ │ ├── ClientboundSetExperiencePacket.java │ │ │ │ │ │ ├── ClientboundSetHealthPacket.java │ │ │ │ │ │ └── ClientboundSetHeldSlotPacket.java │ │ │ │ │ └── spawn │ │ │ │ │ │ ├── ClientboundAddEntityPacket.java │ │ │ │ │ │ └── ClientboundAddExperienceOrbPacket.java │ │ │ │ ├── inventory │ │ │ │ │ ├── ClientboundContainerClosePacket.java │ │ │ │ │ ├── ClientboundContainerSetContentPacket.java │ │ │ │ │ ├── ClientboundContainerSetDataPacket.java │ │ │ │ │ ├── ClientboundContainerSetSlotPacket.java │ │ │ │ │ ├── ClientboundHorseScreenOpenPacket.java │ │ │ │ │ ├── ClientboundMerchantOffersPacket.java │ │ │ │ │ ├── ClientboundOpenBookPacket.java │ │ │ │ │ ├── ClientboundOpenScreenPacket.java │ │ │ │ │ ├── ClientboundPlaceGhostRecipePacket.java │ │ │ │ │ ├── ClientboundSetCursorItemPacket.java │ │ │ │ │ └── ClientboundSetPlayerInventoryPacket.java │ │ │ │ ├── level │ │ │ │ │ ├── ClientboundBlockDestructionPacket.java │ │ │ │ │ ├── ClientboundBlockEntityDataPacket.java │ │ │ │ │ ├── ClientboundBlockEventPacket.java │ │ │ │ │ ├── ClientboundBlockUpdatePacket.java │ │ │ │ │ ├── ClientboundChunkBatchFinishedPacket.java │ │ │ │ │ ├── ClientboundChunkBatchStartPacket.java │ │ │ │ │ ├── ClientboundChunksBiomesPacket.java │ │ │ │ │ ├── ClientboundExplodePacket.java │ │ │ │ │ ├── ClientboundForgetLevelChunkPacket.java │ │ │ │ │ ├── ClientboundGameEventPacket.java │ │ │ │ │ ├── ClientboundLevelChunkWithLightPacket.java │ │ │ │ │ ├── ClientboundLevelEventPacket.java │ │ │ │ │ ├── ClientboundLevelParticlesPacket.java │ │ │ │ │ ├── ClientboundLightUpdatePacket.java │ │ │ │ │ ├── ClientboundMapItemDataPacket.java │ │ │ │ │ ├── ClientboundOpenSignEditorPacket.java │ │ │ │ │ ├── ClientboundSectionBlocksUpdatePacket.java │ │ │ │ │ ├── ClientboundSetChunkCacheCenterPacket.java │ │ │ │ │ ├── ClientboundSetChunkCacheRadiusPacket.java │ │ │ │ │ ├── ClientboundSetDefaultSpawnPositionPacket.java │ │ │ │ │ ├── ClientboundSetSimulationDistancePacket.java │ │ │ │ │ ├── ClientboundSetTimePacket.java │ │ │ │ │ ├── ClientboundSoundPacket.java │ │ │ │ │ ├── ClientboundTagQueryPacket.java │ │ │ │ │ └── border │ │ │ │ │ │ ├── ClientboundInitializeBorderPacket.java │ │ │ │ │ │ ├── ClientboundSetBorderCenterPacket.java │ │ │ │ │ │ ├── ClientboundSetBorderLerpSizePacket.java │ │ │ │ │ │ ├── ClientboundSetBorderSizePacket.java │ │ │ │ │ │ ├── ClientboundSetBorderWarningDelayPacket.java │ │ │ │ │ │ └── ClientboundSetBorderWarningDistancePacket.java │ │ │ │ ├── scoreboard │ │ │ │ │ ├── ClientboundResetScorePacket.java │ │ │ │ │ ├── ClientboundSetDisplayObjectivePacket.java │ │ │ │ │ ├── ClientboundSetObjectivePacket.java │ │ │ │ │ ├── ClientboundSetPlayerTeamPacket.java │ │ │ │ │ └── ClientboundSetScorePacket.java │ │ │ │ └── title │ │ │ │ │ ├── ClientboundClearTitlesPacket.java │ │ │ │ │ ├── ClientboundSetActionBarTextPacket.java │ │ │ │ │ ├── ClientboundSetSubtitleTextPacket.java │ │ │ │ │ ├── ClientboundSetTitleTextPacket.java │ │ │ │ │ └── ClientboundSetTitlesAnimationPacket.java │ │ │ └── serverbound │ │ │ │ ├── ServerboundChangeDifficultyPacket.java │ │ │ │ ├── ServerboundChatAckPacket.java │ │ │ │ ├── ServerboundChatCommandPacket.java │ │ │ │ ├── ServerboundChatCommandSignedPacket.java │ │ │ │ ├── ServerboundChatPacket.java │ │ │ │ ├── ServerboundChatSessionUpdatePacket.java │ │ │ │ ├── ServerboundClientCommandPacket.java │ │ │ │ ├── ServerboundClientTickEndPacket.java │ │ │ │ ├── ServerboundCommandSuggestionPacket.java │ │ │ │ ├── ServerboundConfigurationAcknowledgedPacket.java │ │ │ │ ├── ServerboundDebugSampleSubscriptionPacket.java │ │ │ │ ├── ServerboundLockDifficultyPacket.java │ │ │ │ ├── ServerboundPlayerLoadedPacket.java │ │ │ │ ├── inventory │ │ │ │ ├── ServerboundContainerButtonClickPacket.java │ │ │ │ ├── ServerboundContainerClickPacket.java │ │ │ │ ├── ServerboundContainerClosePacket.java │ │ │ │ ├── ServerboundContainerSlotStateChangedPacket.java │ │ │ │ ├── ServerboundEditBookPacket.java │ │ │ │ ├── ServerboundPickItemFromBlockPacket.java │ │ │ │ ├── ServerboundPickItemFromEntityPacket.java │ │ │ │ ├── ServerboundPlaceRecipePacket.java │ │ │ │ ├── ServerboundRecipeBookChangeSettingsPacket.java │ │ │ │ ├── ServerboundRecipeBookSeenRecipePacket.java │ │ │ │ ├── ServerboundRenameItemPacket.java │ │ │ │ ├── ServerboundSeenAdvancementsPacket.java │ │ │ │ ├── ServerboundSelectBundleItemPacket.java │ │ │ │ ├── ServerboundSelectTradePacket.java │ │ │ │ ├── ServerboundSetBeaconPacket.java │ │ │ │ ├── ServerboundSetCommandBlockPacket.java │ │ │ │ ├── ServerboundSetCommandMinecartPacket.java │ │ │ │ ├── ServerboundSetCreativeModeSlotPacket.java │ │ │ │ ├── ServerboundSetJigsawBlockPacket.java │ │ │ │ └── ServerboundSetStructureBlockPacket.java │ │ │ │ ├── level │ │ │ │ ├── ServerboundAcceptTeleportationPacket.java │ │ │ │ ├── ServerboundBlockEntityTagQueryPacket.java │ │ │ │ ├── ServerboundChunkBatchReceivedPacket.java │ │ │ │ ├── ServerboundEntityTagQuery.java │ │ │ │ ├── ServerboundJigsawGeneratePacket.java │ │ │ │ ├── ServerboundMoveVehiclePacket.java │ │ │ │ ├── ServerboundPaddleBoatPacket.java │ │ │ │ ├── ServerboundPlayerInputPacket.java │ │ │ │ ├── ServerboundSignUpdatePacket.java │ │ │ │ └── ServerboundTeleportToEntityPacket.java │ │ │ │ └── player │ │ │ │ ├── ServerboundInteractPacket.java │ │ │ │ ├── ServerboundMovePlayerPosPacket.java │ │ │ │ ├── ServerboundMovePlayerPosRotPacket.java │ │ │ │ ├── ServerboundMovePlayerRotPacket.java │ │ │ │ ├── ServerboundMovePlayerStatusOnlyPacket.java │ │ │ │ ├── ServerboundPlayerAbilitiesPacket.java │ │ │ │ ├── ServerboundPlayerActionPacket.java │ │ │ │ ├── ServerboundPlayerCommandPacket.java │ │ │ │ ├── ServerboundSetCarriedItemPacket.java │ │ │ │ ├── ServerboundSwingPacket.java │ │ │ │ ├── ServerboundUseItemOnPacket.java │ │ │ │ └── ServerboundUseItemPacket.java │ │ │ ├── login │ │ │ ├── clientbound │ │ │ │ ├── ClientboundCustomQueryPacket.java │ │ │ │ ├── ClientboundHelloPacket.java │ │ │ │ ├── ClientboundLoginCompressionPacket.java │ │ │ │ ├── ClientboundLoginDisconnectPacket.java │ │ │ │ └── ClientboundLoginFinishedPacket.java │ │ │ └── serverbound │ │ │ │ ├── ServerboundCustomQueryAnswerPacket.java │ │ │ │ ├── ServerboundHelloPacket.java │ │ │ │ ├── ServerboundKeyPacket.java │ │ │ │ └── ServerboundLoginAcknowledgedPacket.java │ │ │ ├── ping │ │ │ ├── clientbound │ │ │ │ └── ClientboundPongResponsePacket.java │ │ │ └── serverbound │ │ │ │ └── ServerboundPingRequestPacket.java │ │ │ └── status │ │ │ ├── clientbound │ │ │ └── ClientboundStatusResponsePacket.java │ │ │ └── serverbound │ │ │ └── ServerboundStatusRequestPacket.java │ └── resources │ │ ├── networkCodec.nbt │ │ └── yggdrasil_session_pubkey.der │ └── test │ ├── java │ └── org │ │ └── geysermc │ │ └── mcprotocollib │ │ └── protocol │ │ ├── MinecraftProtocolTest.java │ │ ├── codec │ │ └── BaseTypesTest.java │ │ ├── data │ │ ├── ChunkTest.java │ │ └── NetworkDataTests.java │ │ └── packet │ │ ├── PacketTest.java │ │ ├── handshake │ │ └── serverbound │ │ │ └── ClientIntentionPacketTest.java │ │ ├── ingame │ │ └── clientbound │ │ │ ├── ClientboundCommandsPacketTest.java │ │ │ ├── ServerDeclareRecipesTest.java │ │ │ └── level │ │ │ ├── ClientboundBlockUpdatePacketTest.java │ │ │ ├── ClientboundLevelChunkWithLightPacketTest.java │ │ │ ├── ClientboundSectionBlocksUpdatePacketTest.java │ │ │ ├── ClientboundSetEntityDataPacketTest.java │ │ │ ├── ClientboundSetEquipmentPacketTest.java │ │ │ └── ClientboundSetPlayerTeamPacketTest.java │ │ ├── login │ │ ├── clientbound │ │ │ ├── ClientboundCustomQueryPacketTest.java │ │ │ ├── ClientboundHelloPacketTest.java │ │ │ ├── ClientboundLoginCompressionPacketTest.java │ │ │ ├── ClientboundLoginDisconnectPacketTest.java │ │ │ └── ClientboundLoginFinishedPacketTest.java │ │ └── serverbound │ │ │ ├── ServerboundCustomQueryAnswerPacketTest.java │ │ │ ├── ServerboundHelloPacketTest.java │ │ │ └── ServerboundKeyPacketTest.java │ │ └── status │ │ ├── clientbound │ │ ├── ClientboundPongResponsePacketTest.java │ │ └── ClientboundStatusResponsePacketTest.java │ │ └── serverbound │ │ ├── ServerboundPingRequestPacketTest.java │ │ └── ServerboundStatusRequestPacketTest.java │ └── resources │ └── simplelogger.properties └── settings.gradle.kts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_size = 4 6 | indent_style = space 7 | insert_final_newline = true 8 | tab_width = 4 9 | max_line_length = off 10 | 11 | [*.java] 12 | ij_java_class_count_to_use_import_on_demand = 9999 13 | ij_java_doc_align_exception_comments = false 14 | ij_java_doc_align_param_comments = false 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled plugin files 2 | target/ 3 | 4 | # IDE files 5 | .idea/ 6 | .vscode/* 7 | .settings/* 8 | *.iml 9 | *.iws 10 | *.ipr 11 | .classpath 12 | .project 13 | .factorypath 14 | 15 | # UML 16 | *.plantuml 17 | 18 | # Gradle 19 | .gradle 20 | **/build/ 21 | !src/**/build/ 22 | **/run/ 23 | 24 | # Ignore Gradle GUI config 25 | gradle-app.setting 26 | 27 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) 28 | !gradle-wrapper.jar 29 | 30 | # Cache of project 31 | .gradletasknamecache 32 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | idea 3 | } 4 | 5 | allprojects { 6 | group = "org.geysermc.mcprotocollib" 7 | } 8 | -------------------------------------------------------------------------------- /buildSrc/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `kotlin-dsl` 3 | } 4 | 5 | repositories { 6 | gradlePluginPortal() 7 | } 8 | 9 | dependencies { 10 | // this is OK as long as the same version catalog is used in the main build and build-logic 11 | // see https://github.com/gradle/gradle/issues/15383#issuecomment-779893192 12 | implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) 13 | implementation(libs.indra.common) 14 | implementation(libs.indra.git) 15 | implementation(libs.lombok) 16 | } 17 | -------------------------------------------------------------------------------- /buildSrc/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | dependencyResolutionManagement { 2 | versionCatalogs { 3 | create("libs") { 4 | from(files("../gradle/libs.versions.toml")) 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/LibsAccessor.kt: -------------------------------------------------------------------------------- 1 | import org.gradle.accessors.dm.LibrariesForLibs 2 | import org.gradle.api.Project 3 | import org.gradle.kotlin.dsl.getByType 4 | 5 | val Project.libs: LibrariesForLibs 6 | get() = rootProject.extensions.getByType() 7 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/mcprotocollib.base-conventions.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `java-library` 3 | id("net.kyori.indra") 4 | id("net.kyori.indra.git") 5 | id("io.freefair.lombok") 6 | } 7 | 8 | indra { 9 | github("GeyserMC", "MCProtocolLib") { 10 | ci(true) 11 | issues(true) 12 | scm(true) 13 | } 14 | mitLicense() 15 | 16 | javaVersions { 17 | target(17) 18 | } 19 | } 20 | 21 | if (System.getenv("JITPACK") == "true") { 22 | tasks.withType().configureEach { 23 | onlyIf { false } 24 | } 25 | } 26 | lombok { 27 | version = libs.versions.lombok.version.get() 28 | } 29 | 30 | tasks.withType { 31 | options.compilerArgs.add("-Xlint:all,-processing") 32 | } 33 | 34 | tasks.withType { 35 | title = "MCProtocolLib Javadocs" 36 | val options = options as StandardJavadocDocletOptions 37 | options.encoding = "UTF-8" 38 | options.addStringOption("Xdoclint:all,-missing", "-quiet") 39 | } 40 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/mcprotocollib.publish-conventions.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("mcprotocollib.base-conventions") 3 | id("net.kyori.indra.publishing") 4 | } 5 | 6 | indra { 7 | publishSnapshotsTo("geysermc", "https://repo.opencollab.dev/maven-snapshots") 8 | publishReleasesTo("geysermc", "https://repo.opencollab.dev/maven-releases") 9 | 10 | configurePublications { 11 | pom { 12 | organization { 13 | name = "GeyserMC" 14 | url = "https://github.com/GeyserMC" 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /example/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | java 3 | } 4 | 5 | dependencies { 6 | implementation(projects.protocol) 7 | implementation(libs.slf4j.simple) 8 | } 9 | 10 | tasks.javadoc { 11 | enabled = false 12 | } 13 | -------------------------------------------------------------------------------- /example/src/main/java/org/geysermc/mcprotocollib/network/example/PingPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.example; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import org.geysermc.mcprotocollib.network.packet.Packet; 5 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 6 | 7 | public class PingPacket implements Packet { 8 | private final String id; 9 | 10 | public PingPacket(ByteBuf buf) { 11 | this.id = MinecraftTypes.readString(buf); 12 | } 13 | 14 | public PingPacket(String id) { 15 | this.id = id; 16 | } 17 | 18 | public String getPingId() { 19 | return this.id; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeyserMC/MCProtocolLib/cf6e991f36243be6525d23be8da90600461753a4/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /jitpack.yml: -------------------------------------------------------------------------------- 1 | jdk: 2 | - openjdk17 3 | -------------------------------------------------------------------------------- /lombok.config: -------------------------------------------------------------------------------- 1 | lombok.addNullAnnotations = checkerframework 2 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/auth/util/UUIDUtils.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.auth.util; 2 | 3 | import java.util.HexFormat; 4 | import java.util.UUID; 5 | 6 | public class UUIDUtils { 7 | public static UUID convertToDashed(String noDashes) { 8 | if (noDashes == null) { 9 | return null; 10 | } 11 | 12 | return new UUID( 13 | HexFormat.fromHexDigitsToLong(noDashes, 0, 16), 14 | HexFormat.fromHexDigitsToLong(noDashes, 16, 32) 15 | ); 16 | } 17 | 18 | public static String convertToNoDashes(UUID uuid) { 19 | if (uuid == null) { 20 | return null; 21 | } 22 | 23 | return uuid.toString().replace("-", ""); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/auth/util/UndashedUUIDAdapter.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.auth.util; 2 | 3 | import com.google.gson.TypeAdapter; 4 | import com.google.gson.stream.JsonReader; 5 | import com.google.gson.stream.JsonWriter; 6 | 7 | import java.io.IOException; 8 | import java.util.UUID; 9 | 10 | /** 11 | * Utility class for serializing and deserializing undashed UUIDs. 12 | */ 13 | public class UndashedUUIDAdapter extends TypeAdapter { 14 | @Override 15 | public void write(JsonWriter out, UUID value) throws IOException { 16 | out.value(UUIDUtils.convertToNoDashes(value)); 17 | } 18 | 19 | @Override 20 | public UUID read(JsonReader in) throws IOException { 21 | return UUIDUtils.convertToDashed(in.nextString()); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/ClientSession.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network; 2 | 3 | import org.checkerframework.checker.nullness.qual.Nullable; 4 | 5 | /** 6 | * A network client session. 7 | */ 8 | public interface ClientSession extends Session { 9 | /** 10 | * Connects this session to its host and port. 11 | */ 12 | default void connect() { 13 | connect(true); 14 | } 15 | 16 | /** 17 | * Connects this session to its host and port. 18 | * 19 | * @param wait Whether to wait for the connection to be established before returning. 20 | */ 21 | void connect(boolean wait); 22 | 23 | /** 24 | * Get the proxy used by this session. 25 | * 26 | * @return The proxy used by this session. 27 | */ 28 | @Nullable ProxyInfo getProxy(); 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/Flag.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network; 2 | 3 | import lombok.RequiredArgsConstructor; 4 | 5 | @RequiredArgsConstructor 6 | public final class Flag { 7 | private final String key; 8 | private final Class type; 9 | 10 | public T cast(Object obj) { 11 | return type.cast(obj); 12 | } 13 | 14 | public String key() { 15 | return key; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/ServerSession.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network; 2 | 3 | /** 4 | * A network server session. 5 | */ 6 | public interface ServerSession extends Session { 7 | } 8 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/codec/PacketSerializer.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.codec; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import org.geysermc.mcprotocollib.network.packet.Packet; 5 | 6 | public interface PacketSerializer { 7 | 8 | void serialize(ByteBuf buf, T packet); 9 | 10 | T deserialize(ByteBuf buf, PacketDefinition definition); 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/compression/CompressionConfig.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.compression; 2 | 3 | public record CompressionConfig(int threshold, PacketCompression compression, boolean validateDecompression) { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/compression/PacketCompression.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.compression; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | 5 | public interface PacketCompression { 6 | void inflate(ByteBuf source, ByteBuf destination, int uncompressedSize) throws Exception; 7 | 8 | void deflate(ByteBuf source, ByteBuf destination); 9 | 10 | void close(); 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/crypt/EncryptionConfig.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.crypt; 2 | 3 | public record EncryptionConfig(PacketEncryption encryption) { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/event/server/ServerAdapter.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.event.server; 2 | 3 | /** 4 | * An adapter for picking server events to listen for. 5 | */ 6 | public class ServerAdapter implements ServerListener { 7 | @Override 8 | public void serverBound(ServerBoundEvent event) { 9 | } 10 | 11 | @Override 12 | public void serverClosing(ServerClosingEvent event) { 13 | } 14 | 15 | @Override 16 | public void serverClosed(ServerClosedEvent event) { 17 | } 18 | 19 | @Override 20 | public void sessionAdded(SessionAddedEvent event) { 21 | } 22 | 23 | @Override 24 | public void sessionRemoved(SessionRemovedEvent event) { 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/event/server/ServerBoundEvent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.event.server; 2 | 3 | import org.geysermc.mcprotocollib.network.Server; 4 | 5 | /** 6 | * Called when the server is bound to its host and port. 7 | */ 8 | public class ServerBoundEvent implements ServerEvent { 9 | private final Server server; 10 | 11 | /** 12 | * Creates a new ServerBoundEvent instance. 13 | * 14 | * @param server Server being bound. 15 | */ 16 | public ServerBoundEvent(Server server) { 17 | this.server = server; 18 | } 19 | 20 | /** 21 | * Gets the server involved in this event. 22 | * 23 | * @return The event's server. 24 | */ 25 | public Server getServer() { 26 | return this.server; 27 | } 28 | 29 | @Override 30 | public void call(ServerListener listener) { 31 | listener.serverBound(this); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/event/server/ServerClosedEvent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.event.server; 2 | 3 | import org.geysermc.mcprotocollib.network.Server; 4 | 5 | /** 6 | * Called when the server is closed. 7 | */ 8 | public class ServerClosedEvent implements ServerEvent { 9 | private final Server server; 10 | 11 | /** 12 | * Creates a new ServerClosedEvent instance. 13 | * 14 | * @param server Server being closed. 15 | */ 16 | public ServerClosedEvent(Server server) { 17 | this.server = server; 18 | } 19 | 20 | /** 21 | * Gets the server involved in this event. 22 | * 23 | * @return The event's server. 24 | */ 25 | public Server getServer() { 26 | return this.server; 27 | } 28 | 29 | @Override 30 | public void call(ServerListener listener) { 31 | listener.serverClosed(this); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/event/server/ServerClosingEvent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.event.server; 2 | 3 | import org.geysermc.mcprotocollib.network.Server; 4 | 5 | /** 6 | * Called when the server is about to close. 7 | */ 8 | public class ServerClosingEvent implements ServerEvent { 9 | private final Server server; 10 | 11 | /** 12 | * Creates a new ServerClosingEvent instance. 13 | * 14 | * @param server Server being closed. 15 | */ 16 | public ServerClosingEvent(Server server) { 17 | this.server = server; 18 | } 19 | 20 | /** 21 | * Gets the server involved in this event. 22 | * 23 | * @return The event's server. 24 | */ 25 | public Server getServer() { 26 | return this.server; 27 | } 28 | 29 | @Override 30 | public void call(ServerListener listener) { 31 | listener.serverClosing(this); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/event/server/ServerEvent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.event.server; 2 | 3 | /** 4 | * An event relating to servers. 5 | */ 6 | public interface ServerEvent { 7 | /** 8 | * Calls the event. 9 | * 10 | * @param listener Listener to call the event on. 11 | */ 12 | void call(ServerListener listener); 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/event/session/ConnectedEvent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.event.session; 2 | 3 | import org.geysermc.mcprotocollib.network.Session; 4 | 5 | /** 6 | * Called when the session connects. 7 | */ 8 | public class ConnectedEvent implements SessionEvent { 9 | private final Session session; 10 | 11 | /** 12 | * Creates a new ConnectedEvent instance. 13 | * 14 | * @param session Session being connected. 15 | */ 16 | public ConnectedEvent(Session session) { 17 | this.session = session; 18 | } 19 | 20 | /** 21 | * Gets the session involved in this event. 22 | * 23 | * @return The event's session. 24 | */ 25 | public Session getSession() { 26 | return this.session; 27 | } 28 | 29 | @Override 30 | public void call(SessionListener listener) { 31 | listener.connected(this); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/event/session/SessionEvent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.event.session; 2 | 3 | /** 4 | * An event relating to sessions. 5 | */ 6 | public interface SessionEvent { 7 | /** 8 | * Calls the event. 9 | * 10 | * @param listener Listener to call the event on. 11 | */ 12 | void call(SessionListener listener); 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/network/netty/AutoReadFlowControlHandler.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.network.netty; 2 | 3 | import io.netty.channel.ChannelHandlerContext; 4 | import io.netty.handler.flow.FlowControlHandler; 5 | 6 | /** 7 | * A flow control handler for TCP connections. 8 | * When auto-read is disabled, this will halt decoding of packets until auto-read is re-enabled. 9 | * This is needed because auto-read still allows packets to be decoded, even if the channel is not reading anymore from the network. 10 | * This can happen when the channel already read a packet, but the packet is not yet decoded. 11 | * This will halt all decoding until the channel is ready to process more packets. 12 | */ 13 | public class AutoReadFlowControlHandler extends FlowControlHandler { 14 | @Override 15 | public void read(ChannelHandlerContext ctx) throws Exception { 16 | if (ctx.channel().config().isAutoRead()) { 17 | super.read(ctx); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/ServerLoginHandler.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol; 2 | 3 | import org.geysermc.mcprotocollib.network.Session; 4 | import org.geysermc.mcprotocollib.protocol.data.ProtocolState; 5 | 6 | /** 7 | * Interface for handling a session logging in to a server. 8 | */ 9 | public interface ServerLoginHandler { 10 | /** 11 | * Called when a session completes the initial login process and is now in the {@link ProtocolState}.GAME. 12 | * 13 | * @param session Session that logged in. 14 | */ 15 | void loggedIn(Session session); 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.codec; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import org.geysermc.mcprotocollib.network.packet.Packet; 5 | 6 | public interface MinecraftPacket extends Packet { 7 | 8 | void serialize(ByteBuf buf); 9 | } 10 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftPacketSerializer.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.codec; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.RequiredArgsConstructor; 5 | import org.geysermc.mcprotocollib.network.codec.PacketDefinition; 6 | import org.geysermc.mcprotocollib.network.codec.PacketSerializer; 7 | 8 | @RequiredArgsConstructor 9 | public class MinecraftPacketSerializer implements PacketSerializer { 10 | private final PacketFactory factory; 11 | 12 | @Override 13 | public void serialize(ByteBuf buf, T packet) { 14 | packet.serialize(buf); 15 | } 16 | 17 | @Override 18 | public T deserialize(ByteBuf buf, PacketDefinition definition) { 19 | return this.factory.construct(buf); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/PacketFactory.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.codec; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import org.geysermc.mcprotocollib.network.packet.Packet; 5 | 6 | /** 7 | * Factory for constructing {@link Packet}s. 8 | * 9 | * @param the packet type 10 | */ 11 | @FunctionalInterface 12 | public interface PacketFactory { 13 | 14 | /** 15 | * Constructs a new {@link Packet}. 16 | * 17 | * @param buf the input buffer 18 | * @return a new packet from the input 19 | */ 20 | T construct(ByteBuf buf); 21 | } 22 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/DefaultComponentSerializer.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data; 2 | 3 | import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; 4 | import net.kyori.adventure.text.serializer.json.legacyimpl.NBTLegacyHoverEventSerializer; 5 | 6 | public final class DefaultComponentSerializer { 7 | private static GsonComponentSerializer serializer = GsonComponentSerializer.builder() 8 | .legacyHoverEventSerializer(NBTLegacyHoverEventSerializer.get()) 9 | .build(); 10 | 11 | public static GsonComponentSerializer get() { 12 | return serializer; 13 | } 14 | 15 | public static void set(GsonComponentSerializer serializer) { 16 | DefaultComponentSerializer.serializer = serializer; 17 | } 18 | 19 | private DefaultComponentSerializer() { 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/ProtocolState.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data; 2 | 3 | public enum ProtocolState { 4 | HANDSHAKE, 5 | LOGIN, 6 | GAME, 7 | STATUS, 8 | CONFIGURATION; 9 | } 10 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/UnexpectedEncryptionException.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data; 2 | 3 | import java.io.Serial; 4 | 5 | /** 6 | * Thrown whenever a ClientboundHelloPacket is sent when we aren't expecting it 7 | * (I.E.: online mode server and offline mode client) 8 | */ 9 | public class UnexpectedEncryptionException extends IllegalStateException { 10 | @Serial 11 | private static final long serialVersionUID = 1L; 12 | 13 | public UnexpectedEncryptionException() { 14 | super("Cannot reply to ClientboundHelloPacket without profile and access token."); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/ArgumentSignature.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class ArgumentSignature { 9 | private final String name; 10 | private final byte[] signature; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/BossBarAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | public enum BossBarAction { 4 | ADD, 5 | REMOVE, 6 | UPDATE_HEALTH, 7 | UPDATE_TITLE, 8 | UPDATE_STYLE, 9 | UPDATE_FLAGS; 10 | 11 | private static final BossBarAction[] VALUES = values(); 12 | 13 | public static BossBarAction from(int id) { 14 | return VALUES[id]; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/BossBarColor.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | public enum BossBarColor { 4 | PINK, 5 | CYAN, 6 | RED, 7 | LIME, 8 | YELLOW, 9 | PURPLE, 10 | WHITE; 11 | 12 | private static final BossBarColor[] VALUES = values(); 13 | 14 | public static BossBarColor from(int id) { 15 | return VALUES[id]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/BossBarDivision.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | public enum BossBarDivision { 4 | NONE, 5 | NOTCHES_6, 6 | NOTCHES_10, 7 | NOTCHES_12, 8 | NOTCHES_20; 9 | 10 | private static final BossBarDivision[] VALUES = values(); 11 | 12 | public static BossBarDivision from(int id) { 13 | return VALUES[id]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/ClientCommand.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | public enum ClientCommand { 4 | RESPAWN, 5 | STATS; 6 | 7 | private static final ClientCommand[] VALUES = values(); 8 | 9 | public static ClientCommand from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/KnownPack.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class KnownPack { 9 | private String namespace; 10 | private String id; 11 | private String version; 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/PlayerListEntryAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | public enum PlayerListEntryAction { 4 | ADD_PLAYER, 5 | INITIALIZE_CHAT, 6 | UPDATE_GAME_MODE, 7 | UPDATE_LISTED, 8 | UPDATE_LATENCY, 9 | UPDATE_DISPLAY_NAME, 10 | UPDATE_LIST_ORDER, 11 | UPDATE_HAT; 12 | 13 | public static final PlayerListEntryAction[] VALUES = values(); 14 | 15 | public static PlayerListEntryAction from(int id) { 16 | return VALUES[id]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/RegistryEntry.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import net.kyori.adventure.key.Key; 6 | import org.cloudburstmc.nbt.NbtMap; 7 | import org.jetbrains.annotations.Nullable; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | public class RegistryEntry { 12 | private final Key id; 13 | private final @Nullable NbtMap data; 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/RemoteDebugSampleType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | public enum RemoteDebugSampleType { 4 | TICK_TIME; 5 | 6 | private static final RemoteDebugSampleType[] VALUES = values(); 7 | 8 | public static RemoteDebugSampleType from(int id) { 9 | return VALUES[id]; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/ResourcePackStatus.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | public enum ResourcePackStatus { 4 | SUCCESSFULLY_LOADED, 5 | DECLINED, 6 | FAILED_DOWNLOAD, 7 | ACCEPTED, 8 | DOWNLOADED, 9 | INVALID_URL, 10 | FAILED_RELOAD, 11 | DISCARDED; 12 | 13 | private static final ResourcePackStatus[] VALUES = values(); 14 | 15 | public static ResourcePackStatus from(int id) { 16 | return VALUES[id]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/ServerLink.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | import net.kyori.adventure.text.Component; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | public record ServerLink(@Nullable ServerLinkType knownType, @Nullable Component unknownType, String link) { 7 | } 8 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/ServerLinkType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | public enum ServerLinkType { 4 | BUG_REPORT, 5 | COMMUNITY_GUIDELINES, 6 | SUPPORT, 7 | STATUS, 8 | FEEDBACK, 9 | COMMUNITY, 10 | WEBSITE, 11 | FORUMS, 12 | NEWS, 13 | ANNOUNCEMENTS; 14 | 15 | private static final ServerLinkType[] VALUES = values(); 16 | 17 | public static ServerLinkType from(int id) { 18 | return VALUES[id]; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/UnlockRecipesAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game; 2 | 3 | public enum UnlockRecipesAction { 4 | INIT, 5 | ADD, 6 | REMOVE; 7 | 8 | private static final UnlockRecipesAction[] VALUES = values(); 9 | 10 | public static UnlockRecipesAction from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chat/ChatCompletionAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chat; 2 | 3 | public enum ChatCompletionAction { 4 | ADD, 5 | REMOVE, 6 | SET; 7 | 8 | public static final ChatCompletionAction[] VALUES = values(); 9 | 10 | public static ChatCompletionAction from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chat/ChatFilterType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chat; 2 | 3 | public enum ChatFilterType { 4 | PASS_THROUGH, 5 | FULLY_FILTERED, 6 | PARTIALLY_FILTERED; 7 | 8 | public static final ChatFilterType[] VALUES = values(); 9 | 10 | public static ChatFilterType from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chat/ChatType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chat; 2 | 3 | import org.cloudburstmc.nbt.NbtMap; 4 | 5 | import java.util.List; 6 | 7 | public record ChatType(ChatTypeDecoration chat, ChatTypeDecoration narration) { 8 | public record ChatTypeDecorationImpl(String translationKey, 9 | List parameters, 10 | NbtMap style) implements ChatTypeDecoration { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chat/ChatTypeDecoration.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chat; 2 | 3 | import org.cloudburstmc.nbt.NbtMap; 4 | 5 | import java.util.List; 6 | 7 | // Here for implementation if one wants to cache the Style tag while we don't have DFU Codecs. 8 | public interface ChatTypeDecoration { 9 | String translationKey(); 10 | 11 | List parameters(); 12 | 13 | NbtMap style(); 14 | 15 | enum Parameter { 16 | CONTENT, 17 | SENDER, 18 | TARGET; 19 | 20 | public static final Parameter[] VALUES = values(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chat/MessageSignature.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chat; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import org.checkerframework.checker.nullness.qual.Nullable; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | public class MessageSignature { 12 | private final int id; 13 | private final byte @Nullable [] messageSignature; 14 | 15 | public static MessageSignature read(ByteBuf in) { 16 | int id = MinecraftTypes.readVarInt(in) - 1; 17 | byte[] messageSignature; 18 | if (id == -1) { 19 | messageSignature = new byte[256]; 20 | in.readBytes(messageSignature); 21 | } else { 22 | messageSignature = null; 23 | } 24 | return new MessageSignature(id, messageSignature); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chat/numbers/BlankFormat.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chat.numbers; 2 | 3 | public class BlankFormat implements NumberFormat { 4 | 5 | public static final BlankFormat INSTANCE = new BlankFormat(); 6 | 7 | private BlankFormat() { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chat/numbers/FixedFormat.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chat.numbers; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | import net.kyori.adventure.text.Component; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class FixedFormat implements NumberFormat { 11 | 12 | private final @NonNull Component value; 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chat/numbers/NumberFormat.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chat.numbers; 2 | 3 | public interface NumberFormat { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chat/numbers/StyledFormat.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chat.numbers; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | import net.kyori.adventure.text.format.Style; 7 | import org.cloudburstmc.nbt.NbtMap; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | public class StyledFormat implements NumberFormat { 12 | 13 | /** 14 | * Serialized {@link Style} 15 | */ 16 | private final @NonNull NbtMap style; 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chunk/ChunkBiomeData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chunk; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class ChunkBiomeData { 9 | private final int x; 10 | private final int z; 11 | private final byte[] buffer; 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chunk/palette/GlobalPalette.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chunk.palette; 2 | 3 | import lombok.EqualsAndHashCode; 4 | 5 | /** 6 | * A global palette that maps 1:1. 7 | */ 8 | @EqualsAndHashCode 9 | public class GlobalPalette implements Palette { 10 | public static final GlobalPalette INSTANCE = new GlobalPalette(); 11 | 12 | @Override 13 | public int size() { 14 | return Integer.MAX_VALUE; 15 | } 16 | 17 | @Override 18 | public int stateToId(int state) { 19 | return state; 20 | } 21 | 22 | @Override 23 | public int idToState(int id) { 24 | return id; 25 | } 26 | 27 | @Override 28 | public GlobalPalette copy() { 29 | return this; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chunk/palette/PaletteType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chunk.palette; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum PaletteType { 7 | BIOME(1, 3, 64), 8 | CHUNK(4, 8, 4096); 9 | 10 | private final int minBitsPerEntry; 11 | private final int maxBitsPerEntry; 12 | private final int storageSize; 13 | 14 | PaletteType(int minBitsPerEntry, int maxBitsPerEntry, int storageSize) { 15 | this.minBitsPerEntry = minBitsPerEntry; 16 | this.maxBitsPerEntry = maxBitsPerEntry; 17 | this.storageSize = storageSize; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/chunk/palette/SingletonPalette.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.chunk.palette; 2 | 3 | import lombok.EqualsAndHashCode; 4 | import lombok.RequiredArgsConstructor; 5 | 6 | /** 7 | * A palette containing one state. 8 | */ 9 | @EqualsAndHashCode 10 | @RequiredArgsConstructor 11 | public class SingletonPalette implements Palette { 12 | private final int state; 13 | 14 | @Override 15 | public int size() { 16 | return 1; 17 | } 18 | 19 | @Override 20 | public int stateToId(int state) { 21 | return this.state == state ? 0 : -1; 22 | } 23 | 24 | @Override 25 | public int idToState(int id) { 26 | return id == 0 ? this.state : 0; 27 | } 28 | 29 | @Override 30 | public SingletonPalette copy() { 31 | return this; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/CommandType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command; 2 | 3 | public enum CommandType { 4 | ROOT, 5 | LITERAL, 6 | ARGUMENT; 7 | 8 | private static final CommandType[] VALUES = values(); 9 | 10 | public static CommandType from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/CommandProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | public interface CommandProperties { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/DoubleProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class DoubleProperties implements CommandProperties { 9 | private final double min; 10 | private final double max; 11 | 12 | public DoubleProperties() { 13 | this.min = -Double.MAX_VALUE; 14 | this.max = Double.MAX_VALUE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/EntityProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class EntityProperties implements CommandProperties { 9 | private final boolean singleTarget; 10 | private final boolean playersOnly; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/FloatProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class FloatProperties implements CommandProperties { 9 | private final float min; 10 | private final float max; 11 | 12 | public FloatProperties() { 13 | this.min = -Float.MAX_VALUE; 14 | this.max = Float.MAX_VALUE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/IntegerProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class IntegerProperties implements CommandProperties { 9 | private final int min; 10 | private final int max; 11 | 12 | public IntegerProperties() { 13 | this.min = Integer.MIN_VALUE; 14 | this.max = Integer.MAX_VALUE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/LongProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class LongProperties implements CommandProperties { 9 | private final long min; 10 | private final long max; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/RangeProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class RangeProperties implements CommandProperties { 9 | private final boolean allowDecimals; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/ResourceProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | import lombok.Data; 4 | import net.kyori.adventure.key.Key; 5 | 6 | @Data 7 | public class ResourceProperties implements CommandProperties { 8 | private final Key registryKey; 9 | 10 | public ResourceProperties(Key registryKey) { 11 | this.registryKey = registryKey; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/ScoreHolderProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class ScoreHolderProperties implements CommandProperties { 9 | private final boolean allowMultiple; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/StringProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | public enum StringProperties implements CommandProperties { 4 | SINGLE_WORD, 5 | QUOTABLE_PHRASE, 6 | GREEDY_PHRASE; 7 | 8 | public static final StringProperties[] VALUES = values(); 9 | 10 | public static StringProperties from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/command/properties/TimeProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.command.properties; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class TimeProperties implements CommandProperties { 9 | private final int min; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/EquipmentSlot.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity; 2 | 3 | public enum EquipmentSlot { 4 | MAIN_HAND, 5 | OFF_HAND, 6 | BOOTS, 7 | LEGGINGS, 8 | CHESTPLATE, 9 | HELMET, 10 | BODY; 11 | 12 | private static final EquipmentSlot[] VALUES = values(); 13 | 14 | public static EquipmentSlot from(int id) { 15 | return VALUES[id]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/MinecartStep.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity; 2 | 3 | import org.cloudburstmc.math.vector.Vector3d; 4 | 5 | public record MinecartStep(Vector3d position, Vector3d movement, float yRot, float xRot, float weight) { 6 | } 7 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/RotationOrigin.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity; 2 | 3 | public enum RotationOrigin { 4 | FEET, 5 | EYES; 6 | 7 | private static final RotationOrigin[] VALUES = values(); 8 | 9 | public static RotationOrigin from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/attribute/Attribute.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.attribute; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | @Data 11 | @AllArgsConstructor 12 | public class Attribute { 13 | private final @NonNull AttributeType type; 14 | private final double value; 15 | private final @NonNull List modifiers; 16 | 17 | public Attribute(@NonNull AttributeType type) { 18 | this(type, 0); 19 | } 20 | 21 | public Attribute(@NonNull AttributeType type, double value) { 22 | this(type, value, new ArrayList<>()); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/attribute/AttributeModifier.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.attribute; 2 | 3 | import lombok.Data; 4 | import lombok.NonNull; 5 | import net.kyori.adventure.key.Key; 6 | 7 | import java.util.UUID; 8 | 9 | @Data 10 | public class AttributeModifier { 11 | private final @NonNull Key id; 12 | private final double amount; 13 | private final @NonNull ModifierOperation operation; 14 | 15 | public AttributeModifier(@NonNull Key id, double amount, @NonNull ModifierOperation operation) { 16 | this.id = id; 17 | this.amount = amount; 18 | this.operation = operation; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/attribute/ModifierOperation.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.attribute; 2 | 3 | public enum ModifierOperation { 4 | ADD, 5 | ADD_MULTIPLIED_BASE, 6 | ADD_MULTIPLIED_TOTAL; 7 | 8 | private static final ModifierOperation[] VALUES = values(); 9 | 10 | public static ModifierOperation from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/ArmadilloState.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata; 2 | 3 | public enum ArmadilloState { 4 | IDLE, 5 | ROLLING, 6 | SCARED, 7 | UNROLLING; 8 | 9 | private static final ArmadilloState[] VALUES = values(); 10 | 11 | public static ArmadilloState from(int id) { 12 | return VALUES[id]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/Equipment.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | import org.checkerframework.checker.nullness.qual.Nullable; 7 | import org.geysermc.mcprotocollib.protocol.data.game.entity.EquipmentSlot; 8 | import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack; 9 | 10 | @Data 11 | @AllArgsConstructor 12 | public class Equipment { 13 | private @NonNull EquipmentSlot slot; 14 | private @Nullable ItemStack item; 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/GlobalPos.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata; 2 | 3 | import net.kyori.adventure.key.Key; 4 | import org.cloudburstmc.math.vector.Vector3i; 5 | 6 | public class GlobalPos { 7 | private final Key dimension; 8 | private final Vector3i position; 9 | 10 | public GlobalPos(Key dimension, Vector3i position) { 11 | this.dimension = dimension; 12 | this.position = position; 13 | } 14 | 15 | public Key getDimension() { 16 | return dimension; 17 | } 18 | 19 | public Vector3i getPosition() { 20 | return position; 21 | } 22 | 23 | public int getX() { 24 | return position.getX(); 25 | } 26 | 27 | public int getY() { 28 | return position.getY(); 29 | } 30 | 31 | public int getZ() { 32 | return position.getZ(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/PaintingVariant.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata; 2 | 3 | import net.kyori.adventure.key.Key; 4 | import net.kyori.adventure.text.Component; 5 | import org.jetbrains.annotations.Nullable; 6 | 7 | public record PaintingVariant(int width, int height, Key assetId, @Nullable Component title, @Nullable Component author) { 8 | } 9 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/Pose.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata; 2 | 3 | public enum Pose { 4 | STANDING, 5 | FALL_FLYING, 6 | SLEEPING, 7 | SWIMMING, 8 | SPIN_ATTACK, 9 | SNEAKING, 10 | LONG_JUMPING, 11 | DYING, 12 | CROAKING, 13 | USING_TONGUE, 14 | SITTING, 15 | ROARING, 16 | SNIFFING, 17 | EMERGING, 18 | DIGGING, 19 | SLIDING, 20 | SHOOTING, 21 | INHALING; 22 | 23 | private static final Pose[] VALUES = values(); 24 | 25 | public static Pose from(int id) { 26 | return VALUES[id]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/SnifferState.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata; 2 | 3 | public enum SnifferState { 4 | IDLING, 5 | FEELING_HAPPY, 6 | SCENTING, 7 | SNIFFING, 8 | SEARCHING, 9 | DIGGING, 10 | RISING; 11 | 12 | private static final SnifferState[] VALUES = values(); 13 | 14 | public static SnifferState from(int id) { 15 | return VALUES[id]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/VillagerData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class VillagerData { 9 | private final int type; 10 | private final int profession; 11 | private final int level; 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/WolfVariant.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata; 2 | 3 | import net.kyori.adventure.key.Key; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | public record WolfVariant(Key wildTexture, Key tameTexture, Key angryTexture, 7 | @Nullable Key biomeLocation, int @Nullable [] biomeHolders) { 8 | } 9 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/type/ObjectEntityMetadata.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type; 2 | 3 | import lombok.NonNull; 4 | import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata; 5 | import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType; 6 | 7 | public class ObjectEntityMetadata extends EntityMetadata> { 8 | private final T value; 9 | 10 | public ObjectEntityMetadata(int id, @NonNull MetadataType type, T value) { 11 | super(id, type); 12 | this.value = value; 13 | } 14 | 15 | @Override 16 | public T getValue() { 17 | return value; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/object/Direction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.object; 2 | 3 | import lombok.Getter; 4 | 5 | public enum Direction implements ObjectData { 6 | DOWN(-1), 7 | UP(-1), 8 | NORTH(0), 9 | SOUTH(1), 10 | WEST(2), 11 | EAST(3); 12 | 13 | @Getter 14 | private final int horizontalIndex; 15 | 16 | Direction(int horizontalIndex) { 17 | this.horizontalIndex = horizontalIndex; 18 | } 19 | 20 | private static final Direction[] HORIZONTAL_VALUES = {NORTH, SOUTH, WEST, EAST}; 21 | public static final Direction[] VALUES = values(); 22 | 23 | public static Direction getByHorizontalIndex(int index) { 24 | return HORIZONTAL_VALUES[index % HORIZONTAL_VALUES.length]; 25 | } 26 | 27 | public static Direction from(int id) { 28 | return VALUES[id]; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/object/FallingBlockData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.object; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class FallingBlockData implements ObjectData { 9 | private final int id; 10 | private final int metadata; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/object/GenericObjectData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.object; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class GenericObjectData implements ObjectData { 9 | private final int value; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/object/MinecartType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.object; 2 | 3 | public enum MinecartType implements ObjectData { 4 | NORMAL, 5 | CHEST, 6 | POWERED, 7 | TNT, 8 | MOB_SPAWNER, 9 | HOPPER, 10 | COMMAND_BLOCK; 11 | 12 | private static final MinecartType[] VALUES = values(); 13 | 14 | public static MinecartType from(int id) { 15 | return VALUES[id]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/object/ObjectData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.object; 2 | 3 | public interface ObjectData { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/object/ProjectileData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.object; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class ProjectileData implements ObjectData { 9 | private final int ownerId; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/object/WardenData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.object; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class WardenData implements ObjectData { 7 | private final boolean emerging; 8 | 9 | public WardenData(int data) { 10 | this.emerging = (data == 1); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/Animation.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.player; 2 | 3 | import it.unimi.dsi.fastutil.ints.Int2ObjectMap; 4 | import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; 5 | import org.checkerframework.checker.nullness.qual.Nullable; 6 | 7 | public enum Animation { 8 | SWING_ARM(0), 9 | LEAVE_BED(2), 10 | SWING_OFFHAND(3), 11 | CRITICAL_HIT(4), 12 | ENCHANTMENT_CRITICAL_HIT(5); 13 | 14 | private final int id; 15 | 16 | Animation(int id) { 17 | this.id = id; 18 | } 19 | 20 | public int getId() { 21 | return id; 22 | } 23 | 24 | private static final Int2ObjectMap VALUES = new Int2ObjectOpenHashMap<>(); 25 | 26 | @Nullable 27 | public static Animation from(int id) { 28 | return VALUES.get(id); 29 | } 30 | 31 | static { 32 | for (Animation animation : values()) { 33 | VALUES.put(animation.id, animation); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/BlockBreakStage.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.player; 2 | 3 | public enum BlockBreakStage { 4 | STAGE_1, 5 | STAGE_2, 6 | STAGE_3, 7 | STAGE_4, 8 | STAGE_5, 9 | STAGE_6, 10 | STAGE_7, 11 | STAGE_8, 12 | STAGE_9, 13 | STAGE_10, 14 | RESET; 15 | 16 | /** 17 | * All stages, excluding reset 18 | */ 19 | public static final BlockBreakStage[] STAGES; 20 | 21 | static { 22 | BlockBreakStage[] allValues = values(); 23 | STAGES = new BlockBreakStage[allValues.length - 1]; 24 | System.arraycopy(allValues, 0, STAGES, 0, 10); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/Hand.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.player; 2 | 3 | public enum Hand { 4 | MAIN_HAND, 5 | OFF_HAND; 6 | 7 | private static final Hand[] VALUES = values(); 8 | 9 | public static Hand from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/HandPreference.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.player; 2 | 3 | public enum HandPreference { 4 | LEFT_HAND, 5 | RIGHT_HAND; 6 | 7 | private static final HandPreference[] VALUES = values(); 8 | 9 | public static HandPreference from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/InteractAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.player; 2 | 3 | public enum InteractAction { 4 | INTERACT, 5 | ATTACK, 6 | INTERACT_AT; 7 | 8 | private static final InteractAction[] VALUES = values(); 9 | 10 | public static InteractAction from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/PlayerAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.player; 2 | 3 | public enum PlayerAction { 4 | START_DIGGING, 5 | CANCEL_DIGGING, 6 | FINISH_DIGGING, 7 | DROP_ITEM_STACK, 8 | DROP_ITEM, 9 | RELEASE_USE_ITEM, 10 | SWAP_HANDS; 11 | 12 | private static final PlayerAction[] VALUES = values(); 13 | 14 | public static PlayerAction from(int id) { 15 | return VALUES[id]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/PlayerSpawnInfo.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.player; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | import net.kyori.adventure.key.Key; 7 | import org.checkerframework.checker.nullness.qual.Nullable; 8 | import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.GlobalPos; 9 | 10 | @Data 11 | @AllArgsConstructor 12 | public class PlayerSpawnInfo { 13 | private final int dimension; 14 | private final @NonNull Key worldName; 15 | private final long hashedSeed; 16 | private final @NonNull GameMode gameMode; 17 | private final @Nullable GameMode previousGamemode; 18 | private final boolean debug; 19 | private final boolean flat; 20 | private final @Nullable GlobalPos lastDeathPos; 21 | private final int portalCooldown; 22 | private final int seaLevel; 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/PlayerState.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.player; 2 | 3 | public enum PlayerState { 4 | START_SNEAKING, 5 | STOP_SNEAKING, 6 | LEAVE_BED, 7 | START_SPRINTING, 8 | STOP_SPRINTING, 9 | START_HORSE_JUMP, 10 | STOP_HORSE_JUMP, 11 | OPEN_VEHICLE_INVENTORY, 12 | START_ELYTRA_FLYING; 13 | 14 | private static final PlayerState[] VALUES = values(); 15 | 16 | public static PlayerState from(int id) { 17 | return VALUES[id]; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/player/PositionElement.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.entity.player; 2 | 3 | public enum PositionElement { 4 | X, 5 | Y, 6 | Z, 7 | Y_ROT, 8 | X_ROT, 9 | DELTA_X, 10 | DELTA_Y, 11 | DELTA_Z, 12 | ROTATE_DELTA; 13 | 14 | private static final PositionElement[] VALUES = values(); 15 | 16 | public static PositionElement from(int id) { 17 | return VALUES[id]; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/AdvancementTabAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum AdvancementTabAction { 4 | OPENED_TAB, 5 | CLOSED_SCREEN; 6 | 7 | private static final AdvancementTabAction[] VALUES = values(); 8 | 9 | public static AdvancementTabAction from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/ClickItemAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum ClickItemAction implements ContainerAction { 4 | LEFT_CLICK, 5 | RIGHT_CLICK; 6 | 7 | public int getId() { 8 | return this.ordinal(); 9 | } 10 | 11 | private static final ClickItemAction[] VALUES = values(); 12 | 13 | public static ClickItemAction from(int id) { 14 | return VALUES[id]; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/ContainerAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public interface ContainerAction { 4 | int getId(); 5 | } 6 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/ContainerActionType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum ContainerActionType { 4 | CLICK_ITEM, 5 | SHIFT_CLICK_ITEM, 6 | MOVE_TO_HOTBAR_SLOT, 7 | CREATIVE_GRAB_MAX_STACK, 8 | DROP_ITEM, 9 | SPREAD_ITEM, 10 | FILL_STACK; 11 | 12 | private static final ContainerActionType[] VALUES = values(); 13 | 14 | public static ContainerActionType from(int id) { 15 | return VALUES[id]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/ContainerType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum ContainerType { 4 | GENERIC_9X1, 5 | GENERIC_9X2, 6 | GENERIC_9X3, 7 | GENERIC_9X4, 8 | GENERIC_9X5, 9 | GENERIC_9X6, 10 | GENERIC_3X3, 11 | CRAFTER_3x3, 12 | ANVIL, 13 | BEACON, 14 | BLAST_FURNACE, 15 | BREWING_STAND, 16 | CRAFTING, 17 | ENCHANTMENT, 18 | FURNACE, 19 | GRINDSTONE, 20 | HOPPER, 21 | LECTERN, 22 | LOOM, 23 | MERCHANT, 24 | SHULKER_BOX, 25 | SMITHING, 26 | SMOKER, 27 | CARTOGRAPHY, 28 | STONECUTTER; 29 | 30 | private static final ContainerType[] VALUES = values(); 31 | 32 | public static ContainerType from(int id) { 33 | return VALUES[id]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/CraftingBookStateType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum CraftingBookStateType { 4 | CRAFTING, 5 | FURNACE, 6 | BLAST_FURNACE, 7 | SMOKER; 8 | 9 | private static final CraftingBookStateType[] VALUES = values(); 10 | 11 | public static CraftingBookStateType from(int id) { 12 | return VALUES[id]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/CreativeGrabAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum CreativeGrabAction implements ContainerAction { 4 | GRAB; 5 | 6 | public int getId() { 7 | return this.ordinal() + 2; 8 | } 9 | 10 | private static final CreativeGrabAction[] VALUES = values(); 11 | 12 | public static CreativeGrabAction from(int id) { 13 | return VALUES[id - 2]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/DropItemAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum DropItemAction implements ContainerAction { 4 | DROP_FROM_SELECTED, 5 | DROP_SELECTED_STACK, 6 | LEFT_CLICK_OUTSIDE_NOT_HOLDING, 7 | RIGHT_CLICK_OUTSIDE_NOT_HOLDING; 8 | 9 | public int getId() { 10 | return this.ordinal(); 11 | } 12 | 13 | private static final DropItemAction[] VALUES = values(); 14 | 15 | public static DropItemAction from(int id) { 16 | return VALUES[id]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/FillStackAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum FillStackAction implements ContainerAction { 4 | FILL; 5 | 6 | public int getId() { 7 | return this.ordinal(); 8 | } 9 | 10 | private static final FillStackAction[] VALUES = values(); 11 | 12 | public static FillStackAction from(int id) { 13 | return VALUES[id]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/ShiftClickItemAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum ShiftClickItemAction implements ContainerAction { 4 | LEFT_CLICK, 5 | RIGHT_CLICK; 6 | 7 | public int getId() { 8 | return this.ordinal(); 9 | } 10 | 11 | private static final ShiftClickItemAction[] VALUES = values(); 12 | 13 | public static ShiftClickItemAction from(int id) { 14 | return VALUES[id]; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/UpdateStructureBlockAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum UpdateStructureBlockAction { 4 | UPDATE_DATA, 5 | SAVE_STRUCTURE, 6 | LOAD_STRUCTURE, 7 | DETECT_SIZE; 8 | 9 | private static final UpdateStructureBlockAction[] VALUES = values(); 10 | 11 | public static UpdateStructureBlockAction from(int id) { 12 | return VALUES[id]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/UpdateStructureBlockMode.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | public enum UpdateStructureBlockMode { 4 | SAVE, 5 | LOAD, 6 | CORNER, 7 | DATA; 8 | 9 | private static final UpdateStructureBlockMode[] VALUES = values(); 10 | 11 | public static UpdateStructureBlockMode from(int id) { 12 | return VALUES[id]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/VillagerTrade.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | import org.checkerframework.checker.nullness.qual.Nullable; 7 | import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | public class VillagerTrade { 12 | private final @NonNull ItemStack firstInput; 13 | private final @Nullable ItemStack secondInput; 14 | private final @Nullable ItemStack output; 15 | private final boolean tradeDisabled; 16 | private final int numUses; 17 | private final int maxUses; 18 | private final int xp; 19 | private final int specialPrice; 20 | private final float priceMultiplier; 21 | private final int demand; 22 | } 23 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/property/AnvilProperty.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory.property; 2 | 3 | /** 4 | * Container properties of an anvil. 5 | */ 6 | public enum AnvilProperty implements ContainerProperty { 7 | /** 8 | * The maximum cost of renaming or repairing in the anvil. 9 | */ 10 | MAXIMUM_COST; 11 | 12 | private static final AnvilProperty[] VALUES = values(); 13 | 14 | public static AnvilProperty from(int id) { 15 | return VALUES[id]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/property/BrewingStandProperty.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory.property; 2 | 3 | /** 4 | * Container properties of a brewing stand. 5 | */ 6 | public enum BrewingStandProperty implements ContainerProperty { 7 | /** 8 | * Time remaining for potions to finish brewing. 9 | * Usually a value between 0 (done) and 400 (just started). 10 | */ 11 | BREW_TIME; 12 | 13 | private static final BrewingStandProperty[] VALUES = values(); 14 | 15 | public static BrewingStandProperty from(int id) { 16 | return VALUES[id]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/property/ContainerProperty.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory.property; 2 | 3 | public interface ContainerProperty { 4 | int ordinal(); 5 | } 6 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/inventory/property/FurnaceProperty.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.inventory.property; 2 | 3 | /** 4 | * Container properties of a furnace. 5 | */ 6 | public enum FurnaceProperty implements ContainerProperty { 7 | /** 8 | * Number of ticks left before the current fuel runs out. 9 | */ 10 | BURN_TIME, 11 | 12 | /** 13 | * Number of ticks that the current item can keep the furnace burning. 14 | */ 15 | CURRENT_ITEM_BURN_TIME, 16 | 17 | /** 18 | * Number of ticks the item has been smelting for. 19 | */ 20 | COOK_TIME, 21 | 22 | /** 23 | * Number of ticks that the current item needs to be smelted. 24 | */ 25 | TOTAL_COOK_TIME; 26 | 27 | private static final FurnaceProperty[] VALUES = values(); 28 | 29 | public static FurnaceProperty from(int id) { 30 | return VALUES[id]; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/ItemStack.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.checkerframework.checker.nullness.qual.Nullable; 6 | import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class ItemStack { 11 | private final int id; 12 | private final int amount; 13 | private final @Nullable DataComponents dataComponentsPatch; 14 | 15 | public ItemStack(int id) { 16 | this(id, 1); 17 | } 18 | 19 | public ItemStack(int id, int amount) { 20 | this(id, amount, null); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/BannerPatternLayer.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import net.kyori.adventure.key.Key; 7 | import org.geysermc.mcprotocollib.protocol.data.game.Holder; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | @Builder(toBuilder = true) 12 | public class BannerPatternLayer { 13 | private final Holder pattern; 14 | private final int colorId; 15 | 16 | @Data 17 | @AllArgsConstructor 18 | @Builder(toBuilder = true) 19 | public static class BannerPattern { 20 | private final Key assetId; 21 | private final String translationKey; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/BeehiveOccupant.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import org.cloudburstmc.nbt.NbtMap; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | @Builder(toBuilder = true) 11 | public class BeehiveOccupant { 12 | private final NbtMap entityData; 13 | private final int ticksInHive; 14 | private final int minTicksInHive; 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/BlockStateProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.Map; 6 | 7 | @Data 8 | public class BlockStateProperties { 9 | private final Map properties; 10 | 11 | public BlockStateProperties(Map properties) { 12 | this.properties = Map.copyOf(properties); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/ConsumeEffect.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.Builder; 4 | import org.geysermc.mcprotocollib.protocol.data.game.level.sound.Sound; 5 | 6 | import java.util.List; 7 | 8 | public interface ConsumeEffect { 9 | 10 | @Builder(toBuilder = true) 11 | record ApplyEffects(List effects, float probability) implements ConsumeEffect { 12 | public ApplyEffects(List effects, float probability) { 13 | this.effects = List.copyOf(effects); 14 | this.probability = probability; 15 | } 16 | } 17 | 18 | record RemoveEffects(HolderSet effects) implements ConsumeEffect { 19 | } 20 | 21 | record ClearAllEffects() implements ConsumeEffect { 22 | } 23 | 24 | record TeleportRandomly(float diameter) implements ConsumeEffect { 25 | } 26 | 27 | record PlaySound(Sound sound) implements ConsumeEffect { 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/CustomModelData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.Builder; 4 | 5 | import java.util.List; 6 | 7 | @Builder(toBuilder = true) 8 | public record CustomModelData(List floats, List flags, List strings, List colors) { 9 | public CustomModelData(List floats, List flags, List strings, List colors) { 10 | this.floats = List.copyOf(floats); 11 | this.flags = List.copyOf(flags); 12 | this.strings = List.copyOf(strings); 13 | this.colors = List.copyOf(colors); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/DyedItemColor.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @Builder(toBuilder = true) 10 | public class DyedItemColor { 11 | private final int rgb; 12 | private final boolean showInTooltip; 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/Equippable.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.Builder; 4 | import net.kyori.adventure.key.Key; 5 | import org.checkerframework.checker.nullness.qual.Nullable; 6 | import org.geysermc.mcprotocollib.protocol.data.game.entity.EquipmentSlot; 7 | import org.geysermc.mcprotocollib.protocol.data.game.level.sound.Sound; 8 | 9 | @Builder(toBuilder = true) 10 | public record Equippable(EquipmentSlot slot, Sound equipSound, @Nullable Key model, @Nullable Key cameraOverlay, 11 | @Nullable HolderSet allowedEntities, boolean dispensable, boolean swappable, boolean damageOnHurt) { 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/Filterable.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.With; 6 | import org.jetbrains.annotations.Nullable; 7 | 8 | @Data 9 | @With 10 | @AllArgsConstructor 11 | public class Filterable { 12 | private final T raw; 13 | private final @Nullable T optional; 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/Fireworks.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.With; 7 | 8 | import java.util.List; 9 | 10 | @Data 11 | @With 12 | public class Fireworks { 13 | private final int flightDuration; 14 | private final List explosions; 15 | 16 | public Fireworks(int flightDuration, List explosions) { 17 | this.flightDuration = flightDuration; 18 | this.explosions = List.copyOf(explosions); 19 | } 20 | 21 | @Data 22 | @AllArgsConstructor 23 | @Builder(toBuilder = true) 24 | public static class FireworkExplosion { 25 | private final int shapeId; 26 | private final int[] colors; 27 | private final int[] fadeColors; 28 | private final boolean hasTrail; 29 | private final boolean hasTwinkle; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/FoodProperties.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @Builder(toBuilder = true) 10 | public class FoodProperties { 11 | private final int nutrition; 12 | private final float saturationModifier; 13 | private final boolean canAlwaysEat; 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/Instrument.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import net.kyori.adventure.text.Component; 7 | import org.geysermc.mcprotocollib.protocol.data.game.level.sound.Sound; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | @Builder(toBuilder = true) 12 | public class Instrument { 13 | private final Sound soundEvent; 14 | private final float useDuration; 15 | private final float range; 16 | private final Component description; 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/ItemEnchantments.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.Data; 4 | import lombok.With; 5 | 6 | import java.util.Map; 7 | 8 | @Data 9 | @With 10 | public class ItemEnchantments { 11 | private final Map enchantments; 12 | private final boolean showInTooltip; 13 | 14 | public ItemEnchantments(Map enchantments, boolean showInTooltip) { 15 | this.enchantments = Map.copyOf(enchantments); 16 | this.showInTooltip = showInTooltip; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/JukeboxPlayable.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.Builder; 4 | import net.kyori.adventure.key.Key; 5 | import net.kyori.adventure.text.Component; 6 | import org.geysermc.mcprotocollib.protocol.data.game.Holder; 7 | import org.geysermc.mcprotocollib.protocol.data.game.level.sound.Sound; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | @Builder(toBuilder = true) 11 | public record JukeboxPlayable(@Nullable Holder songHolder, @Nullable Key songLocation, boolean showInTooltip) { 12 | 13 | @Builder(toBuilder = true) 14 | public record JukeboxSong(Sound soundEvent, Component description, float lengthInSeconds, int comparatorOutput) { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/LodestoneTracker.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.With; 6 | import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.GlobalPos; 7 | import org.jetbrains.annotations.Nullable; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class LodestoneTracker { 13 | private final @Nullable GlobalPos pos; 14 | private final boolean tracked; 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/MobEffectDetails.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import org.checkerframework.checker.nullness.qual.Nullable; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | @Builder(toBuilder = true) 11 | public class MobEffectDetails { 12 | private final int amplifier; 13 | private final int duration; 14 | private final boolean ambient; 15 | private final boolean showParticles; 16 | private final boolean showIcon; 17 | private final @Nullable MobEffectDetails hiddenEffect; 18 | } 19 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/MobEffectInstance.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NonNull; 7 | import org.geysermc.mcprotocollib.protocol.data.game.entity.Effect; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | @Builder(toBuilder = true) 12 | public class MobEffectInstance { 13 | private final @NonNull Effect effect; 14 | private final @NonNull MobEffectDetails details; 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/PotionContents.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | import org.checkerframework.checker.nullness.qual.Nullable; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @Builder(toBuilder = true) 11 | public class PotionContents { 12 | private final int potionId; 13 | private final int customColor; 14 | private final List customEffects; 15 | private final @Nullable String customName; 16 | 17 | public PotionContents(int potionId, int customColor, List customEffects, @Nullable String customName) { 18 | this.potionId = potionId; 19 | this.customColor = customColor; 20 | this.customEffects = List.copyOf(customEffects); 21 | this.customName = customName; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/SuspiciousStewEffect.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.With; 6 | 7 | @Data 8 | @With 9 | @AllArgsConstructor 10 | public class SuspiciousStewEffect { 11 | private final int mobEffectId; 12 | private final int duration; 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/Unbreakable.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class Unbreakable { 9 | private boolean inTooltip; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/Unit.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | public enum Unit { 4 | INSTANCE; 5 | } 6 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/UseCooldown.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.With; 4 | import net.kyori.adventure.key.Key; 5 | import org.checkerframework.checker.nullness.qual.Nullable; 6 | 7 | @With 8 | public record UseCooldown(float seconds, @Nullable Key cooldownGroup) { 9 | } 10 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/WritableBookContent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | @Data 8 | public class WritableBookContent { 9 | private final List> pages; 10 | 11 | public WritableBookContent(List> pages) { 12 | this.pages = List.copyOf(pages); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/WrittenBookContent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | import net.kyori.adventure.text.Component; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @Builder(toBuilder = true) 11 | public class WrittenBookContent { 12 | private final Filterable title; 13 | private final String author; 14 | private final int generation; 15 | private final List> pages; 16 | private final boolean resolved; 17 | 18 | public WrittenBookContent(Filterable title, String author, int generation, List> pages, boolean resolved) { 19 | this.title = title; 20 | this.author = author; 21 | this.generation = generation; 22 | this.pages = List.copyOf(pages); 23 | this.resolved = resolved; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/type/BooleanDataComponent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component.type; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.NonNull; 5 | import org.geysermc.mcprotocollib.protocol.data.game.item.component.BooleanComponentType; 6 | import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent; 7 | 8 | public class BooleanDataComponent extends DataComponent { 9 | private final Boolean value; 10 | 11 | public BooleanDataComponent(@NonNull BooleanComponentType type, Boolean value) { 12 | super(type); 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public Boolean getValue() { 18 | return this.value; 19 | } 20 | 21 | @Override 22 | public void write(ByteBuf out) { 23 | this.type.writeDataComponentPrimitive(out, this.value); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/type/IntDataComponent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component.type; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.NonNull; 5 | import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent; 6 | import org.geysermc.mcprotocollib.protocol.data.game.item.component.IntComponentType; 7 | 8 | 9 | public class IntDataComponent extends DataComponent { 10 | private final Integer value; 11 | 12 | public IntDataComponent(@NonNull IntComponentType type, Integer value) { 13 | super(type); 14 | this.value = value; 15 | } 16 | 17 | @Override 18 | public Integer getValue() { 19 | return this.value; 20 | } 21 | 22 | @Override 23 | public void write(ByteBuf out) { 24 | this.type.writeDataComponentPrimitive(out, this.value); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/type/ObjectDataComponent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.item.component.type; 2 | 3 | import lombok.NonNull; 4 | import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent; 5 | import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType; 6 | 7 | public class ObjectDataComponent extends DataComponent> { 8 | private final T value; 9 | 10 | public ObjectDataComponent(@NonNull DataComponentType type, T value) { 11 | super(type); 12 | this.value = value; 13 | } 14 | 15 | @Override 16 | public T getValue() { 17 | return value; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/BlockChangeEntry.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | import org.cloudburstmc.math.vector.Vector3i; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class BlockChangeEntry { 11 | private final @NonNull Vector3i position; 12 | private final int block; 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/BlockEntityInfo.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.checkerframework.checker.nullness.qual.Nullable; 6 | import org.cloudburstmc.nbt.NbtMap; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class BlockEntityInfo { 11 | private final int x; 12 | private final int y; 13 | private final int z; 14 | private final BlockEntityType type; 15 | private final @Nullable NbtMap nbt; 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/CommandBlockMode.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block; 2 | 3 | public enum CommandBlockMode { 4 | SEQUENCE, 5 | AUTO, 6 | REDSTONE; 7 | 8 | private static final CommandBlockMode[] VALUES = values(); 9 | 10 | public static CommandBlockMode from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/ExplosionInteraction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block; 2 | 3 | public enum ExplosionInteraction { 4 | KEEP, 5 | DESTROY, 6 | DESTROY_WITH_DECAY, 7 | TRIGGER_BLOCK; 8 | 9 | private static final ExplosionInteraction[] VALUES = values(); 10 | 11 | public static ExplosionInteraction from(int id) { 12 | return VALUES[id]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/StructureMirror.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block; 2 | 3 | public enum StructureMirror { 4 | NONE, 5 | LEFT_RIGHT, 6 | FRONT_BACK; 7 | 8 | private static final StructureMirror[] VALUES = values(); 9 | 10 | public static StructureMirror from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/StructureRotation.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block; 2 | 3 | public enum StructureRotation { 4 | NONE, 5 | CLOCKWISE_90, 6 | CLOCKWISE_180, 7 | COUNTERCLOCKWISE_90; 8 | 9 | private static final StructureRotation[] VALUES = values(); 10 | 11 | public static StructureRotation from(int id) { 12 | return VALUES[id]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/WobbleStyle.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block; 2 | 3 | public enum WobbleStyle { 4 | POSITIVE, 5 | NEGATIVE; 6 | 7 | private static final WobbleStyle[] VALUES = values(); 8 | 9 | public static WobbleStyle from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/BeaconValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public enum BeaconValueType implements BlockValueType { 4 | RECALCULATE_BEAM; 5 | } 6 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/BellValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class BellValue implements BlockValue { 10 | private final Direction direction; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/BellValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public enum BellValueType implements BlockValueType { 4 | SHAKE_DIRECTION; 5 | 6 | private static final BellValueType[] VALUES = values(); 7 | 8 | public static BellValueType from(int id) { 9 | return VALUES[id]; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/BlockValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public interface BlockValue { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/BlockValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public interface BlockValueType { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/ChestValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class ChestValue implements BlockValue { 9 | private final int viewers; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/ChestValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public enum ChestValueType implements BlockValueType { 4 | VIEWING_PLAYER_COUNT; 5 | 6 | private static final ChestValueType[] VALUES = values(); 7 | 8 | public static ChestValueType from(int id) { 9 | return VALUES[id]; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/DecoratedPotValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | import org.geysermc.mcprotocollib.protocol.data.game.level.block.WobbleStyle; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class DecoratedPotValue implements BlockValue { 11 | @NonNull 12 | private final WobbleStyle wobbleStyle; 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/DecoratedPotValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public enum DecoratedPotValueType implements BlockValueType { 4 | WOBBLE_STYLE; 5 | 6 | private static final DecoratedPotValueType[] VALUES = values(); 7 | 8 | public static DecoratedPotValueType from(int id) { 9 | return VALUES[id]; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/EndGatewayValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public class EndGatewayValue implements BlockValue { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/EndGatewayValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public enum EndGatewayValueType implements BlockValueType { 4 | TRIGGER_BEAM; 5 | 6 | private static final EndGatewayValueType[] VALUES = values(); 7 | 8 | public static EndGatewayValueType from(int id) { 9 | return VALUES[id]; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/GenericBlockValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class GenericBlockValue implements BlockValue { 9 | private final int value; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/GenericBlockValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public enum GenericBlockValueType implements BlockValueType { 4 | GENERIC_0, 5 | GENERIC_1; 6 | 7 | private static final GenericBlockValueType[] VALUES = values(); 8 | 9 | public static GenericBlockValueType from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/MobSpawnerValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public class MobSpawnerValue implements BlockValue { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/MobSpawnerValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public enum MobSpawnerValueType implements BlockValueType { 4 | RESET_DELAY; 5 | 6 | private static final MobSpawnerValueType[] VALUES = values(); 7 | 8 | public static MobSpawnerValueType from(int id) { 9 | return VALUES[id]; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/NoteBlockValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public class NoteBlockValue implements BlockValue { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/NoteBlockValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public enum NoteBlockValueType implements BlockValueType { 4 | PLAY_NOTE; 5 | 6 | private static final NoteBlockValueType[] VALUES = values(); 7 | 8 | public static NoteBlockValueType from(int id) { 9 | return VALUES[id]; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/PistonValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class PistonValue implements BlockValue { 10 | private final Direction direction; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/block/value/PistonValueType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.block.value; 2 | 3 | public enum PistonValueType implements BlockValueType { 4 | PUSHING, 5 | PULLING, 6 | CANCELLED_MID_PUSH; 7 | 8 | private static final PistonValueType[] VALUES = values(); 9 | 10 | public static PistonValueType from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/BonemealGrowEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class BonemealGrowEventData implements LevelEventData { 9 | private final int particleCount; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/BreakBlockEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class BreakBlockEventData implements LevelEventData { 9 | private final int blockState; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/BreakPotionEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class BreakPotionEventData implements LevelEventData { 9 | private final int potionId; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/ComposterEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | public enum ComposterEventData implements LevelEventData { 4 | FILL, 5 | FILL_SUCCESS; 6 | 7 | private static final ComposterEventData[] VALUES = values(); 8 | 9 | public static ComposterEventData from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/DragonFireballEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | public enum DragonFireballEventData implements LevelEventData { 4 | NO_SOUND, 5 | HAS_SOUND; 6 | 7 | private static final DragonFireballEventData[] VALUES = values(); 8 | 9 | public static DragonFireballEventData from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/ElectricSparkData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class ElectricSparkData implements LevelEventData { 10 | private final Direction direction; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/FireExtinguishData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | public enum FireExtinguishData implements LevelEventData { 4 | EXTINGUISH, 5 | GENERIC_EXTINGUISH; 6 | 7 | private static final FireExtinguishData[] VALUES = values(); 8 | 9 | public static FireExtinguishData from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/LevelEvent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | public interface LevelEvent { 4 | int getId(); 5 | } 6 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/LevelEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | public interface LevelEventData { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/RecordEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class RecordEventData implements LevelEventData { 9 | private final int recordId; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/SmokeEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class SmokeEventData implements LevelEventData { 10 | private final Direction direction; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/TrialSpawnerDetectEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class TrialSpawnerDetectEventData implements LevelEventData { 9 | private final int detectedPlayers; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/UnknownLevelEvent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | public final class UnknownLevelEvent implements LevelEvent { 4 | private final int id; 5 | 6 | public UnknownLevelEvent(int id) { 7 | this.id = id; 8 | } 9 | 10 | @Override 11 | public int getId() { 12 | return id; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/event/UnknownLevelEventData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.event; 2 | 3 | public final class UnknownLevelEventData implements LevelEventData { 4 | private final int data; 5 | 6 | public UnknownLevelEventData(int data) { 7 | this.data = data; 8 | } 9 | 10 | public int getData() { 11 | return data; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/map/MapData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.map; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class MapData { 10 | private final int columns; 11 | private final int rows; 12 | private final int x; 13 | private final int y; 14 | private final byte @NonNull [] data; 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/map/MapIcon.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.map; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | import net.kyori.adventure.text.Component; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class MapIcon { 11 | private final int centerX; 12 | private final int centerZ; 13 | private final @NonNull MapIconType iconType; 14 | private final int iconRotation; 15 | private final Component displayName; 16 | } 17 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/notify/DemoMessageValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.notify; 2 | 3 | import it.unimi.dsi.fastutil.ints.Int2ObjectMap; 4 | import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; 5 | 6 | public enum DemoMessageValue implements GameEventValue { 7 | WELCOME(0), 8 | MOVEMENT_CONTROLS(101), 9 | JUMP_CONTROL(102), 10 | INVENTORY_CONTROL(103), 11 | SCREENSHOT_CONTROL(104); 12 | 13 | private final int id; 14 | 15 | DemoMessageValue(int id) { 16 | this.id = id; 17 | } 18 | 19 | public int getId() { 20 | return this.id; 21 | } 22 | 23 | private static final Int2ObjectMap VALUES = new Int2ObjectOpenHashMap<>(); 24 | 25 | public static DemoMessageValue from(int id) { 26 | return VALUES.get(id); 27 | } 28 | 29 | static { 30 | for (DemoMessageValue value : values()) { 31 | VALUES.put(value.id, value); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/notify/ElderGuardianEffectValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.notify; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class ElderGuardianEffectValue implements GameEventValue { 7 | private final boolean audible; 8 | 9 | public ElderGuardianEffectValue(float data) { 10 | this.audible = Math.round(data) == 1; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/notify/EnterCreditsValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.notify; 2 | 3 | public enum EnterCreditsValue implements GameEventValue { 4 | SEEN_BEFORE, 5 | FIRST_TIME; 6 | 7 | private static final EnterCreditsValue[] VALUES = values(); 8 | 9 | public static EnterCreditsValue from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/notify/GameEvent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.notify; 2 | 3 | public enum GameEvent { 4 | INVALID_BED, 5 | START_RAIN, 6 | STOP_RAIN, 7 | CHANGE_GAMEMODE, 8 | ENTER_CREDITS, 9 | DEMO_MESSAGE, 10 | ARROW_HIT_PLAYER, 11 | RAIN_STRENGTH, 12 | THUNDER_STRENGTH, 13 | PUFFERFISH_STING_SOUND, 14 | AFFECTED_BY_ELDER_GUARDIAN, 15 | ENABLE_RESPAWN_SCREEN, 16 | LIMITED_CRAFTING, 17 | LEVEL_CHUNKS_LOAD_START; 18 | 19 | private static final GameEvent[] VALUES = values(); 20 | 21 | public static GameEvent from(int id) { 22 | return VALUES[id]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/notify/GameEventValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.notify; 2 | 3 | public interface GameEventValue { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/notify/LimitedCraftingValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.notify; 2 | 3 | public enum LimitedCraftingValue implements GameEventValue { 4 | UNLIMITED_CRAFTING, 5 | LIMITED_CRAFTING; 6 | 7 | private static final LimitedCraftingValue[] VALUES = values(); 8 | 9 | public static LimitedCraftingValue from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/notify/RainStrengthValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.notify; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class RainStrengthValue implements GameEventValue { 7 | private final float strength; 8 | 9 | public RainStrengthValue(float strength) { 10 | if (strength > 1) { 11 | strength = 1; 12 | } 13 | 14 | if (strength < 0) { 15 | strength = 0; 16 | } 17 | 18 | this.strength = strength; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/notify/RespawnScreenValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.notify; 2 | 3 | public enum RespawnScreenValue implements GameEventValue { 4 | ENABLE_RESPAWN_SCREEN, 5 | IMMEDIATE_RESPAWN; 6 | 7 | private static final RespawnScreenValue[] VALUES = values(); 8 | 9 | public static RespawnScreenValue from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/notify/ThunderStrengthValue.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.notify; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class ThunderStrengthValue implements GameEventValue { 7 | private final float strength; 8 | 9 | public ThunderStrengthValue(float strength) { 10 | if (strength > 1) { 11 | strength = 1; 12 | } 13 | 14 | if (strength < 0) { 15 | strength = 0; 16 | } 17 | 18 | this.strength = strength; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/BlockParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class BlockParticleData implements ParticleData { 9 | private final int blockState; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/DustColorTransitionParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public class DustColorTransitionParticleData extends DustParticleData { 7 | private final int newColor; 8 | 9 | public DustColorTransitionParticleData(int color, float scale, int newColor) { 10 | super(color, scale); 11 | this.newColor = newColor; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/DustParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class DustParticleData implements ParticleData { 9 | private final int color; 10 | private final float scale; // clamped between 0.01 and 4 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/EntityEffectParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class EntityEffectParticleData implements ParticleData { 9 | private final int color; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/ItemParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.checkerframework.checker.nullness.qual.Nullable; 6 | import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | public class ItemParticleData implements ParticleData { 11 | private final @Nullable ItemStack itemStack; 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/Particle.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class Particle { 10 | private final @NonNull ParticleType type; 11 | private final ParticleData data; 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/ParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | public interface ParticleData { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/SculkChargeParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class SculkChargeParticleData implements ParticleData { 9 | private final float roll; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/ShriekParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class ShriekParticleData implements ParticleData { 9 | private final int delay; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/TrailParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import org.cloudburstmc.math.vector.Vector3d; 4 | 5 | public record TrailParticleData(Vector3d target, int color, int duration) implements ParticleData { 6 | } 7 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/VibrationParticleData.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.geysermc.mcprotocollib.protocol.data.game.level.particle.positionsource.PositionSource; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class VibrationParticleData implements ParticleData { 10 | PositionSource positionSource; 11 | 12 | int arrivalTicks; 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/positionsource/BlockPositionSource.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle.positionsource; 2 | 3 | import lombok.Value; 4 | import org.cloudburstmc.math.vector.Vector3i; 5 | 6 | @Value 7 | public class BlockPositionSource implements PositionSource { 8 | Vector3i position; 9 | 10 | @Override 11 | public PositionSourceType getType() { 12 | return PositionSourceType.BLOCK; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/positionsource/EntityPositionSource.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle.positionsource; 2 | 3 | import lombok.Value; 4 | 5 | @Value 6 | public class EntityPositionSource implements PositionSource { 7 | int entityId; 8 | float yOffset; 9 | 10 | @Override 11 | public PositionSourceType getType() { 12 | return PositionSourceType.ENTITY; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/positionsource/PositionSource.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle.positionsource; 2 | 3 | public interface PositionSource { 4 | 5 | PositionSourceType getType(); 6 | } 7 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/particle/positionsource/PositionSourceType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.particle.positionsource; 2 | 3 | public enum PositionSourceType { 4 | BLOCK, 5 | ENTITY; 6 | 7 | private static final PositionSourceType[] VALUES = values(); 8 | 9 | public static PositionSourceType from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/sound/CustomSound.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.sound; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class CustomSound implements Sound { 10 | private final @NonNull String name; 11 | private final boolean newSystem; 12 | private final float range; 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/sound/Sound.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.sound; 2 | 3 | public interface Sound { 4 | String getName(); 5 | 6 | boolean isNewSystem(); 7 | 8 | float getRange(); 9 | } 10 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/level/sound/SoundCategory.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.level.sound; 2 | 3 | public enum SoundCategory { 4 | MASTER, 5 | MUSIC, 6 | RECORD, 7 | WEATHER, 8 | BLOCK, 9 | HOSTILE, 10 | NEUTRAL, 11 | PLAYER, 12 | AMBIENT, 13 | VOICE; 14 | 15 | private static final SoundCategory[] VALUES = values(); 16 | 17 | 18 | public static SoundCategory from(int id) { 19 | return VALUES[id]; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/CraftingBookCategory.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe; 2 | 3 | public enum CraftingBookCategory { 4 | BUILDING, 5 | REDSTONE, 6 | EQUIPMENT, 7 | MISC; 8 | 9 | private static final CraftingBookCategory[] VALUES = values(); 10 | 11 | 12 | public static CraftingBookCategory from(int id) { 13 | return VALUES[id]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/Ingredient.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class Ingredient { 10 | private final HolderSet values; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/FurnaceRecipeDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display; 2 | 3 | import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay; 4 | 5 | public record FurnaceRecipeDisplay(SlotDisplay ingredient, SlotDisplay fuel, SlotDisplay result, SlotDisplay craftingStation, 6 | int duration, float experience) implements RecipeDisplay { 7 | @Override 8 | public RecipeDisplayType getType() { 9 | return RecipeDisplayType.FURNACE; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/RecipeDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display; 2 | 3 | import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay; 4 | 5 | public interface RecipeDisplay { 6 | RecipeDisplayType getType(); 7 | 8 | SlotDisplay result(); 9 | } 10 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/RecipeDisplayEntry.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display; 2 | 3 | import org.checkerframework.checker.nullness.qual.Nullable; 4 | import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet; 5 | 6 | import java.util.List; 7 | import java.util.OptionalInt; 8 | 9 | public record RecipeDisplayEntry(int id, RecipeDisplay display, OptionalInt group, 10 | int category, @Nullable List craftingRequirements) { 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/RecipeDisplayType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display; 2 | 3 | public enum RecipeDisplayType { 4 | CRAFTING_SHAPELESS, 5 | CRAFTING_SHAPED, 6 | FURNACE, 7 | STONECUTTER, 8 | SMITHING; 9 | 10 | private static final RecipeDisplayType[] VALUES = values(); 11 | 12 | public static RecipeDisplayType from(int id) { 13 | return VALUES[id]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/ShapedCraftingRecipeDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display; 2 | 3 | import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay; 4 | 5 | import java.util.List; 6 | 7 | public record ShapedCraftingRecipeDisplay(int width, int height, List ingredients, 8 | SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { 9 | @Override 10 | public RecipeDisplayType getType() { 11 | return RecipeDisplayType.CRAFTING_SHAPED; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/ShapelessCraftingRecipeDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display; 2 | 3 | import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay; 4 | 5 | import java.util.List; 6 | 7 | public record ShapelessCraftingRecipeDisplay(List ingredients, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { 8 | @Override 9 | public RecipeDisplayType getType() { 10 | return RecipeDisplayType.CRAFTING_SHAPELESS; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/SmithingRecipeDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display; 2 | 3 | import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay; 4 | 5 | public record SmithingRecipeDisplay(SlotDisplay template, SlotDisplay base, SlotDisplay addition, 6 | SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { 7 | @Override 8 | public RecipeDisplayType getType() { 9 | return RecipeDisplayType.SMITHING; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/StonecutterRecipeDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display; 2 | 3 | import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay; 4 | 5 | public record StonecutterRecipeDisplay(SlotDisplay input, SlotDisplay result, SlotDisplay craftingStation) implements RecipeDisplay { 6 | @Override 7 | public RecipeDisplayType getType() { 8 | return RecipeDisplayType.STONECUTTER; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/AnyFuelSlotDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | public record AnyFuelSlotDisplay() implements SlotDisplay { 4 | @Override 5 | public RecipeSlotType getType() { 6 | return RecipeSlotType.ANY_FUEL; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/CompositeSlotDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | import java.util.List; 4 | 5 | public record CompositeSlotDisplay(List contents) implements SlotDisplay { 6 | @Override 7 | public RecipeSlotType getType() { 8 | return RecipeSlotType.COMPOSITE; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/EmptySlotDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | public record EmptySlotDisplay() implements SlotDisplay { 4 | public static final EmptySlotDisplay INSTANCE = new EmptySlotDisplay(); 5 | 6 | @Override 7 | public RecipeSlotType getType() { 8 | return RecipeSlotType.EMPTY; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/ItemSlotDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | public record ItemSlotDisplay(int item) implements SlotDisplay { 4 | @Override 5 | public RecipeSlotType getType() { 6 | return RecipeSlotType.ITEM; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/ItemStackSlotDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack; 4 | 5 | public record ItemStackSlotDisplay(ItemStack itemStack) implements SlotDisplay { 6 | @Override 7 | public RecipeSlotType getType() { 8 | return RecipeSlotType.ITEM_STACK; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/RecipeSlotType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | public enum RecipeSlotType { 4 | EMPTY, 5 | ANY_FUEL, 6 | ITEM, 7 | ITEM_STACK, 8 | TAG, 9 | SMITHING_TRIM, 10 | WITH_REMAINDER, 11 | COMPOSITE; 12 | 13 | private static final RecipeSlotType[] VALUES = values(); 14 | 15 | public static RecipeSlotType from(int id) { 16 | return VALUES[id]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/SlotDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | public interface SlotDisplay { 4 | RecipeSlotType getType(); 5 | } 6 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/SmithingTrimDemoSlotDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | public record SmithingTrimDemoSlotDisplay(SlotDisplay base, SlotDisplay material, SlotDisplay pattern) implements SlotDisplay { 4 | @Override 5 | public RecipeSlotType getType() { 6 | return RecipeSlotType.SMITHING_TRIM; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/TagSlotDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | import net.kyori.adventure.key.Key; 4 | 5 | public record TagSlotDisplay(Key tag) implements SlotDisplay { 6 | @Override 7 | public RecipeSlotType getType() { 8 | return RecipeSlotType.TAG; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/recipe/display/slot/WithRemainderSlotDisplay.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot; 2 | 3 | public record WithRemainderSlotDisplay(SlotDisplay input, SlotDisplay remainder) implements SlotDisplay { 4 | @Override 5 | public RecipeSlotType getType() { 6 | return RecipeSlotType.WITH_REMAINDER; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/scoreboard/CollisionRule.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.scoreboard; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | public enum CollisionRule { 7 | ALWAYS("always"), 8 | NEVER("never"), 9 | PUSH_OTHER_TEAMS("pushOtherTeams"), 10 | PUSH_OWN_TEAM("pushOwnTeam"); 11 | 12 | private final String name; 13 | 14 | CollisionRule(String name) { 15 | this.name = name; 16 | } 17 | 18 | public String getName() { 19 | return this.name; 20 | } 21 | 22 | private static final Map VALUES = new HashMap<>(); 23 | 24 | public static CollisionRule from(String name) { 25 | return VALUES.get(name); 26 | } 27 | 28 | static { 29 | for (CollisionRule rule : values()) { 30 | VALUES.put(rule.getName(), rule); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/scoreboard/NameTagVisibility.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.scoreboard; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | public enum NameTagVisibility { 7 | ALWAYS("always"), 8 | NEVER("never"), 9 | HIDE_FOR_OTHER_TEAMS("hideForOtherTeams"), 10 | HIDE_FOR_OWN_TEAM("hideForOwnTeam"); 11 | 12 | private final String name; 13 | 14 | NameTagVisibility(String name) { 15 | this.name = name; 16 | } 17 | 18 | public String getName() { 19 | return this.name; 20 | } 21 | 22 | private static final Map VALUES = new HashMap<>(); 23 | 24 | public static NameTagVisibility from(String name) { 25 | return VALUES.get(name); 26 | } 27 | 28 | static { 29 | for (NameTagVisibility option : values()) { 30 | VALUES.put(option.getName(), option); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/scoreboard/ObjectiveAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.scoreboard; 2 | 3 | public enum ObjectiveAction { 4 | ADD, 5 | REMOVE, 6 | UPDATE; 7 | 8 | private static final ObjectiveAction[] VALUES = values(); 9 | 10 | public static ObjectiveAction from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/scoreboard/ScoreType.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.scoreboard; 2 | 3 | public enum ScoreType { 4 | INTEGER, 5 | HEARTS; 6 | 7 | private static final ScoreType[] VALUES = values(); 8 | 9 | public static ScoreType from(int id) { 10 | return VALUES[id]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/scoreboard/ScoreboardPosition.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.scoreboard; 2 | 3 | public enum ScoreboardPosition { 4 | PLAYER_LIST, 5 | SIDEBAR, 6 | BELOW_NAME, 7 | 8 | SIDEBAR_TEAM_BLACK, 9 | SIDEBAR_TEAM_DARK_BLUE, 10 | SIDEBAR_TEAM_DARK_GREEN, 11 | SIDEBAR_TEAM_DARK_AQUA, 12 | SIDEBAR_TEAM_DARK_RED, 13 | SIDEBAR_TEAM_DARK_PURPLE, 14 | SIDEBAR_TEAM_GOLD, 15 | SIDEBAR_TEAM_GRAY, 16 | SIDEBAR_TEAM_DARK_GRAY, 17 | SIDEBAR_TEAM_BLUE, 18 | SIDEBAR_TEAM_GREEN, 19 | SIDEBAR_TEAM_AQUA, 20 | SIDEBAR_TEAM_RED, 21 | SIDEBAR_TEAM_LIGHT_PURPLE, 22 | SIDEBAR_TEAM_YELLOW, 23 | SIDEBAR_TEAM_WHITE; 24 | 25 | private static final ScoreboardPosition[] VALUES = values(); 26 | 27 | public static ScoreboardPosition from(int id) { 28 | return VALUES[id]; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/scoreboard/TeamAction.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.scoreboard; 2 | 3 | public enum TeamAction { 4 | CREATE, 5 | REMOVE, 6 | UPDATE, 7 | ADD_PLAYER, 8 | REMOVE_PLAYER; 9 | 10 | private static final TeamAction[] VALUES = values(); 11 | 12 | public static TeamAction from(int id) { 13 | return VALUES[id]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/scoreboard/TeamColor.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.scoreboard; 2 | 3 | public enum TeamColor { 4 | BLACK, 5 | DARK_BLUE, 6 | DARK_GREEN, 7 | DARK_AQUA, 8 | DARK_RED, 9 | DARK_PURPLE, 10 | GOLD, 11 | GRAY, 12 | DARK_GRAY, 13 | BLUE, 14 | GREEN, 15 | AQUA, 16 | RED, 17 | LIGHT_PURPLE, 18 | YELLOW, 19 | WHITE, 20 | OBFUSCATED, 21 | BOLD, 22 | STRIKETHROUGH, 23 | UNDERLINED, 24 | ITALIC, 25 | RESET; 26 | 27 | public static final TeamColor[] VALUES = values(); 28 | } 29 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/setting/ChatVisibility.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.setting; 2 | 3 | public enum ChatVisibility { 4 | FULL, 5 | SYSTEM, 6 | HIDDEN; 7 | 8 | private static final ChatVisibility[] VALUES = values(); 9 | 10 | public static ChatVisibility from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/setting/Difficulty.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.setting; 2 | 3 | public enum Difficulty { 4 | PEACEFUL, 5 | EASY, 6 | NORMAL, 7 | HARD; 8 | 9 | private static final Difficulty[] VALUES = values(); 10 | 11 | public static Difficulty from(int id) { 12 | return VALUES[id]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/setting/ParticleStatus.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.setting; 2 | 3 | public enum ParticleStatus { 4 | ALL, 5 | DECREASED, 6 | MINIMAL; 7 | 8 | private static final ParticleStatus[] VALUES = values(); 9 | 10 | public static ParticleStatus from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/setting/SkinPart.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.setting; 2 | 3 | public enum SkinPart { 4 | CAPE, 5 | JACKET, 6 | LEFT_SLEEVE, 7 | RIGHT_SLEEVE, 8 | LEFT_PANTS_LEG, 9 | RIGHT_PANTS_LEG, 10 | HAT; 11 | 12 | public static final SkinPart[] VALUES = values(); 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/BreakBlockStatistic.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class BreakBlockStatistic implements Statistic { 9 | private final int id; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/BreakItemStatistic.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class BreakItemStatistic implements Statistic { 9 | private final int id; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/CraftItemStatistic.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class CraftItemStatistic implements Statistic { 9 | private final int id; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/DropItemStatistic.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class DropItemStatistic implements Statistic { 9 | private final int id; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/KillEntityStatistic.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class KillEntityStatistic implements Statistic { 10 | private final EntityType entity; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/KilledByEntityStatistic.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class KilledByEntityStatistic implements Statistic { 10 | private final EntityType entity; 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/PickupItemStatistic.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class PickupItemStatistic implements Statistic { 9 | private final int id; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/Statistic.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | public interface Statistic { 4 | } 5 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/StatisticCategory.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | public enum StatisticCategory { 4 | BREAK_BLOCK, 5 | CRAFT_ITEM, 6 | USE_ITEM, 7 | BREAK_ITEM, 8 | PICKED_UP_ITEM, 9 | DROP_ITEM, 10 | KILL_ENTITY, 11 | KILLED_BY_ENTITY, 12 | CUSTOM; 13 | 14 | private static final StatisticCategory[] VALUES = values(); 15 | 16 | public static StatisticCategory from(int id) { 17 | return VALUES[id]; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/StatisticFormat.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | public enum StatisticFormat { 4 | /** 5 | * Distance in centimeters 6 | */ 7 | DISTANCE, 8 | 9 | /** 10 | * Time in ticks 11 | */ 12 | TIME, 13 | 14 | INTEGER, 15 | 16 | /** 17 | * Used for damage statistics. 18 | */ 19 | TENTHS 20 | } 21 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/statistic/UseItemStatistic.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.game.statistic; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class UseItemStatistic implements Statistic { 9 | private final int id; 10 | } 11 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/handshake/HandshakeIntent.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.handshake; 2 | 3 | public enum HandshakeIntent { 4 | STATUS, 5 | LOGIN, 6 | TRANSFER; 7 | 8 | private static final HandshakeIntent[] VALUES = values(); 9 | 10 | public static HandshakeIntent from(int id) { 11 | return VALUES[id]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/status/PlayerInfo.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.status; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NonNull; 7 | import lombok.Setter; 8 | import org.geysermc.mcprotocollib.auth.GameProfile; 9 | 10 | import java.util.List; 11 | 12 | @Data 13 | @Setter(AccessLevel.NONE) 14 | @AllArgsConstructor 15 | public class PlayerInfo { 16 | private int maxPlayers; 17 | private int onlinePlayers; 18 | private @NonNull List players; 19 | } 20 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/status/ServerStatusInfo.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.status; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NonNull; 7 | import lombok.Setter; 8 | import net.kyori.adventure.text.Component; 9 | import org.jetbrains.annotations.Nullable; 10 | 11 | @Data 12 | @Setter(AccessLevel.NONE) 13 | @AllArgsConstructor 14 | public class ServerStatusInfo { 15 | private @NonNull Component description; 16 | private @Nullable PlayerInfo playerInfo; 17 | private @Nullable VersionInfo versionInfo; 18 | private byte[] iconPng; 19 | private boolean enforcesSecureChat; 20 | } 21 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/status/VersionInfo.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.status; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NonNull; 7 | import lombok.Setter; 8 | 9 | @Data 10 | @Setter(AccessLevel.NONE) 11 | @AllArgsConstructor 12 | public class VersionInfo { 13 | private @NonNull String versionName; 14 | private int protocolVersion; 15 | } 16 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/status/handler/ServerInfoBuilder.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.status.handler; 2 | 3 | import org.geysermc.mcprotocollib.network.Session; 4 | import org.geysermc.mcprotocollib.protocol.data.status.ServerStatusInfo; 5 | 6 | public interface ServerInfoBuilder { 7 | ServerStatusInfo buildInfo(Session session); 8 | } 9 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/status/handler/ServerInfoHandler.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.status.handler; 2 | 3 | import org.geysermc.mcprotocollib.network.Session; 4 | import org.geysermc.mcprotocollib.protocol.data.status.ServerStatusInfo; 5 | 6 | public interface ServerInfoHandler { 7 | void handle(Session session, ServerStatusInfo info); 8 | } 9 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/status/handler/ServerPingTimeHandler.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data.status.handler; 2 | 3 | import org.geysermc.mcprotocollib.network.Session; 4 | 5 | public interface ServerPingTimeHandler { 6 | void handle(Session session, long pingTime); 7 | } 8 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/common/clientbound/ClientboundKeepAlivePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.common.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ClientboundKeepAlivePacket implements MinecraftPacket { 13 | private final long pingId; 14 | 15 | public ClientboundKeepAlivePacket(ByteBuf in) { 16 | this.pingId = in.readLong(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeLong(this.pingId); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/common/clientbound/ClientboundPingPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.common.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ClientboundPingPacket implements MinecraftPacket { 13 | private final int id; 14 | 15 | public ClientboundPingPacket(ByteBuf in) { 16 | this.id = in.readInt(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeInt(this.id); 22 | } 23 | 24 | @Override 25 | public boolean shouldRunOnGameThread() { 26 | return true; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/common/serverbound/ServerboundKeepAlivePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.common.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ServerboundKeepAlivePacket implements MinecraftPacket { 13 | private final long pingId; 14 | 15 | public ServerboundKeepAlivePacket(ByteBuf in) { 16 | this.pingId = in.readLong(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeLong(this.pingId); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/common/serverbound/ServerboundPongPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.common.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ServerboundPongPacket implements MinecraftPacket { 13 | private final int id; 14 | 15 | public ServerboundPongPacket(ByteBuf in) { 16 | this.id = in.readInt(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeInt(this.id); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/configuration/clientbound/ClientboundFinishConfigurationPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.configuration.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | public class ClientboundFinishConfigurationPacket implements MinecraftPacket { 11 | public ClientboundFinishConfigurationPacket(ByteBuf in) { 12 | } 13 | 14 | @Override 15 | public void serialize(ByteBuf out) { 16 | } 17 | 18 | @Override 19 | public boolean shouldRunOnGameThread() { 20 | return true; 21 | } 22 | 23 | @Override 24 | public boolean isTerminal() { 25 | return true; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/configuration/clientbound/ClientboundResetChatPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.configuration.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | public class ClientboundResetChatPacket implements MinecraftPacket { 11 | public ClientboundResetChatPacket(ByteBuf in) { 12 | } 13 | 14 | @Override 15 | public void serialize(ByteBuf out) { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/configuration/serverbound/ServerboundFinishConfigurationPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.configuration.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | public class ServerboundFinishConfigurationPacket implements MinecraftPacket { 11 | 12 | public ServerboundFinishConfigurationPacket(ByteBuf in) { 13 | } 14 | 15 | public void serialize(ByteBuf buf) { 16 | } 17 | 18 | @Override 19 | public boolean shouldRunOnGameThread() { 20 | return true; 21 | } 22 | 23 | @Override 24 | public boolean isTerminal() { 25 | return true; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/cookie/clientbound/ClientboundCookieRequestPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.cookie.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import net.kyori.adventure.key.Key; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 9 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 10 | 11 | @Data 12 | @With 13 | @AllArgsConstructor 14 | public class ClientboundCookieRequestPacket implements MinecraftPacket { 15 | private final Key key; 16 | 17 | public ClientboundCookieRequestPacket(ByteBuf in) { 18 | this.key = MinecraftTypes.readResourceLocation(in); 19 | } 20 | 21 | @Override 22 | public void serialize(ByteBuf out) { 23 | MinecraftTypes.writeResourceLocation(out, this.key); 24 | } 25 | 26 | @Override 27 | public boolean shouldRunOnGameThread() { 28 | return true; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundBundlePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 7 | 8 | import java.util.List; 9 | 10 | @Data 11 | @AllArgsConstructor 12 | public class ClientboundBundlePacket implements MinecraftPacket { 13 | private final List packets; 14 | 15 | @Override 16 | public void serialize(ByteBuf buf) { 17 | } 18 | 19 | @Override 20 | public boolean shouldRunOnGameThread() { 21 | return true; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundDelimiterPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 5 | 6 | public class ClientboundDelimiterPacket implements MinecraftPacket { 7 | public ClientboundDelimiterPacket(ByteBuf in) { 8 | } 9 | 10 | @Override 11 | public void serialize(ByteBuf out) { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundSetCameraPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ClientboundSetCameraPacket implements MinecraftPacket { 14 | private final int cameraEntityId; 15 | 16 | public ClientboundSetCameraPacket(ByteBuf in) { 17 | this.cameraEntityId = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.cameraEntityId); 23 | } 24 | 25 | @Override 26 | public boolean shouldRunOnGameThread() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundStartConfigurationPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | public class ClientboundStartConfigurationPacket implements MinecraftPacket { 11 | 12 | public ClientboundStartConfigurationPacket(ByteBuf in) { 13 | } 14 | 15 | public void serialize(ByteBuf out) { 16 | } 17 | 18 | @Override 19 | public boolean shouldRunOnGameThread() { 20 | return true; 21 | } 22 | 23 | @Override 24 | public boolean isTerminal() { 25 | return true; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundTickingStatePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ClientboundTickingStatePacket implements MinecraftPacket { 13 | 14 | private final float tickRate; 15 | private final boolean isFrozen; 16 | 17 | public ClientboundTickingStatePacket(ByteBuf in) { 18 | this.tickRate = in.readFloat(); 19 | this.isFrozen = in.readBoolean(); 20 | } 21 | 22 | @Override 23 | public void serialize(ByteBuf out) { 24 | out.writeFloat(tickRate); 25 | out.writeBoolean(isFrozen); 26 | } 27 | 28 | @Override 29 | public boolean shouldRunOnGameThread() { 30 | return true; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/ClientboundTickingStepPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ClientboundTickingStepPacket implements MinecraftPacket { 14 | 15 | private final int tickSteps; 16 | 17 | public ClientboundTickingStepPacket(ByteBuf in) { 18 | this.tickSteps = MinecraftTypes.readVarInt(in); 19 | } 20 | 21 | @Override 22 | public void serialize(ByteBuf out) { 23 | MinecraftTypes.writeVarInt(out, this.tickSteps); 24 | } 25 | 26 | @Override 27 | public boolean shouldRunOnGameThread() { 28 | return true; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/ClientboundSetEntityLinkPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ClientboundSetEntityLinkPacket implements MinecraftPacket { 13 | private final int entityId; 14 | private final int attachedToId; 15 | 16 | public ClientboundSetEntityLinkPacket(ByteBuf in) { 17 | this.entityId = in.readInt(); 18 | this.attachedToId = in.readInt(); 19 | } 20 | 21 | @Override 22 | public void serialize(ByteBuf out) { 23 | out.writeInt(this.entityId); 24 | out.writeInt(this.attachedToId); 25 | } 26 | 27 | @Override 28 | public boolean shouldRunOnGameThread() { 29 | return true; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/player/ClientboundBlockChangedAckPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ClientboundBlockChangedAckPacket implements MinecraftPacket { 14 | private final int sequence; 15 | 16 | public ClientboundBlockChangedAckPacket(ByteBuf in) { 17 | this.sequence = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.sequence); 23 | } 24 | 25 | @Override 26 | public boolean shouldRunOnGameThread() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/player/ClientboundPlayerCombatEndPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ClientboundPlayerCombatEndPacket implements MinecraftPacket { 14 | private final int duration; 15 | 16 | public ClientboundPlayerCombatEndPacket(ByteBuf in) { 17 | this.duration = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.duration); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/player/ClientboundPlayerCombatEnterPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @NoArgsConstructor 12 | public class ClientboundPlayerCombatEnterPacket implements MinecraftPacket { 13 | 14 | public ClientboundPlayerCombatEnterPacket(ByteBuf in) { 15 | // no-op 16 | } 17 | 18 | @Override 19 | public void serialize(ByteBuf out) { 20 | // no-op 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/player/ClientboundPlayerRotationPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ClientboundPlayerRotationPacket implements MinecraftPacket { 13 | private final float yRot; 14 | private final float xRot; 15 | 16 | public ClientboundPlayerRotationPacket(ByteBuf in) { 17 | this.yRot = in.readFloat(); 18 | this.xRot = in.readFloat(); 19 | } 20 | 21 | @Override 22 | public void serialize(ByteBuf out) { 23 | out.writeFloat(this.yRot); 24 | out.writeFloat(this.xRot); 25 | } 26 | 27 | @Override 28 | public boolean shouldRunOnGameThread() { 29 | return true; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/entity/player/ClientboundSetHeldSlotPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ClientboundSetHeldSlotPacket implements MinecraftPacket { 14 | private final int slot; 15 | 16 | public ClientboundSetHeldSlotPacket(ByteBuf in) { 17 | this.slot = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.slot); 23 | } 24 | 25 | @Override 26 | public boolean shouldRunOnGameThread() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/inventory/ClientboundContainerClosePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ClientboundContainerClosePacket implements MinecraftPacket { 14 | private final int containerId; 15 | 16 | public ClientboundContainerClosePacket(ByteBuf in) { 17 | this.containerId = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.containerId); 23 | } 24 | 25 | @Override 26 | public boolean shouldRunOnGameThread() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundChunkBatchFinishedPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ClientboundChunkBatchFinishedPacket implements MinecraftPacket { 14 | private final int batchSize; 15 | 16 | public ClientboundChunkBatchFinishedPacket(ByteBuf in) { 17 | this.batchSize = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | public void serialize(ByteBuf out) { 21 | MinecraftTypes.writeVarInt(out, this.batchSize); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundChunkBatchStartPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | public class ClientboundChunkBatchStartPacket implements MinecraftPacket { 11 | 12 | public ClientboundChunkBatchStartPacket(ByteBuf in) { 13 | } 14 | 15 | public void serialize(ByteBuf out) { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundSetChunkCacheRadiusPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ClientboundSetChunkCacheRadiusPacket implements MinecraftPacket { 14 | private final int viewDistance; 15 | 16 | public ClientboundSetChunkCacheRadiusPacket(ByteBuf in) { 17 | this.viewDistance = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.viewDistance); 23 | } 24 | 25 | @Override 26 | public boolean shouldRunOnGameThread() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/border/ClientboundSetBorderSizePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level.border; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ClientboundSetBorderSizePacket implements MinecraftPacket { 13 | private final double size; 14 | 15 | public ClientboundSetBorderSizePacket(ByteBuf in) { 16 | this.size = in.readDouble(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeDouble(this.size); 22 | } 23 | 24 | @Override 25 | public boolean shouldRunOnGameThread() { 26 | return true; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/title/ClientboundClearTitlesPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.title; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ClientboundClearTitlesPacket implements MinecraftPacket { 13 | private final boolean resetTimes; 14 | 15 | public ClientboundClearTitlesPacket(ByteBuf in) { 16 | this.resetTimes = in.readBoolean(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeBoolean(this.resetTimes); 22 | } 23 | 24 | @Override 25 | public boolean shouldRunOnGameThread() { 26 | return true; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/ServerboundChatAckPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ServerboundChatAckPacket implements MinecraftPacket { 14 | private final int offset; 15 | 16 | public ServerboundChatAckPacket(ByteBuf in) { 17 | this.offset = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.offset); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/ServerboundChatCommandPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ServerboundChatCommandPacket implements MinecraftPacket { 14 | private final String command; 15 | 16 | public ServerboundChatCommandPacket(ByteBuf in) { 17 | this.command = MinecraftTypes.readString(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeString(out, this.command); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/ServerboundClientTickEndPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AccessLevel; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 11 | public class ServerboundClientTickEndPacket implements MinecraftPacket { 12 | public static final ServerboundClientTickEndPacket INSTANCE = new ServerboundClientTickEndPacket(); 13 | 14 | @Override 15 | public void serialize(ByteBuf out) { 16 | } 17 | 18 | @Override 19 | public boolean shouldRunOnGameThread() { 20 | return true; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/ServerboundConfigurationAcknowledgedPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | public class ServerboundConfigurationAcknowledgedPacket implements MinecraftPacket { 11 | 12 | public ServerboundConfigurationAcknowledgedPacket(ByteBuf in) { 13 | } 14 | 15 | public void serialize(ByteBuf out) { 16 | } 17 | 18 | @Override 19 | public boolean isTerminal() { 20 | return true; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/ServerboundLockDifficultyPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ServerboundLockDifficultyPacket implements MinecraftPacket { 13 | private final boolean locked; 14 | 15 | public ServerboundLockDifficultyPacket(ByteBuf in) { 16 | this.locked = in.readBoolean(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeBoolean(this.locked); 22 | } 23 | 24 | @Override 25 | public boolean shouldRunOnGameThread() { 26 | return true; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/ServerboundPlayerLoadedPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AccessLevel; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 11 | public class ServerboundPlayerLoadedPacket implements MinecraftPacket { 12 | public static final ServerboundPlayerLoadedPacket INSTANCE = new ServerboundPlayerLoadedPacket(); 13 | 14 | @Override 15 | public void serialize(ByteBuf out) { 16 | } 17 | 18 | @Override 19 | public boolean shouldRunOnGameThread() { 20 | return true; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundContainerClosePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ServerboundContainerClosePacket implements MinecraftPacket { 14 | private final int containerId; 15 | 16 | public ServerboundContainerClosePacket(ByteBuf in) { 17 | this.containerId = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.containerId); 23 | } 24 | 25 | @Override 26 | public boolean shouldRunOnGameThread() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundRecipeBookSeenRecipePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ServerboundRecipeBookSeenRecipePacket implements MinecraftPacket { 14 | private final int recipe; 15 | 16 | public ServerboundRecipeBookSeenRecipePacket(ByteBuf in) { 17 | this.recipe = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.recipe); 23 | } 24 | 25 | @Override 26 | public boolean shouldRunOnGameThread() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundRenameItemPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NonNull; 7 | import lombok.With; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 9 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 10 | 11 | @Data 12 | @With 13 | @AllArgsConstructor 14 | public class ServerboundRenameItemPacket implements MinecraftPacket { 15 | private final @NonNull String name; 16 | 17 | public ServerboundRenameItemPacket(ByteBuf in) { 18 | this.name = MinecraftTypes.readString(in); 19 | } 20 | 21 | @Override 22 | public void serialize(ByteBuf out) { 23 | MinecraftTypes.writeString(out, this.name); 24 | } 25 | 26 | @Override 27 | public boolean shouldRunOnGameThread() { 28 | return true; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/inventory/ServerboundSelectTradePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ServerboundSelectTradePacket implements MinecraftPacket { 14 | private final int slot; 15 | 16 | public ServerboundSelectTradePacket(ByteBuf in) { 17 | this.slot = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.slot); 23 | } 24 | 25 | @Override 26 | public boolean shouldRunOnGameThread() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/level/ServerboundAcceptTeleportationPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ServerboundAcceptTeleportationPacket implements MinecraftPacket { 14 | private final int id; 15 | 16 | public ServerboundAcceptTeleportationPacket(ByteBuf in) { 17 | this.id = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.id); 23 | } 24 | 25 | @Override 26 | public boolean shouldRunOnGameThread() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/level/ServerboundChunkBatchReceivedPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ServerboundChunkBatchReceivedPacket implements MinecraftPacket { 13 | private final float desiredChunksPerTick; 14 | 15 | public ServerboundChunkBatchReceivedPacket(ByteBuf in) { 16 | this.desiredChunksPerTick = in.readFloat(); 17 | } 18 | 19 | public void serialize(ByteBuf out) { 20 | out.writeFloat(this.desiredChunksPerTick); 21 | } 22 | 23 | @Override 24 | public boolean shouldRunOnGameThread() { 25 | return true; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ingame/serverbound/player/ServerboundSetCarriedItemPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ServerboundSetCarriedItemPacket implements MinecraftPacket { 13 | private final int slot; 14 | 15 | public ServerboundSetCarriedItemPacket(ByteBuf in) { 16 | this.slot = in.readShort(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeShort(this.slot); 22 | } 23 | 24 | @Override 25 | public boolean shouldRunOnGameThread() { 26 | return true; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/login/clientbound/ClientboundLoginCompressionPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.login.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 9 | 10 | @Data 11 | @With 12 | @AllArgsConstructor 13 | public class ClientboundLoginCompressionPacket implements MinecraftPacket { 14 | private final int threshold; 15 | 16 | public ClientboundLoginCompressionPacket(ByteBuf in) { 17 | this.threshold = MinecraftTypes.readVarInt(in); 18 | } 19 | 20 | @Override 21 | public void serialize(ByteBuf out) { 22 | MinecraftTypes.writeVarInt(out, this.threshold); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/login/serverbound/ServerboundLoginAcknowledgedPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.login.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | public class ServerboundLoginAcknowledgedPacket implements MinecraftPacket { 11 | public ServerboundLoginAcknowledgedPacket(ByteBuf in) { 12 | } 13 | 14 | @Override 15 | public void serialize(ByteBuf out) { 16 | } 17 | 18 | @Override 19 | public boolean isTerminal() { 20 | return true; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ping/clientbound/ClientboundPongResponsePacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ping.clientbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ClientboundPongResponsePacket implements MinecraftPacket { 13 | private final long pingTime; 14 | 15 | public ClientboundPongResponsePacket(ByteBuf in) { 16 | this.pingTime = in.readLong(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeLong(this.pingTime); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/ping/serverbound/ServerboundPingRequestPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ping.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.With; 7 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 8 | 9 | @Data 10 | @With 11 | @AllArgsConstructor 12 | public class ServerboundPingRequestPacket implements MinecraftPacket { 13 | private final long pingTime; 14 | 15 | public ServerboundPingRequestPacket(ByteBuf in) { 16 | this.pingTime = in.readLong(); 17 | } 18 | 19 | @Override 20 | public void serialize(ByteBuf out) { 21 | out.writeLong(this.pingTime); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /protocol/src/main/java/org/geysermc/mcprotocollib/protocol/packet/status/serverbound/ServerboundStatusRequestPacket.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.status.serverbound; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftPacket; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | public class ServerboundStatusRequestPacket implements MinecraftPacket { 11 | 12 | public ServerboundStatusRequestPacket(ByteBuf in) { 13 | } 14 | 15 | @Override 16 | public void serialize(ByteBuf out) { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /protocol/src/main/resources/networkCodec.nbt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeyserMC/MCProtocolLib/cf6e991f36243be6525d23be8da90600461753a4/protocol/src/main/resources/networkCodec.nbt -------------------------------------------------------------------------------- /protocol/src/main/resources/yggdrasil_session_pubkey.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeyserMC/MCProtocolLib/cf6e991f36243be6525d23be8da90600461753a4/protocol/src/main/resources/yggdrasil_session_pubkey.der -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/data/NetworkDataTests.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.data; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import io.netty.buffer.Unpooled; 5 | import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes; 6 | import org.geysermc.mcprotocollib.protocol.data.game.entity.Effect; 7 | import org.junit.jupiter.api.Test; 8 | 9 | import static org.junit.jupiter.api.Assertions.assertEquals; 10 | 11 | /** 12 | * Miscellaneous tests for reading and writing classes to/from the network 13 | */ 14 | public class NetworkDataTests { 15 | 16 | @Test 17 | public void testEffects() { 18 | for (Effect effect : Effect.VALUES) { 19 | ByteBuf buf = Unpooled.buffer(); 20 | MinecraftTypes.writeEffect(buf, effect); 21 | 22 | assertEquals(effect, MinecraftTypes.readEffect(buf)); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundBlockUpdatePacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level; 2 | 3 | import org.cloudburstmc.math.vector.Vector3i; 4 | import org.geysermc.mcprotocollib.protocol.data.game.level.block.BlockChangeEntry; 5 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 6 | import org.junit.jupiter.api.BeforeEach; 7 | 8 | public class ClientboundBlockUpdatePacketTest extends PacketTest { 9 | @BeforeEach 10 | public void setup() { 11 | this.setPackets( 12 | new ClientboundBlockUpdatePacket(new BlockChangeEntry( 13 | Vector3i.from(1, 61, -1), 3 14 | )) 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/ingame/clientbound/level/ClientboundSectionBlocksUpdatePacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level; 2 | 3 | import org.cloudburstmc.math.vector.Vector3i; 4 | import org.geysermc.mcprotocollib.protocol.data.game.level.block.BlockChangeEntry; 5 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 6 | import org.junit.jupiter.api.BeforeEach; 7 | 8 | public class ClientboundSectionBlocksUpdatePacketTest extends PacketTest { 9 | 10 | @BeforeEach 11 | public void setup() { 12 | this.setPackets( 13 | new ClientboundSectionBlocksUpdatePacket(3, 4, 12, new BlockChangeEntry(Vector3i.from(50, 65, 200), 3)) 14 | ); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/login/clientbound/ClientboundCustomQueryPacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.login.clientbound; 2 | 3 | import net.kyori.adventure.key.Key; 4 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 5 | import org.junit.jupiter.api.BeforeEach; 6 | 7 | import java.util.Random; 8 | 9 | public class ClientboundCustomQueryPacketTest extends PacketTest { 10 | @BeforeEach 11 | public void setup() { 12 | byte[] data = new byte[1024]; 13 | new Random().nextBytes(data); 14 | 15 | this.setPackets(new ClientboundCustomQueryPacket(0, Key.key("channel"), data)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/login/clientbound/ClientboundLoginCompressionPacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.login.clientbound; 2 | 3 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 4 | import org.junit.jupiter.api.BeforeEach; 5 | 6 | public class ClientboundLoginCompressionPacketTest extends PacketTest { 7 | @BeforeEach 8 | public void setup() { 9 | this.setPackets(new ClientboundLoginCompressionPacket(1)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/login/clientbound/ClientboundLoginDisconnectPacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.login.clientbound; 2 | 3 | import net.kyori.adventure.text.Component; 4 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 5 | import org.junit.jupiter.api.BeforeEach; 6 | 7 | public class ClientboundLoginDisconnectPacketTest extends PacketTest { 8 | @BeforeEach 9 | public void setup() { 10 | this.setPackets(new ClientboundLoginDisconnectPacket("Message"), 11 | new ClientboundLoginDisconnectPacket(Component.text("Message"))); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/login/clientbound/ClientboundLoginFinishedPacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.login.clientbound; 2 | 3 | import org.geysermc.mcprotocollib.auth.GameProfile; 4 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 5 | import org.junit.jupiter.api.BeforeEach; 6 | 7 | import java.util.UUID; 8 | 9 | public class ClientboundLoginFinishedPacketTest extends PacketTest { 10 | @BeforeEach 11 | public void setup() { 12 | this.setPackets(new ClientboundLoginFinishedPacket(new GameProfile(UUID.randomUUID(), "Username"))); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/login/serverbound/ServerboundCustomQueryAnswerPacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.login.serverbound; 2 | 3 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 4 | import org.junit.jupiter.api.BeforeEach; 5 | 6 | import java.util.Random; 7 | 8 | public class ServerboundCustomQueryAnswerPacketTest extends PacketTest { 9 | @BeforeEach 10 | public void setup() { 11 | byte[] data = new byte[1024]; 12 | new Random().nextBytes(data); 13 | 14 | this.setPackets(new ServerboundCustomQueryAnswerPacket(0), 15 | new ServerboundCustomQueryAnswerPacket(0, data)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/login/serverbound/ServerboundHelloPacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.login.serverbound; 2 | 3 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 4 | import org.junit.jupiter.api.BeforeEach; 5 | 6 | import java.util.UUID; 7 | 8 | public class ServerboundHelloPacketTest extends PacketTest { 9 | @BeforeEach 10 | public void setup() { 11 | this.setPackets(new ServerboundHelloPacket("Username", UUID.randomUUID())); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/status/clientbound/ClientboundPongResponsePacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.status.clientbound; 2 | 3 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 4 | import org.geysermc.mcprotocollib.protocol.packet.ping.clientbound.ClientboundPongResponsePacket; 5 | import org.junit.jupiter.api.BeforeEach; 6 | 7 | public class ClientboundPongResponsePacketTest extends PacketTest { 8 | @BeforeEach 9 | public void setup() { 10 | this.setPackets(new ClientboundPongResponsePacket(System.currentTimeMillis())); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/status/serverbound/ServerboundPingRequestPacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.status.serverbound; 2 | 3 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 4 | import org.geysermc.mcprotocollib.protocol.packet.ping.serverbound.ServerboundPingRequestPacket; 5 | import org.junit.jupiter.api.BeforeEach; 6 | 7 | public class ServerboundPingRequestPacketTest extends PacketTest { 8 | @BeforeEach 9 | public void setup() { 10 | this.setPackets(new ServerboundPingRequestPacket(System.currentTimeMillis())); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /protocol/src/test/java/org/geysermc/mcprotocollib/protocol/packet/status/serverbound/ServerboundStatusRequestPacketTest.java: -------------------------------------------------------------------------------- 1 | package org.geysermc.mcprotocollib.protocol.packet.status.serverbound; 2 | 3 | import org.geysermc.mcprotocollib.protocol.packet.PacketTest; 4 | import org.junit.jupiter.api.BeforeEach; 5 | 6 | public class ServerboundStatusRequestPacketTest extends PacketTest { 7 | @BeforeEach 8 | public void setup() { 9 | this.setPackets(new ServerboundStatusRequestPacket()); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /protocol/src/test/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | org.slf4j.simpleLogger.defaultLogLevel=debug 2 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") 2 | 3 | dependencyResolutionManagement { 4 | repositories { 5 | maven("https://repo.opencollab.dev/maven-releases/") { 6 | name = "opencollab-releases" 7 | } 8 | maven("https://repo.opencollab.dev/maven-snapshots/") { 9 | name = "opencollab-snapshots" 10 | } 11 | maven("https://jitpack.io") { 12 | name = "jitpack" 13 | } 14 | mavenCentral() 15 | } 16 | } 17 | 18 | rootProject.name = "mcprotocollib" 19 | 20 | include( 21 | "protocol", 22 | "example" 23 | ) 24 | --------------------------------------------------------------------------------