├── .github └── workflows │ └── build.yml ├── .gitignore ├── README.MD ├── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src └── main └── java └── dev └── xdark └── clientapi ├── ClientApi.java ├── Side.java ├── SidedApi.java ├── attribute ├── Attribute.java ├── AttributeModifier.java ├── RangedAttribute.java └── StandardAttributes.java ├── biome ├── Biome.java ├── BiomeProperties.java ├── BiomeRegistry.java ├── FoliageColorProvider.java ├── GrassColorProvider.java ├── SkyColorProvider.java ├── TemperatureCategory.java ├── TemperatureCategoryProvider.java ├── TemperatureProvider.java └── WaterColorProvider.java ├── block ├── Block.java ├── BlockGlass.java ├── BlockRegistry.java ├── BlockStainedGlass.java ├── Blocks.java ├── OffsetType.java ├── SoundType.java ├── handler │ ├── AccelerationModificationHandler.java │ ├── ActualStateHandler.java │ ├── AmbientOcclusionLightValueHandler.java │ ├── BlockActivationHandler.java │ ├── BlockClickHandler.java │ ├── BlockHardnessHandler.java │ ├── BlockHarvestHandler.java │ ├── BlockPlacedHandler.java │ ├── BlockPlacementCheckHandler.java │ ├── BlockStateCreator.java │ ├── BoundingBoxHandler.java │ ├── CollidableHandler.java │ ├── CollideCheckHandler.java │ ├── CollisionBoundingBoxHandler.java │ ├── CollisionBoxListHandler.java │ ├── CollisionRayTraceHandler.java │ ├── ComparatorInputOverrideCheckHandler.java │ ├── ComparatorInputOverrideHandler.java │ ├── CustomBreakingProgressHandler.java │ ├── DisplayTickHandler.java │ ├── DroppedDamageHandler.java │ ├── EntityCollisionHandler.java │ ├── EntityFallenHandler.java │ ├── EntityLandHandler.java │ ├── EntityWalkHandler.java │ ├── EventReceiveHandler.java │ ├── FaceShapeHandler.java │ ├── FullBlockHandler.java │ ├── FullCubeHandler.java │ ├── InformationHandler.java │ ├── ItemHandler.java │ ├── LightOpacityHandler.java │ ├── LightValueHandler.java │ ├── LightmapCoordsHandler.java │ ├── MapColorHandler.java │ ├── MaterialHandler.java │ ├── MetaHandler.java │ ├── MirrorHandler.java │ ├── NeighborBrightnessHandler.java │ ├── OpaqueCubeHandler.java │ ├── PassHandler.java │ ├── PlayerDestroyHandler.java │ ├── PlayerRelativeHardnessHandler.java │ ├── PowerProvideCheckHandler.java │ ├── PushReactionHandler.java │ ├── RenderTypeHandler.java │ ├── ReplaceHandler.java │ ├── RotationHandler.java │ ├── SelectedBoundingBoxHandler.java │ ├── SidePlacementHandler.java │ ├── SideRenderHandler.java │ ├── SolidTopHandler.java │ ├── StatePlacementHandler.java │ ├── StrongPowerHandler.java │ ├── SubBlocksHandler.java │ ├── SuffocationHandler.java │ ├── TickRateHandler.java │ ├── TranslucentHandler.java │ └── WeakPowerHandler.java ├── material │ ├── MapColor.java │ ├── Material.java │ └── PushReaction.java ├── properties │ ├── BooleanProperty.java │ ├── EnumProperty.java │ ├── IntegerProperty.java │ └── Property.java └── state │ ├── BlockFaceShape.java │ ├── BlockProperties.java │ ├── BlockState.java │ └── BlockStateContainer.java ├── chat └── Chat.java ├── discord └── DiscordRPC.java ├── entity ├── AbstractClientPlayer.java ├── DataParameter.java ├── DataSerializer.java ├── DataSerializers.java ├── Entity.java ├── EntityArmorStand.java ├── EntityDataManager.java ├── EntityEnderCrystal.java ├── EntityItem.java ├── EntityLightningBolt.java ├── EntityLiving.java ├── EntityLivingBase.java ├── EntityPlayer.java ├── EntityPlayerSP.java ├── EntityProvider.java ├── EntityWeatherEffect.java └── PlayerModelPart.java ├── entry └── ModMain.java ├── event ├── Cancellable.java ├── Event.java ├── EventBus.java ├── Listener.java ├── RegisteredListener.java ├── block │ ├── BlockLeftClick.java │ └── BlockRightClick.java ├── chat │ ├── ChatReceive.java │ ├── ChatSend.java │ └── TabComplete.java ├── chunk │ ├── ChunkLoad.java │ └── ChunkUnload.java ├── entity │ ├── EntityDataChange.java │ ├── EntityDespawn.java │ ├── EntityInit.java │ ├── EntityLeftClick.java │ ├── EntityRightClick.java │ ├── EntitySpawn.java │ ├── LivingUpdate.java │ ├── PlayerJump.java │ ├── PlayerSprint.java │ ├── RotateAround.java │ ├── Travel.java │ └── Update.java ├── gui │ └── ScreenDisplay.java ├── input │ ├── KeyPress.java │ ├── MousePress.java │ └── RightClick.java ├── inventory │ └── WindowClick.java ├── lifecycle │ ├── GameLoop.java │ ├── GameQuit.java │ ├── GameTickPost.java │ └── GameTickPre.java ├── model │ └── ModelBakerySetup.java ├── network │ ├── PacketReceive.java │ ├── PluginMessage.java │ ├── ServerConnect.java │ ├── ServerJoin.java │ ├── ServerQuit.java │ └── ServerSwitch.java ├── render │ ├── AirBarRender.java │ ├── ArmorRender.java │ ├── BlockLayerRender.java │ ├── DebugOverlayRender.java │ ├── EntitySleepingRotate.java │ ├── ExpBarRender.java │ ├── GuiOverlayRender.java │ ├── HandRender.java │ ├── HealthRender.java │ ├── HotbarRender.java │ ├── HungerRender.java │ ├── ItemTooltipRender.java │ ├── JumpPowerRender.java │ ├── NameTemplateRender.java │ ├── OrientCamera.java │ ├── PlayerListRender.java │ ├── PotionsRender.java │ ├── RenderPass.java │ ├── RenderTickPost.java │ ├── RenderTickPre.java │ ├── ScaleChange.java │ ├── TooltipRender.java │ └── VehicleHealthRender.java ├── resource │ ├── LocalePopulation.java │ └── ResourcesReload.java └── window │ └── WindowResize.java ├── game ├── Minecraft.java ├── PlayerController.java ├── ScreenshotHelper.java ├── Session.java └── Timer.java ├── gui ├── Button.java ├── ButtonDrawHandler.java ├── ButtonForegroundHandler.java ├── ButtonMouseDraggedHandler.java ├── ButtonMousePressedHandler.java ├── ButtonMouseReleasedHandler.java ├── ButtonSoundPressHandler.java ├── ChatOverlay.java ├── CreativeTab.java ├── IngameUI.java ├── Label.java ├── LabelBackgroundDrawHandler.java ├── LabelDrawHandler.java ├── Screen.java ├── ScreenActionHandler.java ├── ScreenClickConfirmHandler.java ├── ScreenCloseHandler.java ├── ScreenDrawHandler.java ├── ScreenInitHandler.java ├── ScreenKeyTypedHandler.java ├── ScreenKeyboardInputHandler.java ├── ScreenMouseClickMoveHandler.java ├── ScreenMouseClickedHandler.java ├── ScreenMouseInputHandler.java ├── ScreenMouseReleasedHandler.java ├── ScreenResizeHandler.java ├── ScreenTextClickHandler.java ├── ScreenTextControlHandler.java ├── ScreenUpdateHandler.java ├── TextField.java ├── UIComponent.java └── ingame │ ├── AdvancementsScreen.java │ ├── ChatScreen.java │ ├── IngameMenuScreen.java │ ├── InventoryCreativeScreen.java │ ├── InventorySurvivalScreen.java │ └── OptionsScreen.java ├── input ├── KeyboardHelper.java └── MouseHelper.java ├── internal ├── DumpBytecode.java └── Unstable.java ├── inventory ├── ClickType.java ├── Container.java ├── ContainerLocalMenu.java ├── EntityEquipmentSlot.java ├── Inventory.java ├── InventoryBasic.java ├── InventoryPlayer.java └── Slot.java ├── item ├── ArmorMaterial.java ├── BlockDestroyHandler.java ├── BlockDestroySpeedHandler.java ├── BlockHarvestHandler.java ├── EntityHitHandler.java ├── EntityInteractHandler.java ├── EntityStoppedUsingHandler.java ├── FoodEatHandler.java ├── FoodHealHandler.java ├── FoodSaturationHandler.java ├── Item.java ├── ItemArmor.java ├── ItemAttributeHandler.java ├── ItemAxe.java ├── ItemBlock.java ├── ItemCreateHandler.java ├── ItemEffectHandler.java ├── ItemEnchantHandler.java ├── ItemFood.java ├── ItemInformationHandler.java ├── ItemMetadataHandler.java ├── ItemPickaxe.java ├── ItemProperty.java ├── ItemRarityHandler.java ├── ItemRegistry.java ├── ItemRepairHandler.java ├── ItemRightClickHandler.java ├── ItemSpade.java ├── ItemStack.java ├── ItemSword.java ├── ItemTool.java ├── ItemTools.java ├── ItemUseActionHandler.java ├── ItemUseFinishHandler.java ├── ItemUseHandler.java ├── Items.java ├── Rarity.java ├── ToolMaterial.java ├── TooltipFlag.java └── UseAction.java ├── jvm ├── ClassDefiner.java ├── Intrinsics.java └── Natives.java ├── language ├── Language.java ├── LanguageManager.java └── Locale.java ├── logging └── LoggingManagement.java ├── math ├── AxisAlignedBB.java ├── BlockPos.java ├── MathHelper.java ├── MathProvider.java ├── RayTraceResult.java ├── Rotations.java ├── Vec3d.java └── Vec3i.java ├── nbt ├── CompressedStreamTools.java ├── NBTBase.java ├── NBTPrimitive.java ├── NBTProvider.java ├── NBTTagCompound.java ├── NBTTagList.java └── NBTTagString.java ├── network ├── ClientConnection.java ├── NetHandler.java ├── NetworkPlayerInfo.java ├── Packet.java ├── PacketDirection.java └── protocol │ └── ConnectionState.java ├── opengl ├── GLAllocation.java ├── GlStateManager.java ├── OpenGlHelper.java └── RenderHelper.java ├── option └── client │ ├── AmbientOcclusion.java │ ├── ClientOptions.java │ ├── CloudRender.java │ ├── ParticleVisibility.java │ ├── ScreenScale.java │ └── VisualQuality.java ├── p13n └── P13nProvider.java ├── particle ├── Particle.java └── ParticleManager.java ├── potion ├── Potion.java ├── PotionEffect.java └── PotionRegistry.java ├── realm └── RealmInfo.java ├── render ├── BufferBuilder.java ├── DefaultVertexFormats.java ├── EntityRenderer.java ├── FontRenderer.java ├── Framebuffer.java ├── OverlayRenderer.java ├── RenderGlobal.java ├── RenderItem.java ├── ScaledResolution.java ├── Tessellator.java ├── VertexFormat.java └── model │ └── ItemCameraTransforms.java ├── renderer ├── BlockModelShapes.java ├── block │ ├── model │ │ ├── BakedModel.java │ │ ├── BakedQuad.java │ │ ├── BlockFaceUV.java │ │ ├── BlockPart.java │ │ ├── BlockPartFace.java │ │ ├── BlockPartRotation.java │ │ ├── ItemOverride.java │ │ ├── ItemTransformVec3f.java │ │ ├── ModelBakery.java │ │ ├── ModelBlock.java │ │ ├── ModelBlockDefinition.java │ │ ├── ModelManager.java │ │ ├── ModelResourceLocation.java │ │ ├── ModelRotation.java │ │ ├── Variant.java │ │ ├── VariantList.java │ │ └── multipart │ │ │ ├── Condition.java │ │ │ ├── Multipart.java │ │ │ └── Selector.java │ └── statemap │ │ ├── BlockStateMapper.java │ │ └── StateMapper.java ├── color │ └── BlockColor.java ├── culling │ └── Camera.java ├── entity │ ├── Render.java │ └── RenderManager.java └── texture │ ├── PngSizeInfo.java │ ├── TextureAtlasSprite.java │ └── TextureMap.java ├── resource ├── ReloadableResourceManager.java ├── Resource.java ├── ResourceLocation.java ├── ResourceManager.java ├── ResourceManagerReloadListener.java ├── ResourcePack.java └── data │ ├── AnimationMetadataSection.java │ └── MetadataSection.java ├── runtime └── Platform.java ├── settings ├── KeyBinding.java └── SettingsManager.java ├── skin ├── SkinAvailableCallback.java └── SkinManager.java ├── sound ├── SoundCategory.java ├── SoundEvent.java ├── SoundEvents.java ├── SoundHandler.java ├── SoundListener.java └── SoundRequest.java ├── system └── Clipboard.java ├── text ├── ClickEvent.java ├── HoverEvent.java ├── Style.java ├── Text.java ├── TextFormatting.java ├── TextJSON.java ├── TextKeybinding.java ├── TextLiteral.java └── TextProvider.java ├── texture ├── DynamicTexture.java ├── RenderEngine.java └── Texture.java ├── thread └── ThreadManagement.java ├── tile └── TileEntity.java ├── util ├── ActionResult.java ├── BlockRenderLayer.java ├── BlockRenderType.java ├── BooleanToIntFunction.java ├── CompileStub.java ├── EnumFacing.java ├── EnumHand.java ├── EnumHandSide.java ├── FoodStats.java ├── IntToIntFunction.java ├── Mirror.java ├── ParticleType.java ├── ProceedActionResult.java ├── Rotation.java ├── SearchTree.java ├── SideEffects.java ├── StringSerializable.java ├── ThreadListener.java └── UIHandler.java └── world ├── BlockAccess.java ├── GameMode.java ├── World.java ├── WorldNameable.java └── chunk ├── Chunk.java ├── ChunkProvider.java └── ExtendedBlockStorage.java /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v2 10 | - name: Set up JDK 1.8 11 | uses: actions/setup-java@v1 12 | with: 13 | java-version: 1.8 14 | - name: Publish with Gradle 15 | run: ./gradlew --no-daemon publish 16 | env: 17 | IMPLARIO_REPO_USER: ${{ secrets.IMPLARIO_REPO_USER }} 18 | IMPLARIO_REPO_PASSWORD: ${{ secrets.IMPLARIO_REPO_PASSWORD }} 19 | continue-on-error: true 20 | - uses: actions/upload-artifact@v2 21 | with: 22 | name: Package 23 | path: build/libs/* -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # IntelliJ 2 | out/ 3 | .idea/ 4 | .idea_modules/ 5 | *.iws 6 | *.iml 7 | 8 | # Eclipse 9 | .settings/ 10 | .classpath 11 | .checkstyle 12 | .project 13 | 14 | # Gradle 15 | target/ 16 | build/ 17 | gradle-app.setting 18 | .gradle 19 | .gradletasknamecache 20 | !gradle-wrapper.jar 21 | **/build/ 22 | 23 | # Misc 24 | hs_err_pid* 25 | *.log 26 | *.ctxt 27 | temp/ -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xxDark/cristalix-client-api-java/a07498862eaf51f9aab0b65e66a6bd2ae0eab76b/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-6.8.1-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'clientapi' 2 | 3 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/Side.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi; 2 | 3 | public enum Side { 4 | 5 | SERVER, BOTH, INTERNAL, 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/SidedApi.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi; 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 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target({ElementType.TYPE, ElementType.METHOD}) 10 | public @interface SidedApi { 11 | 12 | Side value(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/attribute/Attribute.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.attribute; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface Attribute { 8 | 9 | String getName(); 10 | 11 | double clampValue(double value); 12 | 13 | double getDefaultValue(); 14 | 15 | boolean shouldWatch(); 16 | 17 | Attribute getParent(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/attribute/AttributeModifier.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.attribute; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | import java.util.UUID; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface AttributeModifier { 11 | 12 | UUID getId(); 13 | 14 | String getName(); 15 | 16 | int getOperation(); 17 | 18 | double getAmount(); 19 | 20 | @SidedApi(Side.SERVER) 21 | interface Builder { 22 | 23 | static Builder builder() { 24 | throw CompileStub.create(); 25 | } 26 | 27 | Builder id(UUID id); 28 | 29 | Builder name(String name); 30 | 31 | Builder operation(int operation); 32 | 33 | Builder amount(double amount); 34 | 35 | AttributeModifier build(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/attribute/RangedAttribute.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.attribute; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface RangedAttribute extends Attribute { 9 | 10 | double getMinValue(); 11 | 12 | double getMaxValue(); 13 | 14 | String getDescription(); 15 | 16 | @SidedApi(Side.SERVER) 17 | interface Builder { 18 | 19 | static Builder builder() { 20 | throw CompileStub.create(); 21 | } 22 | 23 | Builder minValue(double minValue); 24 | 25 | Builder maxValue(double maxValue); 26 | 27 | Builder description(String description); 28 | 29 | RangedAttribute build(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/attribute/StandardAttributes.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.attribute; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public final class StandardAttributes { 10 | 11 | public static final Attribute MAX_HEALTH = objectValue(), 12 | FOLLOW_RANGE = objectValue(), 13 | KNOCKBACK_RESISTANCE = objectValue(), 14 | MOVEMENT_SPEED = objectValue(), 15 | FLYING_SPEED = objectValue(), 16 | ATTACK_DAMAGE = objectValue(), 17 | ATTACK_SPEED = objectValue(), 18 | ARMOR = objectValue(), 19 | ARMOR_TOUGHNESS = objectValue(), 20 | LUCK = objectValue(); 21 | 22 | private StandardAttributes() {} 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/biome/BiomeRegistry.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.biome; 2 | 3 | public interface BiomeRegistry { 4 | 5 | Biome getById(int id); 6 | 7 | Biome getByInternalName(String internalName); 8 | 9 | void register(int id, String internalName, Biome biome); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/biome/FoliageColorProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.biome; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface FoliageColorProvider { 8 | 9 | int getColorAt(Biome biome, int x, int y, int z); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/biome/GrassColorProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.biome; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface GrassColorProvider { 8 | 9 | int getColorAt(Biome biome, int x, int y, int z); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/biome/SkyColorProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.biome; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface SkyColorProvider { 8 | 9 | int getSkyColorByTemperature(Biome biome, float temperature); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/biome/TemperatureCategory.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.biome; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface TemperatureCategory { 10 | 11 | TemperatureCategory OCEAN = objectValue(), 12 | COLD = objectValue(), 13 | MEDIUM = objectValue(), 14 | WARM = objectValue(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/biome/TemperatureCategoryProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.biome; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface TemperatureCategoryProvider { 8 | 9 | TemperatureCategory getCategory(Biome biome); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/biome/TemperatureProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.biome; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface TemperatureProvider { 8 | 9 | float getTemperature(Biome biome, int x, int y, int z); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/biome/WaterColorProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.biome; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface WaterColorProvider { 8 | 9 | int getColor(Biome biome); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/BlockGlass.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface BlockGlass extends Block { 9 | 10 | @SidedApi(Side.SERVER) 11 | interface Builder extends Block.Builder { 12 | 13 | static Builder builder() { 14 | throw CompileStub.create(); 15 | } 16 | 17 | @Override 18 | BlockGlass build(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/BlockRegistry.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.resource.ResourceLocation; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface BlockRegistry { 10 | 11 | Block getBlock(int id); 12 | 13 | BlockState getState(int id); 14 | 15 | Block getBlock(String idOrLocation); 16 | 17 | void register(int id, ResourceLocation location, Block block); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/BlockStainedGlass.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface BlockStainedGlass extends Block { 9 | 10 | @SidedApi(Side.SERVER) 11 | interface Builder extends Block.Builder { 12 | 13 | static Builder builder() { 14 | throw CompileStub.create(); 15 | } 16 | 17 | @Override 18 | BlockStainedGlass build(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/OffsetType.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface OffsetType { 10 | 11 | OffsetType NONE = objectValue(), XZ = objectValue(), XYZ = objectValue(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/AccelerationModificationHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.entity.Entity; 7 | import dev.xdark.clientapi.math.Vec3d; 8 | import dev.xdark.clientapi.world.World; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface AccelerationModificationHandler { 12 | 13 | Vec3d modifyAcceleration( 14 | Block block, World world, int x, int y, int z, Entity entity, Vec3d acceleration); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/ActualStateHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.world.BlockAccess; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ActualStateHandler { 10 | 11 | BlockState getActualState(BlockState state, BlockAccess blockAccess, int x, int y, int z); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/AmbientOcclusionLightValueHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface AmbientOcclusionLightValueHandler { 9 | 10 | float getAmbientOcclusionLightValue(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/BlockActivationHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.entity.EntityPlayer; 7 | import dev.xdark.clientapi.util.EnumFacing; 8 | import dev.xdark.clientapi.util.EnumHand; 9 | import dev.xdark.clientapi.world.World; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface BlockActivationHandler { 13 | 14 | boolean onBlockActivated( 15 | World world, 16 | int x, 17 | int y, 18 | int z, 19 | BlockState state, 20 | EntityPlayer player, 21 | EnumHand hand, 22 | EnumFacing side, 23 | float hitX, 24 | float hitY, 25 | float hitZ); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/BlockClickHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.entity.EntityPlayer; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface BlockClickHandler { 11 | 12 | void onBlockClicked(Block block, World world, int x, int y, int z, EntityPlayer player); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/BlockHardnessHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.world.World; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface BlockHardnessHandler { 10 | 11 | float getBlockHardness(BlockState state, World world, int x, int y, int z); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/BlockHarvestHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.entity.EntityPlayer; 7 | import dev.xdark.clientapi.math.BlockPos; 8 | import dev.xdark.clientapi.world.World; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface BlockHarvestHandler { 12 | 13 | void onBlockHarvested(World world, BlockPos pos, BlockState state, EntityPlayer player); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/BlockPlacedHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.entity.EntityLivingBase; 7 | import dev.xdark.clientapi.item.ItemStack; 8 | import dev.xdark.clientapi.math.BlockPos; 9 | import dev.xdark.clientapi.world.World; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface BlockPlacedHandler { 13 | 14 | void onBlockPlacedBy( 15 | World world, 16 | BlockPos pos, 17 | BlockState state, 18 | EntityLivingBase entity, 19 | ItemStack stack); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/BlockPlacementCheckHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.world.World; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface BlockPlacementCheckHandler { 10 | 11 | boolean canPlaceBlockAt(Block block, World world, int x, int y, int z); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/BlockStateCreator.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.block.state.BlockStateContainer; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface BlockStateCreator { 10 | 11 | BlockStateContainer createBlockState(Block block); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/BoundingBoxHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.math.AxisAlignedBB; 7 | import dev.xdark.clientapi.world.BlockAccess; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface BoundingBoxHandler { 11 | 12 | AxisAlignedBB getBoundingBox(BlockState state, BlockAccess blockAccess, int x, int y, int z); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/CollidableHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface CollidableHandler { 9 | 10 | boolean isCollideable(Block block); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/CollideCheckHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface CollideCheckHandler { 9 | 10 | boolean canCollideCheck(BlockState state, boolean hitIfLiquid); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/CollisionBoundingBoxHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.math.AxisAlignedBB; 7 | import dev.xdark.clientapi.world.BlockAccess; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface CollisionBoundingBoxHandler { 11 | 12 | AxisAlignedBB getCollisionBoundingBox( 13 | BlockState state, BlockAccess blockAccess, int x, int y, int z); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/CollisionBoxListHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.entity.Entity; 7 | import dev.xdark.clientapi.math.AxisAlignedBB; 8 | import dev.xdark.clientapi.world.World; 9 | 10 | import java.util.List; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface CollisionBoxListHandler { 14 | 15 | void addCollisionBoxToList( 16 | BlockState state, 17 | World world, 18 | int x, 19 | int y, 20 | int z, 21 | AxisAlignedBB entityBox, 22 | List collidingBoxes, 23 | Entity entity, 24 | boolean isActualState); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/CollisionRayTraceHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.math.RayTraceResult; 7 | import dev.xdark.clientapi.math.Vec3d; 8 | import dev.xdark.clientapi.world.World; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface CollisionRayTraceHandler { 12 | 13 | RayTraceResult collisionRayTrace( 14 | BlockState blockState, World world, int x, int y, int z, Vec3d start, Vec3d end); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/ComparatorInputOverrideCheckHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ComparatorInputOverrideCheckHandler { 9 | 10 | boolean hasComparatorInputOverride(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/ComparatorInputOverrideHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.world.World; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ComparatorInputOverrideHandler { 10 | 11 | int getComparatorInputOverride(BlockState state, World world, int x, int y, int z); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/CustomBreakingProgressHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface CustomBreakingProgressHandler { 9 | 10 | boolean hasCustomBreakingProgress(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/DisplayTickHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.world.World; 7 | 8 | import java.util.Random; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface DisplayTickHandler { 12 | 13 | void randomDisplayTick(BlockState blockState, World world, int x, int y, int z, Random random); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/DroppedDamageHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface DroppedDamageHandler { 9 | 10 | int damageDropped(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/EntityCollisionHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.entity.Entity; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface EntityCollisionHandler { 11 | 12 | void onEntityCollision(World world, int x, int y, int z, BlockState state, Entity entity); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/EntityFallenHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.block.Block; 4 | import dev.xdark.clientapi.entity.Entity; 5 | import dev.xdark.clientapi.world.World; 6 | 7 | public interface EntityFallenHandler { 8 | 9 | void onFallenUpon( 10 | Block block, World world, int x, int y, int z, Entity entity, float fallDistance); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/EntityLandHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.entity.Entity; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface EntityLandHandler { 11 | 12 | void onLanded(Block block, World world, Entity entity); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/EntityWalkHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.entity.Entity; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface EntityWalkHandler { 11 | 12 | void onEntityWalk(Block block, World world, int x, int y, int z, Entity entity); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/EventReceiveHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.world.World; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface EventReceiveHandler { 10 | 11 | boolean eventReceived(BlockState state, World world, int x, int y, int z, int id, int param); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/FaceShapeHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockFaceShape; 6 | import dev.xdark.clientapi.block.state.BlockState; 7 | import dev.xdark.clientapi.util.EnumFacing; 8 | import dev.xdark.clientapi.world.BlockAccess; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface FaceShapeHandler { 12 | 13 | BlockFaceShape getBlockFaceShape( 14 | BlockAccess blockAccess, BlockState state, int x, int y, int z, EnumFacing facing); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/FullBlockHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface FullBlockHandler { 9 | 10 | boolean isFullBlock(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/FullCubeHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface FullCubeHandler { 9 | 10 | boolean isFullCube(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/InformationHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.item.ItemStack; 7 | import dev.xdark.clientapi.item.TooltipFlag; 8 | import dev.xdark.clientapi.world.World; 9 | 10 | import java.util.List; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface InformationHandler { 14 | 15 | void addInformation(Block block,ItemStack stack, World world, List info, TooltipFlag tooltipFlag); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/ItemHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.item.ItemStack; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ItemHandler { 11 | 12 | ItemStack getItem(World world, int x, int y, int z, BlockState state); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/LightOpacityHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface LightOpacityHandler { 9 | 10 | int getLightOpacity(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/LightValueHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface LightValueHandler { 9 | 10 | int getLightValue(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/LightmapCoordsHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.world.BlockAccess; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface LightmapCoordsHandler { 10 | 11 | int getPackedLightmapCoords(BlockState state, BlockAccess blockAccess, int x, int y, int z); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/MapColorHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.material.MapColor; 6 | import dev.xdark.clientapi.block.state.BlockState; 7 | import dev.xdark.clientapi.math.BlockPos; 8 | import dev.xdark.clientapi.world.BlockAccess; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface MapColorHandler { 12 | 13 | MapColor getMapColor(BlockState state, BlockAccess blockAccess, BlockPos pos); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/MaterialHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.material.Material; 6 | import dev.xdark.clientapi.block.state.BlockState; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface MaterialHandler { 10 | 11 | Material getMaterial(BlockState state); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/MetaHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.block.state.BlockState; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface MetaHandler { 10 | 11 | BlockState getStateFromMeta(Block block, int meta); 12 | 13 | int getMetaFromState(BlockState state); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/MirrorHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.util.Mirror; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface MirrorHandler { 10 | 11 | BlockState withMirror(BlockState state, Mirror mirror); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/NeighborBrightnessHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface NeighborBrightnessHandler { 9 | 10 | boolean shouldUseNeighborBrightness(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/OpaqueCubeHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface OpaqueCubeHandler { 9 | 10 | boolean isOpaqueCube(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/PassHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.world.BlockAccess; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface PassHandler { 10 | 11 | boolean isPassable(Block block, BlockAccess blockAccess, int x, int y, int z); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/PlayerDestroyHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.math.BlockPos; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface PlayerDestroyHandler { 11 | 12 | void onPlayerDestroy(World world, BlockPos pos, BlockState state); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/PlayerRelativeHardnessHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.entity.EntityPlayer; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface PlayerRelativeHardnessHandler { 11 | 12 | float getPlayerRelativeBlockHardness( 13 | BlockState state, EntityPlayer player, World world, int x, int y, int z); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/PowerProvideCheckHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface PowerProvideCheckHandler { 9 | 10 | boolean canProvidePower(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/PushReactionHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.material.PushReaction; 6 | import dev.xdark.clientapi.block.state.BlockState; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface PushReactionHandler { 10 | 11 | PushReaction getPushReaction(BlockState state); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/RenderTypeHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.util.BlockRenderType; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface RenderTypeHandler { 10 | 11 | BlockRenderType getRenderType(BlockState state); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/ReplaceHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.math.BlockPos; 7 | import dev.xdark.clientapi.world.BlockAccess; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ReplaceHandler { 11 | 12 | boolean isReplaceable(Block block, BlockAccess blockAccess, BlockPos pos); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/RotationHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.util.Rotation; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface RotationHandler { 10 | 11 | BlockState withRotation(BlockState state, Rotation rotation); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/SelectedBoundingBoxHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.math.AxisAlignedBB; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface SelectedBoundingBoxHandler { 11 | 12 | AxisAlignedBB getSelectedBoundingBox(BlockState blockState, World world, int x, int y, int z); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/SidePlacementHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.util.EnumFacing; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface SidePlacementHandler { 11 | 12 | boolean canPlaceBlockOnSide(Block block, World world, int x, int y, int z, EnumFacing facing); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/SideRenderHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.util.EnumFacing; 7 | import dev.xdark.clientapi.world.BlockAccess; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface SideRenderHandler { 11 | 12 | boolean shouldSideBeRendered( 13 | BlockState state, BlockAccess blockAccess, int x, int y, int z, EnumFacing facing); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/SolidTopHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface SolidTopHandler { 9 | 10 | boolean isTopSolid(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/StatePlacementHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.block.state.BlockState; 7 | import dev.xdark.clientapi.entity.EntityLivingBase; 8 | import dev.xdark.clientapi.util.EnumFacing; 9 | import dev.xdark.clientapi.world.World; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface StatePlacementHandler { 13 | 14 | BlockState getStateForPlacement( 15 | Block block, 16 | World world, 17 | int x, 18 | int y, 19 | int z, 20 | EnumFacing facing, 21 | float hitX, 22 | float hitY, 23 | float hitZ, 24 | int meta, 25 | EntityLivingBase placer); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/StrongPowerHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.util.EnumFacing; 7 | import dev.xdark.clientapi.world.BlockAccess; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface StrongPowerHandler { 11 | 12 | int getStrongPower( 13 | BlockState state, BlockAccess blockAccess, int x, int y, int z, EnumFacing facing); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/SubBlocksHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.gui.CreativeTab; 7 | import dev.xdark.clientapi.item.ItemStack; 8 | 9 | import java.util.List; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface SubBlocksHandler { 13 | 14 | void getSubBlocks(Block block, CreativeTab tab, List stacks); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/SuffocationHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface SuffocationHandler { 9 | 10 | boolean causesSuffocation(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/TickRateHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.world.World; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface TickRateHandler { 10 | 11 | int tickRate(Block block, World world); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/TranslucentHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface TranslucentHandler { 9 | 10 | boolean isTranslucent(BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/handler/WeakPowerHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.handler; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.util.EnumFacing; 7 | import dev.xdark.clientapi.world.BlockAccess; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface WeakPowerHandler { 11 | 12 | int getWeakPower( 13 | BlockState state, BlockAccess blockAccess, int x, int y, int z, EnumFacing facing); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/material/MapColor.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.material; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface MapColor { 9 | 10 | static MapColor of(int color) { 11 | throw CompileStub.create(); 12 | } 13 | 14 | int getColor(int type); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/material/PushReaction.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.material; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | import dev.xdark.clientapi.Side; 5 | import dev.xdark.clientapi.SidedApi; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface PushReaction { 9 | 10 | PushReaction NORMAL = objectValue(), 11 | DESTROY = objectValue(), 12 | BLOCK = objectValue(), 13 | IGNORE = objectValue(), 14 | PUSH_ONLY = objectValue(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/properties/BooleanProperty.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.properties; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface BooleanProperty extends Property { 9 | 10 | static BooleanProperty create(String name) { 11 | throw CompileStub.create(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/properties/IntegerProperty.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.properties; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | import it.unimi.dsi.fastutil.ints.IntSet; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface IntegerProperty extends Property { 10 | 11 | static IntegerProperty create(String name, IntSet set) { 12 | throw CompileStub.create(); 13 | } 14 | 15 | static IntegerProperty create(String name, int from, int to) { 16 | throw CompileStub.create(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/properties/Property.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.properties; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import java.util.Collection; 6 | import java.util.Optional; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface Property> { 10 | 11 | String getName(); 12 | 13 | Collection getAllowedValues(); 14 | 15 | Class getValueClass(); 16 | 17 | Optional parseValue(String input); 18 | 19 | String getName(T value); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/block/state/BlockFaceShape.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.block.state; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface BlockFaceShape { 10 | 11 | BlockFaceShape SOLID = objectValue(), 12 | BOWL = objectValue(), 13 | CENTER_SMALL = objectValue(), 14 | MIDDLE_POLE_THIN = objectValue(), 15 | CENTER = objectValue(), 16 | MIDDLE_POLE = objectValue(), 17 | CENTER_BIG = objectValue(), 18 | MIDDLE_POLE_THICK = objectValue(), 19 | UNDEFINED = objectValue(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/chat/Chat.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.chat; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.text.Text; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface Chat { 9 | 10 | @SidedApi(Side.SERVER) 11 | void sendChatMessage(String message); 12 | 13 | void printChatMessage(Text message); 14 | 15 | void printChatMessage(String message); 16 | 17 | void clearReceivedMessages(); 18 | 19 | void clearSentHistory(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/discord/DiscordRPC.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.discord; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface DiscordRPC { 8 | 9 | void hide(); 10 | 11 | void show(); 12 | 13 | void updateState(String state); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entity/AbstractClientPlayer.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.network.NetworkPlayerInfo; 6 | import dev.xdark.clientapi.resource.ResourceLocation; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface AbstractClientPlayer extends EntityPlayer { 10 | 11 | boolean hasPlayerInfo(); 12 | 13 | NetworkPlayerInfo getPlayerInfo(); 14 | 15 | @SidedApi(Side.SERVER) 16 | void setPlayerInfo(NetworkPlayerInfo playerInfo); 17 | 18 | boolean hasSkin(); 19 | 20 | ResourceLocation getLocationSkin(); 21 | 22 | ResourceLocation getLocationCape(); 23 | 24 | ResourceLocation getLocationElytra(); 25 | 26 | String getSkinType(); 27 | 28 | @SidedApi(Side.SERVER) 29 | float getFovModifier(); 30 | 31 | boolean hasElytraCape(); 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entity/DataParameter.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface DataParameter { 9 | 10 | static DataParameter of(int id, DataSerializer serializer) { 11 | throw CompileStub.create(); 12 | } 13 | 14 | int getId(); 15 | 16 | DataSerializer getSerializer(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entity/DataSerializer.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import io.netty.buffer.ByteBuf; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface DataSerializer { 9 | 10 | void write(ByteBuf buf, T value); 11 | 12 | T read(ByteBuf buf); 13 | 14 | DataParameter createKey(int id); 15 | 16 | T copyValue(T value); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entity/EntityDataManager.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface EntityDataManager { 8 | 9 | void register(DataParameter parameter, T value); 10 | 11 | T get(DataParameter parameter); 12 | 13 | void set(DataParameter parameter, T value); 14 | 15 | boolean isDirty(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entity/EntityEnderCrystal.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entity; 2 | 3 | import com.google.common.base.Optional; 4 | import dev.xdark.clientapi.Side; 5 | import dev.xdark.clientapi.SidedApi; 6 | import dev.xdark.clientapi.math.BlockPos; 7 | 8 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface EntityEnderCrystal extends Entity { 12 | 13 | DataParameter> BEAM_TARGET = objectValue(); 14 | DataParameter SHOW_BOTTOM = objectValue(); 15 | 16 | void setBeamTarget(BlockPos pos); 17 | 18 | BlockPos getBeamTarget(); 19 | 20 | void setShowBottom(boolean showBottom); 21 | 22 | boolean shouldShowBottom(); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entity/EntityItem.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.item.ItemStack; 6 | import dev.xdark.clientapi.util.SideEffects; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface EntityItem extends Entity { 10 | 11 | DataParameter ITEM = SideEffects.objectValue(); 12 | 13 | ItemStack getStack(); 14 | 15 | void setStack(ItemStack stack); 16 | 17 | int getAge(); 18 | 19 | void setDefaultPickupDelay(); 20 | 21 | void setNoPickupDelay(); 22 | 23 | void setInfinitePickupDelay(); 24 | 25 | void setPickupDelay(int pickupDelay); 26 | 27 | boolean cannotPickup(); 28 | 29 | void setNoDespawn(); 30 | 31 | void markAsFake(); 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entity/EntityLightningBolt.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface EntityLightningBolt extends EntityWeatherEffect { 8 | 9 | int getState(); 10 | 11 | void setState(int state); 12 | 13 | long getBoltVertex(); 14 | 15 | void setBoltVertex(long boltVertex); 16 | 17 | int getBoltLivingTime(); 18 | 19 | void setBoltLivingTime(int boltLivingTime); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entity/EntityWeatherEffect.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface EntityWeatherEffect extends Entity {} 8 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entity/PlayerModelPart.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entity; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | import dev.xdark.clientapi.text.Text; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface PlayerModelPart { 11 | 12 | PlayerModelPart CAPE = objectValue(), 13 | JACKET = objectValue(), 14 | LEFT_SLEEVE = objectValue(), 15 | RIGHT_SLEEVE = objectValue(), 16 | LEFT_PANTS_LEG = objectValue(), 17 | RIGHT_PANTS_LEG = objectValue(), 18 | HAT = objectValue(); 19 | 20 | int getMask(); 21 | 22 | int getId(); 23 | 24 | String getRawName(); 25 | 26 | Text getName(); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/entry/ModMain.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.entry; 2 | 3 | import dev.xdark.clientapi.ClientApi; 4 | import dev.xdark.clientapi.Side; 5 | import dev.xdark.clientapi.SidedApi; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface ModMain { 9 | 10 | void load(ClientApi api); 11 | 12 | void unload(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/Cancellable.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface Cancellable { 8 | 9 | boolean isCancelled(); 10 | 11 | void setCancelled(boolean cancelled); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/Event.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface Event { 9 | 10 | static EventBus bus(Class event) { 11 | throw CompileStub.create(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/EventBus.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import java.util.function.Consumer; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface EventBus { 10 | 11 | Listener createListener(); 12 | 13 | RegisteredListener register(Listener listener, Consumer handler, int priority); 14 | 15 | void fireAndForget(E event); 16 | 17 | E fire(E event); 18 | 19 | @Deprecated 20 | RegisteredListener register( 21 | Listener listener, Class action, Consumer handler, int priority); 22 | 23 | @Deprecated 24 | void unregister(Class action, Consumer handler); 25 | 26 | void unregisterAll(Listener listener); 27 | 28 | @Deprecated 29 | V post(Class action, V value); 30 | 31 | @Deprecated 32 | boolean anyListeners(Class action); 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/Listener.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface Listener { } 8 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/RegisteredListener.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface RegisteredListener { 8 | 9 | Listener getListener(); 10 | 11 | void unregister(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/block/BlockLeftClick.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.block; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.math.BlockPos; 9 | import dev.xdark.clientapi.util.EnumFacing; 10 | import dev.xdark.clientapi.util.SideEffects; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface BlockLeftClick extends Event, Cancellable { 14 | 15 | EventBus BUS = SideEffects.objectValue(); 16 | 17 | BlockPos getPosition(); 18 | 19 | EnumFacing getFacing(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/block/BlockRightClick.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.block; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.math.BlockPos; 8 | import dev.xdark.clientapi.math.Vec3d; 9 | import dev.xdark.clientapi.util.ActionResult; 10 | import dev.xdark.clientapi.util.EnumFacing; 11 | import dev.xdark.clientapi.util.EnumHand; 12 | import dev.xdark.clientapi.util.SideEffects; 13 | 14 | @SidedApi(Side.SERVER) 15 | public interface BlockRightClick extends Event { 16 | 17 | EventBus BUS = SideEffects.objectValue(); 18 | 19 | BlockPos getPosition(); 20 | 21 | EnumFacing getFacing(); 22 | 23 | Vec3d getHitVec(); 24 | 25 | EnumHand getHand(); 26 | 27 | ActionResult getResult(); 28 | 29 | void setResult(ActionResult result); 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/chat/ChatReceive.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.chat; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.text.Text; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | import java.util.UUID; 12 | 13 | @SidedApi(Side.BOTH) 14 | public interface ChatReceive extends Event, Cancellable { 15 | 16 | EventBus BUS = SideEffects.objectValue(); 17 | 18 | UUID getSender(); 19 | 20 | Text getText(); 21 | 22 | void setText(Text text); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/chat/ChatSend.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.chat; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface ChatSend extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | String getMessage(); 16 | 17 | @SidedApi(Side.SERVER) 18 | void setMessage(String message); 19 | 20 | boolean isCommand(); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/chat/TabComplete.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.chat; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.math.BlockPos; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.BOTH) 12 | public interface TabComplete extends Event, Cancellable { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | String getInput(); 17 | 18 | boolean hasTargetBlock(); 19 | 20 | BlockPos getTargetBlock(); 21 | 22 | String[] getCompletions(); 23 | 24 | void setCompletions(String... completions); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/chunk/ChunkLoad.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.chunk; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | import dev.xdark.clientapi.world.chunk.Chunk; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface ChunkLoad extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | Chunk getChunk(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/chunk/ChunkUnload.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.chunk; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | import dev.xdark.clientapi.world.chunk.Chunk; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface ChunkUnload extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | Chunk getChunk(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/EntityDataChange.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.DataParameter; 6 | import dev.xdark.clientapi.entity.Entity; 7 | import dev.xdark.clientapi.event.Event; 8 | import dev.xdark.clientapi.event.EventBus; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface EntityDataChange extends Event { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | Entity getEntity(); 17 | 18 | DataParameter getParameter(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/EntityDespawn.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface EntityDespawn extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | Entity getEntity(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/EntityInit.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface EntityInit extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | Entity getEntity(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/EntityLeftClick.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.event.Cancellable; 7 | import dev.xdark.clientapi.event.Event; 8 | import dev.xdark.clientapi.event.EventBus; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface EntityLeftClick extends Event, Cancellable { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | Entity getEntity(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/EntityRightClick.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.math.RayTraceResult; 9 | import dev.xdark.clientapi.util.ActionResult; 10 | import dev.xdark.clientapi.util.EnumHand; 11 | import dev.xdark.clientapi.util.SideEffects; 12 | 13 | @SidedApi(Side.SERVER) 14 | public interface EntityRightClick extends Event { 15 | 16 | EventBus BUS = SideEffects.objectValue(); 17 | 18 | Entity getTarget(); 19 | 20 | RayTraceResult getRayTraceResult(); 21 | 22 | EnumHand getHand(); 23 | 24 | ActionResult getResult(); 25 | 26 | void setResult(ActionResult result); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/EntitySpawn.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface EntitySpawn extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | Entity getEntity(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/LivingUpdate.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityLivingBase; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface LivingUpdate extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | EntityLivingBase getEntity(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/PlayerJump.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityPlayerSP; 6 | import dev.xdark.clientapi.event.Cancellable; 7 | import dev.xdark.clientapi.event.Event; 8 | import dev.xdark.clientapi.event.EventBus; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.BOTH) 12 | public interface PlayerJump extends Event, Cancellable { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | @SidedApi(Side.SERVER) 17 | EntityPlayerSP getPlayer(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/PlayerSprint.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityPlayerSP; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface PlayerSprint extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | @SidedApi(Side.SERVER) 16 | EntityPlayerSP getPlayer(); 17 | 18 | boolean isSprinting(); 19 | 20 | @SidedApi(Side.SERVER) 21 | void setSprinting(boolean sprinting); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/RotateAround.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.event.Cancellable; 7 | import dev.xdark.clientapi.event.Event; 8 | import dev.xdark.clientapi.event.EventBus; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface RotateAround extends Event, Cancellable { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | Entity getEntity(); 17 | 18 | float getOldYaw(); 19 | 20 | float getOldPitch(); 21 | 22 | float getNewYaw(); 23 | 24 | float getNewPitch(); 25 | 26 | void setNewYaw(float yaw); 27 | 28 | void setNewPitch(float pitch); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/Travel.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.event.Cancellable; 7 | import dev.xdark.clientapi.event.Event; 8 | import dev.xdark.clientapi.event.EventBus; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface Travel extends Event, Cancellable { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | Entity getEntity(); 17 | 18 | float getX(); 19 | 20 | float getY(); 21 | 22 | float getZ(); 23 | 24 | void setX(float x); 25 | 26 | void setY(float y); 27 | 28 | void setZ(float z); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/entity/Update.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface Update extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | Entity getEntity(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/gui/ScreenDisplay.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.gui.Screen; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface ScreenDisplay extends Event, Cancellable { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | Screen getScreen(); 17 | 18 | void setScreen(Screen screen); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/input/KeyPress.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.input; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface KeyPress extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | int getKey(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/input/MousePress.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.input; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface MousePress extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | int getButton(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/input/RightClick.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.input; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.ActionResult; 8 | import dev.xdark.clientapi.util.EnumHand; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface RightClick extends Event { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | EnumHand getHand(); 17 | 18 | ActionResult getResult(); 19 | 20 | void setResult(ActionResult result); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/inventory/WindowClick.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.inventory; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.inventory.ClickType; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface WindowClick extends Event, Cancellable { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | int getWindowId(); 17 | 18 | int getSlot(); 19 | 20 | int getMouseButton(); 21 | 22 | ClickType getClickType(); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/lifecycle/GameLoop.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.lifecycle; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface GameLoop extends Event { 11 | 12 | EventBus BUS = SideEffects.objectValue(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/lifecycle/GameQuit.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.lifecycle; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface GameQuit extends Event { 11 | 12 | EventBus BUS = SideEffects.objectValue(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/lifecycle/GameTickPost.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.lifecycle; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface GameTickPost extends Event { 11 | 12 | EventBus BUS = SideEffects.objectValue(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/lifecycle/GameTickPre.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.lifecycle; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface GameTickPre extends Event { 11 | 12 | EventBus BUS = SideEffects.objectValue(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/model/ModelBakerySetup.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.renderer.block.model.ModelBakery; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface ModelBakerySetup extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | ModelBakery getModelBakery(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/network/PacketReceive.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.network; 2 | 3 | import dev.xdark.feder.network.Packet; 4 | 5 | public interface PacketReceive

