├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── gradle.yml │ └── pages.yml ├── .gitignore ├── LICENSE ├── README.md ├── api ├── build.gradle.kts └── src │ └── main │ ├── java │ └── eu │ │ └── sculkpowered │ │ └── server │ │ ├── MinecraftConfig.java │ │ ├── Server.java │ │ ├── Viewable.java │ │ ├── attribute │ │ ├── Attribute.java │ │ ├── AttributeModifier.java │ │ ├── AttributeOperation.java │ │ ├── AttributeSlot.java │ │ ├── AttributeValue.java │ │ └── Attributes.java │ │ ├── command │ │ ├── CommandHandler.java │ │ ├── CommandSource.java │ │ ├── Commands.java │ │ └── argument │ │ │ ├── ColorArgumentType.java │ │ │ └── TeamArgumentType.java │ │ ├── connection │ │ └── Connection.java │ │ ├── container │ │ ├── AnvilContainer.java │ │ ├── BeaconContainer.java │ │ ├── BrewingStandContainer.java │ │ ├── Container.java │ │ ├── EnchantmentTableContainer.java │ │ ├── FurnaceContainer.java │ │ ├── Inventory.java │ │ ├── LecternContainer.java │ │ ├── LoomContainer.java │ │ ├── StonecutterContainer.java │ │ ├── equipment │ │ │ ├── EntityEquipment.java │ │ │ └── EquipmentSlot.java │ │ └── item │ │ │ ├── ItemStack.java │ │ │ ├── Material.java │ │ │ └── data │ │ │ ├── BlockPredicates.java │ │ │ ├── DataComponent.java │ │ │ ├── DataComponentType.java │ │ │ ├── DataComponents.java │ │ │ ├── DyedColor.java │ │ │ ├── Food.java │ │ │ ├── ItemAttributes.java │ │ │ ├── ItemEnchantments.java │ │ │ ├── MapDecorations.java │ │ │ ├── MapPostProcessing.java │ │ │ ├── PotionContents.java │ │ │ ├── Rarity.java │ │ │ ├── Tool.java │ │ │ ├── Unbreakable.java │ │ │ └── Unit.java │ │ ├── damage │ │ └── DamageType.java │ │ ├── enchantment │ │ └── Enchantment.java │ │ ├── entity │ │ ├── Ageable.java │ │ ├── Allay.java │ │ ├── Animal.java │ │ ├── AreaEffectCloud.java │ │ ├── Armadillo.java │ │ ├── ArmorStand.java │ │ ├── Arrow.java │ │ ├── Axolotl.java │ │ ├── Bat.java │ │ ├── Bee.java │ │ ├── Blaze.java │ │ ├── BlockDisplay.java │ │ ├── Boat.java │ │ ├── Bogged.java │ │ ├── Breeze.java │ │ ├── BreezeWindCharge.java │ │ ├── Camel.java │ │ ├── Cat.java │ │ ├── CaveSpider.java │ │ ├── ChestBoat.java │ │ ├── ChestMinecart.java │ │ ├── Chicken.java │ │ ├── Cod.java │ │ ├── CommandBlockMinecart.java │ │ ├── Cow.java │ │ ├── Creeper.java │ │ ├── Display.java │ │ ├── Dolphin.java │ │ ├── Donkey.java │ │ ├── DragonFireball.java │ │ ├── Drowned.java │ │ ├── Egg.java │ │ ├── ElderGuardian.java │ │ ├── EndCrystal.java │ │ ├── EnderDragon.java │ │ ├── EnderPearl.java │ │ ├── Enderman.java │ │ ├── Endermite.java │ │ ├── Entity.java │ │ ├── EntityType.java │ │ ├── Evoker.java │ │ ├── EvokerFangs.java │ │ ├── ExperienceBottle.java │ │ ├── ExperienceOrb.java │ │ ├── EyeOfEnder.java │ │ ├── FallingBlock.java │ │ ├── Fireball.java │ │ ├── FireworkRocket.java │ │ ├── FishingBobber.java │ │ ├── Fox.java │ │ ├── Frog.java │ │ ├── FurnaceMinecart.java │ │ ├── Ghast.java │ │ ├── Giant.java │ │ ├── GlowItemFrame.java │ │ ├── GlowSquid.java │ │ ├── Goat.java │ │ ├── Guardian.java │ │ ├── Hoglin.java │ │ ├── HopperMinecart.java │ │ ├── Horse.java │ │ ├── Husk.java │ │ ├── Illusioner.java │ │ ├── Interaction.java │ │ ├── IronGolem.java │ │ ├── Item.java │ │ ├── ItemDisplay.java │ │ ├── ItemFrame.java │ │ ├── LeashKnot.java │ │ ├── LightningBolt.java │ │ ├── LivingEntity.java │ │ ├── Llama.java │ │ ├── LlamaSpit.java │ │ ├── MagmaCube.java │ │ ├── Minecart.java │ │ ├── Mob.java │ │ ├── Monster.java │ │ ├── Mooshroom.java │ │ ├── Mule.java │ │ ├── Ocelot.java │ │ ├── OminousItemSpawner.java │ │ ├── Painting.java │ │ ├── Panda.java │ │ ├── Parrot.java │ │ ├── Phantom.java │ │ ├── Pig.java │ │ ├── Piglin.java │ │ ├── PiglinBrute.java │ │ ├── Pillager.java │ │ ├── PolarBear.java │ │ ├── Potion.java │ │ ├── Projectile.java │ │ ├── Pufferfish.java │ │ ├── Rabbit.java │ │ ├── Raider.java │ │ ├── Ravager.java │ │ ├── Salmon.java │ │ ├── Sheep.java │ │ ├── Shulker.java │ │ ├── ShulkerBullet.java │ │ ├── Silverfish.java │ │ ├── Skeleton.java │ │ ├── SkeletonHorse.java │ │ ├── Slime.java │ │ ├── SmallFireball.java │ │ ├── Sniffer.java │ │ ├── SnowGolem.java │ │ ├── Snowball.java │ │ ├── SpawnerMinecart.java │ │ ├── SpectralArrow.java │ │ ├── Spider.java │ │ ├── Squid.java │ │ ├── Stray.java │ │ ├── Strider.java │ │ ├── Tadpole.java │ │ ├── Tameable.java │ │ ├── TextDisplay.java │ │ ├── Tnt.java │ │ ├── TntMinecart.java │ │ ├── TraderLlama.java │ │ ├── Trident.java │ │ ├── TropicalFish.java │ │ ├── Turtle.java │ │ ├── Vex.java │ │ ├── Villager.java │ │ ├── Vindicator.java │ │ ├── WanderingTrader.java │ │ ├── Warden.java │ │ ├── WindCharge.java │ │ ├── Witch.java │ │ ├── Wither.java │ │ ├── WitherSkeleton.java │ │ ├── WitherSkull.java │ │ ├── Wolf.java │ │ ├── Zoglin.java │ │ ├── Zombie.java │ │ ├── ZombieHorse.java │ │ ├── ZombieVillager.java │ │ ├── ZombifiedPiglin.java │ │ └── player │ │ │ ├── GameMode.java │ │ │ ├── GameProfile.java │ │ │ ├── Player.java │ │ │ ├── PlayerInfoEntry.java │ │ │ └── PlayerSettings.java │ │ ├── event │ │ ├── EventHandler.java │ │ ├── EventOrder.java │ │ ├── ResultedEvent.java │ │ ├── Subscribe.java │ │ ├── block │ │ │ ├── BlockBreakEvent.java │ │ │ └── BlockPlaceEvent.java │ │ ├── command │ │ │ └── CommandExecuteEvent.java │ │ ├── connection │ │ │ ├── PluginMessageEvent.java │ │ │ └── ServerPingEvent.java │ │ ├── lifecycle │ │ │ ├── ServerInitializeEvent.java │ │ │ └── ServerShutdownEvent.java │ │ └── player │ │ │ ├── PlayerAttackedEntityEvent.java │ │ │ ├── PlayerChatEvent.java │ │ │ ├── PlayerClickContainerButtonEvent.java │ │ │ ├── PlayerClickContainerEvent.java │ │ │ ├── PlayerDisconnectEvent.java │ │ │ ├── PlayerInitialEvent.java │ │ │ ├── PlayerJoinEvent.java │ │ │ └── PlayerUseItemEvent.java │ │ ├── plugin │ │ ├── Plugin.java │ │ ├── PluginAnnotationProcessor.java │ │ ├── PluginDescription.java │ │ └── PluginHandler.java │ │ ├── potion │ │ ├── CustomPotionEffect.java │ │ ├── MobEffectType.java │ │ ├── PotionEffect.java │ │ └── PotionType.java │ │ ├── registry │ │ ├── Registries.java │ │ └── Registry.java │ │ ├── scheduler │ │ └── Scheduler.java │ │ ├── scoreboard │ │ ├── DisplaySlot.java │ │ ├── NumberFormat.java │ │ ├── Score.java │ │ └── Scoreboard.java │ │ ├── team │ │ ├── Team.java │ │ └── TeamHandler.java │ │ └── world │ │ ├── Direction.java │ │ ├── Position.java │ │ ├── Vector.java │ │ ├── World.java │ │ ├── WorldLoader.java │ │ ├── WorldSaver.java │ │ ├── biome │ │ └── Biome.java │ │ ├── block │ │ ├── Block.java │ │ └── BlockState.java │ │ ├── chunk │ │ ├── Chunk.java │ │ ├── ChunkGenerator.java │ │ └── VoidGenerator.java │ │ └── dimension │ │ └── Dimension.java │ └── resources │ └── META-INF │ └── services │ └── javax.annotation.processing.Processor ├── build.gradle.kts ├── code-generator ├── build.gradle.kts └── src │ └── main │ └── java │ └── eu │ └── sculkpowered │ └── server │ └── code │ └── generator │ ├── BlockGenerator.java │ ├── ClassCreator.java │ ├── CodeGenerator.java │ ├── Constants.java │ ├── DataGenerator.java │ └── Generator.java ├── config └── checkstyle │ └── codestyle.xml ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── renovate.json ├── server ├── appender │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── java │ │ └── eu │ │ └── sculkpowered │ │ └── server │ │ └── terminal │ │ └── TerminalAppender.java ├── build.gradle.kts └── src │ ├── main │ ├── java │ │ └── eu │ │ │ └── sculkpowered │ │ │ └── server │ │ │ ├── Main.java │ │ │ ├── SculkConfiguration.java │ │ │ ├── SculkServer.java │ │ │ ├── Worker.java │ │ │ ├── adventure │ │ │ ├── AdventureLoggerProvider.java │ │ │ ├── BossBarListener.java │ │ │ └── BossBarProvider.java │ │ │ ├── attribute │ │ │ ├── AttributeRegistry.java │ │ │ └── SculkAttributeValue.java │ │ │ ├── command │ │ │ ├── SculkCommandHandler.java │ │ │ ├── argument │ │ │ │ ├── AdvancedArgumentSerializer.java │ │ │ │ ├── ArgumentSerializer.java │ │ │ │ ├── DoubleArgumentSerializer.java │ │ │ │ ├── FloatArgumentSerializer.java │ │ │ │ ├── IntegerArgumentSerializer.java │ │ │ │ ├── LongArgumentSerializer.java │ │ │ │ ├── SerializerRegistry.java │ │ │ │ └── StringArgumentSerializer.java │ │ │ └── defaults │ │ │ │ ├── InfoCommand.java │ │ │ │ └── StopCommand.java │ │ │ ├── container │ │ │ ├── AbstractContainer.java │ │ │ ├── GenericContainer.java │ │ │ ├── SculkAnvilContainer.java │ │ │ ├── SculkBeaconContainer.java │ │ │ ├── SculkBrewingStandContainer.java │ │ │ ├── SculkContainer.java │ │ │ ├── SculkEnchantingTableContainer.java │ │ │ ├── SculkFurnaceContainer.java │ │ │ ├── SculkInventory.java │ │ │ ├── SculkLecternContainer.java │ │ │ ├── SculkLoomContainer.java │ │ │ ├── SculkStonecutterContainer.java │ │ │ ├── equipment │ │ │ │ └── SculkEquipment.java │ │ │ └── item │ │ │ │ └── data │ │ │ │ ├── BinarySerializer.java │ │ │ │ ├── DataComponentTypeRegistry.java │ │ │ │ └── SculkDataComponentType.java │ │ │ ├── damage │ │ │ └── DamageTypeRegistry.java │ │ │ ├── entity │ │ │ ├── AbstractAnimal.java │ │ │ ├── AbstractDisplay.java │ │ │ ├── AbstractEntity.java │ │ │ ├── AbstractLivingEntity.java │ │ │ ├── AbstractMob.java │ │ │ ├── AbstractRaider.java │ │ │ ├── AbstractTameableAnimal.java │ │ │ ├── EntityClassToSupplierMap.java │ │ │ ├── Metadata.java │ │ │ ├── SculkAllay.java │ │ │ ├── SculkAreaEffectCloud.java │ │ │ ├── SculkArmadillo.java │ │ │ ├── SculkArmorStand.java │ │ │ ├── SculkArrow.java │ │ │ ├── SculkAxolotl.java │ │ │ ├── SculkBat.java │ │ │ ├── SculkBee.java │ │ │ ├── SculkBlaze.java │ │ │ ├── SculkBlockDisplay.java │ │ │ ├── SculkBoat.java │ │ │ ├── SculkBogged.java │ │ │ ├── SculkBreeze.java │ │ │ ├── SculkBreezeWindCharge.java │ │ │ ├── SculkCamel.java │ │ │ ├── SculkCat.java │ │ │ ├── SculkCaveSpider.java │ │ │ ├── SculkChestBoat.java │ │ │ ├── SculkChestMinecart.java │ │ │ ├── SculkChicken.java │ │ │ ├── SculkCod.java │ │ │ ├── SculkCommandBlockMinecart.java │ │ │ ├── SculkCow.java │ │ │ ├── SculkCreeper.java │ │ │ ├── SculkDolphin.java │ │ │ ├── SculkDonkey.java │ │ │ ├── SculkDragonFireball.java │ │ │ ├── SculkDrowned.java │ │ │ ├── SculkEgg.java │ │ │ ├── SculkElderGuardian.java │ │ │ ├── SculkEndCrystal.java │ │ │ ├── SculkEnderDragon.java │ │ │ ├── SculkEnderPearl.java │ │ │ ├── SculkEnderman.java │ │ │ ├── SculkEndermite.java │ │ │ ├── SculkEvoker.java │ │ │ ├── SculkEvokerFangs.java │ │ │ ├── SculkExperienceBottle.java │ │ │ ├── SculkExperienceOrb.java │ │ │ ├── SculkEyeOfEnder.java │ │ │ ├── SculkFallingBlock.java │ │ │ ├── SculkFireball.java │ │ │ ├── SculkFireworkRocket.java │ │ │ ├── SculkFishingBobber.java │ │ │ ├── SculkFox.java │ │ │ ├── SculkFrog.java │ │ │ ├── SculkFurnaceMinecart.java │ │ │ ├── SculkGhast.java │ │ │ ├── SculkGiant.java │ │ │ ├── SculkGlowItemFrame.java │ │ │ ├── SculkGlowSquid.java │ │ │ ├── SculkGoat.java │ │ │ ├── SculkGuardian.java │ │ │ ├── SculkHoglin.java │ │ │ ├── SculkHopperMinecart.java │ │ │ ├── SculkHorse.java │ │ │ ├── SculkHusk.java │ │ │ ├── SculkIllusioner.java │ │ │ ├── SculkInteraction.java │ │ │ ├── SculkIronGolem.java │ │ │ ├── SculkItem.java │ │ │ ├── SculkItemDisplay.java │ │ │ ├── SculkItemFrame.java │ │ │ ├── SculkLeashKnot.java │ │ │ ├── SculkLightningBolt.java │ │ │ ├── SculkLlama.java │ │ │ ├── SculkLlamaSpit.java │ │ │ ├── SculkMagmaCube.java │ │ │ ├── SculkMinecart.java │ │ │ ├── SculkMooshroom.java │ │ │ ├── SculkMule.java │ │ │ ├── SculkOcelot.java │ │ │ ├── SculkOminousItemSpawner.java │ │ │ ├── SculkPainting.java │ │ │ ├── SculkPanda.java │ │ │ ├── SculkParrot.java │ │ │ ├── SculkPhantom.java │ │ │ ├── SculkPig.java │ │ │ ├── SculkPiglin.java │ │ │ ├── SculkPiglinBrute.java │ │ │ ├── SculkPillager.java │ │ │ ├── SculkPolarBear.java │ │ │ ├── SculkPotion.java │ │ │ ├── SculkPufferfish.java │ │ │ ├── SculkRabbit.java │ │ │ ├── SculkRavager.java │ │ │ ├── SculkSalmon.java │ │ │ ├── SculkSheep.java │ │ │ ├── SculkShulker.java │ │ │ ├── SculkShulkerBullet.java │ │ │ ├── SculkSilverfish.java │ │ │ ├── SculkSkeleton.java │ │ │ ├── SculkSkeletonHorse.java │ │ │ ├── SculkSlime.java │ │ │ ├── SculkSmallFireball.java │ │ │ ├── SculkSniffer.java │ │ │ ├── SculkSnowGolem.java │ │ │ ├── SculkSnowball.java │ │ │ ├── SculkSpawnerMinecart.java │ │ │ ├── SculkSpectralArrow.java │ │ │ ├── SculkSpider.java │ │ │ ├── SculkSquid.java │ │ │ ├── SculkStray.java │ │ │ ├── SculkStrider.java │ │ │ ├── SculkTadpole.java │ │ │ ├── SculkTextDisplay.java │ │ │ ├── SculkTnt.java │ │ │ ├── SculkTntMinecart.java │ │ │ ├── SculkTraderLlama.java │ │ │ ├── SculkTrident.java │ │ │ ├── SculkTropicalFish.java │ │ │ ├── SculkTurtle.java │ │ │ ├── SculkVex.java │ │ │ ├── SculkVillager.java │ │ │ ├── SculkVindicator.java │ │ │ ├── SculkWanderingTrader.java │ │ │ ├── SculkWarden.java │ │ │ ├── SculkWindCharge.java │ │ │ ├── SculkWitch.java │ │ │ ├── SculkWither.java │ │ │ ├── SculkWitherSkeleton.java │ │ │ ├── SculkWitherSkull.java │ │ │ ├── SculkWolf.java │ │ │ ├── SculkZoglin.java │ │ │ ├── SculkZombie.java │ │ │ ├── SculkZombieHorse.java │ │ │ ├── SculkZombieVillager.java │ │ │ ├── SculkZombifiedPiglin.java │ │ │ ├── TeleportEntityPacket.java │ │ │ └── player │ │ │ │ ├── ClientInformationWrapper.java │ │ │ │ └── SculkPlayer.java │ │ │ ├── event │ │ │ └── SculkEventHandler.java │ │ │ ├── json │ │ │ ├── GameProfileDeserializer.java │ │ │ └── GameProfilePropertyDeserializer.java │ │ │ ├── plugin │ │ │ ├── PluginClassLoader.java │ │ │ └── SculkPluginHandler.java │ │ │ ├── protocol │ │ │ ├── Buffer.java │ │ │ ├── ComponentSerializer.java │ │ │ ├── Protocol.java │ │ │ ├── SculkConnection.java │ │ │ ├── State.java │ │ │ ├── netty │ │ │ │ ├── NettyServer.java │ │ │ │ ├── NettyServerInitializer.java │ │ │ │ └── codec │ │ │ │ │ ├── CipherDecoder.java │ │ │ │ │ ├── CipherEncoder.java │ │ │ │ │ ├── CompressorDecoder.java │ │ │ │ │ ├── CompressorEncoder.java │ │ │ │ │ ├── MinecraftDecoder.java │ │ │ │ │ ├── MinecraftEncoder.java │ │ │ │ │ ├── VarIntFrameDecoder.java │ │ │ │ │ └── VarIntLengthEncoder.java │ │ │ └── packet │ │ │ │ ├── ClientboundPacket.java │ │ │ │ ├── PacketHandler.java │ │ │ │ ├── ServerboundPacket.java │ │ │ │ ├── VarInt.java │ │ │ │ ├── clientbound │ │ │ │ ├── AddEntityPacket.java │ │ │ │ ├── AddExperienceOrbPacket.java │ │ │ │ ├── AnimatePacket.java │ │ │ │ ├── AwardStatsPacket.java │ │ │ │ ├── BlockChangedAckPacket.java │ │ │ │ ├── BlockDestructionPacket.java │ │ │ │ ├── BlockEntityDataPacket.java │ │ │ │ ├── BlockEventPacket.java │ │ │ │ ├── BlockUpdatePacket.java │ │ │ │ ├── BossEventPacket.java │ │ │ │ ├── ChangeDifficultyPacket.java │ │ │ │ ├── ClearTitlesPacket.java │ │ │ │ ├── CommandSuggestionsPacket.java │ │ │ │ ├── CommandsPacket.java │ │ │ │ ├── ContainerSetContentPacket.java │ │ │ │ ├── ContainerSetDataPacket.java │ │ │ │ ├── ContainerSetSlotPacket.java │ │ │ │ ├── CooldownPacket.java │ │ │ │ ├── CustomChatCompletionsPacket.java │ │ │ │ ├── CustomQueryPacket.java │ │ │ │ ├── DisconnectPacket.java │ │ │ │ ├── EntityEventPacket.java │ │ │ │ ├── GameEventPacket.java │ │ │ │ ├── GameProfilePacket.java │ │ │ │ ├── HelloPacket.java │ │ │ │ ├── LevelChunkWithLightPacket.java │ │ │ │ ├── LoginCompressionPacket.java │ │ │ │ ├── LoginDisconnect.java │ │ │ │ ├── LoginPacket.java │ │ │ │ ├── MoveEntityPosPacket.java │ │ │ │ ├── MoveEntityPosRotPacket.java │ │ │ │ ├── MoveEntityRot.java │ │ │ │ ├── OpenScreenPacket.java │ │ │ │ ├── PlayerAbilitiesPacket.java │ │ │ │ ├── PlayerInfoRemovePacket.java │ │ │ │ ├── PlayerInfoUpdatePacket.java │ │ │ │ ├── PlayerPositionPacket.java │ │ │ │ ├── RegistryDataPacket.java │ │ │ │ ├── RemoveEntitiesPacket.java │ │ │ │ ├── ResetScorePacket.java │ │ │ │ ├── ResourcePackPopPacket.java │ │ │ │ ├── ResourcePackPushPacket.java │ │ │ │ ├── RespawnPacket.java │ │ │ │ ├── RotateHeadPacket.java │ │ │ │ ├── SetActionBarTextPacket.java │ │ │ │ ├── SetChunkCacheCenterPacket.java │ │ │ │ ├── SetChunkCacheRadiusPacket.java │ │ │ │ ├── SetDefaultSpawnPositionPacket.java │ │ │ │ ├── SetDisplayObjectivePacket.java │ │ │ │ ├── SetEntityDataPacket.java │ │ │ │ ├── SetEntityMotionPacket.java │ │ │ │ ├── SetEquipmentPacket.java │ │ │ │ ├── SetExperiencePacket.java │ │ │ │ ├── SetHealthPacket.java │ │ │ │ ├── SetObjectivePacket.java │ │ │ │ ├── SetPlayerTeamPacket.java │ │ │ │ ├── SetScorePacket.java │ │ │ │ ├── SetSimulationDistancePacket.java │ │ │ │ ├── SetSubtitleTextPacket.java │ │ │ │ ├── SetTimePacket.java │ │ │ │ ├── SetTitleTextPacket.java │ │ │ │ ├── SetTitlesAnimationPacket.java │ │ │ │ ├── SoundEntityPacket.java │ │ │ │ ├── SoundPacket.java │ │ │ │ ├── StatusResponsePacket.java │ │ │ │ ├── StopSoundPacket.java │ │ │ │ ├── SystemChatPacket.java │ │ │ │ ├── TabListPacket.java │ │ │ │ ├── TakeItemEntityPacket.java │ │ │ │ ├── UpdateAttributesPacket.java │ │ │ │ ├── UpdateEnabledFeaturesPacket.java │ │ │ │ ├── UpdateRecipesPacket.java │ │ │ │ └── UpdateTagsPacket.java │ │ │ │ ├── handler │ │ │ │ ├── ConfigPacketHandler.java │ │ │ │ ├── HandshakePacketHandler.java │ │ │ │ ├── LoginPacketHandler.java │ │ │ │ ├── PlayPacketHandler.java │ │ │ │ └── StatusPacketHandler.java │ │ │ │ ├── serverbound │ │ │ │ ├── AcceptTeleportationPacket.java │ │ │ │ ├── ChatCommandPacket.java │ │ │ │ ├── ChatPacket.java │ │ │ │ ├── ChatSessionUpdatePacket.java │ │ │ │ ├── ClientCommandPacket.java │ │ │ │ ├── ClientInformationPacket.java │ │ │ │ ├── CommandSuggestionsPacket.java │ │ │ │ ├── ContainerButtonClickPacket.java │ │ │ │ ├── ContainerClickPacket.java │ │ │ │ ├── CustomQueryAnswerPacket.java │ │ │ │ ├── EditBookPacket.java │ │ │ │ ├── HelloPacket.java │ │ │ │ ├── Intention.java │ │ │ │ ├── InteractPacket.java │ │ │ │ ├── KeyPacket.java │ │ │ │ ├── LoginAcknowledgedPacket.java │ │ │ │ ├── MovePlayerPosPacket.java │ │ │ │ ├── MovePlayerPosRotPacket.java │ │ │ │ ├── MovePlayerRotPacket.java │ │ │ │ ├── MovePlayerStatusOnlyPacket.java │ │ │ │ ├── PlayerActionPacket.java │ │ │ │ ├── PlayerCommandPacket.java │ │ │ │ ├── RecipeBookChangeSettingsPacket.java │ │ │ │ ├── SetCreativeModeSlotPacket.java │ │ │ │ ├── StatusRequest.java │ │ │ │ ├── SwingPacket.java │ │ │ │ ├── TeleportToEntityPacket.java │ │ │ │ ├── UseItemOnPacket.java │ │ │ │ └── UseItemPacket.java │ │ │ │ └── shared │ │ │ │ ├── CarriedItemPacket.java │ │ │ │ ├── ContainerClosePacket.java │ │ │ │ ├── CustomPayloadPacket.java │ │ │ │ ├── FinishConfigurationPacket.java │ │ │ │ ├── KeepAlivePacket.java │ │ │ │ └── StatusPingPacket.java │ │ │ ├── registry │ │ │ ├── EnumRegistry.java │ │ │ └── SimpleRegistry.java │ │ │ ├── scheduler │ │ │ └── SculkScheduler.java │ │ │ ├── scoreboard │ │ │ ├── SculkScore.java │ │ │ └── SculkScoreboard.java │ │ │ ├── team │ │ │ ├── SculkTeam.java │ │ │ └── SculkTeamHandler.java │ │ │ ├── terminal │ │ │ └── SimpleTerminal.java │ │ │ ├── util │ │ │ ├── Constants.java │ │ │ ├── CoordinateUtil.java │ │ │ ├── EncryptionUtil.java │ │ │ ├── ItemList.java │ │ │ ├── MojangUtil.java │ │ │ └── Utf8.java │ │ │ └── world │ │ │ ├── SculkWorld.java │ │ │ ├── SlimeFormat.java │ │ │ ├── block │ │ │ ├── BlockParent.java │ │ │ ├── BlockRegistry.java │ │ │ └── SculkBlockState.java │ │ │ ├── chunk │ │ │ ├── LightData.java │ │ │ ├── SculkChunk.java │ │ │ └── loader │ │ │ │ ├── AnvilLoader.java │ │ │ │ ├── ChunkLoader.java │ │ │ │ └── DefaultChunkLoader.java │ │ │ └── section │ │ │ ├── DirectIndirectPalette.java │ │ │ ├── EmptyPalette.java │ │ │ ├── Palette.java │ │ │ ├── PaletteHolder.java │ │ │ ├── Section.java │ │ │ └── SingleValuedPalette.java │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ ├── net.kyori.adventure.bossbar.BossBarImplementation$Provider │ │ │ └── net.kyori.adventure.text.logger.slf4j.ComponentLoggerProvider │ │ ├── log4j2.xml │ │ └── registries │ │ └── blocks │ └── test │ └── java │ └── eu │ └── sculkpowered │ └── server │ └── test │ ├── block │ └── BlockTest.java │ ├── event │ └── EventTest.java │ └── plugin │ └── TestPlugin.java └── settings.gradle.kts /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 16 | **Expected behavior** 17 | A clear and concise description of what you expected to happen. 18 | 19 | **Screenshots** 20 | If applicable, add screenshots to help explain your problem. 21 | 22 | **System (please complete the following information):** 23 | 24 | - OS: 25 | - Version: 26 | 27 | **Additional context** 28 | Add any other context about the problem here. 29 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | 25 | target 26 | .idea 27 | *.iml 28 | 29 | .gradle -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/MinecraftConfig.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | public interface MinecraftConfig { 6 | 7 | @NotNull String host(); 8 | 9 | int port(); 10 | 11 | @NotNull Mode mode(); 12 | 13 | enum Mode { 14 | ONLINE, 15 | OFFLINE, 16 | BUNGEECORD 17 | } 18 | 19 | int compressionThreshold(); 20 | 21 | int compressionLevel(); 22 | } 23 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/Viewable.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server; 2 | 3 | import eu.sculkpowered.server.entity.player.Player; 4 | import java.util.Collection; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * Represents an object that is viewable by players. 9 | */ 10 | public interface Viewable { 11 | 12 | /** 13 | * Gets the viewers of the object. 14 | * 15 | * @return the viewers 16 | * @since 1.0.0 17 | */ 18 | @NotNull Collection viewers(); 19 | 20 | /** 21 | * Adds a viewer. 22 | * 23 | * @param player the viewer to add 24 | * @return whether the viewer was added 25 | * @since 1.0.0 26 | */ 27 | boolean addViewer(@NotNull Player player); 28 | 29 | /** 30 | * Removes a viewer. 31 | * 32 | * @param player the viewer to remove 33 | * @return whether the viewer was removed 34 | * @since 1.0.0 35 | */ 36 | boolean removeViewer(@NotNull Player player); 37 | } 38 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/attribute/Attribute.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.attribute; 2 | 3 | import eu.sculkpowered.server.registry.Registry.Entry; 4 | import net.kyori.adventure.key.Key; 5 | import net.kyori.adventure.nbt.CompoundBinaryTag; 6 | import org.intellij.lang.annotations.Subst; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | public record Attribute( 10 | @NotNull Key key, 11 | int id, 12 | float def, 13 | float min, 14 | float max 15 | ) implements Entry { 16 | 17 | public Attribute(@Subst("value") String key, int id, float def, float min, float max) { 18 | this(Key.key(Key.MINECRAFT_NAMESPACE, key), id, def, min, max); 19 | } 20 | 21 | @Override 22 | public @NotNull CompoundBinaryTag asNBT() { 23 | return CompoundBinaryTag.empty(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/attribute/AttributeModifier.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.attribute; 2 | 3 | import java.util.UUID; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public record AttributeModifier( 7 | @NotNull UUID uniqueId, 8 | @NotNull String name, 9 | double amount, 10 | @NotNull AttributeOperation operation 11 | ) { 12 | } 13 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/attribute/AttributeOperation.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.attribute; 2 | 3 | public enum AttributeOperation { 4 | 5 | ADD_VALUE, 6 | MULTIPLY_BASE, 7 | MULTIPLY 8 | } 9 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/attribute/AttributeValue.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.attribute; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | public interface AttributeValue { 6 | 7 | /** 8 | * Sets the base value. 9 | * 10 | * @param value the new base value 11 | * @since 1.0.0 12 | */ 13 | void baseValue(double value); 14 | 15 | /** 16 | * Gets the base value. 17 | * 18 | * @return the base value 19 | * @since 1.0.0 20 | */ 21 | double baseValue(); 22 | 23 | /** 24 | * @since 1.0.0 25 | */ 26 | void addModifier(@NotNull AttributeModifier modifier); 27 | 28 | /** 29 | * @since 1.0.0 30 | */ 31 | void removeModifier(@NotNull AttributeModifier modifier); 32 | 33 | /** 34 | * @return the calculated value 35 | * @since 1.0.0 36 | */ 37 | double calculatedValue(); 38 | } 39 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/command/CommandHandler.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.command; 2 | 3 | import com.mojang.brigadier.tree.LiteralCommandNode; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Handles the registration and execution of commands. 8 | */ 9 | public interface CommandHandler { 10 | 11 | /** 12 | * Registers the command. 13 | * 14 | * @param node the command node to register 15 | * @return this command handler 16 | * @since 1.0.0 17 | */ 18 | @NotNull CommandHandler register(@NotNull LiteralCommandNode node); 19 | 20 | /** 21 | * Executes the command as the specified {@link CommandSource}. 22 | * 23 | * @param source the source of the command 24 | * @param command the command to run 25 | * @since 1.0.0 26 | */ 27 | void execute(@NotNull CommandSource source, @NotNull String command); 28 | } 29 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/command/CommandSource.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.command; 2 | 3 | import net.kyori.adventure.audience.Audience; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Represents an object that is a source of a command. 8 | */ 9 | public interface CommandSource extends Audience { 10 | 11 | /** 12 | * Checks if the player has the permission 13 | * 14 | * @param permission the permission to test 15 | * @return whether the player has the permission 16 | * @since 1.0.0 17 | */ 18 | boolean hasPermission(@NotNull String permission); 19 | } 20 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/command/Commands.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.command; 2 | 3 | import com.mojang.brigadier.arguments.ArgumentType; 4 | import com.mojang.brigadier.builder.LiteralArgumentBuilder; 5 | import com.mojang.brigadier.builder.RequiredArgumentBuilder; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | /** 9 | * Util class for commands. 10 | */ 11 | public final class Commands { 12 | 13 | public static LiteralArgumentBuilder literal(final @NotNull String name) { 14 | return LiteralArgumentBuilder.literal(name); 15 | } 16 | 17 | public static RequiredArgumentBuilder argument( 18 | final @NotNull String name, final ArgumentType type) { 19 | return RequiredArgumentBuilder.argument(name, type); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/command/argument/ColorArgumentType.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.command.argument; 2 | 3 | import com.mojang.brigadier.StringReader; 4 | import com.mojang.brigadier.arguments.ArgumentType; 5 | import com.mojang.brigadier.exceptions.CommandSyntaxException; 6 | import net.kyori.adventure.text.format.NamedTextColor; 7 | 8 | public final class ColorArgumentType implements ArgumentType { 9 | 10 | private static final ColorArgumentType COLOR_ARGUMENT_TYPE = new ColorArgumentType(); 11 | 12 | private ColorArgumentType() {} 13 | 14 | public static ColorArgumentType color() { 15 | return COLOR_ARGUMENT_TYPE; 16 | } 17 | 18 | @Override 19 | public NamedTextColor parse(StringReader reader) throws CommandSyntaxException { 20 | return NamedTextColor.NAMES.value(reader.readString()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/connection/Connection.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.connection; 2 | 3 | import java.net.SocketAddress; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Represents a connection to the server. 8 | */ 9 | public interface Connection { 10 | 11 | /** 12 | * Gets the protocol version of the client connection. 13 | * 14 | * @return the protocol version 15 | * @since 1.0.0 16 | */ 17 | int protocolVersion(); 18 | 19 | /** 20 | * Gets the address of the connection. 21 | * 22 | * @return the address 23 | * @since 1.0.0 24 | */ 25 | @NotNull SocketAddress address(); 26 | } 27 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/AnvilContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | /** 4 | * Represents a container of an anvil block. 5 | */ 6 | public interface AnvilContainer extends Container { 7 | 8 | /** 9 | * Sets the repair cost to display. 10 | * 11 | * @param repairCost the repair cost 12 | * @since 1.0.0 13 | */ 14 | void repairCost(int repairCost); 15 | 16 | /** 17 | * Gets the current repair cost of the container. 18 | * 19 | * @return the container's repair cost 20 | * @since 1.0.0 21 | */ 22 | int repairCost(); 23 | } 24 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/BrewingStandContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | import org.jetbrains.annotations.Range; 4 | 5 | /** 6 | * Represents a container of a brewing stand. 7 | */ 8 | public interface BrewingStandContainer extends Container { 9 | 10 | /** 11 | * Sets the brew time. 12 | * 13 | * @param brewTime the brew time to set 14 | * @since 1.0.0 15 | */ 16 | void brewTime(int brewTime); 17 | 18 | /** 19 | * Gets the brew time. 20 | * 21 | * @return the brew time 22 | * @since 1.0.0 23 | */ 24 | int brewTime(); 25 | 26 | /** 27 | * Sets the fuel time. 28 | * 29 | * @param fuelTime the fuel time to set 30 | * @since 1.0.0 31 | */ 32 | void fuelTime(@Range(from = 0, to = 20) int fuelTime); 33 | 34 | /** 35 | * Gets the fuel time. 36 | * 37 | * @return the fuel time 38 | * @since 1.0.0 39 | */ 40 | int fuelTime(); 41 | } 42 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/Inventory.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | import eu.sculkpowered.server.container.equipment.EntityEquipment; 4 | 5 | /** 6 | * Represents an inventory of a player. 7 | */ 8 | public interface Inventory extends Container, EntityEquipment { 9 | 10 | /** 11 | * Resends the full inventory to the player. 12 | * 13 | * @since 1.0.0 14 | */ 15 | void resend(); 16 | } 17 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/LecternContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | /** 4 | * Represents a container of a lectern block. 5 | */ 6 | public interface LecternContainer extends Container { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | void page(int page); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | int page(); 17 | } 18 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/LoomContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | /** 4 | * Represents a container of a loom block. 5 | */ 6 | public interface LoomContainer extends Container { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | void selectedPattern(int pattern); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | int selectedPattern(); 17 | } 18 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/StonecutterContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | /** 4 | * Represents a container of a stone cutter. 5 | */ 6 | public interface StonecutterContainer extends Container { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | void selectedRecipe(int recipe); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | int selectedRecipe(); 17 | } 18 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/equipment/EquipmentSlot.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.equipment; 2 | 3 | public enum EquipmentSlot { 4 | 5 | MAIN_HAND { 6 | @Override 7 | public boolean isHand() { 8 | return true; 9 | } 10 | }, 11 | OFF_HAND { 12 | @Override 13 | public boolean isHand() { 14 | return true; 15 | } 16 | }, 17 | FEET { 18 | @Override 19 | public boolean isArmor() { 20 | return true; 21 | } 22 | }, 23 | LEGS { 24 | @Override 25 | public boolean isArmor() { 26 | return true; 27 | } 28 | }, 29 | CHEST { 30 | @Override 31 | public boolean isArmor() { 32 | return true; 33 | } 34 | }, 35 | HEAD { 36 | @Override 37 | public boolean isArmor() { 38 | return true; 39 | } 40 | }, 41 | BODY; 42 | 43 | public boolean isHand() { 44 | return false; 45 | } 46 | 47 | public boolean isArmor() { 48 | return false; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/BlockPredicates.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | public final class BlockPredicates { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/DataComponentType.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | import eu.sculkpowered.server.registry.Registry; 4 | import net.kyori.adventure.nbt.BinaryTag; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public interface DataComponentType extends Registry.Entry { 8 | 9 | boolean serializable(); 10 | 11 | BinaryTag valueToBinary(@NotNull T value); 12 | 13 | T binaryToValue(@NotNull BinaryTag binaryTag); 14 | } 15 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/DyedColor.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | import net.kyori.adventure.util.RGBLike; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public record DyedColor( 7 | @NotNull RGBLike color, 8 | boolean showInTooltip 9 | ) { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/Food.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | public final class Food { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/ItemAttributes.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | import eu.sculkpowered.server.attribute.Attribute; 4 | import eu.sculkpowered.server.attribute.AttributeModifier; 5 | import eu.sculkpowered.server.attribute.AttributeSlot; 6 | import java.util.List; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | public record ItemAttributes( 10 | @NotNull List attributes, 11 | boolean showInTooltip 12 | ) { 13 | 14 | public record Entry( 15 | @NotNull Attribute attribute, 16 | @NotNull AttributeModifier modifier, 17 | @NotNull AttributeSlot slot 18 | ) { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/ItemEnchantments.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | import eu.sculkpowered.server.enchantment.Enchantment; 4 | import java.util.Map; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public record ItemEnchantments( 8 | @NotNull Map enchantments, 9 | boolean showInTooltip 10 | ) { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/MapDecorations.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | public final class MapDecorations { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/MapPostProcessing.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | public final class MapPostProcessing { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/PotionContents.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | import eu.sculkpowered.server.potion.CustomPotionEffect; 4 | import eu.sculkpowered.server.potion.PotionType; 5 | import java.util.List; 6 | import net.kyori.adventure.util.RGBLike; 7 | import org.jetbrains.annotations.NotNull; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | public record PotionContents( 11 | @Nullable PotionType potion, 12 | @Nullable RGBLike color, 13 | @NotNull List customEffects 14 | ) { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/Rarity.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | public enum Rarity { 4 | 5 | COMMON("common"), 6 | UNCOMMON("uncommon"), 7 | RARE("rare"), 8 | EPIC("epic"); 9 | 10 | private final String key; 11 | 12 | Rarity(final String key) { 13 | this.key = key; 14 | } 15 | 16 | public String key() { 17 | return this.key; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/Tool.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | public final class Tool { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/Unbreakable.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | public final class Unbreakable { 6 | 7 | private static final Unbreakable TOOLTIP = new Unbreakable(true); 8 | private static final Unbreakable NO_TOOLTIP = new Unbreakable(false); 9 | 10 | private final boolean showInTooltip; 11 | 12 | private Unbreakable(final boolean showInTooltip) { 13 | this.showInTooltip = showInTooltip; 14 | } 15 | 16 | public boolean showInTooltip() { 17 | return this.showInTooltip; 18 | } 19 | 20 | public static @NotNull Unbreakable showInTooltip(final boolean showTooltip) { 21 | return showTooltip ? TOOLTIP : NO_TOOLTIP; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/container/item/data/Unit.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | public final class Unit { 4 | 5 | public static final Unit INSTANCE = new Unit(); 6 | 7 | private Unit() { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Ageable.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an entity that can age. 5 | */ 6 | public interface Ageable { 7 | 8 | /** 9 | * Gets if the entity is a baby or not. 10 | * 11 | * @return true if it is a baby 12 | * @since 1.0.0 13 | */ 14 | boolean baby(); 15 | 16 | /** 17 | * Gets if the entity is an adult or not. 18 | * 19 | * @return true if it is an adult 20 | * @since 1.0.0 21 | */ 22 | boolean adult(); 23 | 24 | /** 25 | * Sets the entity to a baby or not. 26 | * 27 | * @param baby whether the entity should be a baby 28 | */ 29 | void setBaby(boolean baby); 30 | } 31 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Allay.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an Allay. 5 | */ 6 | public interface Allay extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Animal.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an animal. 5 | */ 6 | public interface Animal extends Mob, Ageable { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/AreaEffectCloud.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an area entity effect cloud entity. 5 | */ 6 | public interface AreaEffectCloud extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Armadillo.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an armadillo entity. 5 | */ 6 | public interface Armadillo extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Arrow.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an arrow entity. 5 | */ 6 | public interface Arrow extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Axolotl.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | /** 6 | * Represents an axolotl entity. 7 | */ 8 | public interface Axolotl extends Animal { 9 | 10 | /** 11 | * @since 1.0.0 12 | */ 13 | @NotNull Axolotl.Variant variant(); 14 | 15 | /** 16 | * @since 1.0.0 17 | */ 18 | void variant(@NotNull Variant variant); 19 | 20 | /** 21 | * @since 1.0.0 22 | */ 23 | boolean playingDead(); 24 | 25 | /** 26 | * @since 1.0.0 27 | */ 28 | void playingDead(boolean playingDead); 29 | 30 | enum Variant { 31 | LUCY, 32 | WILD, 33 | GOLD, 34 | CYAN, 35 | BLUE 36 | } 37 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Bat.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a bat entity. 5 | */ 6 | public interface Bat extends Mob { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | boolean hanging(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void hanging(boolean hanging); 17 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Bee.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a bee entity. 5 | */ 6 | public interface Bee extends Animal { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | boolean angry(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void angry(boolean angry); 17 | 18 | /** 19 | * @since 1.0.0 20 | */ 21 | boolean stung(); 22 | 23 | /** 24 | * @since 1.0.0 25 | */ 26 | void stung(boolean stung); 27 | 28 | /** 29 | * @since 1.0.0 30 | */ 31 | boolean nectar(); 32 | 33 | /** 34 | * @since 1.0.0 35 | */ 36 | void nectar(boolean nectar); 37 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Blaze.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a blaze entity. 5 | */ 6 | public interface Blaze extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/BlockDisplay.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.world.block.BlockState; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Represents a block display entity. 8 | */ 9 | public interface BlockDisplay extends Display { 10 | 11 | /** 12 | * @since 1.0.0 13 | */ 14 | @NotNull BlockState block(); 15 | 16 | /** 17 | * @since 1.0.0 18 | */ 19 | void block(@NotNull BlockState block); 20 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Boat.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a boat entity. 5 | */ 6 | public interface Boat extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Bogged.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a bogged entity. 5 | */ 6 | public interface Bogged extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Breeze.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a breeze entity. 5 | */ 6 | public interface Breeze extends Entity {} -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/BreezeWindCharge.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a breeze wind charge entity. 5 | */ 6 | public interface BreezeWindCharge extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Camel.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a camel entity. 5 | */ 6 | public interface Camel extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Cat.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a cat entity. 5 | */ 6 | public interface Cat extends Animal, Tameable { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/CaveSpider.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a cave spider entity. 5 | */ 6 | public interface CaveSpider extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ChestBoat.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a chest boat entity. 5 | */ 6 | public interface ChestBoat extends Boat { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ChestMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a chest minecart entity. 5 | */ 6 | public interface ChestMinecart extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Chicken.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a chicken entity. 5 | */ 6 | public interface Chicken extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Cod.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a cod entity. 5 | */ 6 | public interface Cod extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/CommandBlockMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a command block minecart entity. 5 | */ 6 | public interface CommandBlockMinecart extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Cow.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a cow entity. 5 | */ 6 | public interface Cow extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Creeper.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a creeper entity. 5 | */ 6 | public interface Creeper extends Mob { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | boolean isIdling(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void idling(); 17 | 18 | /** 19 | * @since 1.0.0 20 | */ 21 | boolean isFused(); 22 | 23 | /** 24 | * @since 1.0.0 25 | */ 26 | void fusing(); 27 | 28 | /** 29 | * @since 1.0.0 30 | */ 31 | boolean isCharged(); 32 | 33 | /** 34 | * @since 1.0.0 35 | */ 36 | void charged(boolean charged); 37 | 38 | /** 39 | * @since 1.0.0 40 | */ 41 | boolean isIgnited(); 42 | 43 | /** 44 | * @since 1.0.0 45 | */ 46 | void ignited(boolean ignited); 47 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Dolphin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a dolphin entity. 5 | */ 6 | public interface Dolphin extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Donkey.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a donkey entity. 5 | */ 6 | public interface Donkey extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/DragonFireball.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a dragon fireball entity. 5 | */ 6 | public interface DragonFireball extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Drowned.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a drowned entity. 5 | */ 6 | public interface Drowned extends Zombie { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Egg.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an egg entity. 5 | */ 6 | public interface Egg extends Projectile { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ElderGuardian.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an elder guardian entity. 5 | */ 6 | public interface ElderGuardian extends Guardian { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/EndCrystal.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an end crystal entity. 5 | */ 6 | public interface EndCrystal extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/EnderDragon.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an ender dragon entity. 5 | */ 6 | public interface EnderDragon extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/EnderPearl.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an ender pearl entity. 5 | */ 6 | public interface EnderPearl extends Projectile { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Enderman.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an enderman entity. 5 | */ 6 | public interface Enderman extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Endermite.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an endermite entity. 5 | */ 6 | public interface Endermite extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Evoker.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an evoker entity. 5 | */ 6 | public interface Evoker extends Raider { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/EvokerFangs.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an evoker fangs entity. 5 | */ 6 | public interface EvokerFangs extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ExperienceBottle.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an experience bottle entity. 5 | */ 6 | public interface ExperienceBottle extends Projectile { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ExperienceOrb.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an experience orb entity. 5 | */ 6 | public interface ExperienceOrb extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/EyeOfEnder.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an eye of ender entity. 5 | */ 6 | public interface EyeOfEnder extends Projectile { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/FallingBlock.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a falling block entity. 5 | */ 6 | public interface FallingBlock extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Fireball.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a fireball entity. 5 | */ 6 | public interface Fireball extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/FireworkRocket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a firework rocket entity. 5 | */ 6 | public interface FireworkRocket extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/FishingBobber.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a fishing bobber entity. 5 | */ 6 | public interface FishingBobber extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Fox.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a fox entity. 5 | */ 6 | public interface Fox extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Frog.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a frog entity. 5 | */ 6 | public interface Frog extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/FurnaceMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a furnace minecart entity. 5 | */ 6 | public interface FurnaceMinecart extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Ghast.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a ghast entity. 5 | */ 6 | public interface Ghast extends Mob { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | boolean attacking(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void attacking(boolean attacking); 17 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Giant.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a giant entity. 5 | */ 6 | public interface Giant extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/GlowItemFrame.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a glow item frame entity. 5 | */ 6 | public interface GlowItemFrame extends ItemFrame { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/GlowSquid.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a glow squid entity. 5 | */ 6 | public interface GlowSquid extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Goat.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a goat entity. 5 | */ 6 | public interface Goat extends Animal { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | boolean isScreaming(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void isScreaming(boolean screaming); 17 | 18 | /** 19 | * @since 1.0.0 20 | */ 21 | boolean hasLeftHorn(); 22 | 23 | /** 24 | * @since 1.0.0 25 | */ 26 | void hasLeftHorn(boolean leftHorn); 27 | 28 | /** 29 | * @since 1.0.0 30 | */ 31 | boolean hasRightHorn(); 32 | 33 | /** 34 | * @since 1.0.0 35 | */ 36 | void rightHorn(boolean rightHorn); 37 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Guardian.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a guardian entity. 5 | */ 6 | public interface Guardian extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Hoglin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a hoglin entity. 5 | */ 6 | public interface Hoglin extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/HopperMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a hopper minecart entity. 5 | */ 6 | public interface HopperMinecart extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Horse.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a horse entity. 5 | */ 6 | public interface Horse extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Husk.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a husk entity. 5 | */ 6 | public interface Husk extends Zombie { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Illusioner.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an illusioner entity. 5 | */ 6 | public interface Illusioner extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Interaction.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an interaction entity. 5 | */ 6 | public interface Interaction extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/IronGolem.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an iron golem entity. 5 | */ 6 | public interface IronGolem extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Item.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an item entity. 5 | */ 6 | public interface Item extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ItemDisplay.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.container.item.ItemStack; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Represents an item display entity. 8 | */ 9 | public interface ItemDisplay extends Display { 10 | 11 | /** 12 | * @since 1.0.0 13 | */ 14 | @NotNull ItemStack item(); 15 | 16 | /** 17 | * @since 1.0.0 18 | */ 19 | void item(@NotNull ItemStack item); 20 | 21 | /** 22 | * @since 1.0.0 23 | */ 24 | @NotNull DisplayType displayType(); 25 | 26 | /** 27 | * @since 1.0.0 28 | */ 29 | void displayType(@NotNull DisplayType displayType); 30 | 31 | enum DisplayType { 32 | NONE, 33 | THIRD_PERSON_LEFT_HAND, 34 | THIRD_PERSON_RIGHT_HAND, 35 | FIRST_PERSON_LEFT_HAND, 36 | FIRST_PERSON_RIGHT_HAND, 37 | HEAD, 38 | GUI, 39 | GROUND, 40 | FIXED 41 | } 42 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ItemFrame.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.container.item.ItemStack; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Represents an item frame entity. 8 | */ 9 | public interface ItemFrame extends Entity { 10 | 11 | /** 12 | * @since 1.0.0 13 | */ 14 | @NotNull ItemStack item(); 15 | 16 | /** 17 | * @since 1.0.0 18 | */ 19 | void item(@NotNull ItemStack item); 20 | 21 | /** 22 | * @since 1.0.0 23 | */ 24 | int rotation(); 25 | 26 | /** 27 | * @since 1.0.0 28 | */ 29 | void rotation(int rotation); 30 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/LeashKnot.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a leash knot entity. 5 | */ 6 | public interface LeashKnot extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/LightningBolt.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a lighting bolt entity. 5 | */ 6 | public interface LightningBolt extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Llama.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a llama entity. 5 | */ 6 | public interface Llama extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/LlamaSpit.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a llama spit entity. 5 | */ 6 | public interface LlamaSpit extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/MagmaCube.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a magma cube entity. 5 | */ 6 | public interface MagmaCube extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Minecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a minecart entity. 5 | */ 6 | public interface Minecart extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Mob.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a mob entity. 5 | */ 6 | public interface Mob extends LivingEntity { 7 | 8 | /** 9 | * Gets whether the mob is aggressive. 10 | * 11 | * @return whether the mob is aggressive 12 | */ 13 | boolean isAggressive(); 14 | } 15 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Monster.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a monster entity. 5 | */ 6 | public interface Monster extends Mob { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Mooshroom.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a mooshroom entity. 5 | */ 6 | public interface Mooshroom extends Cow { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Mule.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a mule entity. 5 | */ 6 | public interface Mule extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Ocelot.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a ocelot entity. 5 | */ 6 | public interface Ocelot extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/OminousItemSpawner.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents an ominous item spawner entity. 5 | */ 6 | public interface OminousItemSpawner extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Painting.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a painting entity. 5 | */ 6 | public interface Painting extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Panda.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a panda entity. 5 | */ 6 | public interface Panda extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Parrot.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a parrot entity. 5 | */ 6 | public interface Parrot extends Animal, Tameable { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Phantom.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a phantom entity. 5 | */ 6 | public interface Phantom extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Pig.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a pig entity. 5 | */ 6 | public interface Pig extends Animal { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | boolean hasSaddle(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void saddle(boolean saddle); 17 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Piglin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a piglin entity. 5 | */ 6 | public interface Piglin extends Mob, Ageable { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | boolean isCharging(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void setCharging(boolean charging); 17 | 18 | /** 19 | * @since 1.0.0 20 | */ 21 | boolean isDancing(); 22 | 23 | /** 24 | * @since 1.0.0 25 | */ 26 | void setDancing(boolean dancing); 27 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/PiglinBrute.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a piglin brute entity. 5 | */ 6 | public interface PiglinBrute extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Pillager.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a pillager entity. 5 | */ 6 | public interface Pillager extends Raider { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | boolean charging(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void charging(boolean charging); 17 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/PolarBear.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a polar bear entity. 5 | */ 6 | public interface PolarBear extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Potion.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a potion entity. 5 | */ 6 | public interface Potion extends Projectile { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Projectile.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a projectile entity. 5 | */ 6 | public interface Projectile extends Entity { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Pufferfish.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a puffer fish entity. 5 | */ 6 | public interface Pufferfish extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Rabbit.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a rabbit entity. 5 | */ 6 | public interface Rabbit extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Raider.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | public interface Raider extends Monster { 4 | 5 | /** 6 | * @since 1.0.0 7 | */ 8 | boolean celebrating(); 9 | 10 | /** 11 | * @since 1.0.0 12 | */ 13 | void celebrating(boolean celebrating); 14 | } 15 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Ravager.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a ravager entity. 5 | */ 6 | public interface Ravager extends Raider { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Salmon.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a salmon entity. 5 | */ 6 | public interface Salmon extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Sheep.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a sheep entity. 5 | */ 6 | public interface Sheep extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Shulker.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a shulker entity. 5 | */ 6 | public interface Shulker extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ShulkerBullet.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a shulker bullet entity. 5 | */ 6 | public interface ShulkerBullet extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Silverfish.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a silverfish entity. 5 | */ 6 | public interface Silverfish extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Skeleton.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a skeleton entity. 5 | */ 6 | public interface Skeleton extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/SkeletonHorse.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a skeleton horse entity. 5 | */ 6 | public interface SkeletonHorse extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Slime.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a slime entity. 5 | */ 6 | public interface Slime extends Mob { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | int size(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void size(int size); 17 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/SmallFireball.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a small fireball entity. 5 | */ 6 | public interface SmallFireball extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Sniffer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a sniffer entity. 5 | */ 6 | public interface Sniffer extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/SnowGolem.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a snow golem entity. 5 | */ 6 | public interface SnowGolem extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Snowball.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a snowball entity. 5 | */ 6 | public interface Snowball extends Projectile { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/SpawnerMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a spawner minecart entity. 5 | */ 6 | public interface SpawnerMinecart extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/SpectralArrow.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a spectral arrow entity. 5 | */ 6 | public interface SpectralArrow extends Arrow { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Spider.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a spider entity. 5 | */ 6 | public interface Spider extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Squid.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a squid entity. 5 | */ 6 | public interface Squid extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Stray.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a stray entity. 5 | */ 6 | public interface Stray extends Skeleton { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Strider.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a strider entity. 5 | */ 6 | public interface Strider extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Tadpole.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a tadpole entity. 5 | */ 6 | public interface Tadpole extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Tnt.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a tnt entity. 5 | */ 6 | public interface Tnt extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/TntMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a tnt minecart entity. 5 | */ 6 | public interface TntMinecart extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/TraderLlama.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a trader llama entity. 5 | */ 6 | public interface TraderLlama extends Llama { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Trident.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a trident entity. 5 | */ 6 | public interface Trident extends Arrow { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/TropicalFish.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a tropical fish entity. 5 | */ 6 | public interface TropicalFish extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Turtle.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a turtle entity. 5 | */ 6 | public interface Turtle extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Vex.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a vex entity. 5 | */ 6 | public interface Vex extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Villager.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a villager entity. 5 | */ 6 | public interface Villager extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Vindicator.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a vindicator entity. 5 | */ 6 | public interface Vindicator extends Raider { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/WanderingTrader.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a wandering trader entity. 5 | */ 6 | public interface WanderingTrader extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Warden.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a warden entity. 5 | */ 6 | public interface Warden extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/WindCharge.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a wind charge entity. 5 | */ 6 | public interface WindCharge extends Entity {} -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Witch.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a witch entity. 5 | */ 6 | public interface Witch extends Raider { 7 | 8 | /** 9 | * @since 1.0.0 10 | */ 11 | boolean drinkingPotion(); 12 | 13 | /** 14 | * @since 1.0.0 15 | */ 16 | void drinkingPotion(boolean drinkingPotion); 17 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Wither.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a wither entity. 5 | */ 6 | public interface Wither extends Mob { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/WitherSkeleton.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a wither skeleton entity. 5 | */ 6 | public interface WitherSkeleton extends Skeleton { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/WitherSkull.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a wither skull entity. 5 | */ 6 | public interface WitherSkull extends Entity { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Wolf.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a wolf entity. 5 | */ 6 | public interface Wolf extends Animal, Tameable { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Zoglin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a zoglin entity. 5 | */ 6 | public interface Zoglin extends Mob, Ageable { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/Zombie.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a zombie entity. 5 | */ 6 | public interface Zombie extends Mob, Ageable { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ZombieHorse.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a zombie horse entity. 5 | */ 6 | public interface ZombieHorse extends Animal { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ZombieVillager.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a zombie villager entity. 5 | */ 6 | public interface ZombieVillager extends Zombie { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/ZombifiedPiglin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | /** 4 | * Represents a zombified piglin entity. 5 | */ 6 | public interface ZombifiedPiglin extends Zombie { 7 | 8 | } -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/player/GameMode.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity.player; 2 | 3 | /** 4 | * Represents the types of game modes a {@link Player} can have. 5 | */ 6 | public enum GameMode { 7 | 8 | SURVIVAL, 9 | CREATIVE, 10 | ADVENTURE, 11 | SPECTATOR 12 | 13 | } 14 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/entity/player/GameProfile.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity.player; 2 | 3 | import java.util.List; 4 | import java.util.UUID; 5 | import org.jetbrains.annotations.NotNull; 6 | import org.jetbrains.annotations.Nullable; 7 | 8 | /** 9 | * Represents a profile of a player. 10 | */ 11 | public record GameProfile( 12 | UUID uniqueId, 13 | String name, 14 | @NotNull List properties 15 | ) { 16 | 17 | /** 18 | * Represents a property of a profile. 19 | * 20 | * @param key the key of the property 21 | * @param value the value of the property 22 | * @param signature the signature of the property 23 | * @since 1.0.0 24 | */ 25 | public record Property( 26 | @NotNull String key, 27 | @NotNull String value, 28 | @Nullable String signature 29 | ) { 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/EventOrder.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event; 2 | 3 | public final class EventOrder { 4 | 5 | public static final short FIRST = Short.MIN_VALUE; 6 | public static final short EARLY = -16384; 7 | public static final short NORMAL = 0; 8 | public static final short LATE = 16834; 9 | public static final short LAST = Short.MAX_VALUE; 10 | } 11 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/Subscribe.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * An annotation that is used to indicate that a method is an event listener. 10 | */ 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Target(ElementType.METHOD) 13 | public @interface Subscribe { 14 | 15 | /** 16 | * The order of the listener. 17 | * 18 | * @return the order. 19 | */ 20 | short order() default EventOrder.NORMAL; 21 | 22 | /** 23 | * Whether the listener should be called async. 24 | * 25 | * @return whether the listener should be async. 26 | */ 27 | boolean async() default false; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/command/CommandExecuteEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.command; 2 | 3 | import eu.sculkpowered.server.command.CommandSource; 4 | import eu.sculkpowered.server.event.ResultedEvent; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * Represents an event that fires when a command is executed. 9 | */ 10 | public final class CommandExecuteEvent extends ResultedEvent { 11 | 12 | private final CommandSource source; 13 | private final String command; 14 | 15 | public CommandExecuteEvent(@NotNull CommandSource source, @NotNull String command) { 16 | this.source = source; 17 | this.command = command; 18 | this.result = GenericResult.allow(); 19 | } 20 | 21 | public @NotNull CommandSource source() { 22 | return this.source; 23 | } 24 | 25 | public @NotNull String command() { 26 | return this.command; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/connection/PluginMessageEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.connection; 2 | 3 | import eu.sculkpowered.server.entity.player.Player; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public record PluginMessageEvent( 7 | @NotNull Player player, 8 | @NotNull String identifier, 9 | byte @NotNull [] data 10 | ) { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/lifecycle/ServerInitializeEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.lifecycle; 2 | 3 | /** 4 | * Represents an event that fires when the server is finished with loading, but before connections 5 | * will be accepted. 6 | */ 7 | public final class ServerInitializeEvent { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/lifecycle/ServerShutdownEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.lifecycle; 2 | 3 | /** 4 | * Represents an event that fires when the server will be stopped. 5 | */ 6 | public final class ServerShutdownEvent { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/player/PlayerAttackedEntityEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.player; 2 | 3 | import eu.sculkpowered.server.entity.Entity; 4 | import eu.sculkpowered.server.entity.player.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * Represents an event that fires when a player attacks another entity. 9 | */ 10 | public record PlayerAttackedEntityEvent(@NotNull Player player, @NotNull Entity entity) { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/player/PlayerChatEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.player; 2 | 3 | import eu.sculkpowered.server.entity.player.Player; 4 | import eu.sculkpowered.server.event.ResultedEvent; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * Represents an event that fires when a player sends a chat message. 9 | */ 10 | public final class PlayerChatEvent extends ResultedEvent { 11 | 12 | private final Player player; 13 | private final String message; 14 | 15 | public PlayerChatEvent(@NotNull Player player, @NotNull String message) { 16 | this.player = player; 17 | this.message = message; 18 | this.result = GenericResult.allow(); 19 | } 20 | 21 | public @NotNull Player player() { 22 | return this.player; 23 | } 24 | 25 | public @NotNull String message() { 26 | return this.message; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/player/PlayerClickContainerButtonEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.player; 2 | 3 | import eu.sculkpowered.server.container.Container; 4 | import eu.sculkpowered.server.entity.player.Player; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * Represents an event that fires when the client clicks at a container button. 9 | */ 10 | public record PlayerClickContainerButtonEvent( 11 | @NotNull Player player, 12 | @NotNull Container container, 13 | int button 14 | ) { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/player/PlayerDisconnectEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.player; 2 | 3 | import eu.sculkpowered.server.entity.player.Player; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Represents an events that fires when a player disconnects. 8 | * 9 | * @param player the player who disconnects 10 | */ 11 | public record PlayerDisconnectEvent(@NotNull Player player) { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/player/PlayerJoinEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.player; 2 | 3 | import eu.sculkpowered.server.entity.player.Player; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Represents an event that fires when the client reaches the join state. 8 | */ 9 | public record PlayerJoinEvent(@NotNull Player player) { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/event/player/PlayerUseItemEvent.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.event.player; 2 | 3 | import eu.sculkpowered.server.container.item.ItemStack; 4 | import eu.sculkpowered.server.entity.player.Player; 5 | import eu.sculkpowered.server.event.ResultedEvent; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | /** 9 | * Represents an event that fires when the client uses an item. 10 | */ 11 | public final class PlayerUseItemEvent extends ResultedEvent { 12 | 13 | private final Player player; 14 | private final ItemStack item; 15 | 16 | public PlayerUseItemEvent(@NotNull Player player, @NotNull ItemStack item) { 17 | this.player = player; 18 | this.item = item; 19 | this.result = GenericResult.allow(); 20 | } 21 | 22 | public @NotNull Player player() { 23 | return this.player; 24 | } 25 | 26 | public @NotNull ItemStack item() { 27 | return this.item; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/plugin/PluginDescription.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.plugin; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.RetentionPolicy; 5 | 6 | /** 7 | * The annotation that describe a plugin. 8 | */ 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface PluginDescription { 11 | 12 | String name(); 13 | 14 | String version(); 15 | 16 | String[] dependencies() default {}; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/potion/CustomPotionEffect.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.potion; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | public record CustomPotionEffect( 7 | @NotNull MobEffectType effect, 8 | @NotNull Properties properties 9 | ) { 10 | 11 | public record Properties( 12 | byte amplifier, 13 | int duration, 14 | boolean ambient, 15 | boolean showParticles, 16 | boolean showIcon, 17 | @Nullable Properties hiddenProperties 18 | ) { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/potion/PotionEffect.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.potion; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | public record PotionEffect( 6 | @NotNull MobEffectType effect, 7 | int duration 8 | ) { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/scoreboard/DisplaySlot.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.scoreboard; 2 | 3 | /** 4 | * The display slots a scoreboard can be displayed at. 5 | */ 6 | public enum DisplaySlot { 7 | 8 | LIST, 9 | SIDEBAR, 10 | BELOW_NAME 11 | } 12 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/team/TeamHandler.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.team; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | public interface TeamHandler { 7 | 8 | /** 9 | * Registers a new team by a builder. 10 | * 11 | * @param builder the team builder to register 12 | * @return the new created team 13 | * @since 1.0.0 14 | */ 15 | @NotNull Team register(@NotNull Team.Builder builder); 16 | 17 | /** 18 | * Gets a team by the name. 19 | * 20 | * @param name the name of the team 21 | * @return the team or null 22 | * @since 1.0.0 23 | */ 24 | @Nullable Team team(@NotNull String name); 25 | 26 | /** 27 | * Unregisters a team. 28 | * 29 | * @param team the team to unregister 30 | * @since 1.0.0 31 | */ 32 | void unregister(@NotNull Team team); 33 | } 34 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/world/Direction.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.world; 2 | 3 | public final class Direction { 4 | 5 | public enum Axis { 6 | X, 7 | Y, 8 | Z 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/world/chunk/ChunkGenerator.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.world.chunk; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | /** 6 | * Represents an object that generates chunks. 7 | */ 8 | public interface ChunkGenerator { 9 | 10 | /** 11 | * Generates a chunk. 12 | * 13 | * @param chunk the chunk that should be generated 14 | * @since 1.0.0 15 | */ 16 | void generate(@NotNull Chunk chunk); 17 | } 18 | -------------------------------------------------------------------------------- /api/src/main/java/eu/sculkpowered/server/world/chunk/VoidGenerator.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.world.chunk; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | /** 6 | * A {@link ChunkGenerator} that generates nothing. 7 | */ 8 | public final class VoidGenerator implements ChunkGenerator { 9 | 10 | public static final VoidGenerator INSTANCE = new VoidGenerator(); 11 | 12 | private VoidGenerator() { 13 | } 14 | 15 | @Override 16 | public void generate(@NotNull Chunk chunk) { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /api/src/main/resources/META-INF/services/javax.annotation.processing.Processor: -------------------------------------------------------------------------------- 1 | eu.sculkpowered.server.plugin.PluginAnnotationProcessor -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("java") 3 | id("checkstyle") 4 | } 5 | 6 | defaultTasks("build", "test", "shadowJar") 7 | 8 | allprojects { 9 | group = "eu.sculkpowered.server" 10 | version = "1.0.0-SNAPSHOT" 11 | 12 | repositories { 13 | mavenCentral() 14 | 15 | maven("https://libraries.minecraft.net") // for brigadier 16 | } 17 | } 18 | 19 | tasks.getByName("test") { 20 | useJUnitPlatform() 21 | } -------------------------------------------------------------------------------- /code-generator/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("java") 3 | } 4 | 5 | dependencies { 6 | implementation(libs.gson) 7 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SculkPowered/sculk-server/3adbe4c42d3723d693ee16df06bc96fe594c2ad8/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.14-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ], 6 | "labels": [ 7 | "dependencies" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /server/appender/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("java") 3 | } 4 | 5 | dependencies { 6 | implementation(libs.jline) 7 | implementation(libs.log4j.core) 8 | annotationProcessor(libs.log4j.core) 9 | } -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/Main.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server; 2 | 3 | public final class Main { 4 | 5 | static { 6 | System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager"); 7 | } 8 | 9 | public static void main(String[] args) { 10 | new SculkServer(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/adventure/AdventureLoggerProvider.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.adventure; 2 | 3 | import java.util.function.Function; 4 | import net.kyori.adventure.text.Component; 5 | import net.kyori.adventure.text.logger.slf4j.ComponentLogger; 6 | import net.kyori.adventure.text.logger.slf4j.ComponentLoggerProvider; 7 | import net.kyori.adventure.text.serializer.ansi.ANSIComponentSerializer; 8 | import org.jetbrains.annotations.NotNull; 9 | import org.slf4j.LoggerFactory; 10 | 11 | @SuppressWarnings("UnstableApiUsage") // this is a platform 12 | public final class AdventureLoggerProvider implements ComponentLoggerProvider { 13 | 14 | private static final Function SERIALIZER = 15 | component -> ANSIComponentSerializer.ansi().serialize(component); 16 | 17 | @Override 18 | public @NotNull ComponentLogger logger(@NotNull LoggerHelper helper, @NotNull String name) { 19 | return helper.delegating(LoggerFactory.getLogger(name), SERIALIZER); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/command/argument/AdvancedArgumentSerializer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.command.argument; 2 | 3 | import com.mojang.brigadier.arguments.ArgumentType; 4 | import eu.sculkpowered.server.protocol.Buffer; 5 | 6 | abstract class AdvancedArgumentSerializer> extends ArgumentSerializer { 7 | 8 | protected AdvancedArgumentSerializer(int id) { 9 | super(id); 10 | } 11 | 12 | @SuppressWarnings("unchecked") 13 | @Override 14 | public void serialize(final ArgumentType argumentType, final Buffer buf) { 15 | super.serialize(argumentType, buf); 16 | this.write((T) argumentType, buf); 17 | } 18 | 19 | public abstract void write(final T t, final Buffer buf); 20 | } 21 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/command/argument/ArgumentSerializer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.command.argument; 2 | 3 | import com.mojang.brigadier.arguments.ArgumentType; 4 | import eu.sculkpowered.server.protocol.Buffer; 5 | 6 | class ArgumentSerializer { 7 | 8 | private final int id; 9 | 10 | protected ArgumentSerializer(int id) { 11 | this.id = id; 12 | } 13 | 14 | public void serialize(final ArgumentType argumentType, final Buffer buf) { 15 | buf.writeVarInt(this.id); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/command/argument/StringArgumentSerializer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.command.argument; 2 | 3 | import com.mojang.brigadier.arguments.StringArgumentType; 4 | import eu.sculkpowered.server.protocol.Buffer; 5 | 6 | final class StringArgumentSerializer extends AdvancedArgumentSerializer { 7 | 8 | public StringArgumentSerializer(final int id) { 9 | super(id); 10 | } 11 | 12 | @Override 13 | public void write(StringArgumentType argument, Buffer buf) { 14 | buf.writeVarInt(argument.getType().ordinal()); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/command/defaults/StopCommand.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.command.defaults; 2 | 3 | import com.mojang.brigadier.Command; 4 | import com.mojang.brigadier.tree.LiteralCommandNode; 5 | import eu.sculkpowered.server.SculkServer; 6 | import eu.sculkpowered.server.command.CommandSource; 7 | import eu.sculkpowered.server.command.Commands; 8 | 9 | public final class StopCommand { 10 | 11 | public static LiteralCommandNode get(final SculkServer server) { 12 | return Commands.literal("stop") 13 | .requires(commandSource -> commandSource.hasPermission("server.command.stop")) 14 | .executes(context -> { 15 | server.shutdown(); 16 | return Command.SINGLE_SUCCESS; 17 | }) 18 | .build(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/container/GenericContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | import eu.sculkpowered.server.entity.player.SculkPlayer; 4 | import net.kyori.adventure.text.Component; 5 | 6 | public final class GenericContainer extends SculkContainer { 7 | 8 | public GenericContainer(final Type type, final Component title) { 9 | super(type, title); 10 | } 11 | 12 | @Override 13 | public void sendProperties(SculkPlayer player) { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/container/SculkAnvilContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | import eu.sculkpowered.server.entity.player.SculkPlayer; 4 | import net.kyori.adventure.text.Component; 5 | 6 | public final class SculkAnvilContainer extends SculkContainer implements AnvilContainer { 7 | 8 | private int repairCost; 9 | 10 | public SculkAnvilContainer(final Component title) { 11 | super(Type.ANVIL, title); 12 | } 13 | 14 | @Override 15 | public void repairCost(int repairCost) { 16 | this.sendProperty(0, repairCost); 17 | this.repairCost = repairCost; 18 | } 19 | 20 | @Override 21 | public int repairCost() { 22 | return this.repairCost; 23 | } 24 | 25 | @Override 26 | public void sendProperties(SculkPlayer player) { 27 | player.send(this.property(0, this.repairCost)); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/container/SculkLecternContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | import eu.sculkpowered.server.entity.player.SculkPlayer; 4 | import net.kyori.adventure.text.Component; 5 | 6 | public final class SculkLecternContainer extends SculkContainer implements LecternContainer { 7 | 8 | private int page; 9 | 10 | public SculkLecternContainer(final Component title) { 11 | super(Type.LECTERN, title); 12 | } 13 | 14 | @Override 15 | public void page(int page) { 16 | this.sendProperty(0, page); 17 | this.page = page; 18 | } 19 | 20 | @Override 21 | public int page() { 22 | return this.page; 23 | } 24 | 25 | @Override 26 | public void sendProperties(SculkPlayer player) { 27 | player.send(this.property(0, this.page)); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/container/SculkLoomContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | import eu.sculkpowered.server.entity.player.SculkPlayer; 4 | import net.kyori.adventure.text.Component; 5 | 6 | public final class SculkLoomContainer extends SculkContainer implements LoomContainer { 7 | 8 | private int selectedPattern; 9 | 10 | public SculkLoomContainer(Component title) { 11 | super(Type.LOOM, title); 12 | } 13 | 14 | @Override 15 | public void selectedPattern(int pattern) { 16 | this.sendProperty(0, pattern); 17 | this.selectedPattern = pattern; 18 | } 19 | 20 | @Override 21 | public int selectedPattern() { 22 | return this.selectedPattern; 23 | } 24 | 25 | @Override 26 | public void sendProperties(SculkPlayer player) { 27 | player.send(this.property(0, this.selectedPattern)); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/container/SculkStonecutterContainer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container; 2 | 3 | import eu.sculkpowered.server.entity.player.SculkPlayer; 4 | import net.kyori.adventure.text.Component; 5 | 6 | public final class SculkStonecutterContainer extends SculkContainer implements 7 | StonecutterContainer { 8 | 9 | private int selectedRecipe; 10 | 11 | public SculkStonecutterContainer(final Component title) { 12 | super(Type.STONECUTTER, title); 13 | } 14 | 15 | @Override 16 | public void selectedRecipe(int recipe) { 17 | this.sendProperty(0, this.selectedRecipe); 18 | this.selectedRecipe = recipe; 19 | } 20 | 21 | @Override 22 | public int selectedRecipe() { 23 | return this.selectedRecipe; 24 | } 25 | 26 | @Override 27 | public void sendProperties(SculkPlayer player) { 28 | player.send(this.property(0, this.selectedRecipe)); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/container/item/data/BinarySerializer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.container.item.data; 2 | 3 | import net.kyori.adventure.nbt.BinaryTag; 4 | 5 | public interface BinarySerializer { 6 | 7 | BinaryTag serialize(T t); 8 | 9 | T deserialize(BinaryTag binaryTag); 10 | } 11 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/AbstractAnimal.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | 5 | public abstract class AbstractAnimal extends AbstractMob implements Animal { 6 | 7 | public AbstractAnimal(final SculkServer server) { 8 | super(server); 9 | } 10 | 11 | @Override 12 | public boolean baby() { 13 | return this.metadata.getBoolean(16, false); 14 | } 15 | 16 | @Override 17 | public boolean adult() { 18 | return !this.baby(); 19 | } 20 | 21 | @Override 22 | public void setBaby(boolean baby) { 23 | this.metadata.setBoolean(16, baby); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/AbstractMob.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | 5 | public abstract class AbstractMob extends AbstractLivingEntity implements Mob { 6 | 7 | public AbstractMob(final SculkServer server) { 8 | super(server); 9 | } 10 | 11 | @Override 12 | public boolean isAggressive() { 13 | return this.metadata.inMask(15, 0x04); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/AbstractRaider.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | 5 | public abstract class AbstractRaider extends AbstractMob implements Raider { 6 | 7 | public AbstractRaider(final SculkServer server) { 8 | super(server); 9 | } 10 | 11 | @Override 12 | public boolean celebrating() { 13 | return this.metadata.getBoolean(16, false); 14 | } 15 | 16 | @Override 17 | public void celebrating(boolean celebrating) { 18 | this.metadata.setBoolean(16, true); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/AbstractTameableAnimal.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import java.util.UUID; 5 | import org.jetbrains.annotations.Nullable; 6 | 7 | public abstract class AbstractTameableAnimal extends AbstractAnimal implements Tameable { 8 | 9 | public AbstractTameableAnimal(final SculkServer server) { 10 | super(server); 11 | } 12 | 13 | @Override 14 | public boolean sitting() { 15 | return this.metadata.inMask(17, 0x01); 16 | } 17 | 18 | @Override 19 | public void sitting(boolean sitting) { 20 | this.metadata.setMask(17, 0x01, sitting); 21 | } 22 | 23 | @Override 24 | public boolean tamed() { 25 | return this.metadata.inMask(17, 0x04); 26 | } 27 | 28 | @Override 29 | public @Nullable UUID owner() { 30 | return this.metadata.getOptUUID(18, null); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkAllay.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkAllay extends AbstractEntity implements Allay { 7 | 8 | public SculkAllay(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ALLAY; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkAreaEffectCloud.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkAreaEffectCloud extends AbstractEntity implements AreaEffectCloud { 7 | 8 | public SculkAreaEffectCloud(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.AREA_EFFECT_CLOUD; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkArmadillo.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkArmadillo extends AbstractEntity implements Armadillo { 7 | 8 | public SculkArmadillo(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ARMADILLO; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkArrow.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public class SculkArrow extends AbstractEntity implements Arrow { 7 | 8 | public SculkArrow(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ARROW; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkAxolotl.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkAxolotl extends AbstractAnimal implements Axolotl { 7 | 8 | public SculkAxolotl(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.AXOLOTL; 15 | } 16 | 17 | @Override 18 | public @NotNull Axolotl.Variant variant() { 19 | return this.metadata.getEnum(17, Variant.LUCY); 20 | } 21 | 22 | @Override 23 | public void variant(@NotNull Variant variant) { 24 | this.metadata.setVarInt(17, variant.ordinal()); 25 | } 26 | 27 | @Override 28 | public boolean playingDead() { 29 | return this.metadata.getBoolean(18, false); 30 | } 31 | 32 | @Override 33 | public void playingDead(boolean playingDead) { 34 | this.metadata.setBoolean(18, playingDead); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkBat.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkBat extends AbstractAnimal implements Bat { 7 | 8 | public SculkBat(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.BAT; 15 | } 16 | 17 | @Override 18 | public boolean hanging() { 19 | return this.metadata.inMask(16, 0x01); 20 | } 21 | 22 | @Override 23 | public void hanging(boolean hanging) { 24 | this.metadata.setMask(16, 0x01, hanging); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkBlaze.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkBlaze extends AbstractMob implements Blaze { 7 | 8 | public SculkBlaze(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.BLAZE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkBlockDisplay.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import eu.sculkpowered.server.world.block.Block; 5 | import eu.sculkpowered.server.world.block.BlockState; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | public final class SculkBlockDisplay extends AbstractDisplay implements BlockDisplay { 9 | 10 | public SculkBlockDisplay(final SculkServer server) { 11 | super(server); 12 | } 13 | 14 | @Override 15 | public @NotNull EntityType type() { 16 | return EntityType.BLOCK_DISPLAY; 17 | } 18 | 19 | @Override 20 | public @NotNull BlockState block() { 21 | return Block.get(this.metadata.getVarInt(22, 0)); 22 | } 23 | 24 | @Override 25 | public void block(@NotNull BlockState block) { 26 | this.metadata.setBlockId(22, block.id()); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkBoat.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public class SculkBoat extends AbstractEntity implements Boat { 7 | 8 | public SculkBoat(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.BOAT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkBogged.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkBogged extends AbstractEntity implements Bogged { 7 | 8 | public SculkBogged(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.BOGGED; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkBreeze.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkBreeze extends AbstractEntity implements Breeze { 7 | 8 | public SculkBreeze(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.BREEZE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkBreezeWindCharge.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkBreezeWindCharge extends AbstractEntity implements BreezeWindCharge { 7 | 8 | public SculkBreezeWindCharge(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.BREEZE_WIND_CHARGE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkCamel.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkCamel extends AbstractAnimal implements Camel { 7 | 8 | public SculkCamel(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.CAMEL; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkCat.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkCat extends AbstractTameableAnimal implements Cat { 7 | 8 | public SculkCat(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.CAT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkCaveSpider.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkCaveSpider extends AbstractEntity implements CaveSpider { 7 | 8 | public SculkCaveSpider(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.CAVE_SPIDER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkChestBoat.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkChestBoat extends SculkBoat { 7 | 8 | public SculkChestBoat(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.CHEST_BOAT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkChestMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkChestMinecart extends AbstractEntity implements ChestMinecart { 7 | 8 | public SculkChestMinecart(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.CHEST_MINECART; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkChicken.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkChicken extends AbstractAnimal implements Chicken { 7 | 8 | public SculkChicken(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.CHICKEN; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkCod.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkCod extends AbstractAnimal implements Cod { 7 | 8 | public SculkCod(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.COD; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkCommandBlockMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkCommandBlockMinecart extends AbstractEntity implements 7 | CommandBlockMinecart { 8 | 9 | public SculkCommandBlockMinecart(final SculkServer server) { 10 | super(server); 11 | } 12 | 13 | @Override 14 | public @NotNull EntityType type() { 15 | return EntityType.COMMAND_BLOCK_MINECART; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkCow.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkCow extends AbstractAnimal implements Cow { 7 | 8 | public SculkCow(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.COW; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkDolphin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkDolphin extends AbstractMob implements Dolphin { 7 | 8 | public SculkDolphin(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.DOLPHIN; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkDonkey.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkDonkey extends AbstractAnimal implements Donkey { 7 | 8 | public SculkDonkey(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.DONKEY; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkDragonFireball.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkDragonFireball extends AbstractEntity implements DragonFireball { 7 | 8 | public SculkDragonFireball(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.FIREBALL; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkDrowned.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkDrowned extends SculkZombie implements Drowned { 7 | 8 | public SculkDrowned(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.DROWNED; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkEgg.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkEgg extends AbstractEntity implements Egg { 7 | 8 | public SculkEgg(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.EGG; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkElderGuardian.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkElderGuardian extends AbstractMob implements ElderGuardian { 7 | 8 | public SculkElderGuardian(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.GUARDIAN; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkEndCrystal.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkEndCrystal extends AbstractEntity implements EndCrystal { 7 | 8 | public SculkEndCrystal(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.END_CRYSTAL; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkEnderDragon.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkEnderDragon extends AbstractMob implements EnderDragon { 7 | 8 | public SculkEnderDragon(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ENDER_DRAGON; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkEnderPearl.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkEnderPearl extends AbstractEntity implements EnderPearl { 7 | 8 | public SculkEnderPearl(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ENDER_PEARL; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkEnderman.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkEnderman extends AbstractMob implements Enderman { 7 | 8 | public SculkEnderman(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ENDERMAN; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkEndermite.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkEndermite extends AbstractMob implements Endermite { 7 | 8 | public SculkEndermite(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ENDERMITE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkEvoker.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkEvoker extends AbstractRaider implements Evoker { 7 | 8 | public SculkEvoker(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.EVOKER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkEvokerFangs.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkEvokerFangs extends AbstractEntity implements EvokerFangs { 7 | 8 | public SculkEvokerFangs(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.EVOKER_FANGS; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkExperienceBottle.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkExperienceBottle extends AbstractEntity implements ExperienceBottle { 7 | 8 | public SculkExperienceBottle(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.EXPERIENCE_BOTTLE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkExperienceOrb.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkExperienceOrb extends AbstractEntity implements ExperienceOrb { 7 | 8 | public SculkExperienceOrb(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.EXPERIENCE_ORB; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkEyeOfEnder.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkEyeOfEnder extends AbstractEntity implements EyeOfEnder { 7 | 8 | public SculkEyeOfEnder(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.EYE_OF_ENDER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkFallingBlock.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkFallingBlock extends AbstractEntity implements FallingBlock { 7 | 8 | public SculkFallingBlock(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.FALLING_BLOCK; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkFireball.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkFireball extends AbstractEntity implements Fireball { 7 | 8 | public SculkFireball(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.FIREBALL; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkFireworkRocket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkFireworkRocket extends AbstractEntity implements FireworkRocket { 7 | 8 | public SculkFireworkRocket(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.FIREWORK_ROCKET; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkFishingBobber.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkFishingBobber extends AbstractEntity implements FishingBobber { 7 | 8 | public SculkFishingBobber(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.FISHING_BOBBER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkFox.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkFox extends AbstractAnimal implements Fox { 7 | 8 | public SculkFox(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.FOX; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkFrog.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkFrog extends AbstractAnimal implements Frog { 7 | 8 | public SculkFrog(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.FROG; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkFurnaceMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkFurnaceMinecart extends AbstractEntity implements FurnaceMinecart { 7 | 8 | public SculkFurnaceMinecart(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.FURNACE_MINECART; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkGhast.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkGhast extends AbstractMob implements Ghast { 7 | 8 | public SculkGhast(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.GHAST; 15 | } 16 | 17 | @Override 18 | public boolean attacking() { 19 | return this.metadata.getBoolean(16, false); 20 | } 21 | 22 | @Override 23 | public void attacking(boolean attacking) { 24 | this.metadata.setBoolean(16, attacking); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkGiant.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkGiant extends AbstractMob implements Giant { 7 | 8 | public SculkGiant(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.GIANT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkGlowItemFrame.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkGlowItemFrame extends SculkItemFrame implements GlowItemFrame { 7 | 8 | public SculkGlowItemFrame(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.GLOW_ITEM_FRAME; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkGlowSquid.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkGlowSquid extends AbstractAnimal implements Squid { 7 | 8 | public SculkGlowSquid(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SQUID; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkGuardian.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkGuardian extends AbstractMob implements Guardian { 7 | 8 | public SculkGuardian(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.GUARDIAN; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkHoglin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkHoglin extends AbstractAnimal implements Hoglin { 7 | 8 | public SculkHoglin(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.HOGLIN; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkHopperMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkHopperMinecart extends AbstractEntity implements HopperMinecart { 7 | 8 | public SculkHopperMinecart(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.HOPPER_MINECART; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkHorse.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkHorse extends AbstractAnimal implements Horse { 7 | 8 | public SculkHorse(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.HORSE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkHusk.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkHusk extends SculkZombie implements Husk { 7 | 8 | public SculkHusk(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.HUSK; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkIllusioner.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkIllusioner extends AbstractMob implements Illusioner { 7 | 8 | public SculkIllusioner(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ILLUSIONER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkInteraction.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkInteraction extends AbstractEntity implements Interaction { 7 | 8 | public SculkInteraction(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.INTERACTION; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkIronGolem.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkIronGolem extends AbstractMob implements IronGolem { 7 | 8 | public SculkIronGolem(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.IRON_GOLEM; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkItem.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkItem extends AbstractEntity implements Item { 7 | 8 | public SculkItem(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ITEM; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkLeashKnot.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkLeashKnot extends AbstractEntity implements LeashKnot { 7 | 8 | public SculkLeashKnot(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.LEASH_KNOT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkLightningBolt.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkLightningBolt extends AbstractEntity { 7 | 8 | public SculkLightningBolt(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.LIGHTNING_BOLT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkLlama.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public class SculkLlama extends AbstractAnimal implements Llama { 7 | 8 | public SculkLlama(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.LLAMA; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkLlamaSpit.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkLlamaSpit extends AbstractEntity implements LlamaSpit { 7 | 8 | public SculkLlamaSpit(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.LLAMA_SPIT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkMagmaCube.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkMagmaCube extends AbstractMob implements MagmaCube { 7 | 8 | public SculkMagmaCube(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.MAGMA_CUBE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkMinecart extends AbstractEntity implements Minecart { 7 | 8 | public SculkMinecart(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.MINECART; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkMooshroom.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkMooshroom extends AbstractAnimal implements Mooshroom { 7 | 8 | public SculkMooshroom(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.MOOSHROOM; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkMule.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkMule extends AbstractAnimal implements Mule { 7 | 8 | public SculkMule(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.MULE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkOcelot.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkOcelot extends AbstractAnimal implements Ocelot { 7 | 8 | public SculkOcelot(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.OCELOT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkOminousItemSpawner.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkOminousItemSpawner extends AbstractEntity implements OminousItemSpawner { 7 | 8 | public SculkOminousItemSpawner(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.BREEZE_WIND_CHARGE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkPainting.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkPainting extends AbstractEntity implements Painting { 7 | 8 | public SculkPainting(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.PAINTING; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkPanda.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkPanda extends AbstractAnimal implements Panda { 7 | 8 | public SculkPanda(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.PANDA; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkParrot.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkParrot extends AbstractTameableAnimal implements Parrot { 7 | 8 | public SculkParrot(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.PARROT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkPhantom.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkPhantom extends AbstractMob implements Phantom { 7 | 8 | public SculkPhantom(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.PHANTOM; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkPig.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkPig extends AbstractAnimal implements Pig { 7 | 8 | public SculkPig(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.PIG; 15 | } 16 | 17 | @Override 18 | public boolean hasSaddle() { 19 | return this.metadata.getBoolean(17, false); 20 | } 21 | 22 | @Override 23 | public void saddle(boolean saddle) { 24 | this.metadata.setBoolean(17, saddle); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkPiglinBrute.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkPiglinBrute extends AbstractMob implements PiglinBrute { 7 | 8 | public SculkPiglinBrute(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.PIGLIN_BRUTE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkPillager.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkPillager extends AbstractRaider implements Pillager { 7 | 8 | public SculkPillager(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.PILLAGER; 15 | } 16 | 17 | @Override 18 | public boolean charging() { 19 | return this.metadata.getBoolean(17, false); 20 | } 21 | 22 | @Override 23 | public void charging(boolean charging) { 24 | this.metadata.setBoolean(17, charging); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkPolarBear.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkPolarBear extends AbstractAnimal implements PolarBear { 7 | 8 | public SculkPolarBear(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.POLAR_BEAR; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkPotion.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkPotion extends AbstractEntity implements Potion { 7 | 8 | public SculkPotion(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.POTION; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkPufferfish.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkPufferfish extends AbstractMob implements Pufferfish { 7 | 8 | public SculkPufferfish(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.PUFFERFISH; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkRabbit.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkRabbit extends AbstractAnimal implements Rabbit { 7 | 8 | public SculkRabbit(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.RABBIT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkRavager.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkRavager extends AbstractRaider implements Ravager { 7 | 8 | public SculkRavager(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.RAVAGER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSalmon.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSalmon extends AbstractMob implements Salmon { 7 | 8 | public SculkSalmon(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SALMON; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSheep.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSheep extends AbstractAnimal implements Sheep { 7 | 8 | public SculkSheep(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SHEEP; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkShulker.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkShulker extends AbstractMob implements Shulker { 7 | 8 | public SculkShulker(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SHULKER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkShulkerBullet.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkShulkerBullet extends AbstractEntity implements ShulkerBullet { 7 | 8 | public SculkShulkerBullet(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SHULKER_BULLET; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSilverfish.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSilverfish extends AbstractMob implements Silverfish { 7 | 8 | public SculkSilverfish(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SILVERFISH; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSkeleton.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public class SculkSkeleton extends AbstractMob implements Skeleton { 7 | 8 | public SculkSkeleton(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SKELETON; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSkeletonHorse.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSkeletonHorse extends AbstractAnimal implements SkeletonHorse { 7 | 8 | public SculkSkeletonHorse(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SKELETON_HORSE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSlime.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSlime extends AbstractMob implements Slime { 7 | 8 | public SculkSlime(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SLIME; 15 | } 16 | 17 | @Override 18 | public int size() { 19 | return this.metadata.getVarInt(16, 1); 20 | } 21 | 22 | @Override 23 | public void size(int size) { 24 | this.metadata.setVarInt(16, size); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSmallFireball.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSmallFireball extends AbstractEntity implements SmallFireball { 7 | 8 | public SculkSmallFireball(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SMALL_FIREBALL; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSniffer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSniffer extends AbstractAnimal implements Sniffer { 7 | 8 | public SculkSniffer(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SNIFFER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSnowGolem.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSnowGolem extends AbstractMob implements SnowGolem { 7 | 8 | public SculkSnowGolem(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SNOW_GOLEM; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSnowball.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSnowball extends AbstractEntity implements Snowball { 7 | 8 | public SculkSnowball(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SNOWBALL; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSpawnerMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSpawnerMinecart extends AbstractEntity implements SpawnerMinecart { 7 | 8 | public SculkSpawnerMinecart(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SPAWNER_MINECART; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSpectralArrow.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public class SculkSpectralArrow extends SculkArrow implements SpectralArrow { 7 | 8 | public SculkSpectralArrow(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SPECTRAL_ARROW; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSpider.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSpider extends AbstractMob implements Spider { 7 | 8 | public SculkSpider(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SPIDER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkSquid.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkSquid extends AbstractAnimal implements Squid { 7 | 8 | public SculkSquid(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.SQUID; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkStray.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkStray extends SculkSkeleton implements Stray { 7 | 8 | public SculkStray(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.STRAY; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkStrider.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkStrider extends AbstractAnimal implements Strider { 7 | 8 | public SculkStrider(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.STRIDER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkTadpole.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkTadpole extends AbstractMob implements Tadpole { 7 | 8 | public SculkTadpole(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.TADPOLE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkTnt.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkTnt extends AbstractEntity implements Tnt { 7 | 8 | public SculkTnt(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.TNT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkTntMinecart.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkTntMinecart extends AbstractEntity implements TntMinecart { 7 | 8 | public SculkTntMinecart(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.TNT_MINECART; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkTraderLlama.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkTraderLlama extends SculkLlama implements TraderLlama { 7 | 8 | public SculkTraderLlama(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.TRADER_LLAMA; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkTrident.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkTrident extends SculkArrow implements Trident { 7 | 8 | public SculkTrident(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.TRIDENT; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkTropicalFish.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkTropicalFish extends AbstractMob implements TropicalFish { 7 | 8 | public SculkTropicalFish(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.TROPICAL_FISH; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkTurtle.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkTurtle extends AbstractAnimal implements Turtle { 7 | 8 | public SculkTurtle(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.TURTLE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkVex.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkVex extends AbstractMob implements Vex { 7 | 8 | public SculkVex(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.VEX; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkVillager.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public class SculkVillager extends AbstractAnimal implements Villager { 7 | 8 | public SculkVillager(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.VILLAGER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkVindicator.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkVindicator extends AbstractRaider implements Vindicator { 7 | 8 | public SculkVindicator(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.VINDICATOR; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkWanderingTrader.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkWanderingTrader extends AbstractMob implements WanderingTrader { 7 | 8 | public SculkWanderingTrader(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.WANDERING_TRADER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkWarden.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkWarden extends AbstractMob implements Warden { 7 | 8 | public SculkWarden(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.WARDEN; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkWindCharge.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkWindCharge extends AbstractEntity implements WindCharge { 7 | 8 | public SculkWindCharge(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.WIND_CHARGE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkWitch.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkWitch extends AbstractRaider implements Witch { 7 | 8 | public SculkWitch(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.WITCH; 15 | } 16 | 17 | @Override 18 | public boolean drinkingPotion() { 19 | return this.metadata.getBoolean(17, false); 20 | } 21 | 22 | @Override 23 | public void drinkingPotion(boolean drinkingPotion) { 24 | this.metadata.setBoolean(17, drinkingPotion); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkWither.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkWither extends AbstractMob implements Wither { 7 | 8 | public SculkWither(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.WITHER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkWitherSkeleton.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkWitherSkeleton extends AbstractMob implements WitherSkeleton { 7 | 8 | public SculkWitherSkeleton(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.WITHER_SKELETON; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkWitherSkull.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkWitherSkull extends AbstractEntity implements WitherSkull { 7 | 8 | public SculkWitherSkull(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.WITHER_SKULL; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkWolf.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkWolf extends AbstractTameableAnimal implements Wolf { 7 | 8 | public SculkWolf(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.WOLF; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkZoglin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkZoglin extends AbstractMob implements Zoglin { 7 | 8 | public SculkZoglin(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ZOGLIN; 15 | } 16 | 17 | @Override 18 | public boolean baby() { 19 | return this.metadata.getBoolean(17, false); 20 | } 21 | 22 | @Override 23 | public boolean adult() { 24 | return !this.baby(); 25 | } 26 | 27 | @Override 28 | public void setBaby(boolean baby) { 29 | this.metadata.setBoolean(17, baby); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkZombie.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public class SculkZombie extends AbstractMob implements Zombie { 7 | 8 | public SculkZombie(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ZOMBIE; 15 | } 16 | 17 | @Override 18 | public boolean baby() { 19 | return this.metadata.getBoolean(16, false); 20 | } 21 | 22 | @Override 23 | public boolean adult() { 24 | return !this.baby(); 25 | } 26 | 27 | @Override 28 | public void setBaby(boolean baby) { 29 | this.metadata.setBoolean(16, baby); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkZombieHorse.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkZombieHorse extends AbstractAnimal implements ZombieHorse { 7 | 8 | public SculkZombieHorse(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ZOMBIE_HORSE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkZombieVillager.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkZombieVillager extends SculkZombie implements ZombieVillager { 7 | 8 | public SculkZombieVillager(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ZOMBIE_VILLAGER; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/entity/SculkZombifiedPiglin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.entity; 2 | 3 | import eu.sculkpowered.server.SculkServer; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public final class SculkZombifiedPiglin extends SculkZombie implements ZombifiedPiglin { 7 | 8 | public SculkZombifiedPiglin(final SculkServer server) { 9 | super(server); 10 | } 11 | 12 | @Override 13 | public @NotNull EntityType type() { 14 | return EntityType.ZOMBIFIED_PIGLIN; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/json/GameProfilePropertyDeserializer.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.json; 2 | 3 | import com.google.gson.JsonDeserializationContext; 4 | import com.google.gson.JsonDeserializer; 5 | import com.google.gson.JsonElement; 6 | import com.google.gson.JsonParseException; 7 | import eu.sculkpowered.server.entity.player.GameProfile.Property; 8 | import java.lang.reflect.Type; 9 | 10 | public final class GameProfilePropertyDeserializer implements JsonDeserializer { 11 | 12 | @Override 13 | public Property deserialize(JsonElement jsonElement, Type type, 14 | JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { 15 | final var json = jsonElement.getAsJsonObject(); 16 | return new Property( 17 | json.get("name").getAsString(), 18 | json.get("value").getAsString(), 19 | json.get("signature") != null ? json.get("signature").getAsString() : null 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/Protocol.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol; 2 | 3 | public final class Protocol { 4 | 5 | public static final String VERSION_NAME = "1.21.1"; 6 | public static final int VERSION_PROTOCOL = 767; 7 | } 8 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/ClientboundPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | 5 | public interface ClientboundPacket { 6 | 7 | void encode(final Buffer buf); 8 | 9 | default int minLength() { 10 | return 0; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/ServerboundPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | 5 | public interface ServerboundPacket { 6 | 7 | void decode(final Buffer buf); 8 | 9 | boolean handle(final PacketHandler handler); 10 | 11 | default int minLength() { 12 | return 0; 13 | } 14 | 15 | default int maxLength() { 16 | return -1; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/AnimatePacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class AnimatePacket implements ClientboundPacket { 7 | 8 | private final int entityId; 9 | private final byte animation; 10 | 11 | public AnimatePacket(final int entityId, final byte animation) { 12 | this.entityId = entityId; 13 | this.animation = animation; 14 | } 15 | 16 | @Override 17 | public void encode(Buffer buf) { 18 | buf 19 | .writeVarInt(this.entityId) 20 | .writeUnsignedByte(this.animation); 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "AnimatePacket{" + 26 | "entityId=" + this.entityId + 27 | ", animation=" + this.animation + 28 | '}'; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/AwardStatsPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class AwardStatsPacket implements ClientboundPacket { 7 | 8 | @Override 9 | public void encode(Buffer buf) { 10 | buf.writeVarInt(0); // send 0 cause statistics are not implemented yet 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/BlockChangedAckPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class BlockChangedAckPacket implements ClientboundPacket { 7 | 8 | private final int sequence; 9 | 10 | public BlockChangedAckPacket(final int sequence) { 11 | this.sequence = sequence; 12 | } 13 | 14 | @Override 15 | public void encode(Buffer buf) { 16 | buf.writeVarInt(this.sequence); 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "BlockChangedAckPacket{" + 22 | "sequence=" + this.sequence + 23 | '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/ChangeDifficultyPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class ChangeDifficultyPacket implements ClientboundPacket { 7 | 8 | private final byte difficulty; 9 | private final boolean locked; 10 | 11 | public ChangeDifficultyPacket(final byte difficulty, final boolean locked) { 12 | this.difficulty = difficulty; 13 | this.locked = locked; 14 | } 15 | 16 | @Override 17 | public void encode(Buffer buf) { 18 | buf 19 | .writeUnsignedByte(this.difficulty) 20 | .writeBoolean(this.locked); 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "ChangeDifficultyPacket{" + 26 | "difficulty=" + this.difficulty + 27 | ", locked=" + this.locked + 28 | '}'; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/ClearTitlesPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class ClearTitlesPacket implements ClientboundPacket { 7 | 8 | private final boolean reset; 9 | 10 | public ClearTitlesPacket(final boolean reset) { 11 | this.reset = reset; 12 | } 13 | 14 | @Override 15 | public void encode(Buffer buf) { 16 | buf.writeBoolean(this.reset); 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "ClearTitlesPacket{" + 22 | "reset=" + this.reset + 23 | '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/CooldownPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class CooldownPacket implements ClientboundPacket { 7 | 8 | private final int itemId; 9 | private final int cooldownTicks; 10 | 11 | public CooldownPacket(final int itemId, final int cooldownTicks) { 12 | this.itemId = itemId; 13 | this.cooldownTicks = cooldownTicks; 14 | } 15 | 16 | @Override 17 | public void encode(Buffer buf) { 18 | buf 19 | .writeVarInt(this.itemId) 20 | .writeVarInt(this.cooldownTicks); 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "CooldownPacket{" + 26 | "itemId=" + this.itemId + 27 | ", cooldownTicks=" + this.cooldownTicks + 28 | '}'; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/DisconnectPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import net.kyori.adventure.text.Component; 6 | 7 | public final class DisconnectPacket implements ClientboundPacket { 8 | 9 | private final Component text; 10 | 11 | public DisconnectPacket(final Component text) { 12 | this.text = text; 13 | } 14 | 15 | @Override 16 | public void encode(Buffer buf) { 17 | buf.writeComponent(this.text); 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "DisconnectPacket{" + 23 | "text=" + this.text + 24 | '}'; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/EntityEventPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class EntityEventPacket implements ClientboundPacket { 7 | 8 | private final int entityId; 9 | private final byte entityStatus; 10 | 11 | public EntityEventPacket(final int entityId, final byte entityStatus) { 12 | this.entityId = entityId; 13 | this.entityStatus = entityStatus; 14 | } 15 | 16 | @Override 17 | public void encode(Buffer buf) { 18 | buf 19 | .writeInt(this.entityId) 20 | .writeByte(this.entityStatus); 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "EntityEventPacket{" + 26 | "entityId=" + this.entityId + 27 | ", entityStatus=" + this.entityStatus + 28 | '}'; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/GameEventPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class GameEventPacket implements ClientboundPacket { 7 | 8 | private final int event; 9 | private final float value; 10 | 11 | public GameEventPacket(final int event, final float value) { 12 | this.event = event; 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public void encode(Buffer buf) { 18 | buf 19 | .writeUnsignedByte(this.event) 20 | .writeFloat(this.value); 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "GameEventPacket{" + 26 | "event=" + this.event + 27 | ", value=" + this.value + 28 | '}'; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/GameProfilePacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.entity.player.GameProfile; 4 | import eu.sculkpowered.server.protocol.Buffer; 5 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 6 | 7 | public final class GameProfilePacket implements ClientboundPacket { 8 | 9 | private final GameProfile profile; 10 | 11 | public GameProfilePacket(final GameProfile profile) { 12 | this.profile = profile; 13 | } 14 | 15 | @Override 16 | public void encode(Buffer buf) { 17 | buf 18 | .writeUniqueId(this.profile.uniqueId()) 19 | .writeString(this.profile.name()) 20 | .writeProfileProperties(this.profile.properties()) 21 | .writeBoolean(true); 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return "GameProfilePacket{" + 27 | "profile=" + this.profile + 28 | '}'; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/LoginCompressionPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class LoginCompressionPacket implements ClientboundPacket { 7 | 8 | private final int threshold; 9 | 10 | public LoginCompressionPacket(final int threshold) { 11 | this.threshold = threshold; 12 | } 13 | 14 | @Override 15 | public void encode(Buffer buf) { 16 | buf.writeVarInt(this.threshold); 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "LoginCompressionPacket{" + 22 | "threshold=" + this.threshold + 23 | '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/LoginDisconnect.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import net.kyori.adventure.text.Component; 6 | 7 | public final class LoginDisconnect implements ClientboundPacket { 8 | 9 | private final Component text; 10 | 11 | public LoginDisconnect(final Component text) { 12 | this.text = text; 13 | } 14 | 15 | @Override 16 | public void encode(Buffer buf) { 17 | buf.writeComponentJson(this.text); 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "Disconnect{" + 23 | "text=" + this.text + 24 | '}'; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/RemoveEntitiesPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import java.util.Arrays; 6 | 7 | public final class RemoveEntitiesPacket implements ClientboundPacket { 8 | 9 | private final int[] entityIds; 10 | 11 | public RemoveEntitiesPacket(final int... entityIds) { 12 | this.entityIds = entityIds; 13 | } 14 | 15 | @Override 16 | public void encode(Buffer buf) { 17 | buf.writeVarInt(this.entityIds.length); 18 | for (final var entityId : this.entityIds) { 19 | buf.writeVarInt(entityId); 20 | } 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "RemoveEntitiesPacket{" + 26 | "entityIds=" + Arrays.toString(this.entityIds) + 27 | '}'; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/ResourcePackPopPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import java.util.UUID; 6 | 7 | public final class ResourcePackPopPacket implements ClientboundPacket { 8 | 9 | private final UUID uniqueId; 10 | 11 | public ResourcePackPopPacket(final UUID uniqueId) { 12 | this.uniqueId = uniqueId; 13 | } 14 | 15 | @Override 16 | public void encode(Buffer buf) { 17 | if (this.uniqueId != null) { 18 | buf 19 | .writeBoolean(true) 20 | .writeUniqueId(this.uniqueId); 21 | } else { 22 | buf.writeBoolean(false); 23 | } 24 | } 25 | 26 | @Override 27 | public String toString() { 28 | return "RemoveResourcePack{" + 29 | "uniqueId=" + this.uniqueId + 30 | '}'; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/RotateHeadPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class RotateHeadPacket implements ClientboundPacket { 7 | 8 | private final int entityId; 9 | private final float yaw; 10 | 11 | public RotateHeadPacket(final int entityId, final float yaw) { 12 | this.entityId = entityId; 13 | this.yaw = yaw; 14 | } 15 | 16 | @Override 17 | public void encode(Buffer buf) { 18 | buf 19 | .writeVarInt(this.entityId) 20 | .writeAngel(this.yaw); 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "RotateHeadPacket{" + 26 | "entityId=" + this.entityId + 27 | ", yaw=" + this.yaw + 28 | '}'; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SetActionBarTextPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import net.kyori.adventure.text.Component; 6 | 7 | public final class SetActionBarTextPacket implements ClientboundPacket { 8 | 9 | private final Component text; 10 | 11 | public SetActionBarTextPacket(final Component actionBar) { 12 | this.text = actionBar; 13 | } 14 | 15 | @Override 16 | public void encode(Buffer buf) { 17 | buf.writeComponent(this.text); 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "SetActionBarTextPacket{" + 23 | "text=" + this.text + 24 | '}'; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SetChunkCacheCenterPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class SetChunkCacheCenterPacket implements ClientboundPacket { 7 | 8 | private final int chunkX; 9 | private final int chunkZ; 10 | 11 | public SetChunkCacheCenterPacket(final int chunkX, final int chunkZ) { 12 | this.chunkX = chunkX; 13 | this.chunkZ = chunkZ; 14 | } 15 | 16 | @Override 17 | public void encode(Buffer buf) { 18 | buf.writeVarInt(this.chunkX).writeVarInt(this.chunkZ); 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return "SetChunkCacheCenterPacket{" + 24 | "chunkX=" + this.chunkX + 25 | ", chunkZ=" + this.chunkZ + 26 | '}'; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SetChunkCacheRadiusPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class SetChunkCacheRadiusPacket implements ClientboundPacket { 7 | 8 | private final int renderDistance; 9 | 10 | public SetChunkCacheRadiusPacket(final int renderDistance) { 11 | this.renderDistance = renderDistance; 12 | } 13 | 14 | @Override 15 | public void encode(Buffer buf) { 16 | buf.writeVarInt(this.renderDistance); 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "SetChunkCacheRadiusPacket{" + 22 | "renderDistance=" + this.renderDistance + 23 | '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SetDefaultSpawnPositionPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import eu.sculkpowered.server.world.Position; 6 | 7 | public final class SetDefaultSpawnPositionPacket implements ClientboundPacket { 8 | 9 | private final Position position; 10 | 11 | public SetDefaultSpawnPositionPacket(final Position position) { 12 | this.position = position; 13 | } 14 | 15 | @Override 16 | public void encode(Buffer buf) { 17 | buf 18 | .writePosition(this.position) 19 | .writeFloat(this.position.yaw()); 20 | } 21 | 22 | @Override 23 | public String toString() { 24 | return "SetDefaultSpawnPositionPacket{" + 25 | "position=" + this.position + 26 | '}'; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SetDisplayObjectivePacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class SetDisplayObjectivePacket implements ClientboundPacket { 7 | 8 | private final byte position; 9 | private final String scoreName; 10 | 11 | public SetDisplayObjectivePacket(final byte position, final String scoreName) { 12 | this.position = position; 13 | this.scoreName = scoreName; 14 | } 15 | 16 | @Override 17 | public void encode(Buffer buf) { 18 | buf 19 | .writeByte(this.position) 20 | .writeString(this.scoreName); 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "SetDisplayObjectivePacket{" + 26 | "position=" + this.position + 27 | ", scoreName='" + this.scoreName + '\'' + 28 | '}'; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SetSimulationDistancePacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class SetSimulationDistancePacket implements ClientboundPacket { 7 | 8 | private final int simulationDistance; 9 | 10 | public SetSimulationDistancePacket(final int simulationDistance) { 11 | this.simulationDistance = simulationDistance; 12 | } 13 | 14 | @Override 15 | public void encode(Buffer buf) { 16 | buf.writeVarInt(this.simulationDistance); 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "SetSimulationDistancePacket{" + 22 | "simulationDistance=" + this.simulationDistance + 23 | '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SetSubtitleTextPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import net.kyori.adventure.text.Component; 6 | 7 | public final class SetSubtitleTextPacket implements ClientboundPacket { 8 | 9 | private final Component text; 10 | 11 | public SetSubtitleTextPacket(final Component text) { 12 | this.text = text; 13 | } 14 | 15 | @Override 16 | public void encode(Buffer buf) { 17 | buf.writeComponent(this.text); 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "SetSubtitleTextPacket{" + 23 | "text=" + this.text + 24 | '}'; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SetTimePacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class SetTimePacket implements ClientboundPacket { 7 | 8 | private final long worldAge; 9 | private final long time; 10 | 11 | public SetTimePacket(final long worldAge, final long time) { 12 | this.worldAge = worldAge; 13 | this.time = time; 14 | } 15 | 16 | @Override 17 | public void encode(Buffer buf) { 18 | buf 19 | .writeLong(this.worldAge) 20 | .writeLong(this.time); 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "SetTimePacket{" + 26 | "worldAge=" + this.worldAge + 27 | ", time=" + this.time + 28 | '}'; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SetTitleTextPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import net.kyori.adventure.text.Component; 6 | 7 | public final class SetTitleTextPacket implements ClientboundPacket { 8 | 9 | private final Component text; 10 | 11 | public SetTitleTextPacket(final Component text) { 12 | this.text = text; 13 | } 14 | 15 | @Override 16 | public void encode(Buffer buf) { 17 | buf.writeComponent(this.text); 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "SetTitleTextPacket{" + 23 | "text=" + this.text + 24 | '}'; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/StatusResponsePacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class StatusResponsePacket implements ClientboundPacket { 7 | 8 | private final String json; 9 | 10 | public StatusResponsePacket(final String json) { 11 | this.json = json; 12 | } 13 | 14 | @Override 15 | public void encode(Buffer buf) { 16 | buf.writeString(this.json); 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "StatusResponsePacket{" + 22 | "json=" + this.json + 23 | '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/SystemChatPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import net.kyori.adventure.text.Component; 6 | 7 | public final class SystemChatPacket implements ClientboundPacket { 8 | 9 | private final Component data; 10 | private final boolean overlay; 11 | 12 | public SystemChatPacket(final Component data, final boolean overlay) { 13 | this.data = data; 14 | this.overlay = overlay; 15 | } 16 | 17 | @Override 18 | public void encode(Buffer buf) { 19 | buf 20 | .writeComponent(this.data) 21 | .writeBoolean(this.overlay); 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return "SystemChatPacket{" + 27 | "data=" + this.data + 28 | ", overlay=" + this.overlay + 29 | '}'; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/TabListPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | import net.kyori.adventure.text.Component; 6 | 7 | public final class TabListPacket implements ClientboundPacket { 8 | 9 | private final Component header; 10 | private final Component footer; 11 | 12 | public TabListPacket(final Component header, final Component footer) { 13 | this.header = header; 14 | this.footer = footer; 15 | } 16 | 17 | @Override 18 | public void encode(Buffer buf) { 19 | buf 20 | .writeComponent(this.header) 21 | .writeComponent(this.footer); 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return "TabListPacket{" + 27 | "header=" + this.header + 28 | ", footer=" + this.footer + 29 | '}'; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/UpdateEnabledFeaturesPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class UpdateEnabledFeaturesPacket implements ClientboundPacket { 7 | 8 | private final String[] features; 9 | 10 | public UpdateEnabledFeaturesPacket(final String[] features) { 11 | this.features = features; 12 | } 13 | 14 | @Override 15 | public void encode(Buffer buf) { 16 | buf.writeVarInt(this.features.length); 17 | for (final var feature : this.features) { 18 | buf.writeString(feature); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/UpdateRecipesPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class UpdateRecipesPacket implements ClientboundPacket { 7 | 8 | @Override 9 | public void encode(Buffer buf) { 10 | buf.writeVarInt(0); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/clientbound/UpdateTagsPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.clientbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.ClientboundPacket; 5 | 6 | public final class UpdateTagsPacket implements ClientboundPacket { 7 | 8 | @Override 9 | public void encode(Buffer buf) { 10 | buf.writeVarInt(0); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/serverbound/AcceptTeleportationPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.serverbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.PacketHandler; 5 | import eu.sculkpowered.server.protocol.packet.ServerboundPacket; 6 | 7 | public final class AcceptTeleportationPacket implements ServerboundPacket { 8 | 9 | private int teleportId; 10 | 11 | @Override 12 | public void decode(Buffer buf) { 13 | this.teleportId = buf.readVarInt(); 14 | } 15 | 16 | @Override 17 | public boolean handle(PacketHandler handler) { 18 | return handler.handle(this); 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return "AcceptTeleportationPacket{" + 24 | "teleportId=" + this.teleportId + 25 | '}'; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/serverbound/ChatCommandPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.serverbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.PacketHandler; 5 | import eu.sculkpowered.server.protocol.packet.ServerboundPacket; 6 | 7 | public final class ChatCommandPacket implements ServerboundPacket { 8 | 9 | private String command; 10 | 11 | @Override 12 | public void decode(Buffer buf) { 13 | this.command = buf.readString(); 14 | } 15 | 16 | @Override 17 | public boolean handle(PacketHandler handler) { 18 | return handler.handle(this); 19 | } 20 | 21 | public String command() { 22 | return this.command; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "ChatCommandPacket{" + 28 | "command='" + this.command + '\'' + 29 | '}'; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/serverbound/LoginAcknowledgedPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.serverbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.PacketHandler; 5 | import eu.sculkpowered.server.protocol.packet.ServerboundPacket; 6 | 7 | public final class LoginAcknowledgedPacket implements ServerboundPacket { 8 | 9 | public static final LoginAcknowledgedPacket INSTANCE = new LoginAcknowledgedPacket(); 10 | 11 | @Override 12 | public void decode(Buffer buf) { 13 | 14 | } 15 | 16 | @Override 17 | public int maxLength() { 18 | return 0; 19 | } 20 | 21 | @Override 22 | public boolean handle(PacketHandler handler) { 23 | return handler.handle(this); 24 | } 25 | 26 | @Override 27 | public String toString() { 28 | return "LoginAcknowledgedPacket"; 29 | } 30 | } -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/serverbound/MovePlayerStatusOnlyPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.serverbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.PacketHandler; 5 | import eu.sculkpowered.server.protocol.packet.ServerboundPacket; 6 | 7 | public final class MovePlayerStatusOnlyPacket implements ServerboundPacket { 8 | 9 | private boolean onGround; 10 | 11 | @Override 12 | public void decode(Buffer buf) { 13 | this.onGround = buf.readBoolean(); 14 | } 15 | 16 | @Override 17 | public boolean handle(PacketHandler handler) { 18 | return handler.handle(this); 19 | } 20 | 21 | public boolean onGround() { 22 | return this.onGround; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "MovePlayerStatusOnlyPacket{" + 28 | "onGround=" + this.onGround + 29 | '}'; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/serverbound/StatusRequest.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.serverbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.PacketHandler; 5 | import eu.sculkpowered.server.protocol.packet.ServerboundPacket; 6 | 7 | public final class StatusRequest implements ServerboundPacket { 8 | 9 | public static final StatusRequest INSTANCE = new StatusRequest(); 10 | 11 | @Override 12 | public void decode(Buffer buf) { 13 | } 14 | 15 | @Override 16 | public boolean handle(PacketHandler handler) { 17 | return handler.handle(this); 18 | } 19 | 20 | @Override 21 | public int maxLength() { 22 | return 0; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "StatusRequest"; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/protocol/packet/serverbound/TeleportToEntityPacket.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.protocol.packet.serverbound; 2 | 3 | import eu.sculkpowered.server.protocol.Buffer; 4 | import eu.sculkpowered.server.protocol.packet.PacketHandler; 5 | import eu.sculkpowered.server.protocol.packet.ServerboundPacket; 6 | import java.util.UUID; 7 | 8 | public final class TeleportToEntityPacket implements ServerboundPacket { 9 | 10 | private UUID target; 11 | 12 | @Override 13 | public void decode(Buffer buf) { 14 | this.target = buf.readUniqueId(); 15 | } 16 | 17 | @Override 18 | public boolean handle(PacketHandler handler) { 19 | return handler.handle(this); 20 | } 21 | 22 | @Override 23 | public String toString() { 24 | return "TeleportToEntityPacket{" + 25 | "target=" + this.target + 26 | '}'; 27 | } 28 | 29 | public UUID target() { 30 | return this.target; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/util/ItemList.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.util; 2 | 3 | import eu.sculkpowered.server.container.item.ItemStack; 4 | import java.util.AbstractList; 5 | 6 | public final class ItemList extends AbstractList { 7 | 8 | private final ItemStack[] items; 9 | private final int size; 10 | 11 | public ItemList(int size) { 12 | this.items = new ItemStack[size]; 13 | for (var i = 0; i < size; i++) { 14 | this.items[i] = ItemStack.empty(); 15 | } 16 | this.size = size; 17 | } 18 | 19 | @Override 20 | public ItemStack get(int index) { 21 | return this.items[index]; 22 | } 23 | 24 | @Override 25 | public ItemStack set(int index, ItemStack item) { 26 | final var previous = this.items[index]; 27 | this.items[index] = item; 28 | return previous; 29 | } 30 | 31 | @Override 32 | public int size() { 33 | return this.size; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/world/chunk/loader/ChunkLoader.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.world.chunk.loader; 2 | 3 | import eu.sculkpowered.server.world.SculkWorld; 4 | import eu.sculkpowered.server.world.chunk.ChunkGenerator; 5 | import eu.sculkpowered.server.world.chunk.SculkChunk; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | public interface ChunkLoader { 9 | 10 | @NotNull SculkChunk loadChunk(SculkWorld world, int x, int z); 11 | 12 | @NotNull ChunkGenerator getGenerator(); 13 | } 14 | -------------------------------------------------------------------------------- /server/src/main/java/eu/sculkpowered/server/world/chunk/loader/DefaultChunkLoader.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.world.chunk.loader; 2 | 3 | import eu.sculkpowered.server.world.SculkWorld; 4 | import eu.sculkpowered.server.world.chunk.ChunkGenerator; 5 | import eu.sculkpowered.server.world.chunk.SculkChunk; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | public class DefaultChunkLoader implements ChunkLoader { 9 | 10 | private final ChunkGenerator generator; 11 | 12 | public DefaultChunkLoader(final ChunkGenerator generator) { 13 | this.generator = generator; 14 | } 15 | 16 | @Override 17 | public @NotNull SculkChunk loadChunk(SculkWorld world, int x, int z) { 18 | final var chunk = new SculkChunk(world, x, z); 19 | this.generator.generate(chunk); 20 | return chunk; 21 | } 22 | 23 | @Override 24 | public @NotNull ChunkGenerator getGenerator() { 25 | return this.generator; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /server/src/main/resources/META-INF/services/net.kyori.adventure.bossbar.BossBarImplementation$Provider: -------------------------------------------------------------------------------- 1 | eu.sculkpowered.server.adventure.BossBarProvider -------------------------------------------------------------------------------- /server/src/main/resources/META-INF/services/net.kyori.adventure.text.logger.slf4j.ComponentLoggerProvider: -------------------------------------------------------------------------------- 1 | eu.sculkpowered.server.adventure.AdventureLoggerProvider -------------------------------------------------------------------------------- /server/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /server/src/test/java/eu/sculkpowered/server/test/block/BlockTest.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.test.block; 2 | 3 | import eu.sculkpowered.server.world.block.BlockRegistry; 4 | import org.junit.jupiter.api.Assertions; 5 | import org.junit.jupiter.api.Test; 6 | 7 | public final class BlockTest { 8 | 9 | @Test 10 | public void test() { 11 | Assertions.assertDoesNotThrow(() -> BlockRegistry.get()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /server/src/test/java/eu/sculkpowered/server/test/plugin/TestPlugin.java: -------------------------------------------------------------------------------- 1 | package eu.sculkpowered.server.test.plugin; 2 | 3 | import eu.sculkpowered.server.plugin.Plugin; 4 | import eu.sculkpowered.server.plugin.PluginDescription; 5 | 6 | @PluginDescription(name = "Test", version = "1.0") 7 | public final class TestPlugin extends Plugin { 8 | 9 | public static final Plugin PLUGIN = new TestPlugin(); 10 | } 11 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "sculk-server" 2 | include( 3 | "api", 4 | "server", 5 | "server:appender", 6 | "code-generator" 7 | ) --------------------------------------------------------------------------------