{ 6 | 7 | P getPacket(); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/network/PluginMessage.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.network; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | import io.netty.buffer.ByteBuf; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface PluginMessage extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | String getChannel(); 16 | 17 | ByteBuf getData(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/network/ServerConnect.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.network; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.EventBus; 6 | import dev.xdark.clientapi.util.SideEffects; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface ServerConnect extends ServerJoin { 10 | 11 | EventBus BUS = SideEffects.objectValue(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/network/ServerJoin.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.network; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface ServerJoin extends Event { 9 | 10 | // RealmInfo getRealm(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/network/ServerQuit.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.network; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.text.Text; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface ServerQuit extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | Text getReason(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/network/ServerSwitch.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.network; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.EventBus; 6 | import dev.xdark.clientapi.util.SideEffects; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface ServerSwitch extends ServerJoin { 10 | 11 | EventBus BUS = SideEffects.objectValue(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/AirBarRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface AirBarRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/ArmorRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface ArmorRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/BlockLayerRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.event.Cancellable; 7 | import dev.xdark.clientapi.event.Event; 8 | import dev.xdark.clientapi.event.EventBus; 9 | import dev.xdark.clientapi.util.BlockRenderLayer; 10 | import dev.xdark.clientapi.util.SideEffects; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface BlockLayerRender extends Event, Cancellable { 14 | 15 | EventBus BUS = SideEffects.objectValue(); 16 | 17 | BlockRenderLayer getLayer(); 18 | 19 | float getPartialTicks(); 20 | 21 | int getPass(); 22 | 23 | Entity getEntity(); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/DebugOverlayRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | import java.util.List; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface DebugOverlayRender extends Event { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | List getLeft(); 17 | 18 | List getRight(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/EntitySleepingRotate.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityLivingBase; 6 | import dev.xdark.clientapi.event.Cancellable; 7 | import dev.xdark.clientapi.event.Event; 8 | import dev.xdark.clientapi.event.EventBus; 9 | import dev.xdark.clientapi.util.SideEffects; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface EntitySleepingRotate extends Event, Cancellable { 13 | 14 | EventBus BUS = SideEffects.objectValue(); 15 | 16 | EntityLivingBase getEntity(); 17 | 18 | float getAgeInTicks(); 19 | 20 | float getRotationYaw(); 21 | 22 | float getPartialTicks(); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/ExpBarRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface ExpBarRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/GuiOverlayRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.render.ScaledResolution; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface GuiOverlayRender extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | float getPartialTicks(); 16 | 17 | ScaledResolution getResolution(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/HandRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface HandRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/HealthRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface HealthRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/HotbarRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface HotbarRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/HungerRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface HungerRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/ItemTooltipRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.EventBus; 6 | import dev.xdark.clientapi.item.ItemStack; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ItemTooltipRender extends TooltipRender { 11 | 12 | EventBus BUS = SideEffects.objectValue(); 13 | 14 | ItemStack getStack(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/JumpPowerRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface JumpPowerRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/OrientCamera.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface OrientCamera extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | float getPartialTicks(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/PlayerListRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface PlayerListRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/PotionsRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface PotionsRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/RenderPass.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface RenderPass extends Event { 11 | 12 | EventBus BUS = SideEffects.objectValue(); 13 | 14 | int getPass(); 15 | 16 | float getPartialTicks(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/RenderTickPost.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface RenderTickPost extends Event { 11 | 12 | EventBus BUS = SideEffects.objectValue(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/RenderTickPre.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface RenderTickPre extends Event { 11 | 12 | EventBus BUS = SideEffects.objectValue(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/ScaleChange.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.util.SideEffects; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface ScaleChange extends Event { 11 | 12 | EventBus BUS = SideEffects.objectValue(); 13 | 14 | int getOld(); 15 | 16 | int getNew(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/TooltipRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | import java.util.List; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface TooltipRender extends Event, Cancellable { 14 | 15 | EventBus BUS = SideEffects.objectValue(); 16 | 17 | List getContent(); 18 | 19 | int getX(); 20 | 21 | int getY(); 22 | 23 | void setX(int x); 24 | 25 | void setY(int y); 26 | 27 | void setPos(int x, int y); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/render/VehicleHealthRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Cancellable; 6 | import dev.xdark.clientapi.event.Event; 7 | import dev.xdark.clientapi.event.EventBus; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface VehicleHealthRender extends Event, Cancellable { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/resource/LocalePopulation.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.resource; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.language.Locale; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface LocalePopulation extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | Locale getLocale(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/resource/ResourcesReload.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.resource; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.resource.ResourcePack; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | import java.util.List; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface ResourcesReload extends Event { 14 | 15 | EventBus BUS = SideEffects.objectValue(); 16 | 17 | List getResourcePacks(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/event/window/WindowResize.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.event.window; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.event.Event; 6 | import dev.xdark.clientapi.event.EventBus; 7 | import dev.xdark.clientapi.render.ScaledResolution; 8 | import dev.xdark.clientapi.util.SideEffects; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface WindowResize extends Event { 12 | 13 | EventBus BUS = SideEffects.objectValue(); 14 | 15 | ScaledResolution getResolution(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/game/PlayerController.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.game; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.inventory.ClickType; 6 | import dev.xdark.clientapi.item.ItemStack; 7 | import dev.xdark.clientapi.world.GameMode; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface PlayerController { 11 | 12 | @SidedApi(Side.SERVER) 13 | void resetBlockRemoving(); 14 | 15 | GameMode getGameMode(); 16 | 17 | boolean extendedReach(); 18 | 19 | boolean shouldDrawHUD(); 20 | 21 | float getBlockReachDistance(); 22 | 23 | ItemStack windowClick(int windowId, int slotId, int mouseButton, ClickType type); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/game/ScreenshotHelper.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.game; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import java.awt.image.BufferedImage; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface ScreenshotHelper { 10 | 11 | BufferedImage createScreenshot(); 12 | 13 | BufferedImage createScreenshot(int width, int height); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/game/Session.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.game; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import java.util.UUID; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface Session { 9 | 10 | String getName(); 11 | 12 | UUID getId(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/game/Timer.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.game; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface Timer { 8 | 9 | int getElapsedTicks(); 10 | 11 | float getRenderPartialTicks(); 12 | 13 | float getElapsedPartialTicks(); 14 | 15 | long lastSyncSysClock(); 16 | 17 | float getTickLength(); 18 | 19 | void setTickLength(float tickLength); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ButtonDrawHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.game.Minecraft; 6 | import dev.xdark.clientapi.util.UIHandler; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ButtonDrawHandler extends UIHandler { 10 | void draw(Button button, Minecraft mc, int x, int y, float tickLength); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ButtonForegroundHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ButtonForegroundHandler extends UIHandler { 9 | void drawButtonForegroundLayer(Button button, int mouseX, int mouseY); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ButtonMouseDraggedHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.game.Minecraft; 6 | import dev.xdark.clientapi.util.UIHandler; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ButtonMouseDraggedHandler extends UIHandler { 10 | void mouseDragged(Button button, Minecraft mc, int x, int y); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ButtonMousePressedHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.game.Minecraft; 6 | import dev.xdark.clientapi.util.UIHandler; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ButtonMousePressedHandler extends UIHandler { 10 | boolean mousePressed(Button button, Minecraft mc, int x, int y); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ButtonMouseReleasedHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.game.Minecraft; 6 | import dev.xdark.clientapi.util.UIHandler; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ButtonMouseReleasedHandler extends UIHandler { 10 | void mouseReleased(Button button, int x, int y); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ButtonSoundPressHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.sound.SoundHandler; 6 | import dev.xdark.clientapi.util.UIHandler; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ButtonSoundPressHandler extends UIHandler { 10 | void playPressSound(Button button, SoundHandler soundHandler); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/IngameUI.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface IngameUI { 8 | 9 | ChatOverlay getDefaultChatOverlay(); 10 | 11 | ChatOverlay getChatOverlay(); 12 | 13 | void setChatOverlay(ChatOverlay chatOverlay); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/LabelBackgroundDrawHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface LabelBackgroundDrawHandler extends UIHandler { 9 | void drawBackground(Label label); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/LabelDrawHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.game.Minecraft; 6 | import dev.xdark.clientapi.util.UIHandler; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface LabelDrawHandler extends UIHandler { 10 | void draw(Label label, Minecraft mc); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenActionHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | import java.io.IOException; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ScreenActionHandler extends UIHandler { 11 | void actionPerformed(Screen screen, Button button) throws IOException; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenClickConfirmHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ScreenClickConfirmHandler extends UIHandler { 9 | void confirmClicked(Screen screen, boolean result, int id); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenCloseHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ScreenCloseHandler extends UIHandler { 9 | void close(Screen screen); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenDrawHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ScreenDrawHandler extends UIHandler { 9 | void drawScreen(Screen screen, int mouseX, int mouseY, float tickLength); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenInitHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ScreenInitHandler extends UIHandler { 9 | void init(Screen screen); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenKeyTypedHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | import java.io.IOException; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ScreenKeyTypedHandler extends UIHandler { 11 | void keyTyped(Screen screen, char c, int code) throws IOException; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenKeyboardInputHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | import java.io.IOException; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ScreenKeyboardInputHandler extends UIHandler { 11 | void handleInput(Screen screen) throws IOException; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenMouseClickMoveHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ScreenMouseClickMoveHandler extends UIHandler { 9 | void mouseClickMove(Screen screen, int x, int y, int button, long diff); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenMouseClickedHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | import java.io.IOException; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ScreenMouseClickedHandler extends UIHandler { 11 | void mouseClicked(Screen screen, int x, int y, int button) throws IOException; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenMouseInputHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | import java.io.IOException; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ScreenMouseInputHandler extends UIHandler { 11 | void handleInput(Screen screen) throws IOException; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenMouseReleasedHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ScreenMouseReleasedHandler extends UIHandler { 9 | void mouseReleased(Screen screen, int x, int y, int button); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenResizeHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.game.Minecraft; 6 | import dev.xdark.clientapi.util.UIHandler; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ScreenResizeHandler extends UIHandler { 10 | void resize(Screen screen, Minecraft mc, int w, int h); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenTextClickHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.text.Text; 6 | import dev.xdark.clientapi.util.UIHandler; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ScreenTextClickHandler extends UIHandler { 10 | boolean textClicked(Screen screen, Text text); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenTextControlHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ScreenTextControlHandler extends UIHandler { 9 | void setText(Screen screen, String text, boolean overwrite); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ScreenUpdateHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.UIHandler; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ScreenUpdateHandler extends UIHandler { 9 | void update(Screen screen); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/UIComponent.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface UIComponent { 8 | float getZLevel(); 9 | 10 | void setZLevel(float zLevel); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ingame/AdvancementsScreen.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui.ingame; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.gui.Screen; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface AdvancementsScreen extends Screen {} 9 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ingame/IngameMenuScreen.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui.ingame; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.gui.Screen; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface IngameMenuScreen extends Screen {} 9 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ingame/InventoryCreativeScreen.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui.ingame; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.gui.Screen; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface InventoryCreativeScreen extends Screen { 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ingame/InventorySurvivalScreen.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui.ingame; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.gui.Screen; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface InventorySurvivalScreen extends Screen {} 9 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/gui/ingame/OptionsScreen.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.gui.ingame; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.gui.Screen; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface OptionsScreen extends Screen {} 9 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/input/MouseHelper.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.input; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface MouseHelper { 8 | void grabMouseCursor(); 9 | 10 | void ungrabMouseCursor(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/internal/DumpBytecode.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.internal; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | @Target(ElementType.TYPE) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @SidedApi(Side.SERVER) 14 | public @interface DumpBytecode { 15 | String dir() default ""; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/internal/Unstable.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.internal; 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 | @Target({ElementType.TYPE, ElementType.METHOD}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface Unstable {} 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/inventory/ClickType.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.inventory; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ClickType { 10 | 11 | ClickType PICKUP = objectValue(), 12 | QUICK_MOVE = objectValue(), 13 | SWAP = objectValue(), 14 | CLONE = objectValue(), 15 | THROW = objectValue(), 16 | QUICK_CRAFT = objectValue(), 17 | PICKUP_ALL = objectValue(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/inventory/ContainerLocalMenu.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.inventory; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.text.Text; 6 | import dev.xdark.clientapi.util.CompileStub; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ContainerLocalMenu extends InventoryBasic { 10 | 11 | static ContainerLocalMenu of(String type, Text name, int slots) { 12 | throw CompileStub.create(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/inventory/EntityEquipmentSlot.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.inventory; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface EntityEquipmentSlot { 10 | 11 | EntityEquipmentSlot MAINHAND = objectValue(), 12 | OFFHAND = objectValue(), 13 | FEET = objectValue(), 14 | LEGS = objectValue(), 15 | CHEST = objectValue(), 16 | HEAD = objectValue(); 17 | 18 | Type getSlotType(); 19 | 20 | int getIndex(); 21 | 22 | int getSlotIndex(); 23 | 24 | String getName(); 25 | 26 | interface Type { 27 | 28 | Type HAND = objectValue(), 29 | ARMOR = objectValue(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/inventory/InventoryBasic.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.inventory; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.item.ItemStack; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface InventoryBasic extends Inventory { 9 | 10 | ItemStack addItem(ItemStack stack); 11 | 12 | void setCustomName(String name); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/inventory/InventoryPlayer.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.inventory; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.item.ItemStack; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface InventoryPlayer extends Inventory { 9 | 10 | ItemStack getCurrentItem(); 11 | 12 | int getFirstEmptyStack(); 13 | 14 | int getSlotFor(ItemStack stack); 15 | 16 | int findSlotMatchingUnusedItem(ItemStack stack); 17 | 18 | int getBestHotbarSlot(); 19 | 20 | ItemStack armorItemInSlot(int slot); 21 | 22 | int getTimesChanged(); 23 | 24 | ItemStack getItemStack(); 25 | 26 | int getActiveSlot(); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/inventory/Slot.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.inventory; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.item.ItemStack; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface Slot { 9 | 10 | int getSlotNumber(); 11 | 12 | ItemStack getStack(); 13 | 14 | boolean hasStack(); 15 | 16 | void putStack(ItemStack stack); 17 | 18 | int getSlotStackLimit(); 19 | 20 | int getItemStackLimit(ItemStack stack); 21 | 22 | String getSlotTexture(); 23 | 24 | ItemStack decrStackSize(int count); 25 | 26 | boolean isEnabled(); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/BlockDestroyHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.entity.EntityLivingBase; 7 | import dev.xdark.clientapi.math.BlockPos; 8 | import dev.xdark.clientapi.world.World; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface BlockDestroyHandler { 12 | 13 | boolean onBlockDestroyed( 14 | ItemStack stack, World world, BlockState state, BlockPos pos, EntityLivingBase entity); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/BlockDestroySpeedHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface BlockDestroySpeedHandler { 9 | 10 | float getDestroySpeed(ItemStack stack, BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/BlockHarvestHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface BlockHarvestHandler { 9 | 10 | boolean canHarvestBlock(Item item, BlockState state); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/EntityHitHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityLivingBase; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface EntityHitHandler { 9 | 10 | boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/EntityInteractHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityLivingBase; 6 | import dev.xdark.clientapi.entity.EntityPlayer; 7 | import dev.xdark.clientapi.util.EnumHand; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface EntityInteractHandler { 11 | 12 | boolean interactWidthEntity( 13 | ItemStack stack, EntityPlayer player, EntityLivingBase entity, EnumHand hand); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/EntityStoppedUsingHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityLivingBase; 6 | import dev.xdark.clientapi.world.World; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface EntityStoppedUsingHandler { 10 | 11 | void stoppedUsing(ItemStack stack, World world, EntityLivingBase entity, int timeLeft); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/FoodEatHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityPlayer; 6 | import dev.xdark.clientapi.world.World; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface FoodEatHandler { 10 | 11 | void onFoodEaten(ItemStack stack, World world, EntityPlayer player); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/FoodHealHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface FoodHealHandler { 8 | 9 | int getHealAmount(ItemStack stack); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/FoodSaturationHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface FoodSaturationHandler { 8 | 9 | float getSaturationModifier(ItemStack stack); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemAttributeHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import com.google.common.collect.Multimap; 4 | import dev.xdark.clientapi.Side; 5 | import dev.xdark.clientapi.SidedApi; 6 | import dev.xdark.clientapi.attribute.AttributeModifier; 7 | import dev.xdark.clientapi.inventory.EntityEquipmentSlot; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ItemAttributeHandler { 11 | 12 | Multimap getAttributes(Item item, EntityEquipmentSlot slot); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemAxe.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ItemAxe extends ItemTool { 9 | 10 | @SidedApi(Side.SERVER) 11 | interface Builder extends ItemTool.Builder { 12 | 13 | static Builder builder() { 14 | throw CompileStub.create(); 15 | } 16 | 17 | @Override 18 | ItemAxe build(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemBlock.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.entity.EntityPlayer; 7 | import dev.xdark.clientapi.math.BlockPos; 8 | import dev.xdark.clientapi.util.EnumFacing; 9 | import dev.xdark.clientapi.world.World; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface ItemBlock extends Item { 13 | 14 | Block getBlock(); 15 | 16 | boolean canPlaceOnSide( 17 | World world, BlockPos pos, EnumFacing facing, EntityPlayer player, ItemStack stack); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemCreateHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ItemCreateHandler { 8 | 9 | void onCreated(ItemStack stack); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemEffectHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ItemEffectHandler { 8 | 9 | boolean hasEffect(ItemStack stack); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemEnchantHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ItemEnchantHandler { 8 | 9 | boolean isEnchantable(ItemStack stack); 10 | 11 | int getEnchantability(Item item); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemInformationHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.world.World; 6 | 7 | import java.util.List; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ItemInformationHandler { 11 | 12 | void addInformation(ItemStack stack, World world, List tooltip, TooltipFlag flag); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemMetadataHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ItemMetadataHandler { 8 | 9 | int getMetadata(Item item, int i); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemPickaxe.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ItemPickaxe extends ItemTool { 9 | 10 | @SidedApi(Side.SERVER) 11 | interface Builder extends ItemTool.Builder { 12 | 13 | static Builder builder() { 14 | throw CompileStub.create(); 15 | } 16 | 17 | @Override 18 | ItemPickaxe build(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemProperty.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityLivingBase; 6 | import dev.xdark.clientapi.world.World; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ItemProperty { 10 | 11 | float apply(ItemStack stack, World world, EntityLivingBase entity); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemRarityHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ItemRarityHandler { 8 | 9 | Rarity getRarity(ItemStack stack); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemRegistry.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.resource.ResourceLocation; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ItemRegistry { 10 | 11 | Item getItem(int id); 12 | 13 | Item getItem(String idOrLocation); 14 | 15 | void register(int id, ResourceLocation location, Item item); 16 | 17 | void register(Block block); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemRepairHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ItemRepairHandler { 8 | 9 | boolean isRepairableWith(ItemStack toRepair, ItemStack stack); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemRightClickHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityPlayer; 6 | import dev.xdark.clientapi.util.EnumHand; 7 | import dev.xdark.clientapi.util.ProceedActionResult; 8 | import dev.xdark.clientapi.world.World; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface ItemRightClickHandler { 12 | 13 | ProceedActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemSpade.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ItemSpade extends ItemTool { 9 | 10 | @SidedApi(Side.SERVER) 11 | interface Builder extends ItemTool.Builder { 12 | 13 | static Builder builder() { 14 | throw CompileStub.create(); 15 | } 16 | 17 | @Override 18 | ItemSpade build(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemSword.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ItemSword extends Item { 9 | 10 | float getAttackDamage(); 11 | 12 | ToolMaterial getToolMaterial(); 13 | 14 | @SidedApi(Side.SERVER) 15 | interface Builder extends Item.Builder { 16 | 17 | static Builder builder() { 18 | throw CompileStub.create(); 19 | } 20 | 21 | Builder toolMaterial(ToolMaterial toolMaterial); 22 | 23 | @Override 24 | ItemSword build(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemTool.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.util.CompileStub; 7 | 8 | import java.util.Set; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface ItemTool extends Item { 12 | 13 | float getEfficiency(); 14 | 15 | float getAttackDamage(); 16 | 17 | float getAttackSpeed(); 18 | 19 | ToolMaterial getToolMaterial(); 20 | 21 | @SidedApi(Side.SERVER) 22 | interface Builder extends Item.Builder { 23 | 24 | static Builder builder() { 25 | throw CompileStub.create(); 26 | } 27 | 28 | Builder attackSpeed(float attackSpeed); 29 | 30 | Builder toolMaterial(ToolMaterial toolMaterial); 31 | 32 | Builder effectiveBlocks(Set effectiveBlocks); 33 | 34 | ItemTool build(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemTools.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | import io.netty.buffer.ByteBuf; 7 | 8 | @SidedApi(Side.SERVER) 9 | public final class ItemTools { 10 | 11 | private ItemTools() { 12 | } 13 | 14 | public static ItemStack read(ByteBuf buf) { 15 | throw CompileStub.create(); 16 | } 17 | 18 | public static void write(ItemStack stack, ByteBuf buf) { 19 | throw CompileStub.create(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemUseActionHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ItemUseActionHandler { 8 | 9 | UseAction getUseAction(ItemStack stack); 10 | 11 | int getMaxUseDuration(ItemStack stack); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemUseFinishHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityLivingBase; 6 | import dev.xdark.clientapi.util.ActionResult; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ItemUseFinishHandler { 11 | 12 | ActionResult onItemUseFinish(ItemStack stack, World world, EntityLivingBase entity); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/ItemUseHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityPlayer; 6 | import dev.xdark.clientapi.math.BlockPos; 7 | import dev.xdark.clientapi.util.ActionResult; 8 | import dev.xdark.clientapi.util.EnumFacing; 9 | import dev.xdark.clientapi.util.EnumHand; 10 | import dev.xdark.clientapi.world.World; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface ItemUseHandler { 14 | 15 | ActionResult onItemUse( 16 | EntityPlayer player, 17 | World world, 18 | BlockPos pos, 19 | EnumHand hand, 20 | EnumFacing facing, 21 | float hitX, 22 | float hitY, 23 | float hitZ); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/Rarity.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.text.TextFormatting; 6 | 7 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface Rarity { 11 | 12 | Rarity COMMON = objectValue(), 13 | UNCOMMON = objectValue(), 14 | RARE = objectValue(), 15 | EPIC = objectValue(); 16 | 17 | TextFormatting getFormatting(); 18 | 19 | String getName(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/TooltipFlag.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface TooltipFlag { 10 | 11 | TooltipFlag NORMAL = objectValue(), ADVANCED = objectValue(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/item/UseAction.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.item; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface UseAction { 10 | 11 | UseAction NONE = objectValue(), 12 | EAT = objectValue(), 13 | DRINK = objectValue(), 14 | BLOCK = objectValue(), 15 | BOW = objectValue(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/jvm/ClassDefiner.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.jvm; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ClassDefiner { 8 | 9 | Class defineClass(String name, byte[] code, int off, int len); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/jvm/Intrinsics.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.jvm; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | import sun.misc.Unsafe; 7 | 8 | @SidedApi(Side.BOTH) 9 | public final class Intrinsics { 10 | 11 | private Intrinsics() { } 12 | 13 | public static String newStringUnsafe(char[] chars) { 14 | throw CompileStub.create(); 15 | } 16 | 17 | public static char[] getChars(String str) { 18 | throw CompileStub.create(); 19 | } 20 | 21 | @SidedApi(Side.SERVER) 22 | public static Unsafe getUnsafe() { 23 | throw CompileStub.create(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/jvm/Natives.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.jvm; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.feder.ciphering.Cipher; 6 | import dev.xdark.feder.compression.Compression; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface Natives { 10 | 11 | Compression newZlib(); 12 | 13 | Compression newZstd(); 14 | 15 | Cipher newCipher(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/language/Language.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.language; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface Language extends Comparable { 8 | 9 | String getCode(); 10 | 11 | String getRegion(); 12 | 13 | String getName(); 14 | 15 | boolean isBidirectional(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/language/LanguageManager.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.language; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import java.util.SortedSet; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface LanguageManager { 10 | 11 | Language getLanguage(String code); 12 | 13 | boolean isCurrentLanguageBidirectional(); 14 | 15 | void setCurrentLanguage(Language language); 16 | 17 | Language getCurrentLanguage(); 18 | 19 | SortedSet getLanguages(); 20 | 21 | boolean isCurrentLocaleUnicode(); 22 | 23 | Locale getCurrentLocale(); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/language/Locale.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.language; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface Locale { 8 | 9 | boolean isUnicode(); 10 | 11 | String getTranslation(String key); 12 | 13 | String formatMessage(String message, Object... args); 14 | 15 | boolean hasKey(String key); 16 | 17 | void register(String key, String translation); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/logging/LoggingManagement.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.logging; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import org.apache.logging.log4j.core.Appender; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface LoggingManagement { 9 | 10 | void addAppender(Appender appender); 11 | 12 | void removeAppender(Appender appender); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/math/BlockPos.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.math; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | import dev.xdark.clientapi.util.Rotation; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface BlockPos extends Vec3i { 10 | 11 | static BlockPos of(int x, int y, int z) { 12 | throw CompileStub.create(); 13 | } 14 | 15 | BlockPos add(int x, int y, int z); 16 | 17 | BlockPos up(int count); 18 | 19 | BlockPos down(int count); 20 | 21 | BlockPos north(int count); 22 | 23 | BlockPos south(int count); 24 | 25 | BlockPos west(int count); 26 | 27 | BlockPos east(int count); 28 | 29 | BlockPos rotate(Rotation rotation); 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/math/MathProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.math; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface MathProvider { 8 | 9 | AxisAlignedBB newAABB(double minX, double minY, double minZ, double maxX, double maxY, 10 | double maxZ); 11 | 12 | BlockPos newBlockPos(int x, int y, int z); 13 | 14 | BlockPos newBlockPos(double x, double y, double z); 15 | 16 | Vec3i newVec3i(int x, int y, int z); 17 | 18 | Vec3d newVec3d(double x, double y, double z); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/math/RayTraceResult.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.math; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | import dev.xdark.clientapi.entity.Entity; 8 | import dev.xdark.clientapi.util.EnumFacing; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface RayTraceResult { 12 | 13 | BlockPos getPos(); 14 | 15 | Entity getEntity(); 16 | 17 | Type getType(); 18 | 19 | EnumFacing getHitSide(); 20 | 21 | @SidedApi(Side.SERVER) 22 | interface Type { 23 | 24 | Type MISS = objectValue(), 25 | BLOCK = objectValue(), 26 | ENTITY = objectValue(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/math/Rotations.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.math; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface Rotations { 9 | 10 | static Rotations of(float x, float y, float z) { 11 | throw CompileStub.create(); 12 | } 13 | 14 | float getX(); 15 | 16 | float getY(); 17 | 18 | float getZ(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/math/Vec3i.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.math; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface Vec3i extends Comparable { 9 | 10 | static Vec3i of(int x, int y, int z) { 11 | throw CompileStub.create(); 12 | } 13 | 14 | int getX(); 15 | 16 | int getY(); 17 | 18 | int getZ(); 19 | 20 | Vec3i crossProduct(Vec3i other); 21 | 22 | double getDistance(int x, int y, int z); 23 | 24 | double distanceSq(double x, double y, double z); 25 | 26 | double distanceSqToCenter(double x, double y, double z); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/nbt/CompressedStreamTools.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.nbt; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | import java.io.IOException; 7 | import java.io.InputStream; 8 | import java.io.OutputStream; 9 | 10 | @SidedApi(Side.SERVER) 11 | public final class CompressedStreamTools { 12 | 13 | private CompressedStreamTools() { 14 | } 15 | 16 | public static NBTTagCompound readCompressed(InputStream in) throws IOException { 17 | throw CompileStub.create(); 18 | } 19 | 20 | public static void writeCompressed(NBTTagCompound compound, OutputStream out) throws IOException { 21 | throw CompileStub.create(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/nbt/NBTBase.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.nbt; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import java.io.DataInput; 6 | import java.io.DataOutput; 7 | import java.io.IOException; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface NBTBase { 11 | 12 | void write(DataOutput output) throws IOException; 13 | 14 | void read(DataInput input, int depth) throws IOException; 15 | 16 | byte getId(); 17 | 18 | boolean isEmpty(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/nbt/NBTProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.nbt; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface NBTProvider { 8 | 9 | NBTBase createById(byte id); 10 | 11 | NBTPrimitive create(long value); 12 | 13 | NBTPrimitive create(double value); 14 | 15 | NBTPrimitive create(int value); 16 | 17 | NBTPrimitive create(float value); 18 | 19 | NBTPrimitive create(short value); 20 | 21 | NBTPrimitive create(byte value); 22 | 23 | NBTPrimitive crate(boolean value); 24 | 25 | NBTTagString create(String str); 26 | 27 | NBTTagList createList(); 28 | 29 | NBTTagCompound createCompound(); 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/nbt/NBTTagString.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.nbt; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface NBTTagString extends NBTBase { 9 | 10 | static NBTTagString of(String value) { 11 | throw CompileStub.create(); 12 | } 13 | 14 | String getValue(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/network/NetHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.network; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import java.util.concurrent.Executor; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface NetHandler { 10 | 11 | Executor executor(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/network/Packet.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.network; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import io.netty.buffer.ByteBuf; 6 | 7 | import java.io.IOException; 8 | import java.util.concurrent.Executor; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface Packet { 12 | 13 | void read(ByteBuf buf) throws IOException; 14 | 15 | void write(ByteBuf buf) throws IOException; 16 | 17 | default Executor executor(T handler) { 18 | return handler.executor(); 19 | } 20 | 21 | void processPacket(T handler); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/network/PacketDirection.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.network; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface PacketDirection { 10 | 11 | PacketDirection SERVERBOUND = objectValue(), CLIENTBOUND = objectValue(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/opengl/RenderHelper.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.opengl; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | import java.nio.FloatBuffer; 7 | 8 | @SidedApi(Side.BOTH) 9 | public final class RenderHelper { 10 | 11 | private RenderHelper() {} 12 | 13 | public static void disableStandardItemLighting() { 14 | throw CompileStub.create(); 15 | } 16 | 17 | public static void enableStandardItemLighting() { 18 | throw CompileStub.create(); 19 | } 20 | 21 | public static FloatBuffer setColorBuffer(float r, float g, float b, float a) { 22 | throw CompileStub.create(); 23 | } 24 | 25 | public static void enableGUIStandardItemLighting() { 26 | throw CompileStub.create(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/option/client/AmbientOcclusion.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.option.client; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface AmbientOcclusion { 10 | 11 | AmbientOcclusion MAX = objectValue(), MIN = objectValue(), OFF = objectValue(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/option/client/CloudRender.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.option.client; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface CloudRender { 10 | 11 | CloudRender FAST = objectValue(), FANCY = objectValue(), OFF = objectValue(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/option/client/ParticleVisibility.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.option.client; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ParticleVisibility { 10 | 11 | ParticleVisibility ALL = objectValue(), 12 | DECREASED = objectValue(), 13 | OFF = objectValue(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/option/client/ScreenScale.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.option.client; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ScreenScale { 10 | 11 | ScreenScale SMALL = objectValue(), 12 | NORMAL = objectValue(), 13 | LARGE = objectValue(), 14 | HUGE = objectValue(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/option/client/VisualQuality.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.option.client; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface VisualQuality { 10 | 11 | VisualQuality FAST = objectValue(), FANCY = objectValue(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/p13n/P13nProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.p13n; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.EntityPlayer; 6 | import dev.xdark.clientapi.internal.Unstable; 7 | 8 | import java.util.UUID; 9 | 10 | @Unstable 11 | @SidedApi(Side.SERVER) 12 | public interface P13nProvider { 13 | 14 | boolean enableModel(EntityPlayer player, UUID model); 15 | 16 | boolean disableModel(EntityPlayer player, UUID model); 17 | 18 | boolean playEmotion(EntityPlayer player, UUID emotion, String data, boolean override); 19 | 20 | boolean stopEmotion(EntityPlayer player, UUID emotion); 21 | 22 | void tickEmotion(EntityPlayer player); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/particle/Particle.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.particle; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface Particle { 8 | 9 | Particle multiplyVelocity(float v); 10 | 11 | Particle multiplyScaleBy(float v); 12 | 13 | void setColor(float r, float g, float b, float a); 14 | 15 | float getRed(); 16 | 17 | float getGreen(); 18 | 19 | float getBlue(); 20 | 21 | float getAlpha(); 22 | 23 | void setMaxAge(int maxAge); 24 | 25 | void setExpired(); 26 | 27 | void setSize(float w, float h); 28 | 29 | void setPosition(double x, double y, double z); 30 | 31 | void move(double x, double y, double z); 32 | 33 | boolean isAlive(); 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/particle/ParticleManager.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.particle; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.ParticleType; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ParticleManager { 9 | 10 | Particle spawnEffectParticle(ParticleType type, double xCoord, double yCoord, double zCoord, 11 | double xSpeed, double ySpeed, double zSpeed, int... parameters); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/potion/Potion.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.potion; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface Potion { 8 | 9 | int getId(); 10 | 11 | boolean isInstant(); 12 | 13 | String getName(); 14 | 15 | boolean hasStatusIcon(); 16 | 17 | int getStatusIconIndex(); 18 | 19 | boolean isBadEffect(); 20 | 21 | int getLiquidColor(); 22 | 23 | boolean isBeneficial(); 24 | 25 | PotionEffect newEffect(int duration, int amplifier, boolean ambient, boolean showParticles); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/potion/PotionEffect.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.potion; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface PotionEffect extends Comparable { 8 | 9 | Potion getPotion(); 10 | 11 | int getDuration(); 12 | 13 | int getAmplifier(); 14 | 15 | boolean isAmbient(); 16 | 17 | boolean doesShowParticles(); 18 | 19 | @Override 20 | int compareTo(PotionEffect o); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/potion/PotionRegistry.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.potion; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.resource.ResourceLocation; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface PotionRegistry { 9 | 10 | Potion getPotion(int id); 11 | 12 | Potion getPotion(ResourceLocation location); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/realm/RealmInfo.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.realm; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface RealmInfo { 8 | 9 | String getType(); 10 | 11 | int getId(); 12 | 13 | String getReadableName(); 14 | 15 | boolean isLobby(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/render/FontRenderer.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import java.util.List; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface FontRenderer { 9 | 10 | int drawStringWithShadow(String str, float x, float y, int color); 11 | 12 | int drawString(String str, float x, float y, int color, boolean dropShadow); 13 | 14 | int getStringWidth(String str); 15 | 16 | int getCharWidth(char c); 17 | 18 | String trimStringToWidth(String str, int width, boolean reverse); 19 | 20 | void drawSplitString(String str, int x, int y, int wrapWidth, int color); 21 | 22 | int getWordWrappedHeight(String str, int maxLength); 23 | 24 | boolean getUnicodeFlag(); 25 | 26 | List listFormattedStringToWidth(String str, int wrapWidth); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/render/RenderGlobal.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.particle.Particle; 6 | import dev.xdark.clientapi.util.ParticleType; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface RenderGlobal { 10 | 11 | void loadRenderers(); 12 | 13 | Particle spawnParticle(ParticleType type, boolean isLongDistance, double x, double y, double z, 14 | double motionX, double motionY, double motionZ, int... data); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/render/ScaledResolution.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface ScaledResolution { 8 | 9 | int getScaledWidth(); 10 | 11 | int getScaledHeight(); 12 | 13 | double getScaledWidth_double(); 14 | 15 | double getScaledHeight_double(); 16 | 17 | int getScaleFactor(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/render/Tessellator.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface Tessellator { 8 | 9 | void draw(); 10 | 11 | BufferBuilder getBufferBuilder(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/render/VertexFormat.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.render; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface VertexFormat { 8 | 9 | @SidedApi(Side.SERVER) 10 | void clear(); 11 | 12 | boolean hasNormal(); 13 | 14 | int getNormalOffset(); 15 | 16 | boolean hasColor(); 17 | 18 | int getColorOffset(); 19 | 20 | boolean hasUvOffset(int id); 21 | 22 | int getUvOffsetById(int id); 23 | 24 | int getIntegerSize(); 25 | 26 | int getSize(); 27 | 28 | int getOffset(int index); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/BakedModel.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.render.model.ItemCameraTransforms; 7 | import dev.xdark.clientapi.renderer.texture.TextureAtlasSprite; 8 | import dev.xdark.clientapi.util.EnumFacing; 9 | 10 | import java.util.List; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface BakedModel { 14 | 15 | List getQuads(BlockState state, EnumFacing facing, long seed); 16 | 17 | boolean hasQuads(BlockState state, EnumFacing facing, long seed); 18 | 19 | boolean isAmbientOcclusion(); 20 | 21 | boolean isGui3d(); 22 | 23 | boolean isBuiltInRenderer(); 24 | 25 | TextureAtlasSprite getParticleTexture(); 26 | 27 | ItemCameraTransforms getItemCameraTransforms(); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/BakedQuad.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.render.VertexFormat; 6 | import dev.xdark.clientapi.renderer.texture.TextureAtlasSprite; 7 | import dev.xdark.clientapi.util.EnumFacing; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface BakedQuad { 11 | 12 | TextureAtlasSprite getSprite(); 13 | 14 | int[] getVertexData(); 15 | 16 | boolean hasTintIndex(); 17 | 18 | int getTintIndex(); 19 | 20 | EnumFacing getFace(); 21 | 22 | int[] getVertexDataSingle(); 23 | 24 | VertexFormat getFormat(); 25 | 26 | boolean shouldApplyDiffuseLighting(); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/BlockFaceUV.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface BlockFaceUV { 9 | 10 | static BlockFaceUV of(float[] uvs, int rotation) { 11 | throw CompileStub.create(); 12 | } 13 | 14 | float getVertexU(int u); 15 | 16 | float getVertexV(int v); 17 | 18 | int getVertexRotatedRev(int i); 19 | 20 | void setUvs(float[] uvs); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/BlockPartFace.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | import dev.xdark.clientapi.util.EnumFacing; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface BlockPartFace { 10 | 11 | EnumFacing getCullFace(); 12 | 13 | int getTintIndex(); 14 | 15 | String getTexture(); 16 | 17 | BlockFaceUV getFaceUV(); 18 | 19 | @SidedApi(Side.SERVER) 20 | interface Builder { 21 | 22 | static Builder builder() { 23 | throw CompileStub.create(); 24 | } 25 | 26 | Builder cullFace(EnumFacing cullFace); 27 | 28 | Builder tintIndex(int tintIndex); 29 | 30 | Builder texture(String texture); 31 | 32 | Builder blockFaceUV(BlockFaceUV blockFaceUV); 33 | 34 | BlockPartFace build(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/ItemOverride.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.resource.ResourceLocation; 6 | import dev.xdark.clientapi.util.CompileStub; 7 | import it.unimi.dsi.fastutil.objects.Object2FloatMap; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface ItemOverride { 11 | 12 | ResourceLocation getLocation(); 13 | 14 | @SidedApi(Side.SERVER) 15 | interface Builder { 16 | 17 | static Builder builder() { 18 | throw CompileStub.create(); 19 | } 20 | 21 | Builder location(ResourceLocation location); 22 | 23 | Builder values(Object2FloatMap values); 24 | 25 | ItemOverride build(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/ItemTransformVec3f.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | import org.lwjgl.util.vector.Vector3f; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ItemTransformVec3f { 10 | 11 | Vector3f getRotation(); 12 | 13 | Vector3f getTranslation(); 14 | 15 | Vector3f getScale(); 16 | 17 | @SidedApi(Side.SERVER) 18 | interface Builder { 19 | 20 | static Builder builder() { 21 | throw CompileStub.create(); 22 | } 23 | 24 | Builder rotation(Vector3f rotation); 25 | 26 | Builder translation(Vector3f translation); 27 | 28 | Builder scale(Vector3f scale); 29 | 30 | ItemTransformVec3f build(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/ModelBakery.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.resource.ResourceLocation; 6 | 7 | import java.util.Collection; 8 | import java.util.List; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface ModelBakery { 12 | 13 | void registerVariant(ModelBlockDefinition definition, ModelResourceLocation location); 14 | 15 | void loadVariantList(ModelResourceLocation location, List list); 16 | 17 | void loadItemModel(String variantName, ResourceLocation location, ResourceLocation itemName); 18 | 19 | void registerMultipartVariant( 20 | ModelBlockDefinition definition, Collection locations); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/ModelManager.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.renderer.BlockModelShapes; 6 | import dev.xdark.clientapi.renderer.texture.TextureMap; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ModelManager { 10 | 11 | BakedModel getModel(ModelResourceLocation location); 12 | 13 | BakedModel getMissingModel(); 14 | 15 | TextureMap getTextureMap(); 16 | 17 | BlockModelShapes getBlockModelShapes(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/ModelResourceLocation.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.resource.ResourceLocation; 4 | import dev.xdark.clientapi.util.CompileStub; 5 | 6 | public interface ModelResourceLocation extends ResourceLocation { 7 | 8 | static ModelResourceLocation of(String input) { 9 | throw CompileStub.create(); 10 | } 11 | 12 | static ModelResourceLocation of(ResourceLocation namespace, String path) { 13 | throw CompileStub.create(); 14 | } 15 | 16 | static ModelResourceLocation of(String namespace, String name) { 17 | throw CompileStub.create(); 18 | } 19 | 20 | String getVariant(); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/Variant.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.resource.ResourceLocation; 6 | import dev.xdark.clientapi.util.CompileStub; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface Variant { 10 | 11 | ResourceLocation getModelLocation(); 12 | 13 | ModelRotation getModelRotation(); 14 | 15 | boolean isUVLocked(); 16 | 17 | int getWeight(); 18 | 19 | @SidedApi(Side.SERVER) 20 | interface Builder { 21 | 22 | static Builder builder() { 23 | throw CompileStub.create(); 24 | } 25 | 26 | Builder modelLocation(ResourceLocation modelLocation); 27 | 28 | Builder rotation(ModelRotation rotation); 29 | 30 | Builder uvLock(boolean uvLock); 31 | 32 | Builder weight(int weight); 33 | 34 | Variant build(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/VariantList.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import java.util.List; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface VariantList { 10 | 11 | List getVariants(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/multipart/Condition.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model.multipart; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | import dev.xdark.clientapi.block.state.BlockState; 8 | import dev.xdark.clientapi.block.state.BlockStateContainer; 9 | 10 | import java.util.function.Predicate; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface Condition { 14 | 15 | Condition TRUE = objectValue(), FALSE = objectValue(); 16 | 17 | Predicate getPredicate(BlockStateContainer container); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/multipart/Multipart.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model.multipart; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockStateContainer; 6 | import dev.xdark.clientapi.renderer.block.model.VariantList; 7 | import dev.xdark.clientapi.util.CompileStub; 8 | 9 | import java.util.List; 10 | import java.util.Set; 11 | 12 | @SidedApi(Side.SERVER) 13 | public interface Multipart { 14 | 15 | static Multipart of(List selectors) { 16 | throw CompileStub.create(); 17 | } 18 | 19 | List getSelectors(); 20 | 21 | Set getVariants(); 22 | 23 | void setStateContainer(BlockStateContainer container); 24 | 25 | BlockStateContainer getStateContainer(); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/model/multipart/Selector.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.model.multipart; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.block.state.BlockStateContainer; 7 | import dev.xdark.clientapi.renderer.block.model.Variant; 8 | import dev.xdark.clientapi.renderer.block.model.VariantList; 9 | import dev.xdark.clientapi.util.CompileStub; 10 | 11 | import java.util.List; 12 | import java.util.function.Predicate; 13 | 14 | @SidedApi(Side.SERVER) 15 | public interface Selector { 16 | 17 | static Selector of(Condition condition, List variants) { 18 | throw CompileStub.create(); 19 | } 20 | 21 | VariantList getVariants(); 22 | 23 | Predicate getPredicate(BlockStateContainer container); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/statemap/BlockStateMapper.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.statemap; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.Block; 6 | import dev.xdark.clientapi.block.state.BlockState; 7 | import dev.xdark.clientapi.renderer.block.model.ModelResourceLocation; 8 | import dev.xdark.clientapi.resource.ResourceLocation; 9 | 10 | import java.util.Map; 11 | import java.util.Set; 12 | 13 | @SidedApi(Side.SERVER) 14 | public interface BlockStateMapper { 15 | 16 | void registerBlockStateMapper(Block block, StateMapper stateMapper); 17 | 18 | void registerBuiltInBlocks(Block... blocks); 19 | 20 | Map putAllStateModelLocations(); 21 | 22 | Set getBlockStateLocations(Block block); 23 | 24 | Map getVariants(Block block); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/block/statemap/StateMapper.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.block.statemap; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.renderer.block.model.ModelResourceLocation; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface StateMapper { 10 | 11 | ModelResourceLocation getModelResourceLocation(BlockState state); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/color/BlockColor.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.color; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.math.BlockPos; 7 | import dev.xdark.clientapi.world.BlockAccess; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface BlockColor { 11 | 12 | int colorMultiplier(BlockState state, BlockAccess blockAccess, BlockPos pos, int tintIndex); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/culling/Camera.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.culling; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.math.AxisAlignedBB; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface Camera { 9 | 10 | boolean isBoundingBoxInFrustum(AxisAlignedBB aabb); 11 | 12 | void setPosition(double x, double y, double z); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/entity/Render.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.entity; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.entity.Entity; 6 | import dev.xdark.clientapi.renderer.culling.Camera; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface Render { 10 | 11 | void setRenderOutlines(boolean renderOutlines); 12 | 13 | boolean shouldRender(T entity, Camera camera, double x, double y, double z); 14 | 15 | void doRender(T entity, double x, double y, double z, float entityYaw, float partialTicks); 16 | 17 | boolean isMultipass(); 18 | 19 | void renderMultipass(T entity, double x, double y, double z, float entityYaw, float partialTicks); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/renderer/texture/PngSizeInfo.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.renderer.texture; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | import java.io.IOException; 8 | import java.io.InputStream; 9 | 10 | @SidedApi(Side.SERVER) 11 | public interface PngSizeInfo { 12 | 13 | int getWidth(); 14 | 15 | int getHeight(); 16 | 17 | static PngSizeInfo of(int width, int height) { 18 | throw CompileStub.create(); 19 | } 20 | 21 | static PngSizeInfo of(InputStream in) throws IOException { 22 | throw CompileStub.create(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/resource/ReloadableResourceManager.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.resource; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import java.util.List; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ReloadableResourceManager extends ResourceManager { 10 | 11 | void reloadResources(List resourcePacks); 12 | 13 | void registerReloadListener(ResourceManagerReloadListener reloadListener); 14 | 15 | void unregisterReloadListener(ResourceManagerReloadListener reloadListener); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/resource/Resource.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.resource; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import java.io.Closeable; 6 | import java.io.InputStream; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface Resource extends Closeable { 10 | 11 | ResourceLocation getLocation(); 12 | 13 | InputStream getInputStream(); 14 | 15 | ResourcePack getPack(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/resource/ResourceLocation.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.resource; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface ResourceLocation { 9 | 10 | static ResourceLocation of(String namespace, String path) { 11 | throw CompileStub.create(); 12 | } 13 | 14 | static ResourceLocation of(String input) { 15 | throw CompileStub.create(); 16 | } 17 | 18 | String getNamespace(); 19 | 20 | String getPath(); 21 | 22 | ResourceLocation changeNamespace(String newNamespace); 23 | 24 | ResourceLocation changePath(String newPath); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/resource/ResourceManagerReloadListener.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.resource; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ResourceManagerReloadListener { 8 | 9 | void onReload(ResourceManager resourceManager); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/resource/ResourcePack.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.resource; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import java.awt.image.BufferedImage; 6 | import java.io.IOException; 7 | import java.io.InputStream; 8 | import java.util.Set; 9 | 10 | @SidedApi(Side.BOTH) 11 | public interface ResourcePack { 12 | 13 | InputStream getInputStream(ResourceLocation location) throws IOException; 14 | 15 | boolean resourceExists(ResourceLocation location); 16 | 17 | Set getResourceDomains(); 18 | 19 | BufferedImage getPackImage() throws IOException; 20 | 21 | String getPackName(); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/resource/data/AnimationMetadataSection.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.resource.data; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import it.unimi.dsi.fastutil.ints.IntSet; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface AnimationMetadataSection extends MetadataSection { 9 | 10 | int getFrameHeight(); 11 | 12 | int getFrameWidth(); 13 | 14 | int getFrameCount(); 15 | 16 | int getFrameTime(); 17 | 18 | boolean isInterpolate(); 19 | 20 | int getFrameTimeSingle(int idx); 21 | 22 | boolean frameHasTime(int idx); 23 | 24 | int getFrameIndex(int idx); 25 | 26 | IntSet getFrameIndexSet(); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/resource/data/MetadataSection.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.resource.data; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface MetadataSection {} 8 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/settings/KeyBinding.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.settings; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface KeyBinding extends Comparable { 9 | 10 | boolean isKeyDown(); 11 | 12 | String getCategory(); 13 | 14 | boolean isPressed(); 15 | 16 | String getDescription(); 17 | 18 | int getKeyCodeDefault(); 19 | 20 | int getKeyCode(); 21 | 22 | @SidedApi(Side.SERVER) 23 | interface Builder { 24 | static Builder builder() { 25 | throw CompileStub.create(); 26 | } 27 | 28 | Builder description(String description); 29 | 30 | Builder category(String category); 31 | 32 | Builder keyCode(int keyCode); 33 | 34 | KeyBinding build(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/settings/SettingsManager.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.settings; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @Deprecated 7 | @SidedApi(Side.BOTH) 8 | public interface SettingsManager { 9 | 10 | KeyBinding getBindingByCode(int code); 11 | 12 | KeyBinding getBindingByName(String name); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/skin/SkinAvailableCallback.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.skin; 2 | 3 | import com.mojang.authlib.minecraft.MinecraftProfileTexture; 4 | import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | import dev.xdark.clientapi.resource.ResourceLocation; 8 | 9 | @SidedApi(Side.SERVER) 10 | @FunctionalInterface 11 | public interface SkinAvailableCallback { 12 | 13 | void skinAvailable(Type type, ResourceLocation location, MinecraftProfileTexture texture); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/skin/SkinManager.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.skin; 2 | 3 | import com.mojang.authlib.GameProfile; 4 | import com.mojang.authlib.minecraft.MinecraftProfileTexture; 5 | import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; 6 | import dev.xdark.clientapi.Side; 7 | import dev.xdark.clientapi.SidedApi; 8 | import dev.xdark.clientapi.resource.ResourceLocation; 9 | import java.util.Map; 10 | 11 | @SidedApi(Side.SERVER) 12 | public interface SkinManager { 13 | 14 | ResourceLocation loadSkin(MinecraftProfileTexture texture, Type type, 15 | SkinAvailableCallback callback); 16 | 17 | Map loadSkinFromCache(GameProfile profile); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/sound/SoundCategory.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.sound; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface SoundCategory { 10 | 11 | SoundCategory MASTER = objectValue(), 12 | MUSIC = objectValue(), 13 | RECORDS = objectValue(), 14 | WEATHER = objectValue(), 15 | BLOCKS = objectValue(), 16 | HOSTIL = objectValue(), 17 | NEUTRAL = objectValue(), 18 | PLAYERS = objectValue(), 19 | AMBIENT = objectValue(), 20 | VOICE = objectValue(); 21 | 22 | String getName(); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/sound/SoundEvent.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.sound; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.resource.ResourceLocation; 6 | import dev.xdark.clientapi.util.CompileStub; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface SoundEvent { 10 | 11 | static SoundEvent of(ResourceLocation location) { 12 | throw CompileStub.create(); 13 | } 14 | 15 | ResourceLocation getName(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/sound/SoundListener.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.sound; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface SoundListener { 8 | 9 | void soundPlay(String source); 10 | 11 | void soundStop(String source); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/system/Clipboard.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.system; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface Clipboard { 8 | 9 | void setContent(String content); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/text/ClickEvent.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.text; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | import dev.xdark.clientapi.util.CompileStub; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface ClickEvent { 11 | 12 | static ClickEvent of(Action action, String value) { 13 | throw CompileStub.create(); 14 | } 15 | 16 | Action getAction(); 17 | 18 | String getValue(); 19 | 20 | @SidedApi(Side.BOTH) 21 | interface Action { 22 | 23 | Action OPEN_URL = objectValue(), 24 | OPEN_FILE = objectValue(), 25 | RUN_COMMAND = objectValue(), 26 | SUGGEST_COMMAND = objectValue(), 27 | CHANGE_PAGE = objectValue(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/text/HoverEvent.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.text; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | import dev.xdark.clientapi.util.CompileStub; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface HoverEvent { 11 | 12 | static HoverEvent of(Action action, Text value) { 13 | throw CompileStub.create(); 14 | } 15 | 16 | Action getAction(); 17 | 18 | Text getValue(); 19 | 20 | @SidedApi(Side.BOTH) 21 | interface Action { 22 | 23 | Action SHOW_TEXT = objectValue(), 24 | SHOW_ITEM = objectValue(), 25 | SHOW_ENTITY = objectValue(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/text/Text.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.text; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | import java.util.List; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface Text extends Iterable { 10 | 11 | static Text of(String literal) { 12 | throw CompileStub.create(); 13 | } 14 | 15 | static TextKeybinding keybinding(String keybinding) { 16 | throw CompileStub.create(); 17 | } 18 | 19 | static Text of(Object... parameters) { 20 | throw CompileStub.create(); 21 | } 22 | 23 | Text setStyle(Style style); 24 | 25 | Style getStyle(); 26 | 27 | Text append(Text text); 28 | 29 | String getUnformattedPart(); 30 | 31 | String getUnformattedText(); 32 | 33 | String getFormattedText(); 34 | 35 | List getParts(); 36 | 37 | Text copy(); 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/text/TextJSON.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.text; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.util.CompileStub; 6 | 7 | @SidedApi(Side.BOTH) 8 | public final class TextJSON { 9 | 10 | private TextJSON() {} 11 | 12 | public static String textToJson(Text text) { 13 | throw CompileStub.create(); 14 | } 15 | 16 | public static Text jsonToText(String json) { 17 | throw CompileStub.create(); 18 | } 19 | 20 | public static Text fromJsonLenient(String json) { 21 | throw CompileStub.create(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/text/TextKeybinding.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.text; 2 | 3 | public interface TextKeybinding extends Text { 4 | 5 | String getKeybinding(); 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/text/TextLiteral.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.text; 2 | 3 | public interface TextLiteral extends Text { 4 | 5 | String getLiteral(); 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/text/TextProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.text; 2 | 3 | public interface TextProvider { 4 | 5 | Style newStyle(); 6 | 7 | TextLiteral of(String text); 8 | 9 | TextKeybinding keybinding(String keybinding); 10 | 11 | Text parse(String json); 12 | 13 | String toJson(Text text); 14 | 15 | ClickEvent clickEvent(ClickEvent.Action action, String value); 16 | 17 | HoverEvent hoverEvent(HoverEvent.Action action, Text value); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/texture/DynamicTexture.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.texture; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface DynamicTexture extends Texture { 8 | 9 | void updateDynamicTexture(); 10 | 11 | int[] getTextureData(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/texture/Texture.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.texture; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.resource.ResourceManager; 6 | import java.io.IOException; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface Texture { 10 | 11 | void setBlurMipmap(boolean blur, boolean mipmap); 12 | 13 | void restoreLastBlurMipmap(); 14 | 15 | void loadTexture(ResourceManager resourceManager) throws IOException; 16 | 17 | int getGlTextureId(); 18 | 19 | void deleteGlTexture(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/thread/ThreadManagement.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.thread; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import java.util.concurrent.ExecutorService; 6 | import java.util.concurrent.ScheduledExecutorService; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface ThreadManagement { 10 | 11 | Thread newThread(Runnable runnable); 12 | 13 | Thread newThread(String name, int priority, Runnable runnable); 14 | 15 | ExecutorService newSingleThreadedExecutor(); 16 | 17 | ScheduledExecutorService newSingleThreadedScheduledExecutor(); 18 | 19 | ScheduledExecutorService newScheduledThreadPool(int coreThreads); 20 | 21 | boolean inMainThread(); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/ActionResult.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface ActionResult { 10 | 11 | ActionResult SUCCESS = objectValue(), PASS = objectValue(), FAIL = objectValue(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/BlockRenderLayer.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface BlockRenderLayer { 10 | 11 | BlockRenderLayer SOLID = objectValue(), 12 | CUTOUT_MIPPED = objectValue(), 13 | CUTOUT = objectValue(), 14 | TRANSLUCENT = objectValue(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/BlockRenderType.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface BlockRenderType { 10 | 11 | BlockRenderType INVISIBLE = objectValue(), 12 | LIQUID = objectValue(), 13 | ENTITYBLOCK_ANIMATED = objectValue(), 14 | MODEL = objectValue(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/BooleanToIntFunction.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @FunctionalInterface 7 | @SidedApi(Side.BOTH) 8 | public interface BooleanToIntFunction { 9 | 10 | int applyAsInt(boolean value); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/CompileStub.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | public final class CompileStub extends RuntimeException { 4 | 5 | private static final boolean DEBUGGING = true; 6 | private static final CompileStub INSTANCE = new CompileStub(0); 7 | 8 | private CompileStub(int unused) { 9 | super(null, null, false, false); 10 | } 11 | 12 | private CompileStub() { 13 | } 14 | 15 | public static CompileStub create() { 16 | return DEBUGGING ? new CompileStub() : INSTANCE; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/EnumHand.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface EnumHand { 10 | 11 | EnumHand MAIN_HAND = objectValue(), 12 | OFF_HAND = objectValue(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/EnumHandSide.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface EnumHandSide { 10 | 11 | EnumHandSide LEFT = objectValue(), 12 | RIGHT = objectValue(); 13 | 14 | EnumHandSide opposite(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/FoodStats.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface FoodStats { 8 | 9 | @SidedApi(Side.SERVER) 10 | void addStats(int foodLevel, float foodSaturationLevel); 11 | 12 | int getFoodLevel(); 13 | 14 | boolean needFood(); 15 | 16 | @SidedApi(Side.SERVER) 17 | void addExhaustion(float exhaustion); 18 | 19 | float getSaturationLevel(); 20 | 21 | @SidedApi(Side.SERVER) 22 | void setFoodLevel(int foodLevel); 23 | 24 | @SidedApi(Side.SERVER) 25 | void setFoodSaturationLevel(float foodSaturationLevel); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/IntToIntFunction.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | @FunctionalInterface 8 | public interface IntToIntFunction { 9 | 10 | int applyAsInt(int i); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/Mirror.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 7 | 8 | @SidedApi(Side.SERVER) 9 | public interface Mirror { 10 | 11 | Mirror NONE = objectValue(), LEFT_RIGHT = objectValue(), FRONT_BACK = objectValue(); 12 | 13 | int mirrorRotation(int rotation, int count); 14 | 15 | Rotation toRotation(EnumFacing facing); 16 | 17 | EnumFacing mirror(EnumFacing facing); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/ProceedActionResult.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ProceedActionResult { 8 | 9 | static ProceedActionResult of(ActionResult result, V value) { 10 | throw CompileStub.create(); 11 | } 12 | 13 | ActionResult getResult(); 14 | 15 | V getValue(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/Rotation.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface Rotation { 10 | 11 | Rotation NONE = objectValue(), 12 | CLOCKWISE_90 = objectValue(), 13 | CLOCKWISE_180 = objectValue(), 14 | COUNTERCLOCKWISE_90 = objectValue(); 15 | 16 | Rotation add(Rotation o); 17 | 18 | EnumFacing rotate(EnumFacing facing); 19 | 20 | int rotate(int rot, int p_rotate_2_); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/SearchTree.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import java.util.List; 6 | import java.util.function.Function; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface SearchTree { 10 | 11 | static SearchTree of(Function> nameFunc) { 12 | throw CompileStub.create(); 13 | } 14 | 15 | void recalculate(); 16 | 17 | void add(T value); 18 | 19 | List search(String input); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/SideEffects.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | public final class SideEffects { 4 | 5 | private SideEffects() { } 6 | 7 | public static long longValue() { 8 | return 0L; 9 | } 10 | 11 | public static double doubleValue() { 12 | return 0.0D; 13 | } 14 | 15 | public static int intValue() { 16 | return 0; 17 | } 18 | 19 | public static float floatValue() { 20 | return 0.0F; 21 | } 22 | 23 | public static short shortValue() { 24 | return 0; 25 | } 26 | 27 | public static byte byteValue() { 28 | return 0; 29 | } 30 | 31 | public static boolean booleanValue() { 32 | return false; 33 | } 34 | 35 | public static T objectValue() { 36 | return null; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/StringSerializable.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.BOTH) 7 | public interface StringSerializable { 8 | 9 | String getAsString(); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/ThreadListener.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import java.util.concurrent.Future; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface ThreadListener { 9 | 10 | Future addScheduledTask(Runnable command); 11 | 12 | boolean isCallingFromMainThread(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/util/UIHandler.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.util; 2 | 3 | public interface UIHandler {} 4 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/world/BlockAccess.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.world; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.biome.Biome; 6 | import dev.xdark.clientapi.block.state.BlockState; 7 | import dev.xdark.clientapi.tile.TileEntity; 8 | 9 | @SidedApi(Side.BOTH) 10 | public interface BlockAccess { 11 | 12 | @SidedApi(Side.SERVER) 13 | TileEntity getTileEntity(int x, int y, int z); 14 | 15 | int getCombinedLight(int x, int y, int z, int dflt); 16 | 17 | @SidedApi(Side.SERVER) 18 | BlockState getBlockState(double x, double y, double z); 19 | 20 | @SidedApi(Side.SERVER) 21 | BlockState getBlockState(int x, int y, int z); 22 | 23 | @SidedApi(Side.SERVER) 24 | boolean isAirBlock(int x, int y, int z); 25 | 26 | @SidedApi(Side.SERVER) 27 | Biome getBiome(int x, int y, int z); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/world/GameMode.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.world; 2 | 3 | import static dev.xdark.clientapi.util.SideEffects.objectValue; 4 | 5 | import dev.xdark.clientapi.Side; 6 | import dev.xdark.clientapi.SidedApi; 7 | 8 | @SidedApi(Side.BOTH) 9 | public interface GameMode { 10 | 11 | GameMode SURVIVAL = objectValue(), 12 | CREATIVE = objectValue(), 13 | ADVENTURE = objectValue(), 14 | SPECTATOR = objectValue(); 15 | 16 | int getId(); 17 | 18 | String getName(); 19 | 20 | boolean hasLimitedInteractions(); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/world/WorldNameable.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.world; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.text.Text; 6 | 7 | @SidedApi(Side.BOTH) 8 | public interface WorldNameable { 9 | 10 | String getName(); 11 | 12 | boolean hasCustomName(); 13 | 14 | Text getDisplayName(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/world/chunk/Chunk.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.world.chunk; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | import dev.xdark.clientapi.math.BlockPos; 7 | import dev.xdark.clientapi.world.World; 8 | 9 | @SidedApi(Side.SERVER) 10 | public interface Chunk { 11 | 12 | int getX(); 13 | 14 | int getZ(); 15 | 16 | long getKey(); 17 | 18 | int getTopFilledSegment(); 19 | 20 | ExtendedBlockStorage[] getBlockStorageArray(); 21 | 22 | BlockState getBlockState(int x, int y, int z); 23 | 24 | BlockState setBlockState(BlockPos pos, BlockState state); 25 | 26 | boolean isEmpty(); 27 | 28 | World getWorld(); 29 | 30 | byte[] getBiomeArray(); 31 | 32 | void setBiomeArray(byte[] biomeArray); 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/world/chunk/ChunkProvider.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.world.chunk; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | 6 | @SidedApi(Side.SERVER) 7 | public interface ChunkProvider { 8 | 9 | Chunk getLoadedChunk(int x, int z); 10 | 11 | Chunk provideChunk(int x, int z); 12 | 13 | Chunk loadChunk(int x, int z); 14 | 15 | void unload(int x, int z); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/dev/xdark/clientapi/world/chunk/ExtendedBlockStorage.java: -------------------------------------------------------------------------------- 1 | package dev.xdark.clientapi.world.chunk; 2 | 3 | import dev.xdark.clientapi.Side; 4 | import dev.xdark.clientapi.SidedApi; 5 | import dev.xdark.clientapi.block.state.BlockState; 6 | 7 | @SidedApi(Side.SERVER) 8 | public interface ExtendedBlockStorage { 9 | 10 | BlockState get(int x, int y, int z); 11 | 12 | void set(int x, int y, int z, BlockState state); 13 | 14 | boolean isEmpty(); 15 | 16 | int getYLocation(); 17 | 18 | void setSkyLight(int x, int y, int z, int value); 19 | 20 | int getSkyLight(int x, int y, int z); 21 | 22 | void setBlockLight(int x, int y, int z, int value); 23 | 24 | int getBlockLight(int x, int y, int z); 25 | 26 | int getBlockRefCount(); 27 | } 28 | --------------------------------------------------------------------------------